@dialpad/dialtone-vue 4.0.1 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Scroller-BUtC5Z7j.cjs +2 -0
- package/dist/{Scroller-De7jdCyq.js.map → Scroller-BUtC5Z7j.cjs.map} +1 -1
- package/dist/{Scroller-De7jdCyq.js → Scroller-BsGXTN6S.js} +2 -1
- package/dist/Scroller-BsGXTN6S.js.map +1 -0
- package/dist/components/Scroller/Modules/CoreScroller.vue.d.ts +1 -1
- package/dist/components/Scroller/Modules/CoreScroller.vue.d.ts.map +1 -1
- package/dist/components/Scroller/Modules/DynamicScroller.vue.d.ts +6 -6
- package/dist/components/Scroller/Scroller.vue.d.ts +8 -8
- package/dist/dialtone-vue.cjs +1 -1
- package/dist/dialtone-vue.js +1 -1
- package/dist/lib/scroller/index.cjs +1 -1
- package/dist/lib/scroller/index.js +1 -1
- package/dist/lib/scroller/scroller.cjs +1 -1
- package/dist/lib/scroller/scroller.js +1 -1
- package/package.json +4 -4
- package/dist/Scroller-DnobBeAo.cjs +0 -2
- package/dist/Scroller-DnobBeAo.cjs.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
require(`./chunk-Bmb41Sf3.cjs`);const e=require(`./common/utils/index.cjs`),t=require(`./_plugin-vue_export-helper-D8jCH6HB.cjs`);let n=require(`vue`);var r={__name:`CoreScroller`,props:{items:{type:Array,required:!0},keyField:{type:String,default:`id`},direction:{type:String,default:`vertical`,validator:e=>[`vertical`,`horizontal`].includes(e)},itemSize:{type:Number,default:null},minItemSize:{type:[Number,String],default:null},sizeField:{type:String,default:`size`},buffer:{type:Number,default:200},enableHover:{type:Boolean,default:!0},listTag:{type:String,default:`div`},itemTag:{type:String,default:`div`},listClass:{type:[String,Object,Array],default:``},itemClass:{type:[String,Object,Array],default:``}},emits:[`user-position`,`scroll-start`,`scroll-end`],setup(e,{expose:t,emit:r}){let i=e,a=r,o=(0,n.reactive)(new Map),s=(0,n.reactive)(new Map),c=(0,n.ref)([]),l=(0,n.ref)(null),u=(0,n.ref)(!1),d=(0,n.ref)(null),f=(0,n.ref)(null),p=(0,n.ref)(null),m=(0,n.ref)(`blockStart`),h=0,g=0,_=!1,v=0,y=null,b=null,x=0,S=0,C=(0,n.computed)(()=>{if(i.itemSize===null){let e={"-1":{accumulator:0}},t=i.items,n=i.sizeField,r=i.minItemSize,a=1e4,o=0,s;for(let i=0,c=t.length;i<c;i++)s=t[i][n]||r,s<a&&(a=s),o+=s,e[i]={accumulator:o,size:s};return b=a,e}return[]}),w=(0,n.computed)(()=>i.items.length&&typeof i.items[0]!=`object`),T=(0,n.computed)(()=>{let e={};for(let t=0,n=i.items.length;t<n;t++)e[i.items[t][i.keyField]]=t;return e});(0,n.watch)(C,()=>{j(!1)},{deep:!0}),(0,n.onMounted)(()=>{(0,n.nextTick)(()=>{j(!0),u.value=!0})});let E=(e,t,r,i,a)=>{let o=(0,n.shallowReactive)({item:r,position:0,nr:(0,n.markRaw)({id:S++,index:t,used:!0,key:i,type:a})});return e.value.push(o),o},D=(e,t=!1)=>{let n=s,r=e.nr.type,i=n.get(r);i||(i=[],n.set(r,i)),i.push(e),t||(e.nr.used=!1,e.position=-9999)},O=()=>{let e=i.direction===`vertical`,t;return t=e?{start:d.value.scrollTop,end:d.value.scrollTop+d.value.clientHeight}:{start:d.value.scrollLeft,end:d.value.scrollLeft+d.value.clientWidth},t},k=()=>{throw setTimeout(()=>{console.error(`It seems the scroller element isn't scrolling, so it tries to render all the items at once.`,`Scroller:`,d),console.error(`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.`)}),Error(`Rendered items limit reached`)},A=()=>{c.value.sort((e,t)=>e.nr.index-t.nr.index)},j=(e,t=!1)=>{if(!d.value)return;let n=i.itemSize,r=b,l=w.value?null:i.keyField,u=i.items,m=u.length,_=C.value,S=o,j=s,M=c,N=T,P,F,I,L,R;if(!m)P=F=L=R=I=0;else{let e=O();if(t){let t=e.start-v.value;if(t<0&&(t=-t),n===null&&t<r.value||t<n)return{continuous:!0}}v=e.start;let a=i.buffer;e.start-=a,e.end+=a;let o=i.direction===`vertical`?`scrollHeight`:`scrollWidth`;if(f.value&&(e.start-=f.value[o]),p.value&&(e.end+=p.value[o]),n===null){let t,n=0,r=m-1,i=~~(m/2),a;do a=i,t=_[i]?.accumulator,t<e.start?n=i:i<m-1&&_[i+1]?.accumulator>e.start&&(r=i),i=~~((n+r)/2);while(i!==a);for(i<0&&(i=0),P=i,I=_[m-1]?.accumulator,F=i;F<m&&_[F]?.accumulator<e.end;F++);for(F===-1?F=u.length-1:(F++,F>m&&(F=m)),L=h;L<m&&_[L]?.accumulator<e.start;L++);for(R=L;R<m&&_[R]?.accumulator<e.end;R++);}else{P=~~(e.start/n);let t=P%1;P-=t,F=Math.ceil(e.end/n),L=Math.max(0,Math.floor(e.start/n)),R=Math.floor(e.end/n),P<0&&(P=0),F>m&&(F=m),L<0&&(L=0),R>m&&(R=m),I=Math.ceil(m/1)*n}}F-P>1e3&&k(),x=I;let z,B=P<=g&&F>=P;if(B)for(let t=0,n=M.value.length;t<n;t++)z=M.value[t],z?.nr.used&&(e&&(z.nr.index=N[z.item[l]]),(z.nr.index==null||z.nr.index<P||z.nr.index>=F)&&D(z));let V=B?null:new Map,H,U,W;for(let e=P;e<F;e++){H=u[e];let t=l?H?.[l]:H;if(t==null)throw Error(`Key is ${t} on item (keyField is '${l}')`);if(z=S.get(t),!n&&!_[e]?.size){z&&D(z);continue}U=H.type;let r=j.get(U),i=!1;if(!z)B?z=r&&r.length?r.pop():E(M,e,H,t,U):(W=V.get(U)||0,(!r||W>=r.length)&&(z=E(M,e,H,t,U),D(z,!0),r=j.get(U)),z=r[W],V.set(U,W+1)),S.delete(z.nr.key),z.nr.used=!0,z.nr.index=e,z.nr.key=t,z.nr.type=U,S.set(t,z),i=!0;else if(!z.nr.used&&(z.nr.used=!0,i=!0,r)){let e=r.indexOf(z);e!==-1&&r.splice(e,1)}z.item=H,i&&(e===u.length-1&&a(`scroll-end`),e===0&&a(`scroll-start`)),n===null?(z.position=_[e-1]?.accumulator,z.offset=0):(z.position=Math.floor(e)*n,z.offset=e%1*n)}return h=P,g=F,clearTimeout(y),y=setTimeout(A,300),{continuous:B}},M=e=>{let t=i.direction===`vertical`?{scroll:`scrollTop`,start:`top`}:{scroll:`scrollLeft`,start:`left`},n=d.value,r=t.scroll;n[r]=e},N=e=>{let t;t=i.itemSize===null?e>0?C.value[e-1]?.accumulator:0:Math.floor(e)*i.itemSize,M(t)},P=()=>{let e=d.value;m.value!==`middle`&&(m.value=`middle`,a(`user-position`,`middle`)),e.scrollTop===0&&(m.value=`blockStart`,a(`user-position`,`blockStart`),a(`user-position`,`top`)),e.scrollTop+e.clientHeight===e.scrollHeight&&(m.value=`blockEnd`,a(`user-position`,`blockEnd`),a(`user-position`,`bottom`)),_||(_=!0,requestAnimationFrame(()=>{_=!1,j(!1,!0)}))};return t({scrollToItem:N,_updateVisibleItems:j}),(t,r)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{ref_key:`scroller`,ref:d,class:(0,n.normalizeClass)([`vue-recycle-scroller`,{ready:u.value,[`direction-${e.direction}`]:!0}]),onScrollPassive:P},[t.$slots.before?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:0,ref_key:`before`,ref:f,"data-qa":`dt-scroller-before`,class:`vue-recycle-scroller__slot`},[(0,n.renderSlot)(t.$slots,`before`)],512)):(0,n.createCommentVNode)(``,!0),((0,n.openBlock)(),(0,n.createBlock)((0,n.resolveDynamicComponent)(e.listTag),{ref:`wrapper`,style:(0,n.normalizeStyle)({[e.direction===`vertical`?`minHeight`:`minWidth`]:`${(0,n.unref)(x)}px`}),"data-qa":`dt-scroller-item-wrapper`,class:(0,n.normalizeClass)([`vue-recycle-scroller__item-wrapper`,e.listClass])},{default:(0,n.withCtx)(()=>[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(c.value,r=>((0,n.openBlock)(),(0,n.createBlock)((0,n.resolveDynamicComponent)(e.itemTag),(0,n.mergeProps)({key:r.nr.id,"data-qa":`dt-scroller-item`,style:u.value?{transform:`translate${e.direction===`vertical`?`Y`:`X`}(${r.position}px) translate${e.direction===`vertical`?`X`:`Y`}(${r.offset}px)`,width:void 0,height:void 0}:null,class:[`vue-recycle-scroller__item-view`,[e.itemClass,{hover:i.enableHover&&l.value===r.nr.key}]]},(0,n.toHandlers)(i.enableHover?{mouseenter:()=>{l.value=r.nr.key},mouseleave:()=>{l.value=null}}:{})),{default:(0,n.withCtx)(()=>[(0,n.renderSlot)(t.$slots,`default`,{item:r.item,index:r.nr.index,active:r.nr.used})]),_:2},1040,[`style`,`class`]))),128)),e.items.length?(0,n.createCommentVNode)(``,!0):(0,n.renderSlot)(t.$slots,`empty`,{key:0})]),_:3},8,[`style`,`class`])),t.$slots.after?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:1,ref_key:`after`,ref:p,"data-qa":`dt-scroller-after`,class:`vue-recycle-scroller__slot`},[(0,n.renderSlot)(t.$slots,`after`)],512)):(0,n.createCommentVNode)(``,!0)],34))}},i={name:`DynamicScroller`,components:{CoreScroller:r,DtScrollerItem:{name:`DtScrollerItem`,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},tag:{type:String,default:`div`}},computed:{id(){if(this.vscrollData.simpleArray)return this.index;if(this.vscrollData.keyField in this.item)return this.item[this.vscrollData.keyField];throw 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(t,n){if(e.returnFirstEl(this.$el).$_vs_id=this.id,this.size||this.onDataUpdate(),this.$_sizeObserved){let e=this.vscrollData.sizes[n],r=this.vscrollData.sizes[t];e!=null&&e!==r&&this.applySize(e)}},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(let e in this.sizeDependencies)this.$watch(()=>this.sizeDependencies[e],this.onDataUpdate)},mounted(){this.finalActive&&(this.updateSize(),this.observeSize())},beforeUnmount(){this.unobserveSize()},methods:{updateSize(){this.finalActive?this.$_pendingSizeUpdate!==this.id&&(this.$_pendingSizeUpdate=this.id,this.$_forceNextVScrollUpdate=null,this.$_pendingVScrollUpdate=null,this.computeSize(this.id)):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(t){this.$nextTick(()=>{if(this.id===t){let t=e.returnFirstEl(this.$el).offsetWidth,n=e.returnFirstEl(this.$el).offsetHeight;this.applyWidthHeight(t,n)}this.$_pendingSizeUpdate=null})},applyWidthHeight(e,t){let n=~~(this.vscrollParent.direction===`vertical`?t:e);n&&this.size!==n&&this.applySize(n)},applySize(e){this.vscrollParent.$_undefinedMap[this.id]&&(this.vscrollParent.$_undefinedSizes--,this.vscrollParent.$_undefinedMap[this.id]=void 0),this.vscrollData.sizes[this.id]=e},observeSize(){this.vscrollResizeObserver&&(this.$_sizeObserved||(this.vscrollResizeObserver.observe(e.returnFirstEl(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(e.returnFirstEl(this.$el)),this.$el.$_vs_onResize=void 0,this.$_sizeObserved=!1)},onResize(e,t,n){this.id===e&&this.applyWidthHeight(t,n)}},render(){return(0,n.h)(this.tag,this.$slots.default())}}},provide(){return typeof ResizeObserver<`u`&&(this.$_resizeObserver=new ResizeObserver(e=>{requestAnimationFrame(()=>{if(Array.isArray(e)){for(let t of e)if(t.target&&t.target.$_vs_onResize){let e,n;if(t.borderBoxSize){let r=t.borderBoxSize[0];e=r.inlineSize,n=r.blockSize}else e=t.contentRect.width,n=t.contentRect.height;t.target.$_vs_onResize(t.target.$_vs_id,e,n)}}})})),{vscrollData:this.vscrollData,vscrollParent:this,vscrollResizeObserver:this.$_resizeObserver}},inheritAttrs:!1,props:{items:{type:Array,required:!0},dynamic:{type:Boolean,default:!1},keyField:{type:String,default:`id`},direction:{type:String,default:`vertical`,validator:e=>[`vertical`,`horizontal`].includes(e)},listTag:{type:String,default:`div`},itemTag:{type:String,default:`div`},minItemSize:{type:[Number,String]}},data(){return{vscrollData:{active:!0,sizes:{},keyField:this.keyField,simpleArray:!1}}},computed:{simpleArray(){return this.items.length&&typeof this.items[0]!=`object`},itemsWithSize(){let e=[],{items:t,keyField:n,simpleArray:r}=this,i=this.vscrollData.sizes,a=t.length;for(let o=0;o<a;o++){let a=t[o],s=r?o:a[n],c=i[s];c===void 0&&!this.$_undefinedMap[s]&&(c=0),e.push({item:a,[n]:s,size:c})}return e}},watch:{simpleArray:{handler(e){this.vscrollData.simpleArray=e},immediate:!0},itemsWithSize(t,n){let r=e.returnFirstEl(this.$el).scrollTop,i=0,a=0,o=Math.min(t.length,n.length);for(let e=0;e<o&&!(i>=r);e++)i+=n[e].size||this.minItemSize,a+=t[e].size||this.minItemSize;let s=a-i;s!==0&&(e.returnFirstEl(this.$el).scrollTop+=s)}},beforeCreate(){this.$_updates=[],this.$_undefinedSizes=0,this.$_undefinedMap={}},activated(){this.vscrollData.active=!0},deactivated(){this.vscrollData.active=!1},methods:{dynamicScrollerUpdateItems(){let e=this.$refs.scroller;e&&e._updateVisibleItems(!0)},dynamicScrollerUpdateItemsFromBottom(){let e=this.$refs.scroller;e&&e._updateVisibleItems(!1,!0)},scrollToItem(e){let t=this.$refs.scroller;t&&t.scrollToItem(e)},scrollToBottom(){if(this.$_scrollingToBottom)return;this.$_scrollingToBottom=!0;let t=e.returnFirstEl(this.$el);this.$nextTick(()=>{t.scrollTop=t.scrollHeight+5e3;let e=()=>{t.scrollTop=t.scrollHeight+5e3,requestAnimationFrame(()=>{t.scrollTop=t.scrollHeight+5e3,this.$_undefinedSizes===0?this.$_scrollingToBottom=!1:requestAnimationFrame(e)})};requestAnimationFrame(e)})}}};function a(e,t,r,i,a,o){let s=(0,n.resolveComponent)(`dt-scroller-item`),c=(0,n.resolveComponent)(`core-scroller`);return(0,n.openBlock)(),(0,n.createBlock)(c,(0,n.mergeProps)({ref:`scroller`,items:o.itemsWithSize,"min-item-size":r.minItemSize,direction:r.direction,"key-field":r.keyField,"list-tag":r.listTag,"item-tag":r.itemTag},e.$attrs),(0,n.createSlots)({default:(0,n.withCtx)(({item:t,index:r,active:i})=>[(0,n.createVNode)(s,{item:t,active:i,"size-dependencies":[t.message],"data-index":r},{default:(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`default`,(0,n.normalizeProps)((0,n.guardReactiveProps)({item:t.item,index:r,active:i,itemWithSize:t})))]),_:2},1032,[`item`,`active`,`size-dependencies`,`data-index`])]),_:2},[e.$slots.before?{name:`before`,fn:(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`before`)]),key:`0`}:void 0,e.$slots.empty?{name:`empty`,fn:(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`empty`)]),key:`1`}:void 0,e.$slots.after?{name:`after`,fn:(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`after`)]),key:`2`}:void 0]),1040,[`items`,`min-item-size`,`direction`,`key-field`,`list-tag`,`item-tag`])}var o=t.t(i,[[`render`,a]]),s=Object.assign({name:`DtScroller`},{__name:`Scroller`,props:{buffer:{type:Number,default:200},direction:{type:String,default:`vertical`,validator:e=>[`vertical`,`horizontal`].includes(e)},dynamic:{type:Boolean,default:!1},itemSize:{type:Number,default:null},itemTag:{type:String,default:`div`},items:{type:Array,required:!0},keyField:{type:String,default:`id`},listTag:{type:String,default:`div`},minItemSize:{type:[Number,String],default:null},scrollerHeight:{type:[String,Number],default:`100%`},scrollerWidth:{type:[String,Number],default:`100%`}},emits:[`user-position`,`scroll-start`,`scroll-end`],setup(e,{expose:t,emit:i}){let a=e;(0,n.provide)(`emit`,i);let s=(0,n.ref)(null),c=(0,n.computed)(()=>({width:typeof a.scrollerWidth==`number`?`${a.scrollerWidth}px`:a.scrollerWidth,height:typeof a.scrollerHeight==`number`?`${a.scrollerHeight}px`:a.scrollerHeight}));(0,n.watch)(a,()=>{p()},{deep:!0,immediate:!0});function l(){s.value&&s.value.scrollToBottom()}function u(e){s.value&&s.value.scrollToItem(e)}function d(){s.value&&(a.dynamic?s.value.dynamicScrollerUpdateItems():s.value._updateVisibleItems(!0))}function f(){s.value&&(a.dynamic?s.value.dynamicScrollerUpdateItemsFromBottom():s.value._updateVisibleItems(!1,!0))}function p(){a.dynamic&&!a.minItemSize&&console.error(`scroller error: 'minItemSize' is required on 'dynamic' mode.`),!a.dynamic&&!a.itemSize&&console.error(`scroller error: 'itemSize' is required.`)}return t({scrollToBottom:l,scrollToItem:u,updateItems:d,updateItemsFromBottom:f}),(t,i)=>((0,n.openBlock)(),(0,n.createBlock)((0,n.resolveDynamicComponent)(e.dynamic?o:r),{ref_key:`scroller`,ref:s,"data-qa":`dt-scroller`,items:e.items,"item-size":e.itemSize,"min-item-size":e.minItemSize,buffer:e.buffer,direction:e.direction,"key-field":e.keyField,"list-tag":e.listTag,"item-tag":e.itemTag,style:(0,n.normalizeStyle)(c.value),tabindex:`0`,onUserPosition:i[0]||(i[0]=e=>t.$emit(`user-position`,e)),onScrollStart:i[1]||(i[1]=e=>t.$emit(`scroll-start`)),onScrollEnd:i[2]||(i[2]=e=>t.$emit(`scroll-end`))},(0,n.createSlots)({default:(0,n.withCtx)(({item:e,index:r,active:i})=>[(0,n.renderSlot)(t.$slots,`default`,(0,n.normalizeProps)((0,n.guardReactiveProps)({item:e,index:r,active:i})))]),_:2},[t.$slots.before?{name:`before`,fn:(0,n.withCtx)(()=>[(0,n.renderSlot)(t.$slots,`before`)]),key:`0`}:void 0,t.$slots.empty?{name:`empty`,fn:(0,n.withCtx)(()=>[(0,n.renderSlot)(t.$slots,`empty`)]),key:`1`}:void 0,t.$slots.after?{name:`after`,fn:(0,n.withCtx)(()=>[(0,n.renderSlot)(t.$slots,`after`)]),key:`2`}:void 0]),1064,[`items`,`item-size`,`min-item-size`,`buffer`,`direction`,`key-field`,`list-tag`,`item-tag`,`style`]))}});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}});
|
|
2
|
+
//# sourceMappingURL=Scroller-BUtC5Z7j.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scroller-De7jdCyq.js","names":["$slots","$emit","$slots"],"sources":["../components/Scroller/Modules/CoreScroller.vue","../components/Scroller/Modules/ScrollerItem.vue","../components/Scroller/Modules/DynamicScroller.vue","../components/Scroller/Scroller.vue"],"sourcesContent":["<!-- eslint-disable max-len -->\n<template>\n <div\n ref=\"scroller\"\n class=\"vue-recycle-scroller\"\n :class=\"{\n ready,\n [`direction-${direction}`]: true,\n }\"\n @scroll.passive=\"handleScroll\"\n >\n <div\n v-if=\"$slots.before\"\n ref=\"before\"\n data-qa=\"dt-scroller-before\"\n class=\"vue-recycle-scroller__slot\"\n >\n <!-- @slot Content rendered before the items, inside the scroll viewport. Scrolls with the list. -->\n <slot name=\"before\" />\n </div>\n\n <component\n :is=\"listTag\"\n ref=\"wrapper\"\n :style=\"{ [direction === 'vertical' ? 'minHeight' : 'minWidth']: `${totalSize}px` }\"\n data-qa=\"dt-scroller-item-wrapper\"\n class=\"vue-recycle-scroller__item-wrapper\"\n :class=\"listClass\"\n >\n <component\n :is=\"itemTag\"\n v-for=\"view in pool\"\n :key=\"view.nr.id\"\n data-qa=\"dt-scroller-item\"\n :style=\"ready ? {\n transform: `translate${direction === 'vertical' ? 'Y' : 'X'}(${view.position}px) translate${direction === 'vertical' ? 'X' : 'Y'}(${view.offset}px)`,\n width: undefined,\n height: undefined,\n } : null\"\n class=\"vue-recycle-scroller__item-view\"\n :class=\"[\n itemClass,\n {\n hover: props.enableHover && hoverKey === view.nr.key,\n },\n ]\"\n v-on=\"props.enableHover ? {\n mouseenter: () => { hoverKey = view.nr.key },\n mouseleave: () => { hoverKey = null },\n } : {}\"\n >\n <slot\n :item=\"view.item\"\n :index=\"view.nr.index\"\n :active=\"view.nr.used\"\n />\n </component>\n\n <!-- @slot Content rendered inside the list wrapper only while the list is empty. -->\n <slot\n v-if=\"!items.length\"\n name=\"empty\"\n />\n </component>\n\n <div\n v-if=\"$slots.after\"\n ref=\"after\"\n data-qa=\"dt-scroller-after\"\n class=\"vue-recycle-scroller__slot\"\n >\n <!-- @slot Content rendered after the items, inside the scroll viewport. Scrolls with the list. -->\n <slot name=\"after\" />\n </div>\n </div>\n</template>\n\n<script setup>\n/*\nThis is a code from external library (https://github.com/Akryum/vue-virtual-scroller/blob/master/packages/vue-virtual-scroller/src/components/RecycleScroller.vue)\nWe have modified it for our own specific use.\n*/\nimport { computed, watch, markRaw, shallowReactive, onMounted, nextTick, reactive, ref } from 'vue';\n\nconst props = defineProps({\n /**\n * List of items you want to display in the scroller.\n */\n items: {\n type: Array,\n required: true,\n },\n\n /**\n *\n * Field used to identify items and optimize managing rendered views\n */\n keyField: {\n type: String,\n default: 'id',\n },\n\n /**\n * Direction of the scroller. Can be either `vertical` or `horizontal`.\n */\n direction: {\n type: String,\n default: 'vertical',\n validator: (value) => ['vertical', 'horizontal'].includes(value),\n },\n\n /**\n * Size of the items in the list.\n * If it is set to null (the default value), it will use variable size mode.\n */\n itemSize: {\n type: Number,\n default: null,\n },\n\n /**\n * Minimum size used if the height (or width in horizontal mode) of an item is unknown.\n */\n minItemSize: {\n type: [Number, String],\n default: null,\n },\n\n /**\n * Field used to get the item's size in variable size mode.\n */\n sizeField: {\n type: String,\n default: 'size',\n },\n\n /**\n * Amount of pixel to add to edges of the scrolling visible area to start rendering items further away.\n */\n buffer: {\n type: Number,\n default: 200,\n },\n\n /**\n * Enables hover state CSS class and mouse events on items.\n * Set to false if you want to manage hover state yourself.\n */\n enableHover: {\n type: Boolean,\n default: true,\n },\n\n /**\n * The element to render as the list's wrapper.\n */\n listTag: {\n type: String,\n default: 'div',\n },\n\n /**\n * The element to render as the list item.\n */\n itemTag: {\n type: String,\n default: 'div',\n },\n\n /**\n * The custom classes added to the item list wrapper.\n */\n listClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * The custom classes added to each item.\n */\n itemClass: {\n type: [String, Object, Array],\n default: '',\n },\n});\n\nconst emit = defineEmits(['user-position', 'scroll-start', 'scroll-end']);\n\nconst views = reactive(new Map());\n// const reactiveItems = reactive(props.items);\nconst unusedViews = reactive(new Map());\nconst updateTimeout = null;\nconst pool = ref([]);\nconst hoverKey = ref(null);\nconst ready = ref(false);\nconst scroller = ref(null);\nconst before = ref(null);\nconst after = ref(null);\nconst userPosition = ref('blockStart');\n\nlet startIndex = 0;\nlet endIndex = 0;\nlet scrollDirty = false;\nlet lastUpdateScrollPosition = 0;\nlet sortTimer = null;\nlet computedMinItemSize = null;\nlet totalSize = 0;\nlet uid = 0;\n\nconst sizes = computed(() => {\n if (props.itemSize === null) {\n const sizes = {\n '-1': { accumulator: 0 },\n };\n const items = props.items;\n const field = props.sizeField;\n const minItemSize = props.minItemSize;\n let computedMinSize = 10000;\n let accumulator = 0;\n let current;\n for (let i = 0, l = items.length; i < l; i++) {\n current = items[i][field] || minItemSize;\n if (current < computedMinSize) {\n computedMinSize = current;\n }\n accumulator += current;\n sizes[i] = { accumulator, size: current };\n }\n\n computedMinItemSize = computedMinSize;\n return sizes;\n }\n return [];\n});\n\nconst simpleArray = computed(() => {\n return props.items.length && typeof props.items[0] !== 'object';\n});\n\nconst itemIndexByKey = computed(() => {\n const result = {};\n for (let i = 0, l = props.items.length; i < l; i++) {\n result[props.items[i][props.keyField]] = i;\n }\n return result;\n});\n\n// watch(reactiveItems, () => {\n// // if add to the top\n// // _updateVisibleItems(true);\n// // if autoscrolling if add to the bottom\n// // _updateVisibleItems(false, true);\n// });\n\nwatch(sizes, () => {\n _updateVisibleItems(false);\n}, { deep: true });\n\nonMounted(() => {\n nextTick(() => {\n // In SSR mode, render the real number of visible items\n _updateVisibleItems(true);\n ready.value = true;\n });\n});\n\nconst _addView = (pool, index, item, key, type) => {\n const nr = markRaw({\n id: uid++,\n index,\n used: true,\n key,\n type,\n });\n const view = shallowReactive({\n item,\n position: 0,\n nr,\n });\n pool.value.push(view);\n return view;\n};\n\nconst _unuseView = (view, fake = false) => {\n const _unusedViews = unusedViews;\n const type = view.nr.type;\n let unusedPool = _unusedViews.get(type);\n if (!unusedPool) {\n unusedPool = [];\n _unusedViews.set(type, unusedPool);\n }\n unusedPool.push(view);\n if (!fake) {\n view.nr.used = false;\n view.position = -9999;\n }\n};\n\nconst _getScroll = () => {\n const isVertical = props.direction === 'vertical';\n let scrollState;\n\n if (isVertical) {\n scrollState = {\n start: scroller.value.scrollTop,\n end: scroller.value.scrollTop + scroller.value.clientHeight,\n };\n } else {\n scrollState = {\n start: scroller.value.scrollLeft,\n end: scroller.value.scrollLeft + scroller.value.clientWidth,\n };\n }\n\n return scrollState;\n};\n\nconst _itemsLimitError = () => {\n setTimeout(() => {\n \n console.error('It seems the scroller element isn\\'t scrolling, so it tries to render all the items at once.', 'Scroller:', scroller);\n \n console.error('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.');\n });\n throw new Error('Rendered items limit reached');\n};\n\nconst _sortViews = () => {\n pool.value.sort((viewA, viewB) => viewA.nr.index - viewB.nr.index);\n};\n\nconst _updateVisibleItems = (checkItem, checkPositionDiff = false) => {\n const itemSize = props.itemSize;\n const minItemSize = computedMinItemSize;\n const keyField = simpleArray.value ? null : props.keyField;\n const items = props.items;\n const count = items.length;\n const _sizes = sizes.value;\n const _views = views;\n const _unusedViews = unusedViews;\n const _pool = pool;\n const _itemIndexByKey = itemIndexByKey;\n let _startIndex, _endIndex;\n let _totalSize;\n let visibleStartIndex, visibleEndIndex;\n\n if (!count) {\n _startIndex = _endIndex = visibleStartIndex = visibleEndIndex = _totalSize = 0;\n } else {\n const scroll = _getScroll();\n\n // Skip update if use hasn't scrolled enough\n if (checkPositionDiff) {\n let positionDiff = scroll.start - lastUpdateScrollPosition.value;\n if (positionDiff < 0) positionDiff = -positionDiff;\n if ((itemSize === null && positionDiff < minItemSize.value) || positionDiff < itemSize) {\n return {\n continuous: true,\n };\n }\n }\n lastUpdateScrollPosition = scroll.start;\n\n const _buffer = props.buffer;\n scroll.start -= _buffer;\n scroll.end += _buffer;\n\n // The leading and trailing slots sit in normal flow inside the viewport, so the item\n // wrapper does not start at offset 0. Widen the window by their measured size.\n const slotSize = props.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth';\n if (before.value) scroll.start -= before.value[slotSize];\n if (after.value) scroll.end += after.value[slotSize];\n\n // Variable size mode\n if (itemSize === null) {\n let h;\n let a = 0;\n let b = count - 1;\n let i = ~~(count / 2);\n let oldI;\n\n // Searching for _startIndex\n do {\n oldI = i;\n h = _sizes[i]?.accumulator;\n if (h < scroll.start) {\n a = i;\n } else if (i < count - 1 && _sizes[i + 1]?.accumulator > scroll.start) {\n b = i;\n }\n i = ~~((a + b) / 2);\n } while (i !== oldI);\n i < 0 && (i = 0);\n _startIndex = i;\n\n // For container style\n _totalSize = _sizes[count - 1]?.accumulator;\n\n // Searching for _endIndex\n for (\n _endIndex = i;\n _endIndex < count && _sizes[_endIndex]?.accumulator < scroll.end;\n _endIndex++\n );\n\n if (_endIndex === -1) {\n _endIndex = items.length - 1;\n } else {\n _endIndex++;\n // Bounds\n _endIndex > count && (_endIndex = count);\n }\n\n // search visible _startIndex\n for (\n visibleStartIndex = startIndex;\n visibleStartIndex < count && (_sizes[visibleStartIndex]?.accumulator) < scroll.start;\n visibleStartIndex++\n );\n\n // search visible endIndex\n for (\n visibleEndIndex = visibleStartIndex;\n visibleEndIndex < count && (_sizes[visibleEndIndex]?.accumulator) < scroll.end;\n visibleEndIndex++\n );\n } else {\n // Fixed size mode\n _startIndex = ~~(scroll.start / itemSize);\n const remainer = _startIndex % 1;\n _startIndex -= remainer;\n _endIndex = Math.ceil(scroll.end / itemSize);\n visibleStartIndex = Math.max(0, Math.floor((scroll.start) / itemSize));\n visibleEndIndex = Math.floor((scroll.end) / itemSize);\n\n // Bounds\n _startIndex < 0 && (_startIndex = 0);\n _endIndex > count && (_endIndex = count);\n visibleStartIndex < 0 && (visibleStartIndex = 0);\n visibleEndIndex > count && (visibleEndIndex = count);\n\n _totalSize = Math.ceil(count / 1) * itemSize;\n }\n }\n\n // items limit 1000\n if (_endIndex - _startIndex > 1000) {\n _itemsLimitError();\n }\n\n totalSize = _totalSize;\n\n let view;\n\n const continuous = _startIndex <= endIndex && _endIndex >= _startIndex;\n\n // Unuse views that are no longer visible\n if (continuous) {\n for (let i = 0, l = _pool.value.length; i < l; i++) {\n view = _pool.value[i];\n if (view?.nr.used) {\n // Update view item index\n if (checkItem) {\n view.nr.index = _itemIndexByKey[view.item[keyField]];\n }\n\n // Check if index is still in visible range\n if (\n view.nr.index == null ||\n view.nr.index < _startIndex ||\n view.nr.index >= _endIndex\n ) {\n _unuseView(view);\n }\n }\n }\n }\n\n const unusedIndex = continuous ? null : new Map();\n\n let item, type;\n let v;\n for (let i = _startIndex; i < _endIndex; i++) {\n item = items[i];\n const key = keyField ? item?.[keyField] : item;\n\n if (key == null) {\n throw new Error(`Key is ${key} on item (keyField is '${keyField}')`);\n }\n view = _views.get(key);\n\n if (!itemSize && !_sizes[i]?.size) {\n if (view) _unuseView(view);\n continue;\n }\n\n type = item.type;\n\n let unusedPool = _unusedViews.get(type);\n let newlyUsedView = false;\n\n // No view assigned to item\n if (!view) {\n if (continuous) {\n // Reuse existing view\n if (unusedPool && unusedPool.length) {\n view = unusedPool.pop();\n } else {\n view = _addView(_pool, i, item, key, type);\n }\n } else {\n // Use existing view\n // We don't care if they are already used\n // because we are not in continous scrolling\n v = unusedIndex.get(type) || 0;\n\n if (!unusedPool || v >= unusedPool.length) {\n view = _addView(_pool, i, item, key, type);\n _unuseView(view, true);\n unusedPool = _unusedViews.get(type);\n }\n\n view = unusedPool[v];\n unusedIndex.set(type, v + 1);\n }\n\n // Assign view to item\n _views.delete(view.nr.key);\n view.nr.used = true;\n view.nr.index = i;\n view.nr.key = key;\n view.nr.type = type;\n _views.set(key, view);\n\n newlyUsedView = true;\n } else {\n // View already assigned to item\n if (!view.nr.used) {\n view.nr.used = true;\n newlyUsedView = true;\n if (unusedPool) {\n const index = unusedPool.indexOf(view);\n if (index !== -1) unusedPool.splice(index, 1);\n }\n }\n }\n\n // Always set item in case it's a new object with the same key\n view.item = item;\n\n if (newlyUsedView) {\n if (i === items.length - 1) emit('scroll-end');\n if (i === 0) emit('scroll-start');\n }\n\n // Update position\n if (itemSize === null) {\n view.position = _sizes[i - 1]?.accumulator;\n view.offset = 0;\n } else {\n view.position = Math.floor(i) * itemSize;\n view.offset = (i % 1) * itemSize;\n }\n }\n\n startIndex = _startIndex;\n endIndex = _endIndex;\n\n // After the user has finished scrolling\n // Sort views so text selection is correct\n clearTimeout(sortTimer);\n sortTimer = setTimeout(_sortViews, 300);\n\n return {\n continuous,\n };\n};\n\nconst _scrollToPosition = (position) => {\n const direction = props.direction === 'vertical'\n ? { scroll: 'scrollTop', start: 'top' }\n : { scroll: 'scrollLeft', start: 'left' };\n\n const viewport = scroller.value;\n const scrollDirection = direction.scroll;\n\n viewport[scrollDirection] = position;\n};\n\nconst scrollToItem = (index) => {\n let scroll;\n if (props.itemSize === null) {\n scroll = index > 0 ? sizes.value[index - 1]?.accumulator : 0;\n } else {\n scroll = Math.floor(index) * props.itemSize;\n }\n _scrollToPosition(scroll);\n};\n\nconst handleScroll = () => {\n const container = scroller.value;\n\n if (userPosition.value !== 'middle') {\n userPosition.value = 'middle';\n emit('user-position', 'middle');\n }\n\n // Check if the scroll is at the block-start (aka top) of the container\n if (container.scrollTop === 0) {\n userPosition.value = 'blockStart';\n emit('user-position', 'blockStart');\n emit('user-position', 'top');\n }\n\n // Check if the scroll is at the block-end (aka bottom) of the container\n if (container.scrollTop + container.clientHeight === container.scrollHeight) {\n userPosition.value = 'blockEnd';\n emit('user-position', 'blockEnd');\n emit('user-position', 'bottom');\n }\n\n if (!scrollDirty) {\n scrollDirty = true;\n if (updateTimeout) return;\n\n const requestUpdate = () => requestAnimationFrame(() => {\n scrollDirty = false;\n _updateVisibleItems(false, true);\n });\n\n requestUpdate();\n }\n};\n\ndefineExpose({\n scrollToItem,\n _updateVisibleItems,\n});\n</script>\n","<script>\n/*\nThis is a code from external library (https://github.com/Akryum/vue-virtual-scroller/blob/master/packages/vue-virtual-scroller/src/components/DynamicScrollerItem.vue)\nWe have modified it for our own specific use.\n*/\nimport { h } from 'vue';\nimport { returnFirstEl } from '@/common/utils';\n\nexport default {\n name: 'DtScrollerItem',\n\n inject: [\n 'vscrollData',\n 'vscrollParent',\n 'vscrollResizeObserver',\n ],\n\n props: {\n // eslint-disable-next-line vue/require-prop-types\n item: {\n required: true,\n },\n\n watchData: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Indicates if the view is actively used to display an item.\n */\n active: {\n type: Boolean,\n required: true,\n },\n\n index: {\n type: Number,\n default: undefined,\n },\n\n sizeDependencies: {\n type: [Array, Object],\n default: null,\n },\n\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n computed: {\n id () {\n if (this.vscrollData.simpleArray) return this.index;\n \n if (this.vscrollData.keyField in this.item) return this.item[this.vscrollData.keyField];\n throw new Error(`keyField '${this.vscrollData.keyField}' not found in your item. You should set a valid keyField prop on your Scroller`);\n },\n\n size () {\n return this.vscrollData.sizes[this.id] || 0;\n },\n\n finalActive () {\n return this.active && this.vscrollData.active;\n },\n },\n\n watch: {\n watchData: 'updateWatchData',\n\n id (value, oldValue) {\n returnFirstEl(this.$el).$_vs_id = this.id;\n if (!this.size) {\n this.onDataUpdate();\n }\n\n if (this.$_sizeObserved) {\n // In case the old item had the same size, it won't trigger the ResizeObserver\n // since we are reusing the same DOM node\n const oldSize = this.vscrollData.sizes[oldValue];\n const size = this.vscrollData.sizes[value];\n if (oldSize != null && oldSize !== size) {\n this.applySize(oldSize);\n }\n }\n },\n\n finalActive (value) {\n if (!this.size) {\n if (value) {\n if (!this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes++;\n this.vscrollParent.$_undefinedMap[this.id] = true;\n }\n } else {\n if (this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes--;\n this.vscrollParent.$_undefinedMap[this.id] = false;\n }\n }\n }\n\n if (this.vscrollResizeObserver) {\n if (value) {\n this.observeSize();\n } else {\n this.unobserveSize();\n }\n } else if (value && this.$_pendingVScrollUpdate === this.id) {\n this.updateSize();\n }\n },\n },\n\n created () {\n if (this.$isServer) return;\n\n this.$_forceNextVScrollUpdate = null;\n this.updateWatchData();\n\n if (!this.vscrollResizeObserver) {\n for (const k in this.sizeDependencies) {\n this.$watch(() => this.sizeDependencies[k], this.onDataUpdate);\n }\n }\n },\n\n mounted () {\n if (this.finalActive) {\n this.updateSize();\n this.observeSize();\n }\n },\n\n beforeUnmount () {\n this.unobserveSize();\n },\n\n methods: {\n updateSize () {\n if (this.finalActive) {\n if (this.$_pendingSizeUpdate !== this.id) {\n this.$_pendingSizeUpdate = this.id;\n this.$_forceNextVScrollUpdate = null;\n this.$_pendingVScrollUpdate = null;\n this.computeSize(this.id);\n }\n } else {\n this.$_forceNextVScrollUpdate = this.id;\n }\n },\n\n updateWatchData () {\n if (this.watchData && !this.vscrollResizeObserver) {\n this.$_watchData = this.$watch('item', () => {\n this.onDataUpdate();\n }, {\n deep: true,\n });\n } else if (this.$_watchData) {\n this.$_watchData();\n this.$_watchData = null;\n }\n },\n\n onVscrollUpdate ({ force }) {\n // If not active, sechedule a size update when it becomes active\n if (!this.finalActive && force) {\n this.$_pendingVScrollUpdate = this.id;\n }\n\n if (this.$_forceNextVScrollUpdate === this.id || force || !this.size) {\n this.updateSize();\n }\n },\n\n onDataUpdate () {\n this.updateSize();\n },\n\n computeSize (id) {\n this.$nextTick(() => {\n if (this.id === id) {\n const width = returnFirstEl(this.$el).offsetWidth;\n const height = returnFirstEl(this.$el).offsetHeight;\n this.applyWidthHeight(width, height);\n }\n this.$_pendingSizeUpdate = null;\n });\n },\n\n applyWidthHeight (width, height) {\n const size = ~~(this.vscrollParent.direction === 'vertical' ? height : width);\n if (size && this.size !== size) {\n this.applySize(size);\n }\n },\n\n applySize (size) {\n if (this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes--;\n this.vscrollParent.$_undefinedMap[this.id] = undefined;\n }\n this.vscrollData.sizes[this.id] = size;\n },\n\n observeSize () {\n if (!this.vscrollResizeObserver) return;\n if (this.$_sizeObserved) return;\n this.vscrollResizeObserver.observe(returnFirstEl(this.$el));\n this.$el.$_vs_id = this.id;\n this.$el.$_vs_onResize = this.onResize;\n this.$_sizeObserved = true;\n },\n\n unobserveSize () {\n if (!this.vscrollResizeObserver) return;\n if (!this.$_sizeObserved) return;\n this.vscrollResizeObserver.unobserve(returnFirstEl(this.$el));\n this.$el.$_vs_onResize = undefined;\n this.$_sizeObserved = false;\n },\n\n onResize (id, width, height) {\n if (this.id === id) {\n this.applyWidthHeight(width, height);\n }\n },\n },\n\n render () {\n return h(this.tag, this.$slots.default());\n },\n};\n</script>\n","<template>\n <core-scroller\n ref=\"scroller\"\n :items=\"itemsWithSize\"\n :min-item-size=\"minItemSize\"\n :direction=\"direction\"\n :key-field=\"keyField\"\n :list-tag=\"listTag\"\n :item-tag=\"itemTag\"\n v-bind=\"$attrs\"\n >\n <template\n #default=\"{ item: itemWithSize, index, active }\"\n >\n <dt-scroller-item\n :item=\"itemWithSize\"\n :active=\"active\"\n :size-dependencies=\"[\n itemWithSize.message,\n ]\"\n :data-index=\"index\"\n >\n <slot\n v-bind=\"{\n item: itemWithSize.item,\n index,\n active,\n itemWithSize,\n }\"\n />\n </dt-scroller-item>\n </template>\n\n <template\n v-if=\"$slots.before\"\n #before\n >\n <slot name=\"before\" />\n </template>\n\n <template\n v-if=\"$slots.empty\"\n #empty\n >\n <slot name=\"empty\" />\n </template>\n\n <template\n v-if=\"$slots.after\"\n #after\n >\n <slot name=\"after\" />\n </template>\n </core-scroller>\n</template>\n\n<!-- eslint-disable-next-line max-len -->\n<!-- This is a code from external library (https://github.com/Akryum/vue-virtual-scroller/blob/master/packages/vue-virtual-scroller/src/components/DynamicScroller.vue)\nWe have modified it for our own specific use. -->\n<script>\nimport CoreScroller from './CoreScroller.vue';\nimport DtScrollerItem from './ScrollerItem.vue';\nimport { returnFirstEl } from '@/common/utils';\n\nexport default {\n name: 'DynamicScroller',\n\n components: {\n CoreScroller,\n DtScrollerItem,\n },\n\n provide () {\n if (typeof ResizeObserver !== 'undefined') {\n this.$_resizeObserver = new ResizeObserver(entries => {\n requestAnimationFrame(() => {\n if (!Array.isArray(entries)) {\n return;\n }\n for (const entry of entries) {\n if (entry.target && entry.target.$_vs_onResize) {\n let width, height;\n if (entry.borderBoxSize) {\n const resizeObserverSize = entry.borderBoxSize[0];\n width = resizeObserverSize.inlineSize;\n height = resizeObserverSize.blockSize;\n } else {\n // @TODO remove when contentRect is deprecated\n width = entry.contentRect.width;\n height = entry.contentRect.height;\n }\n entry.target.$_vs_onResize(entry.target.$_vs_id, width, height);\n }\n }\n });\n });\n }\n\n return {\n vscrollData: this.vscrollData,\n vscrollParent: this,\n vscrollResizeObserver: this.$_resizeObserver,\n };\n },\n\n inheritAttrs: false,\n\n props: {\n /*\n * The items to render.\n * If the items are simple arrays, the index will be used as the key.\n * If the items are objects, the keyField will be used as the key.\n */\n items: {\n type: Array,\n required: true,\n },\n\n /*\n * Indicates if the items are dynamic.\n * If true, the items will be wrapped in a DtScrollerItem component.\n * This is required for dynamic items to be able to react to changes in their size.\n */\n dynamic: {\n type: Boolean,\n default: false,\n },\n\n /*\n * The key field to use for the items.\n * Only used if the items are objects.\n */\n keyField: {\n type: String,\n default: 'id',\n },\n\n /*\n * The direction of the scroller.\n * Can be either 'vertical' or 'horizontal'.\n */\n direction: {\n type: String,\n default: 'vertical',\n validator: (value) => ['vertical', 'horizontal'].includes(value),\n },\n\n /*\n * The tag to use for the list.\n */\n listTag: {\n type: String,\n default: 'div',\n },\n\n /*\n * The tag to use for the items.\n */\n itemTag: {\n type: String,\n default: 'div',\n },\n\n /*\n * Display height (or width in horizontal mode) of the items in pixels\n * used to calculate the scroll size and position.\n * Is required for the initial render of items in DYNAMIC size mode.\n */\n minItemSize: {\n type: [Number, String],\n },\n },\n\n data () {\n return {\n vscrollData: {\n active: true,\n sizes: {},\n keyField: this.keyField,\n simpleArray: false,\n },\n };\n },\n\n computed: {\n simpleArray () {\n return this.items.length && typeof this.items[0] !== 'object';\n },\n\n itemsWithSize () {\n const result = [];\n const { items, keyField, simpleArray } = this;\n const sizes = this.vscrollData.sizes;\n const l = items.length;\n for (let i = 0; i < l; i++) {\n const item = items[i];\n const id = simpleArray ? i : item[keyField];\n let size = sizes[id];\n if (typeof size === 'undefined' && !this.$_undefinedMap[id]) {\n size = 0;\n }\n result.push({\n item,\n [keyField]: id,\n size,\n });\n }\n return result;\n },\n },\n\n watch: {\n simpleArray: {\n handler (value) {\n this.vscrollData.simpleArray = value;\n },\n\n immediate: true,\n },\n\n itemsWithSize (next, prev) {\n const scrollTop = returnFirstEl(this.$el).scrollTop;\n\n // Calculate total diff between prev and next sizes\n // over current scroll top. Then add it to scrollTop to\n // avoid jumping the contents that the user is seeing.\n let prevActiveTop = 0; let activeTop = 0;\n const length = Math.min(next.length, prev.length);\n for (let i = 0; i < length; i++) {\n if (prevActiveTop >= scrollTop) {\n break;\n }\n prevActiveTop += prev[i].size || this.minItemSize;\n activeTop += next[i].size || this.minItemSize;\n }\n const offset = activeTop - prevActiveTop;\n\n if (offset === 0) {\n return;\n }\n\n returnFirstEl(this.$el).scrollTop += offset;\n },\n },\n\n beforeCreate () {\n this.$_updates = [];\n this.$_undefinedSizes = 0;\n this.$_undefinedMap = {};\n },\n\n activated () {\n this.vscrollData.active = true;\n },\n\n deactivated () {\n this.vscrollData.active = false;\n },\n\n methods: {\n dynamicScrollerUpdateItems () {\n const scroller = this.$refs.scroller;\n if (scroller) scroller._updateVisibleItems(true);\n },\n\n dynamicScrollerUpdateItemsFromBottom () {\n const scroller = this.$refs.scroller;\n if (scroller) scroller._updateVisibleItems(false, true);\n },\n\n scrollToItem (index) {\n const scroller = this.$refs.scroller;\n if (scroller) scroller.scrollToItem(index);\n },\n\n scrollToBottom () {\n if (this.$_scrollingToBottom) return;\n this.$_scrollingToBottom = true;\n const el = returnFirstEl(this.$el);\n // Item is inserted to the DOM\n this.$nextTick(() => {\n el.scrollTop = el.scrollHeight + 5000;\n // Item sizes are computed\n const cb = () => {\n el.scrollTop = el.scrollHeight + 5000;\n requestAnimationFrame(() => {\n el.scrollTop = el.scrollHeight + 5000;\n if (this.$_undefinedSizes === 0) {\n this.$_scrollingToBottom = false;\n } else {\n requestAnimationFrame(cb);\n }\n });\n };\n requestAnimationFrame(cb);\n });\n },\n },\n};\n</script>\n","<template>\n <component\n :is=\"dynamic ? DynamicScroller : CoreScroller\"\n ref=\"scroller\"\n data-qa=\"dt-scroller\"\n :items=\"items\"\n :item-size=\"itemSize\"\n :min-item-size=\"minItemSize\"\n :buffer=\"buffer\"\n :direction=\"direction\"\n :key-field=\"keyField\"\n :list-tag=\"listTag\"\n :item-tag=\"itemTag\"\n :style=\"computedStyle\"\n tabindex=\"0\"\n @user-position=\"$emit('user-position', $event)\"\n @scroll-start=\"$emit('scroll-start')\"\n @scroll-end=\"$emit('scroll-end')\"\n >\n <template\n #default=\"{ item, index, active }\"\n >\n <slot\n v-bind=\"{\n item: item,\n index,\n active,\n }\"\n />\n </template>\n\n <template\n v-if=\"$slots.before\"\n #before\n >\n <!-- @slot Content rendered before the items, inside the scroll viewport. Scrolls with the list. -->\n <slot name=\"before\" />\n </template>\n\n <template\n v-if=\"$slots.empty\"\n #empty\n >\n <!-- @slot Content rendered inside the list wrapper only while the list is empty. -->\n <slot name=\"empty\" />\n </template>\n\n <template\n v-if=\"$slots.after\"\n #after\n >\n <!-- @slot Content rendered after the items, inside the scroll viewport. Scrolls with the list. -->\n <slot name=\"after\" />\n </template>\n </component>\n</template>\n\n<script setup>\nimport CoreScroller from './Modules/CoreScroller.vue';\nimport DynamicScroller from './Modules/DynamicScroller.vue';\nimport { provide, computed, watch, ref } from 'vue';\n\ndefineOptions({\n name: 'DtScroller',\n});\n\nconst props = defineProps({\n /**\n * Amount of pixels added to each edge of the scroll viewport, so items are rendered\n * before they scroll into view. Also controls how early `scroll-start` and `scroll-end`\n * fire relative to the viewport edges.\n */\n buffer: {\n type: Number,\n default: 200,\n },\n\n /**\n * The direction of the scroller.\n * @values vertical, horizontal\n */\n direction: {\n type: String,\n default: 'vertical',\n validator: (value) => ['vertical', 'horizontal'].includes(value),\n },\n\n /**\n * Indicates if the items need to react to changes in their size.\n * If disabled the itemSize prop is required and you will get improved performance.\n * If enabled the minItemSize prop is required and you\n * will have reduced performance but the ability to reactively size list items\n * @values true, false\n */\n dynamic: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Display height (or width in horizontal mode) of the items in pixels\n * used to calculate the scroll size and position.\n * Required if DYNAMIC is false\n */\n itemSize: {\n type: Number,\n default: null,\n },\n\n /**\n * The tag to use for the items.\n */\n itemTag: {\n type: String,\n default: 'div',\n },\n\n /**\n * The items to render.\n * If the items are simple arrays, the index will be used as the key.\n * If the items are objects, the keyField will be used as the key.\n * @example items: [ 'item1', 'item2', 'item3' ]\n * @example items: [ { id: 1, name: 'item1' }, { id: 2, name: 'item2' }, { id: 3, name: 'item3' } ]\n */\n items: {\n type: Array,\n required: true,\n },\n\n /**\n * The key field to use for the items.\n * If the items are objects, the scroller needs to be able to identify them.\n * By default it will look for an id field on the items.\n * This can be configured with this prop if you are using another field name.\n */\n keyField: {\n type: String,\n default: 'id',\n },\n\n /**\n * The tag to use for the list.\n */\n listTag: {\n type: String,\n default: 'div',\n },\n\n /**\n * Minimum size used if the height (or width in horizontal mode) of a item is unknown.\n * Is required for the initial render of items in DYNAMIC size mode.\n */\n minItemSize: {\n type: [Number, String],\n default: null,\n },\n\n /**\n * The height of the scroller.\n * Can be a number (in pixels) or a string (in CSS units).\n */\n scrollerHeight: {\n type: [String, Number],\n default: '100%',\n },\n\n /**\n * The width of the scroller.\n * Can be a number (in pixels) or a string (in CSS units).\n */\n scrollerWidth: {\n type: [String, Number],\n default: '100%',\n },\n});\n\nconst emits = defineEmits([\n /**\n * Describe when the scroller changes from block-start (aka top) / middle / block-end (aka bottom).\n * The top and bottom values are deprecated and will ideally be removed in the next major version.\n * Please use blockStart and blockEnd instead.\n * @param {string} position The position of the scroller.\n * @values blockStart, middle, blockEnd, top, bottom\n */\n 'user-position',\n\n /**\n * Emitted when the first item enters the rendered view pool. Fires at least one `buffer`\n * length before the viewport's start edge is reached (earlier still with `before` slot\n * content), so callers can prepend items ahead of time.\n */\n 'scroll-start',\n\n /**\n * Emitted when the last item enters the rendered view pool. Fires at least one `buffer`\n * length before the viewport's end edge is reached (earlier still with `after` slot\n * content), so callers can append items ahead of time.\n */\n 'scroll-end',\n]);\n\nprovide('emit', emits);\n\nconst scroller = ref(null);\n\nconst computedStyle = computed(() => {\n return {\n width: typeof props.scrollerWidth === 'number' ? `${props.scrollerWidth}px` : props.scrollerWidth,\n height: typeof props.scrollerHeight === 'number' ? `${props.scrollerHeight}px` : props.scrollerHeight,\n };\n});\n\nwatch(props, () => {\n validateProps();\n}, { deep: true, immediate: true });\n\nfunction scrollToBottom () {\n if (scroller.value) scroller.value.scrollToBottom();\n}\n\nfunction scrollToItem (index) {\n if (scroller.value) scroller.value.scrollToItem(index);\n}\n\nfunction updateItems () {\n if (!scroller.value) return;\n if (props.dynamic) {\n scroller.value.dynamicScrollerUpdateItems();\n } else {\n scroller.value._updateVisibleItems(true);\n }\n}\n\nfunction updateItemsFromBottom () {\n if (!scroller.value) return;\n if (props.dynamic) {\n scroller.value.dynamicScrollerUpdateItemsFromBottom();\n } else {\n scroller.value._updateVisibleItems(false, true);\n }\n}\n\nfunction validateProps () {\n if (props.dynamic && !props.minItemSize) {\n console.error('scroller error: \\'minItemSize\\' is required on \\'dynamic\\' mode.');\n }\n\n if (!props.dynamic && !props.itemSize) {\n console.error('scroller error: \\'itemSize\\' is required.');\n }\n}\n\ndefineExpose({\n scrollToBottom,\n scrollToItem,\n updateItems,\n updateItemsFromBottom,\n});\n</script>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Scroller-BUtC5Z7j.cjs","names":["$slots","$emit","$slots"],"sources":["../components/Scroller/Modules/CoreScroller.vue","../components/Scroller/Modules/ScrollerItem.vue","../components/Scroller/Modules/DynamicScroller.vue","../components/Scroller/Scroller.vue"],"sourcesContent":["<!-- eslint-disable max-len -->\n<template>\n <div\n ref=\"scroller\"\n class=\"vue-recycle-scroller\"\n :class=\"{\n ready,\n [`direction-${direction}`]: true,\n }\"\n @scroll.passive=\"handleScroll\"\n >\n <div\n v-if=\"$slots.before\"\n ref=\"before\"\n data-qa=\"dt-scroller-before\"\n class=\"vue-recycle-scroller__slot\"\n >\n <!-- @slot Content rendered before the items, inside the scroll viewport. Scrolls with the list. -->\n <slot name=\"before\" />\n </div>\n\n <component\n :is=\"listTag\"\n ref=\"wrapper\"\n :style=\"{ [direction === 'vertical' ? 'minHeight' : 'minWidth']: `${totalSize}px` }\"\n data-qa=\"dt-scroller-item-wrapper\"\n class=\"vue-recycle-scroller__item-wrapper\"\n :class=\"listClass\"\n >\n <component\n :is=\"itemTag\"\n v-for=\"view in pool\"\n :key=\"view.nr.id\"\n data-qa=\"dt-scroller-item\"\n :style=\"ready ? {\n transform: `translate${direction === 'vertical' ? 'Y' : 'X'}(${view.position}px) translate${direction === 'vertical' ? 'X' : 'Y'}(${view.offset}px)`,\n width: undefined,\n height: undefined,\n } : null\"\n class=\"vue-recycle-scroller__item-view\"\n :class=\"[\n itemClass,\n {\n hover: props.enableHover && hoverKey === view.nr.key,\n },\n ]\"\n v-on=\"props.enableHover ? {\n mouseenter: () => { hoverKey = view.nr.key },\n mouseleave: () => { hoverKey = null },\n } : {}\"\n >\n <slot\n :item=\"view.item\"\n :index=\"view.nr.index\"\n :active=\"view.nr.used\"\n />\n </component>\n\n <!-- @slot Content rendered inside the list wrapper only while the list is empty. -->\n <slot\n v-if=\"!items.length\"\n name=\"empty\"\n />\n </component>\n\n <div\n v-if=\"$slots.after\"\n ref=\"after\"\n data-qa=\"dt-scroller-after\"\n class=\"vue-recycle-scroller__slot\"\n >\n <!-- @slot Content rendered after the items, inside the scroll viewport. Scrolls with the list. -->\n <slot name=\"after\" />\n </div>\n </div>\n</template>\n\n<script setup>\n/*\nThis is a code from external library (https://github.com/Akryum/vue-virtual-scroller/blob/master/packages/vue-virtual-scroller/src/components/RecycleScroller.vue)\nWe have modified it for our own specific use.\n*/\nimport { computed, watch, markRaw, shallowReactive, onMounted, nextTick, reactive, ref } from 'vue';\n\nconst props = defineProps({\n /**\n * List of items you want to display in the scroller.\n */\n items: {\n type: Array,\n required: true,\n },\n\n /**\n *\n * Field used to identify items and optimize managing rendered views\n */\n keyField: {\n type: String,\n default: 'id',\n },\n\n /**\n * Direction of the scroller. Can be either `vertical` or `horizontal`.\n */\n direction: {\n type: String,\n default: 'vertical',\n validator: (value) => ['vertical', 'horizontal'].includes(value),\n },\n\n /**\n * Size of the items in the list.\n * If it is set to null (the default value), it will use variable size mode.\n */\n itemSize: {\n type: Number,\n default: null,\n },\n\n /**\n * Minimum size used if the height (or width in horizontal mode) of an item is unknown.\n */\n minItemSize: {\n type: [Number, String],\n default: null,\n },\n\n /**\n * Field used to get the item's size in variable size mode.\n */\n sizeField: {\n type: String,\n default: 'size',\n },\n\n /**\n * Amount of pixel to add to edges of the scrolling visible area to start rendering items further away.\n */\n buffer: {\n type: Number,\n default: 200,\n },\n\n /**\n * Enables hover state CSS class and mouse events on items.\n * Set to false if you want to manage hover state yourself.\n */\n enableHover: {\n type: Boolean,\n default: true,\n },\n\n /**\n * The element to render as the list's wrapper.\n */\n listTag: {\n type: String,\n default: 'div',\n },\n\n /**\n * The element to render as the list item.\n */\n itemTag: {\n type: String,\n default: 'div',\n },\n\n /**\n * The custom classes added to the item list wrapper.\n */\n listClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * The custom classes added to each item.\n */\n itemClass: {\n type: [String, Object, Array],\n default: '',\n },\n});\n\nconst emit = defineEmits(['user-position', 'scroll-start', 'scroll-end']);\n\nconst views = reactive(new Map());\n// const reactiveItems = reactive(props.items);\nconst unusedViews = reactive(new Map());\nconst updateTimeout = null;\nconst pool = ref([]);\nconst hoverKey = ref(null);\nconst ready = ref(false);\nconst scroller = ref(null);\nconst before = ref(null);\nconst after = ref(null);\nconst userPosition = ref('blockStart');\n\nlet startIndex = 0;\nlet endIndex = 0;\nlet scrollDirty = false;\nlet lastUpdateScrollPosition = 0;\nlet sortTimer = null;\nlet computedMinItemSize = null;\nlet totalSize = 0;\nlet uid = 0;\n\nconst sizes = computed(() => {\n if (props.itemSize === null) {\n const sizes = {\n '-1': { accumulator: 0 },\n };\n const items = props.items;\n const field = props.sizeField;\n const minItemSize = props.minItemSize;\n let computedMinSize = 10000;\n let accumulator = 0;\n let current;\n for (let i = 0, l = items.length; i < l; i++) {\n current = items[i][field] || minItemSize;\n if (current < computedMinSize) {\n computedMinSize = current;\n }\n accumulator += current;\n sizes[i] = { accumulator, size: current };\n }\n\n computedMinItemSize = computedMinSize;\n return sizes;\n }\n return [];\n});\n\nconst simpleArray = computed(() => {\n return props.items.length && typeof props.items[0] !== 'object';\n});\n\nconst itemIndexByKey = computed(() => {\n const result = {};\n for (let i = 0, l = props.items.length; i < l; i++) {\n result[props.items[i][props.keyField]] = i;\n }\n return result;\n});\n\n// watch(reactiveItems, () => {\n// // if add to the top\n// // _updateVisibleItems(true);\n// // if autoscrolling if add to the bottom\n// // _updateVisibleItems(false, true);\n// });\n\nwatch(sizes, () => {\n _updateVisibleItems(false);\n}, { deep: true });\n\nonMounted(() => {\n nextTick(() => {\n // In SSR mode, render the real number of visible items\n _updateVisibleItems(true);\n ready.value = true;\n });\n});\n\nconst _addView = (pool, index, item, key, type) => {\n const nr = markRaw({\n id: uid++,\n index,\n used: true,\n key,\n type,\n });\n const view = shallowReactive({\n item,\n position: 0,\n nr,\n });\n pool.value.push(view);\n return view;\n};\n\nconst _unuseView = (view, fake = false) => {\n const _unusedViews = unusedViews;\n const type = view.nr.type;\n let unusedPool = _unusedViews.get(type);\n if (!unusedPool) {\n unusedPool = [];\n _unusedViews.set(type, unusedPool);\n }\n unusedPool.push(view);\n if (!fake) {\n view.nr.used = false;\n view.position = -9999;\n }\n};\n\nconst _getScroll = () => {\n const isVertical = props.direction === 'vertical';\n let scrollState;\n\n if (isVertical) {\n scrollState = {\n start: scroller.value.scrollTop,\n end: scroller.value.scrollTop + scroller.value.clientHeight,\n };\n } else {\n scrollState = {\n start: scroller.value.scrollLeft,\n end: scroller.value.scrollLeft + scroller.value.clientWidth,\n };\n }\n\n return scrollState;\n};\n\nconst _itemsLimitError = () => {\n setTimeout(() => {\n \n console.error('It seems the scroller element isn\\'t scrolling, so it tries to render all the items at once.', 'Scroller:', scroller);\n \n console.error('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.');\n });\n throw new Error('Rendered items limit reached');\n};\n\nconst _sortViews = () => {\n pool.value.sort((viewA, viewB) => viewA.nr.index - viewB.nr.index);\n};\n\nconst _updateVisibleItems = (checkItem, checkPositionDiff = false) => {\n // Deferred callers (the `sizes` watcher and the mounted nextTick) can fire\n // after the root element unmounts, when `scroller.value` is already null.\n if (!scroller.value) return;\n\n const itemSize = props.itemSize;\n const minItemSize = computedMinItemSize;\n const keyField = simpleArray.value ? null : props.keyField;\n const items = props.items;\n const count = items.length;\n const _sizes = sizes.value;\n const _views = views;\n const _unusedViews = unusedViews;\n const _pool = pool;\n const _itemIndexByKey = itemIndexByKey;\n let _startIndex, _endIndex;\n let _totalSize;\n let visibleStartIndex, visibleEndIndex;\n\n if (!count) {\n _startIndex = _endIndex = visibleStartIndex = visibleEndIndex = _totalSize = 0;\n } else {\n const scroll = _getScroll();\n\n // Skip update if use hasn't scrolled enough\n if (checkPositionDiff) {\n let positionDiff = scroll.start - lastUpdateScrollPosition.value;\n if (positionDiff < 0) positionDiff = -positionDiff;\n if ((itemSize === null && positionDiff < minItemSize.value) || positionDiff < itemSize) {\n return {\n continuous: true,\n };\n }\n }\n lastUpdateScrollPosition = scroll.start;\n\n const _buffer = props.buffer;\n scroll.start -= _buffer;\n scroll.end += _buffer;\n\n // The leading and trailing slots sit in normal flow inside the viewport, so the item\n // wrapper does not start at offset 0. Widen the window by their measured size.\n const slotSize = props.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth';\n if (before.value) scroll.start -= before.value[slotSize];\n if (after.value) scroll.end += after.value[slotSize];\n\n // Variable size mode\n if (itemSize === null) {\n let h;\n let a = 0;\n let b = count - 1;\n let i = ~~(count / 2);\n let oldI;\n\n // Searching for _startIndex\n do {\n oldI = i;\n h = _sizes[i]?.accumulator;\n if (h < scroll.start) {\n a = i;\n } else if (i < count - 1 && _sizes[i + 1]?.accumulator > scroll.start) {\n b = i;\n }\n i = ~~((a + b) / 2);\n } while (i !== oldI);\n i < 0 && (i = 0);\n _startIndex = i;\n\n // For container style\n _totalSize = _sizes[count - 1]?.accumulator;\n\n // Searching for _endIndex\n for (\n _endIndex = i;\n _endIndex < count && _sizes[_endIndex]?.accumulator < scroll.end;\n _endIndex++\n );\n\n if (_endIndex === -1) {\n _endIndex = items.length - 1;\n } else {\n _endIndex++;\n // Bounds\n _endIndex > count && (_endIndex = count);\n }\n\n // search visible _startIndex\n for (\n visibleStartIndex = startIndex;\n visibleStartIndex < count && (_sizes[visibleStartIndex]?.accumulator) < scroll.start;\n visibleStartIndex++\n );\n\n // search visible endIndex\n for (\n visibleEndIndex = visibleStartIndex;\n visibleEndIndex < count && (_sizes[visibleEndIndex]?.accumulator) < scroll.end;\n visibleEndIndex++\n );\n } else {\n // Fixed size mode\n _startIndex = ~~(scroll.start / itemSize);\n const remainer = _startIndex % 1;\n _startIndex -= remainer;\n _endIndex = Math.ceil(scroll.end / itemSize);\n visibleStartIndex = Math.max(0, Math.floor((scroll.start) / itemSize));\n visibleEndIndex = Math.floor((scroll.end) / itemSize);\n\n // Bounds\n _startIndex < 0 && (_startIndex = 0);\n _endIndex > count && (_endIndex = count);\n visibleStartIndex < 0 && (visibleStartIndex = 0);\n visibleEndIndex > count && (visibleEndIndex = count);\n\n _totalSize = Math.ceil(count / 1) * itemSize;\n }\n }\n\n // items limit 1000\n if (_endIndex - _startIndex > 1000) {\n _itemsLimitError();\n }\n\n totalSize = _totalSize;\n\n let view;\n\n const continuous = _startIndex <= endIndex && _endIndex >= _startIndex;\n\n // Unuse views that are no longer visible\n if (continuous) {\n for (let i = 0, l = _pool.value.length; i < l; i++) {\n view = _pool.value[i];\n if (view?.nr.used) {\n // Update view item index\n if (checkItem) {\n view.nr.index = _itemIndexByKey[view.item[keyField]];\n }\n\n // Check if index is still in visible range\n if (\n view.nr.index == null ||\n view.nr.index < _startIndex ||\n view.nr.index >= _endIndex\n ) {\n _unuseView(view);\n }\n }\n }\n }\n\n const unusedIndex = continuous ? null : new Map();\n\n let item, type;\n let v;\n for (let i = _startIndex; i < _endIndex; i++) {\n item = items[i];\n const key = keyField ? item?.[keyField] : item;\n\n if (key == null) {\n throw new Error(`Key is ${key} on item (keyField is '${keyField}')`);\n }\n view = _views.get(key);\n\n if (!itemSize && !_sizes[i]?.size) {\n if (view) _unuseView(view);\n continue;\n }\n\n type = item.type;\n\n let unusedPool = _unusedViews.get(type);\n let newlyUsedView = false;\n\n // No view assigned to item\n if (!view) {\n if (continuous) {\n // Reuse existing view\n if (unusedPool && unusedPool.length) {\n view = unusedPool.pop();\n } else {\n view = _addView(_pool, i, item, key, type);\n }\n } else {\n // Use existing view\n // We don't care if they are already used\n // because we are not in continous scrolling\n v = unusedIndex.get(type) || 0;\n\n if (!unusedPool || v >= unusedPool.length) {\n view = _addView(_pool, i, item, key, type);\n _unuseView(view, true);\n unusedPool = _unusedViews.get(type);\n }\n\n view = unusedPool[v];\n unusedIndex.set(type, v + 1);\n }\n\n // Assign view to item\n _views.delete(view.nr.key);\n view.nr.used = true;\n view.nr.index = i;\n view.nr.key = key;\n view.nr.type = type;\n _views.set(key, view);\n\n newlyUsedView = true;\n } else {\n // View already assigned to item\n if (!view.nr.used) {\n view.nr.used = true;\n newlyUsedView = true;\n if (unusedPool) {\n const index = unusedPool.indexOf(view);\n if (index !== -1) unusedPool.splice(index, 1);\n }\n }\n }\n\n // Always set item in case it's a new object with the same key\n view.item = item;\n\n if (newlyUsedView) {\n if (i === items.length - 1) emit('scroll-end');\n if (i === 0) emit('scroll-start');\n }\n\n // Update position\n if (itemSize === null) {\n view.position = _sizes[i - 1]?.accumulator;\n view.offset = 0;\n } else {\n view.position = Math.floor(i) * itemSize;\n view.offset = (i % 1) * itemSize;\n }\n }\n\n startIndex = _startIndex;\n endIndex = _endIndex;\n\n // After the user has finished scrolling\n // Sort views so text selection is correct\n clearTimeout(sortTimer);\n sortTimer = setTimeout(_sortViews, 300);\n\n return {\n continuous,\n };\n};\n\nconst _scrollToPosition = (position) => {\n const direction = props.direction === 'vertical'\n ? { scroll: 'scrollTop', start: 'top' }\n : { scroll: 'scrollLeft', start: 'left' };\n\n const viewport = scroller.value;\n const scrollDirection = direction.scroll;\n\n viewport[scrollDirection] = position;\n};\n\nconst scrollToItem = (index) => {\n let scroll;\n if (props.itemSize === null) {\n scroll = index > 0 ? sizes.value[index - 1]?.accumulator : 0;\n } else {\n scroll = Math.floor(index) * props.itemSize;\n }\n _scrollToPosition(scroll);\n};\n\nconst handleScroll = () => {\n const container = scroller.value;\n\n if (userPosition.value !== 'middle') {\n userPosition.value = 'middle';\n emit('user-position', 'middle');\n }\n\n // Check if the scroll is at the block-start (aka top) of the container\n if (container.scrollTop === 0) {\n userPosition.value = 'blockStart';\n emit('user-position', 'blockStart');\n emit('user-position', 'top');\n }\n\n // Check if the scroll is at the block-end (aka bottom) of the container\n if (container.scrollTop + container.clientHeight === container.scrollHeight) {\n userPosition.value = 'blockEnd';\n emit('user-position', 'blockEnd');\n emit('user-position', 'bottom');\n }\n\n if (!scrollDirty) {\n scrollDirty = true;\n if (updateTimeout) return;\n\n const requestUpdate = () => requestAnimationFrame(() => {\n scrollDirty = false;\n _updateVisibleItems(false, true);\n });\n\n requestUpdate();\n }\n};\n\ndefineExpose({\n scrollToItem,\n _updateVisibleItems,\n});\n</script>\n","<script>\n/*\nThis is a code from external library (https://github.com/Akryum/vue-virtual-scroller/blob/master/packages/vue-virtual-scroller/src/components/DynamicScrollerItem.vue)\nWe have modified it for our own specific use.\n*/\nimport { h } from 'vue';\nimport { returnFirstEl } from '@/common/utils';\n\nexport default {\n name: 'DtScrollerItem',\n\n inject: [\n 'vscrollData',\n 'vscrollParent',\n 'vscrollResizeObserver',\n ],\n\n props: {\n // eslint-disable-next-line vue/require-prop-types\n item: {\n required: true,\n },\n\n watchData: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Indicates if the view is actively used to display an item.\n */\n active: {\n type: Boolean,\n required: true,\n },\n\n index: {\n type: Number,\n default: undefined,\n },\n\n sizeDependencies: {\n type: [Array, Object],\n default: null,\n },\n\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n computed: {\n id () {\n if (this.vscrollData.simpleArray) return this.index;\n \n if (this.vscrollData.keyField in this.item) return this.item[this.vscrollData.keyField];\n throw new Error(`keyField '${this.vscrollData.keyField}' not found in your item. You should set a valid keyField prop on your Scroller`);\n },\n\n size () {\n return this.vscrollData.sizes[this.id] || 0;\n },\n\n finalActive () {\n return this.active && this.vscrollData.active;\n },\n },\n\n watch: {\n watchData: 'updateWatchData',\n\n id (value, oldValue) {\n returnFirstEl(this.$el).$_vs_id = this.id;\n if (!this.size) {\n this.onDataUpdate();\n }\n\n if (this.$_sizeObserved) {\n // In case the old item had the same size, it won't trigger the ResizeObserver\n // since we are reusing the same DOM node\n const oldSize = this.vscrollData.sizes[oldValue];\n const size = this.vscrollData.sizes[value];\n if (oldSize != null && oldSize !== size) {\n this.applySize(oldSize);\n }\n }\n },\n\n finalActive (value) {\n if (!this.size) {\n if (value) {\n if (!this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes++;\n this.vscrollParent.$_undefinedMap[this.id] = true;\n }\n } else {\n if (this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes--;\n this.vscrollParent.$_undefinedMap[this.id] = false;\n }\n }\n }\n\n if (this.vscrollResizeObserver) {\n if (value) {\n this.observeSize();\n } else {\n this.unobserveSize();\n }\n } else if (value && this.$_pendingVScrollUpdate === this.id) {\n this.updateSize();\n }\n },\n },\n\n created () {\n if (this.$isServer) return;\n\n this.$_forceNextVScrollUpdate = null;\n this.updateWatchData();\n\n if (!this.vscrollResizeObserver) {\n for (const k in this.sizeDependencies) {\n this.$watch(() => this.sizeDependencies[k], this.onDataUpdate);\n }\n }\n },\n\n mounted () {\n if (this.finalActive) {\n this.updateSize();\n this.observeSize();\n }\n },\n\n beforeUnmount () {\n this.unobserveSize();\n },\n\n methods: {\n updateSize () {\n if (this.finalActive) {\n if (this.$_pendingSizeUpdate !== this.id) {\n this.$_pendingSizeUpdate = this.id;\n this.$_forceNextVScrollUpdate = null;\n this.$_pendingVScrollUpdate = null;\n this.computeSize(this.id);\n }\n } else {\n this.$_forceNextVScrollUpdate = this.id;\n }\n },\n\n updateWatchData () {\n if (this.watchData && !this.vscrollResizeObserver) {\n this.$_watchData = this.$watch('item', () => {\n this.onDataUpdate();\n }, {\n deep: true,\n });\n } else if (this.$_watchData) {\n this.$_watchData();\n this.$_watchData = null;\n }\n },\n\n onVscrollUpdate ({ force }) {\n // If not active, sechedule a size update when it becomes active\n if (!this.finalActive && force) {\n this.$_pendingVScrollUpdate = this.id;\n }\n\n if (this.$_forceNextVScrollUpdate === this.id || force || !this.size) {\n this.updateSize();\n }\n },\n\n onDataUpdate () {\n this.updateSize();\n },\n\n computeSize (id) {\n this.$nextTick(() => {\n if (this.id === id) {\n const width = returnFirstEl(this.$el).offsetWidth;\n const height = returnFirstEl(this.$el).offsetHeight;\n this.applyWidthHeight(width, height);\n }\n this.$_pendingSizeUpdate = null;\n });\n },\n\n applyWidthHeight (width, height) {\n const size = ~~(this.vscrollParent.direction === 'vertical' ? height : width);\n if (size && this.size !== size) {\n this.applySize(size);\n }\n },\n\n applySize (size) {\n if (this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes--;\n this.vscrollParent.$_undefinedMap[this.id] = undefined;\n }\n this.vscrollData.sizes[this.id] = size;\n },\n\n observeSize () {\n if (!this.vscrollResizeObserver) return;\n if (this.$_sizeObserved) return;\n this.vscrollResizeObserver.observe(returnFirstEl(this.$el));\n this.$el.$_vs_id = this.id;\n this.$el.$_vs_onResize = this.onResize;\n this.$_sizeObserved = true;\n },\n\n unobserveSize () {\n if (!this.vscrollResizeObserver) return;\n if (!this.$_sizeObserved) return;\n this.vscrollResizeObserver.unobserve(returnFirstEl(this.$el));\n this.$el.$_vs_onResize = undefined;\n this.$_sizeObserved = false;\n },\n\n onResize (id, width, height) {\n if (this.id === id) {\n this.applyWidthHeight(width, height);\n }\n },\n },\n\n render () {\n return h(this.tag, this.$slots.default());\n },\n};\n</script>\n","<template>\n <core-scroller\n ref=\"scroller\"\n :items=\"itemsWithSize\"\n :min-item-size=\"minItemSize\"\n :direction=\"direction\"\n :key-field=\"keyField\"\n :list-tag=\"listTag\"\n :item-tag=\"itemTag\"\n v-bind=\"$attrs\"\n >\n <template\n #default=\"{ item: itemWithSize, index, active }\"\n >\n <dt-scroller-item\n :item=\"itemWithSize\"\n :active=\"active\"\n :size-dependencies=\"[\n itemWithSize.message,\n ]\"\n :data-index=\"index\"\n >\n <slot\n v-bind=\"{\n item: itemWithSize.item,\n index,\n active,\n itemWithSize,\n }\"\n />\n </dt-scroller-item>\n </template>\n\n <template\n v-if=\"$slots.before\"\n #before\n >\n <slot name=\"before\" />\n </template>\n\n <template\n v-if=\"$slots.empty\"\n #empty\n >\n <slot name=\"empty\" />\n </template>\n\n <template\n v-if=\"$slots.after\"\n #after\n >\n <slot name=\"after\" />\n </template>\n </core-scroller>\n</template>\n\n<!-- eslint-disable-next-line max-len -->\n<!-- This is a code from external library (https://github.com/Akryum/vue-virtual-scroller/blob/master/packages/vue-virtual-scroller/src/components/DynamicScroller.vue)\nWe have modified it for our own specific use. -->\n<script>\nimport CoreScroller from './CoreScroller.vue';\nimport DtScrollerItem from './ScrollerItem.vue';\nimport { returnFirstEl } from '@/common/utils';\n\nexport default {\n name: 'DynamicScroller',\n\n components: {\n CoreScroller,\n DtScrollerItem,\n },\n\n provide () {\n if (typeof ResizeObserver !== 'undefined') {\n this.$_resizeObserver = new ResizeObserver(entries => {\n requestAnimationFrame(() => {\n if (!Array.isArray(entries)) {\n return;\n }\n for (const entry of entries) {\n if (entry.target && entry.target.$_vs_onResize) {\n let width, height;\n if (entry.borderBoxSize) {\n const resizeObserverSize = entry.borderBoxSize[0];\n width = resizeObserverSize.inlineSize;\n height = resizeObserverSize.blockSize;\n } else {\n // @TODO remove when contentRect is deprecated\n width = entry.contentRect.width;\n height = entry.contentRect.height;\n }\n entry.target.$_vs_onResize(entry.target.$_vs_id, width, height);\n }\n }\n });\n });\n }\n\n return {\n vscrollData: this.vscrollData,\n vscrollParent: this,\n vscrollResizeObserver: this.$_resizeObserver,\n };\n },\n\n inheritAttrs: false,\n\n props: {\n /*\n * The items to render.\n * If the items are simple arrays, the index will be used as the key.\n * If the items are objects, the keyField will be used as the key.\n */\n items: {\n type: Array,\n required: true,\n },\n\n /*\n * Indicates if the items are dynamic.\n * If true, the items will be wrapped in a DtScrollerItem component.\n * This is required for dynamic items to be able to react to changes in their size.\n */\n dynamic: {\n type: Boolean,\n default: false,\n },\n\n /*\n * The key field to use for the items.\n * Only used if the items are objects.\n */\n keyField: {\n type: String,\n default: 'id',\n },\n\n /*\n * The direction of the scroller.\n * Can be either 'vertical' or 'horizontal'.\n */\n direction: {\n type: String,\n default: 'vertical',\n validator: (value) => ['vertical', 'horizontal'].includes(value),\n },\n\n /*\n * The tag to use for the list.\n */\n listTag: {\n type: String,\n default: 'div',\n },\n\n /*\n * The tag to use for the items.\n */\n itemTag: {\n type: String,\n default: 'div',\n },\n\n /*\n * Display height (or width in horizontal mode) of the items in pixels\n * used to calculate the scroll size and position.\n * Is required for the initial render of items in DYNAMIC size mode.\n */\n minItemSize: {\n type: [Number, String],\n },\n },\n\n data () {\n return {\n vscrollData: {\n active: true,\n sizes: {},\n keyField: this.keyField,\n simpleArray: false,\n },\n };\n },\n\n computed: {\n simpleArray () {\n return this.items.length && typeof this.items[0] !== 'object';\n },\n\n itemsWithSize () {\n const result = [];\n const { items, keyField, simpleArray } = this;\n const sizes = this.vscrollData.sizes;\n const l = items.length;\n for (let i = 0; i < l; i++) {\n const item = items[i];\n const id = simpleArray ? i : item[keyField];\n let size = sizes[id];\n if (typeof size === 'undefined' && !this.$_undefinedMap[id]) {\n size = 0;\n }\n result.push({\n item,\n [keyField]: id,\n size,\n });\n }\n return result;\n },\n },\n\n watch: {\n simpleArray: {\n handler (value) {\n this.vscrollData.simpleArray = value;\n },\n\n immediate: true,\n },\n\n itemsWithSize (next, prev) {\n const scrollTop = returnFirstEl(this.$el).scrollTop;\n\n // Calculate total diff between prev and next sizes\n // over current scroll top. Then add it to scrollTop to\n // avoid jumping the contents that the user is seeing.\n let prevActiveTop = 0; let activeTop = 0;\n const length = Math.min(next.length, prev.length);\n for (let i = 0; i < length; i++) {\n if (prevActiveTop >= scrollTop) {\n break;\n }\n prevActiveTop += prev[i].size || this.minItemSize;\n activeTop += next[i].size || this.minItemSize;\n }\n const offset = activeTop - prevActiveTop;\n\n if (offset === 0) {\n return;\n }\n\n returnFirstEl(this.$el).scrollTop += offset;\n },\n },\n\n beforeCreate () {\n this.$_updates = [];\n this.$_undefinedSizes = 0;\n this.$_undefinedMap = {};\n },\n\n activated () {\n this.vscrollData.active = true;\n },\n\n deactivated () {\n this.vscrollData.active = false;\n },\n\n methods: {\n dynamicScrollerUpdateItems () {\n const scroller = this.$refs.scroller;\n if (scroller) scroller._updateVisibleItems(true);\n },\n\n dynamicScrollerUpdateItemsFromBottom () {\n const scroller = this.$refs.scroller;\n if (scroller) scroller._updateVisibleItems(false, true);\n },\n\n scrollToItem (index) {\n const scroller = this.$refs.scroller;\n if (scroller) scroller.scrollToItem(index);\n },\n\n scrollToBottom () {\n if (this.$_scrollingToBottom) return;\n this.$_scrollingToBottom = true;\n const el = returnFirstEl(this.$el);\n // Item is inserted to the DOM\n this.$nextTick(() => {\n el.scrollTop = el.scrollHeight + 5000;\n // Item sizes are computed\n const cb = () => {\n el.scrollTop = el.scrollHeight + 5000;\n requestAnimationFrame(() => {\n el.scrollTop = el.scrollHeight + 5000;\n if (this.$_undefinedSizes === 0) {\n this.$_scrollingToBottom = false;\n } else {\n requestAnimationFrame(cb);\n }\n });\n };\n requestAnimationFrame(cb);\n });\n },\n },\n};\n</script>\n","<template>\n <component\n :is=\"dynamic ? DynamicScroller : CoreScroller\"\n ref=\"scroller\"\n data-qa=\"dt-scroller\"\n :items=\"items\"\n :item-size=\"itemSize\"\n :min-item-size=\"minItemSize\"\n :buffer=\"buffer\"\n :direction=\"direction\"\n :key-field=\"keyField\"\n :list-tag=\"listTag\"\n :item-tag=\"itemTag\"\n :style=\"computedStyle\"\n tabindex=\"0\"\n @user-position=\"$emit('user-position', $event)\"\n @scroll-start=\"$emit('scroll-start')\"\n @scroll-end=\"$emit('scroll-end')\"\n >\n <template\n #default=\"{ item, index, active }\"\n >\n <slot\n v-bind=\"{\n item: item,\n index,\n active,\n }\"\n />\n </template>\n\n <template\n v-if=\"$slots.before\"\n #before\n >\n <!-- @slot Content rendered before the items, inside the scroll viewport. Scrolls with the list. -->\n <slot name=\"before\" />\n </template>\n\n <template\n v-if=\"$slots.empty\"\n #empty\n >\n <!-- @slot Content rendered inside the list wrapper only while the list is empty. -->\n <slot name=\"empty\" />\n </template>\n\n <template\n v-if=\"$slots.after\"\n #after\n >\n <!-- @slot Content rendered after the items, inside the scroll viewport. Scrolls with the list. -->\n <slot name=\"after\" />\n </template>\n </component>\n</template>\n\n<script setup>\nimport CoreScroller from './Modules/CoreScroller.vue';\nimport DynamicScroller from './Modules/DynamicScroller.vue';\nimport { provide, computed, watch, ref } from 'vue';\n\ndefineOptions({\n name: 'DtScroller',\n});\n\nconst props = defineProps({\n /**\n * Amount of pixels added to each edge of the scroll viewport, so items are rendered\n * before they scroll into view. Also controls how early `scroll-start` and `scroll-end`\n * fire relative to the viewport edges.\n */\n buffer: {\n type: Number,\n default: 200,\n },\n\n /**\n * The direction of the scroller.\n * @values vertical, horizontal\n */\n direction: {\n type: String,\n default: 'vertical',\n validator: (value) => ['vertical', 'horizontal'].includes(value),\n },\n\n /**\n * Indicates if the items need to react to changes in their size.\n * If disabled the itemSize prop is required and you will get improved performance.\n * If enabled the minItemSize prop is required and you\n * will have reduced performance but the ability to reactively size list items\n * @values true, false\n */\n dynamic: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Display height (or width in horizontal mode) of the items in pixels\n * used to calculate the scroll size and position.\n * Required if DYNAMIC is false\n */\n itemSize: {\n type: Number,\n default: null,\n },\n\n /**\n * The tag to use for the items.\n */\n itemTag: {\n type: String,\n default: 'div',\n },\n\n /**\n * The items to render.\n * If the items are simple arrays, the index will be used as the key.\n * If the items are objects, the keyField will be used as the key.\n * @example items: [ 'item1', 'item2', 'item3' ]\n * @example items: [ { id: 1, name: 'item1' }, { id: 2, name: 'item2' }, { id: 3, name: 'item3' } ]\n */\n items: {\n type: Array,\n required: true,\n },\n\n /**\n * The key field to use for the items.\n * If the items are objects, the scroller needs to be able to identify them.\n * By default it will look for an id field on the items.\n * This can be configured with this prop if you are using another field name.\n */\n keyField: {\n type: String,\n default: 'id',\n },\n\n /**\n * The tag to use for the list.\n */\n listTag: {\n type: String,\n default: 'div',\n },\n\n /**\n * Minimum size used if the height (or width in horizontal mode) of a item is unknown.\n * Is required for the initial render of items in DYNAMIC size mode.\n */\n minItemSize: {\n type: [Number, String],\n default: null,\n },\n\n /**\n * The height of the scroller.\n * Can be a number (in pixels) or a string (in CSS units).\n */\n scrollerHeight: {\n type: [String, Number],\n default: '100%',\n },\n\n /**\n * The width of the scroller.\n * Can be a number (in pixels) or a string (in CSS units).\n */\n scrollerWidth: {\n type: [String, Number],\n default: '100%',\n },\n});\n\nconst emits = defineEmits([\n /**\n * Describe when the scroller changes from block-start (aka top) / middle / block-end (aka bottom).\n * The top and bottom values are deprecated and will ideally be removed in the next major version.\n * Please use blockStart and blockEnd instead.\n * @param {string} position The position of the scroller.\n * @values blockStart, middle, blockEnd, top, bottom\n */\n 'user-position',\n\n /**\n * Emitted when the first item enters the rendered view pool. Fires at least one `buffer`\n * length before the viewport's start edge is reached (earlier still with `before` slot\n * content), so callers can prepend items ahead of time.\n */\n 'scroll-start',\n\n /**\n * Emitted when the last item enters the rendered view pool. Fires at least one `buffer`\n * length before the viewport's end edge is reached (earlier still with `after` slot\n * content), so callers can append items ahead of time.\n */\n 'scroll-end',\n]);\n\nprovide('emit', emits);\n\nconst scroller = ref(null);\n\nconst computedStyle = computed(() => {\n return {\n width: typeof props.scrollerWidth === 'number' ? `${props.scrollerWidth}px` : props.scrollerWidth,\n height: typeof props.scrollerHeight === 'number' ? `${props.scrollerHeight}px` : props.scrollerHeight,\n };\n});\n\nwatch(props, () => {\n validateProps();\n}, { deep: true, immediate: true });\n\nfunction scrollToBottom () {\n if (scroller.value) scroller.value.scrollToBottom();\n}\n\nfunction scrollToItem (index) {\n if (scroller.value) scroller.value.scrollToItem(index);\n}\n\nfunction updateItems () {\n if (!scroller.value) return;\n if (props.dynamic) {\n scroller.value.dynamicScrollerUpdateItems();\n } else {\n scroller.value._updateVisibleItems(true);\n }\n}\n\nfunction updateItemsFromBottom () {\n if (!scroller.value) return;\n if (props.dynamic) {\n scroller.value.dynamicScrollerUpdateItemsFromBottom();\n } else {\n scroller.value._updateVisibleItems(false, true);\n }\n}\n\nfunction validateProps () {\n if (props.dynamic && !props.minItemSize) {\n console.error('scroller error: \\'minItemSize\\' is required on \\'dynamic\\' mode.');\n }\n\n if (!props.dynamic && !props.itemSize) {\n console.error('scroller error: \\'itemSize\\' is required.');\n }\n}\n\ndefineExpose({\n scrollToBottom,\n scrollToItem,\n updateItems,\n updateItemsFromBottom,\n});\n</script>\n"],"mappings":"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"}
|
|
@@ -123,6 +123,7 @@ var j = {
|
|
|
123
123
|
}, Z = () => {
|
|
124
124
|
y.value.sort((e, t) => e.nr.index - t.nr.index);
|
|
125
125
|
}, Q = (e, t = !1) => {
|
|
126
|
+
if (!M.value) return;
|
|
126
127
|
let n = c.itemSize, r = V, i = G.value ? null : c.keyField, a = c.items, o = a.length, s = W.value, d = u, f = h, p = y, m = K, g, _, v, b, x;
|
|
127
128
|
if (!o) g = _ = b = x = v = 0;
|
|
128
129
|
else {
|
|
@@ -688,4 +689,4 @@ var P = /* @__PURE__ */ t(M, [["render", N]]), F = /* @__PURE__ */ Object.assign
|
|
|
688
689
|
//#endregion
|
|
689
690
|
export { F as t };
|
|
690
691
|
|
|
691
|
-
//# sourceMappingURL=Scroller-
|
|
692
|
+
//# sourceMappingURL=Scroller-BsGXTN6S.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Scroller-BsGXTN6S.js","names":["$slots","$emit","$slots"],"sources":["../components/Scroller/Modules/CoreScroller.vue","../components/Scroller/Modules/ScrollerItem.vue","../components/Scroller/Modules/DynamicScroller.vue","../components/Scroller/Scroller.vue"],"sourcesContent":["<!-- eslint-disable max-len -->\n<template>\n <div\n ref=\"scroller\"\n class=\"vue-recycle-scroller\"\n :class=\"{\n ready,\n [`direction-${direction}`]: true,\n }\"\n @scroll.passive=\"handleScroll\"\n >\n <div\n v-if=\"$slots.before\"\n ref=\"before\"\n data-qa=\"dt-scroller-before\"\n class=\"vue-recycle-scroller__slot\"\n >\n <!-- @slot Content rendered before the items, inside the scroll viewport. Scrolls with the list. -->\n <slot name=\"before\" />\n </div>\n\n <component\n :is=\"listTag\"\n ref=\"wrapper\"\n :style=\"{ [direction === 'vertical' ? 'minHeight' : 'minWidth']: `${totalSize}px` }\"\n data-qa=\"dt-scroller-item-wrapper\"\n class=\"vue-recycle-scroller__item-wrapper\"\n :class=\"listClass\"\n >\n <component\n :is=\"itemTag\"\n v-for=\"view in pool\"\n :key=\"view.nr.id\"\n data-qa=\"dt-scroller-item\"\n :style=\"ready ? {\n transform: `translate${direction === 'vertical' ? 'Y' : 'X'}(${view.position}px) translate${direction === 'vertical' ? 'X' : 'Y'}(${view.offset}px)`,\n width: undefined,\n height: undefined,\n } : null\"\n class=\"vue-recycle-scroller__item-view\"\n :class=\"[\n itemClass,\n {\n hover: props.enableHover && hoverKey === view.nr.key,\n },\n ]\"\n v-on=\"props.enableHover ? {\n mouseenter: () => { hoverKey = view.nr.key },\n mouseleave: () => { hoverKey = null },\n } : {}\"\n >\n <slot\n :item=\"view.item\"\n :index=\"view.nr.index\"\n :active=\"view.nr.used\"\n />\n </component>\n\n <!-- @slot Content rendered inside the list wrapper only while the list is empty. -->\n <slot\n v-if=\"!items.length\"\n name=\"empty\"\n />\n </component>\n\n <div\n v-if=\"$slots.after\"\n ref=\"after\"\n data-qa=\"dt-scroller-after\"\n class=\"vue-recycle-scroller__slot\"\n >\n <!-- @slot Content rendered after the items, inside the scroll viewport. Scrolls with the list. -->\n <slot name=\"after\" />\n </div>\n </div>\n</template>\n\n<script setup>\n/*\nThis is a code from external library (https://github.com/Akryum/vue-virtual-scroller/blob/master/packages/vue-virtual-scroller/src/components/RecycleScroller.vue)\nWe have modified it for our own specific use.\n*/\nimport { computed, watch, markRaw, shallowReactive, onMounted, nextTick, reactive, ref } from 'vue';\n\nconst props = defineProps({\n /**\n * List of items you want to display in the scroller.\n */\n items: {\n type: Array,\n required: true,\n },\n\n /**\n *\n * Field used to identify items and optimize managing rendered views\n */\n keyField: {\n type: String,\n default: 'id',\n },\n\n /**\n * Direction of the scroller. Can be either `vertical` or `horizontal`.\n */\n direction: {\n type: String,\n default: 'vertical',\n validator: (value) => ['vertical', 'horizontal'].includes(value),\n },\n\n /**\n * Size of the items in the list.\n * If it is set to null (the default value), it will use variable size mode.\n */\n itemSize: {\n type: Number,\n default: null,\n },\n\n /**\n * Minimum size used if the height (or width in horizontal mode) of an item is unknown.\n */\n minItemSize: {\n type: [Number, String],\n default: null,\n },\n\n /**\n * Field used to get the item's size in variable size mode.\n */\n sizeField: {\n type: String,\n default: 'size',\n },\n\n /**\n * Amount of pixel to add to edges of the scrolling visible area to start rendering items further away.\n */\n buffer: {\n type: Number,\n default: 200,\n },\n\n /**\n * Enables hover state CSS class and mouse events on items.\n * Set to false if you want to manage hover state yourself.\n */\n enableHover: {\n type: Boolean,\n default: true,\n },\n\n /**\n * The element to render as the list's wrapper.\n */\n listTag: {\n type: String,\n default: 'div',\n },\n\n /**\n * The element to render as the list item.\n */\n itemTag: {\n type: String,\n default: 'div',\n },\n\n /**\n * The custom classes added to the item list wrapper.\n */\n listClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * The custom classes added to each item.\n */\n itemClass: {\n type: [String, Object, Array],\n default: '',\n },\n});\n\nconst emit = defineEmits(['user-position', 'scroll-start', 'scroll-end']);\n\nconst views = reactive(new Map());\n// const reactiveItems = reactive(props.items);\nconst unusedViews = reactive(new Map());\nconst updateTimeout = null;\nconst pool = ref([]);\nconst hoverKey = ref(null);\nconst ready = ref(false);\nconst scroller = ref(null);\nconst before = ref(null);\nconst after = ref(null);\nconst userPosition = ref('blockStart');\n\nlet startIndex = 0;\nlet endIndex = 0;\nlet scrollDirty = false;\nlet lastUpdateScrollPosition = 0;\nlet sortTimer = null;\nlet computedMinItemSize = null;\nlet totalSize = 0;\nlet uid = 0;\n\nconst sizes = computed(() => {\n if (props.itemSize === null) {\n const sizes = {\n '-1': { accumulator: 0 },\n };\n const items = props.items;\n const field = props.sizeField;\n const minItemSize = props.minItemSize;\n let computedMinSize = 10000;\n let accumulator = 0;\n let current;\n for (let i = 0, l = items.length; i < l; i++) {\n current = items[i][field] || minItemSize;\n if (current < computedMinSize) {\n computedMinSize = current;\n }\n accumulator += current;\n sizes[i] = { accumulator, size: current };\n }\n\n computedMinItemSize = computedMinSize;\n return sizes;\n }\n return [];\n});\n\nconst simpleArray = computed(() => {\n return props.items.length && typeof props.items[0] !== 'object';\n});\n\nconst itemIndexByKey = computed(() => {\n const result = {};\n for (let i = 0, l = props.items.length; i < l; i++) {\n result[props.items[i][props.keyField]] = i;\n }\n return result;\n});\n\n// watch(reactiveItems, () => {\n// // if add to the top\n// // _updateVisibleItems(true);\n// // if autoscrolling if add to the bottom\n// // _updateVisibleItems(false, true);\n// });\n\nwatch(sizes, () => {\n _updateVisibleItems(false);\n}, { deep: true });\n\nonMounted(() => {\n nextTick(() => {\n // In SSR mode, render the real number of visible items\n _updateVisibleItems(true);\n ready.value = true;\n });\n});\n\nconst _addView = (pool, index, item, key, type) => {\n const nr = markRaw({\n id: uid++,\n index,\n used: true,\n key,\n type,\n });\n const view = shallowReactive({\n item,\n position: 0,\n nr,\n });\n pool.value.push(view);\n return view;\n};\n\nconst _unuseView = (view, fake = false) => {\n const _unusedViews = unusedViews;\n const type = view.nr.type;\n let unusedPool = _unusedViews.get(type);\n if (!unusedPool) {\n unusedPool = [];\n _unusedViews.set(type, unusedPool);\n }\n unusedPool.push(view);\n if (!fake) {\n view.nr.used = false;\n view.position = -9999;\n }\n};\n\nconst _getScroll = () => {\n const isVertical = props.direction === 'vertical';\n let scrollState;\n\n if (isVertical) {\n scrollState = {\n start: scroller.value.scrollTop,\n end: scroller.value.scrollTop + scroller.value.clientHeight,\n };\n } else {\n scrollState = {\n start: scroller.value.scrollLeft,\n end: scroller.value.scrollLeft + scroller.value.clientWidth,\n };\n }\n\n return scrollState;\n};\n\nconst _itemsLimitError = () => {\n setTimeout(() => {\n \n console.error('It seems the scroller element isn\\'t scrolling, so it tries to render all the items at once.', 'Scroller:', scroller);\n \n console.error('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.');\n });\n throw new Error('Rendered items limit reached');\n};\n\nconst _sortViews = () => {\n pool.value.sort((viewA, viewB) => viewA.nr.index - viewB.nr.index);\n};\n\nconst _updateVisibleItems = (checkItem, checkPositionDiff = false) => {\n // Deferred callers (the `sizes` watcher and the mounted nextTick) can fire\n // after the root element unmounts, when `scroller.value` is already null.\n if (!scroller.value) return;\n\n const itemSize = props.itemSize;\n const minItemSize = computedMinItemSize;\n const keyField = simpleArray.value ? null : props.keyField;\n const items = props.items;\n const count = items.length;\n const _sizes = sizes.value;\n const _views = views;\n const _unusedViews = unusedViews;\n const _pool = pool;\n const _itemIndexByKey = itemIndexByKey;\n let _startIndex, _endIndex;\n let _totalSize;\n let visibleStartIndex, visibleEndIndex;\n\n if (!count) {\n _startIndex = _endIndex = visibleStartIndex = visibleEndIndex = _totalSize = 0;\n } else {\n const scroll = _getScroll();\n\n // Skip update if use hasn't scrolled enough\n if (checkPositionDiff) {\n let positionDiff = scroll.start - lastUpdateScrollPosition.value;\n if (positionDiff < 0) positionDiff = -positionDiff;\n if ((itemSize === null && positionDiff < minItemSize.value) || positionDiff < itemSize) {\n return {\n continuous: true,\n };\n }\n }\n lastUpdateScrollPosition = scroll.start;\n\n const _buffer = props.buffer;\n scroll.start -= _buffer;\n scroll.end += _buffer;\n\n // The leading and trailing slots sit in normal flow inside the viewport, so the item\n // wrapper does not start at offset 0. Widen the window by their measured size.\n const slotSize = props.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth';\n if (before.value) scroll.start -= before.value[slotSize];\n if (after.value) scroll.end += after.value[slotSize];\n\n // Variable size mode\n if (itemSize === null) {\n let h;\n let a = 0;\n let b = count - 1;\n let i = ~~(count / 2);\n let oldI;\n\n // Searching for _startIndex\n do {\n oldI = i;\n h = _sizes[i]?.accumulator;\n if (h < scroll.start) {\n a = i;\n } else if (i < count - 1 && _sizes[i + 1]?.accumulator > scroll.start) {\n b = i;\n }\n i = ~~((a + b) / 2);\n } while (i !== oldI);\n i < 0 && (i = 0);\n _startIndex = i;\n\n // For container style\n _totalSize = _sizes[count - 1]?.accumulator;\n\n // Searching for _endIndex\n for (\n _endIndex = i;\n _endIndex < count && _sizes[_endIndex]?.accumulator < scroll.end;\n _endIndex++\n );\n\n if (_endIndex === -1) {\n _endIndex = items.length - 1;\n } else {\n _endIndex++;\n // Bounds\n _endIndex > count && (_endIndex = count);\n }\n\n // search visible _startIndex\n for (\n visibleStartIndex = startIndex;\n visibleStartIndex < count && (_sizes[visibleStartIndex]?.accumulator) < scroll.start;\n visibleStartIndex++\n );\n\n // search visible endIndex\n for (\n visibleEndIndex = visibleStartIndex;\n visibleEndIndex < count && (_sizes[visibleEndIndex]?.accumulator) < scroll.end;\n visibleEndIndex++\n );\n } else {\n // Fixed size mode\n _startIndex = ~~(scroll.start / itemSize);\n const remainer = _startIndex % 1;\n _startIndex -= remainer;\n _endIndex = Math.ceil(scroll.end / itemSize);\n visibleStartIndex = Math.max(0, Math.floor((scroll.start) / itemSize));\n visibleEndIndex = Math.floor((scroll.end) / itemSize);\n\n // Bounds\n _startIndex < 0 && (_startIndex = 0);\n _endIndex > count && (_endIndex = count);\n visibleStartIndex < 0 && (visibleStartIndex = 0);\n visibleEndIndex > count && (visibleEndIndex = count);\n\n _totalSize = Math.ceil(count / 1) * itemSize;\n }\n }\n\n // items limit 1000\n if (_endIndex - _startIndex > 1000) {\n _itemsLimitError();\n }\n\n totalSize = _totalSize;\n\n let view;\n\n const continuous = _startIndex <= endIndex && _endIndex >= _startIndex;\n\n // Unuse views that are no longer visible\n if (continuous) {\n for (let i = 0, l = _pool.value.length; i < l; i++) {\n view = _pool.value[i];\n if (view?.nr.used) {\n // Update view item index\n if (checkItem) {\n view.nr.index = _itemIndexByKey[view.item[keyField]];\n }\n\n // Check if index is still in visible range\n if (\n view.nr.index == null ||\n view.nr.index < _startIndex ||\n view.nr.index >= _endIndex\n ) {\n _unuseView(view);\n }\n }\n }\n }\n\n const unusedIndex = continuous ? null : new Map();\n\n let item, type;\n let v;\n for (let i = _startIndex; i < _endIndex; i++) {\n item = items[i];\n const key = keyField ? item?.[keyField] : item;\n\n if (key == null) {\n throw new Error(`Key is ${key} on item (keyField is '${keyField}')`);\n }\n view = _views.get(key);\n\n if (!itemSize && !_sizes[i]?.size) {\n if (view) _unuseView(view);\n continue;\n }\n\n type = item.type;\n\n let unusedPool = _unusedViews.get(type);\n let newlyUsedView = false;\n\n // No view assigned to item\n if (!view) {\n if (continuous) {\n // Reuse existing view\n if (unusedPool && unusedPool.length) {\n view = unusedPool.pop();\n } else {\n view = _addView(_pool, i, item, key, type);\n }\n } else {\n // Use existing view\n // We don't care if they are already used\n // because we are not in continous scrolling\n v = unusedIndex.get(type) || 0;\n\n if (!unusedPool || v >= unusedPool.length) {\n view = _addView(_pool, i, item, key, type);\n _unuseView(view, true);\n unusedPool = _unusedViews.get(type);\n }\n\n view = unusedPool[v];\n unusedIndex.set(type, v + 1);\n }\n\n // Assign view to item\n _views.delete(view.nr.key);\n view.nr.used = true;\n view.nr.index = i;\n view.nr.key = key;\n view.nr.type = type;\n _views.set(key, view);\n\n newlyUsedView = true;\n } else {\n // View already assigned to item\n if (!view.nr.used) {\n view.nr.used = true;\n newlyUsedView = true;\n if (unusedPool) {\n const index = unusedPool.indexOf(view);\n if (index !== -1) unusedPool.splice(index, 1);\n }\n }\n }\n\n // Always set item in case it's a new object with the same key\n view.item = item;\n\n if (newlyUsedView) {\n if (i === items.length - 1) emit('scroll-end');\n if (i === 0) emit('scroll-start');\n }\n\n // Update position\n if (itemSize === null) {\n view.position = _sizes[i - 1]?.accumulator;\n view.offset = 0;\n } else {\n view.position = Math.floor(i) * itemSize;\n view.offset = (i % 1) * itemSize;\n }\n }\n\n startIndex = _startIndex;\n endIndex = _endIndex;\n\n // After the user has finished scrolling\n // Sort views so text selection is correct\n clearTimeout(sortTimer);\n sortTimer = setTimeout(_sortViews, 300);\n\n return {\n continuous,\n };\n};\n\nconst _scrollToPosition = (position) => {\n const direction = props.direction === 'vertical'\n ? { scroll: 'scrollTop', start: 'top' }\n : { scroll: 'scrollLeft', start: 'left' };\n\n const viewport = scroller.value;\n const scrollDirection = direction.scroll;\n\n viewport[scrollDirection] = position;\n};\n\nconst scrollToItem = (index) => {\n let scroll;\n if (props.itemSize === null) {\n scroll = index > 0 ? sizes.value[index - 1]?.accumulator : 0;\n } else {\n scroll = Math.floor(index) * props.itemSize;\n }\n _scrollToPosition(scroll);\n};\n\nconst handleScroll = () => {\n const container = scroller.value;\n\n if (userPosition.value !== 'middle') {\n userPosition.value = 'middle';\n emit('user-position', 'middle');\n }\n\n // Check if the scroll is at the block-start (aka top) of the container\n if (container.scrollTop === 0) {\n userPosition.value = 'blockStart';\n emit('user-position', 'blockStart');\n emit('user-position', 'top');\n }\n\n // Check if the scroll is at the block-end (aka bottom) of the container\n if (container.scrollTop + container.clientHeight === container.scrollHeight) {\n userPosition.value = 'blockEnd';\n emit('user-position', 'blockEnd');\n emit('user-position', 'bottom');\n }\n\n if (!scrollDirty) {\n scrollDirty = true;\n if (updateTimeout) return;\n\n const requestUpdate = () => requestAnimationFrame(() => {\n scrollDirty = false;\n _updateVisibleItems(false, true);\n });\n\n requestUpdate();\n }\n};\n\ndefineExpose({\n scrollToItem,\n _updateVisibleItems,\n});\n</script>\n","<script>\n/*\nThis is a code from external library (https://github.com/Akryum/vue-virtual-scroller/blob/master/packages/vue-virtual-scroller/src/components/DynamicScrollerItem.vue)\nWe have modified it for our own specific use.\n*/\nimport { h } from 'vue';\nimport { returnFirstEl } from '@/common/utils';\n\nexport default {\n name: 'DtScrollerItem',\n\n inject: [\n 'vscrollData',\n 'vscrollParent',\n 'vscrollResizeObserver',\n ],\n\n props: {\n // eslint-disable-next-line vue/require-prop-types\n item: {\n required: true,\n },\n\n watchData: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Indicates if the view is actively used to display an item.\n */\n active: {\n type: Boolean,\n required: true,\n },\n\n index: {\n type: Number,\n default: undefined,\n },\n\n sizeDependencies: {\n type: [Array, Object],\n default: null,\n },\n\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n computed: {\n id () {\n if (this.vscrollData.simpleArray) return this.index;\n \n if (this.vscrollData.keyField in this.item) return this.item[this.vscrollData.keyField];\n throw new Error(`keyField '${this.vscrollData.keyField}' not found in your item. You should set a valid keyField prop on your Scroller`);\n },\n\n size () {\n return this.vscrollData.sizes[this.id] || 0;\n },\n\n finalActive () {\n return this.active && this.vscrollData.active;\n },\n },\n\n watch: {\n watchData: 'updateWatchData',\n\n id (value, oldValue) {\n returnFirstEl(this.$el).$_vs_id = this.id;\n if (!this.size) {\n this.onDataUpdate();\n }\n\n if (this.$_sizeObserved) {\n // In case the old item had the same size, it won't trigger the ResizeObserver\n // since we are reusing the same DOM node\n const oldSize = this.vscrollData.sizes[oldValue];\n const size = this.vscrollData.sizes[value];\n if (oldSize != null && oldSize !== size) {\n this.applySize(oldSize);\n }\n }\n },\n\n finalActive (value) {\n if (!this.size) {\n if (value) {\n if (!this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes++;\n this.vscrollParent.$_undefinedMap[this.id] = true;\n }\n } else {\n if (this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes--;\n this.vscrollParent.$_undefinedMap[this.id] = false;\n }\n }\n }\n\n if (this.vscrollResizeObserver) {\n if (value) {\n this.observeSize();\n } else {\n this.unobserveSize();\n }\n } else if (value && this.$_pendingVScrollUpdate === this.id) {\n this.updateSize();\n }\n },\n },\n\n created () {\n if (this.$isServer) return;\n\n this.$_forceNextVScrollUpdate = null;\n this.updateWatchData();\n\n if (!this.vscrollResizeObserver) {\n for (const k in this.sizeDependencies) {\n this.$watch(() => this.sizeDependencies[k], this.onDataUpdate);\n }\n }\n },\n\n mounted () {\n if (this.finalActive) {\n this.updateSize();\n this.observeSize();\n }\n },\n\n beforeUnmount () {\n this.unobserveSize();\n },\n\n methods: {\n updateSize () {\n if (this.finalActive) {\n if (this.$_pendingSizeUpdate !== this.id) {\n this.$_pendingSizeUpdate = this.id;\n this.$_forceNextVScrollUpdate = null;\n this.$_pendingVScrollUpdate = null;\n this.computeSize(this.id);\n }\n } else {\n this.$_forceNextVScrollUpdate = this.id;\n }\n },\n\n updateWatchData () {\n if (this.watchData && !this.vscrollResizeObserver) {\n this.$_watchData = this.$watch('item', () => {\n this.onDataUpdate();\n }, {\n deep: true,\n });\n } else if (this.$_watchData) {\n this.$_watchData();\n this.$_watchData = null;\n }\n },\n\n onVscrollUpdate ({ force }) {\n // If not active, sechedule a size update when it becomes active\n if (!this.finalActive && force) {\n this.$_pendingVScrollUpdate = this.id;\n }\n\n if (this.$_forceNextVScrollUpdate === this.id || force || !this.size) {\n this.updateSize();\n }\n },\n\n onDataUpdate () {\n this.updateSize();\n },\n\n computeSize (id) {\n this.$nextTick(() => {\n if (this.id === id) {\n const width = returnFirstEl(this.$el).offsetWidth;\n const height = returnFirstEl(this.$el).offsetHeight;\n this.applyWidthHeight(width, height);\n }\n this.$_pendingSizeUpdate = null;\n });\n },\n\n applyWidthHeight (width, height) {\n const size = ~~(this.vscrollParent.direction === 'vertical' ? height : width);\n if (size && this.size !== size) {\n this.applySize(size);\n }\n },\n\n applySize (size) {\n if (this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes--;\n this.vscrollParent.$_undefinedMap[this.id] = undefined;\n }\n this.vscrollData.sizes[this.id] = size;\n },\n\n observeSize () {\n if (!this.vscrollResizeObserver) return;\n if (this.$_sizeObserved) return;\n this.vscrollResizeObserver.observe(returnFirstEl(this.$el));\n this.$el.$_vs_id = this.id;\n this.$el.$_vs_onResize = this.onResize;\n this.$_sizeObserved = true;\n },\n\n unobserveSize () {\n if (!this.vscrollResizeObserver) return;\n if (!this.$_sizeObserved) return;\n this.vscrollResizeObserver.unobserve(returnFirstEl(this.$el));\n this.$el.$_vs_onResize = undefined;\n this.$_sizeObserved = false;\n },\n\n onResize (id, width, height) {\n if (this.id === id) {\n this.applyWidthHeight(width, height);\n }\n },\n },\n\n render () {\n return h(this.tag, this.$slots.default());\n },\n};\n</script>\n","<template>\n <core-scroller\n ref=\"scroller\"\n :items=\"itemsWithSize\"\n :min-item-size=\"minItemSize\"\n :direction=\"direction\"\n :key-field=\"keyField\"\n :list-tag=\"listTag\"\n :item-tag=\"itemTag\"\n v-bind=\"$attrs\"\n >\n <template\n #default=\"{ item: itemWithSize, index, active }\"\n >\n <dt-scroller-item\n :item=\"itemWithSize\"\n :active=\"active\"\n :size-dependencies=\"[\n itemWithSize.message,\n ]\"\n :data-index=\"index\"\n >\n <slot\n v-bind=\"{\n item: itemWithSize.item,\n index,\n active,\n itemWithSize,\n }\"\n />\n </dt-scroller-item>\n </template>\n\n <template\n v-if=\"$slots.before\"\n #before\n >\n <slot name=\"before\" />\n </template>\n\n <template\n v-if=\"$slots.empty\"\n #empty\n >\n <slot name=\"empty\" />\n </template>\n\n <template\n v-if=\"$slots.after\"\n #after\n >\n <slot name=\"after\" />\n </template>\n </core-scroller>\n</template>\n\n<!-- eslint-disable-next-line max-len -->\n<!-- This is a code from external library (https://github.com/Akryum/vue-virtual-scroller/blob/master/packages/vue-virtual-scroller/src/components/DynamicScroller.vue)\nWe have modified it for our own specific use. -->\n<script>\nimport CoreScroller from './CoreScroller.vue';\nimport DtScrollerItem from './ScrollerItem.vue';\nimport { returnFirstEl } from '@/common/utils';\n\nexport default {\n name: 'DynamicScroller',\n\n components: {\n CoreScroller,\n DtScrollerItem,\n },\n\n provide () {\n if (typeof ResizeObserver !== 'undefined') {\n this.$_resizeObserver = new ResizeObserver(entries => {\n requestAnimationFrame(() => {\n if (!Array.isArray(entries)) {\n return;\n }\n for (const entry of entries) {\n if (entry.target && entry.target.$_vs_onResize) {\n let width, height;\n if (entry.borderBoxSize) {\n const resizeObserverSize = entry.borderBoxSize[0];\n width = resizeObserverSize.inlineSize;\n height = resizeObserverSize.blockSize;\n } else {\n // @TODO remove when contentRect is deprecated\n width = entry.contentRect.width;\n height = entry.contentRect.height;\n }\n entry.target.$_vs_onResize(entry.target.$_vs_id, width, height);\n }\n }\n });\n });\n }\n\n return {\n vscrollData: this.vscrollData,\n vscrollParent: this,\n vscrollResizeObserver: this.$_resizeObserver,\n };\n },\n\n inheritAttrs: false,\n\n props: {\n /*\n * The items to render.\n * If the items are simple arrays, the index will be used as the key.\n * If the items are objects, the keyField will be used as the key.\n */\n items: {\n type: Array,\n required: true,\n },\n\n /*\n * Indicates if the items are dynamic.\n * If true, the items will be wrapped in a DtScrollerItem component.\n * This is required for dynamic items to be able to react to changes in their size.\n */\n dynamic: {\n type: Boolean,\n default: false,\n },\n\n /*\n * The key field to use for the items.\n * Only used if the items are objects.\n */\n keyField: {\n type: String,\n default: 'id',\n },\n\n /*\n * The direction of the scroller.\n * Can be either 'vertical' or 'horizontal'.\n */\n direction: {\n type: String,\n default: 'vertical',\n validator: (value) => ['vertical', 'horizontal'].includes(value),\n },\n\n /*\n * The tag to use for the list.\n */\n listTag: {\n type: String,\n default: 'div',\n },\n\n /*\n * The tag to use for the items.\n */\n itemTag: {\n type: String,\n default: 'div',\n },\n\n /*\n * Display height (or width in horizontal mode) of the items in pixels\n * used to calculate the scroll size and position.\n * Is required for the initial render of items in DYNAMIC size mode.\n */\n minItemSize: {\n type: [Number, String],\n },\n },\n\n data () {\n return {\n vscrollData: {\n active: true,\n sizes: {},\n keyField: this.keyField,\n simpleArray: false,\n },\n };\n },\n\n computed: {\n simpleArray () {\n return this.items.length && typeof this.items[0] !== 'object';\n },\n\n itemsWithSize () {\n const result = [];\n const { items, keyField, simpleArray } = this;\n const sizes = this.vscrollData.sizes;\n const l = items.length;\n for (let i = 0; i < l; i++) {\n const item = items[i];\n const id = simpleArray ? i : item[keyField];\n let size = sizes[id];\n if (typeof size === 'undefined' && !this.$_undefinedMap[id]) {\n size = 0;\n }\n result.push({\n item,\n [keyField]: id,\n size,\n });\n }\n return result;\n },\n },\n\n watch: {\n simpleArray: {\n handler (value) {\n this.vscrollData.simpleArray = value;\n },\n\n immediate: true,\n },\n\n itemsWithSize (next, prev) {\n const scrollTop = returnFirstEl(this.$el).scrollTop;\n\n // Calculate total diff between prev and next sizes\n // over current scroll top. Then add it to scrollTop to\n // avoid jumping the contents that the user is seeing.\n let prevActiveTop = 0; let activeTop = 0;\n const length = Math.min(next.length, prev.length);\n for (let i = 0; i < length; i++) {\n if (prevActiveTop >= scrollTop) {\n break;\n }\n prevActiveTop += prev[i].size || this.minItemSize;\n activeTop += next[i].size || this.minItemSize;\n }\n const offset = activeTop - prevActiveTop;\n\n if (offset === 0) {\n return;\n }\n\n returnFirstEl(this.$el).scrollTop += offset;\n },\n },\n\n beforeCreate () {\n this.$_updates = [];\n this.$_undefinedSizes = 0;\n this.$_undefinedMap = {};\n },\n\n activated () {\n this.vscrollData.active = true;\n },\n\n deactivated () {\n this.vscrollData.active = false;\n },\n\n methods: {\n dynamicScrollerUpdateItems () {\n const scroller = this.$refs.scroller;\n if (scroller) scroller._updateVisibleItems(true);\n },\n\n dynamicScrollerUpdateItemsFromBottom () {\n const scroller = this.$refs.scroller;\n if (scroller) scroller._updateVisibleItems(false, true);\n },\n\n scrollToItem (index) {\n const scroller = this.$refs.scroller;\n if (scroller) scroller.scrollToItem(index);\n },\n\n scrollToBottom () {\n if (this.$_scrollingToBottom) return;\n this.$_scrollingToBottom = true;\n const el = returnFirstEl(this.$el);\n // Item is inserted to the DOM\n this.$nextTick(() => {\n el.scrollTop = el.scrollHeight + 5000;\n // Item sizes are computed\n const cb = () => {\n el.scrollTop = el.scrollHeight + 5000;\n requestAnimationFrame(() => {\n el.scrollTop = el.scrollHeight + 5000;\n if (this.$_undefinedSizes === 0) {\n this.$_scrollingToBottom = false;\n } else {\n requestAnimationFrame(cb);\n }\n });\n };\n requestAnimationFrame(cb);\n });\n },\n },\n};\n</script>\n","<template>\n <component\n :is=\"dynamic ? DynamicScroller : CoreScroller\"\n ref=\"scroller\"\n data-qa=\"dt-scroller\"\n :items=\"items\"\n :item-size=\"itemSize\"\n :min-item-size=\"minItemSize\"\n :buffer=\"buffer\"\n :direction=\"direction\"\n :key-field=\"keyField\"\n :list-tag=\"listTag\"\n :item-tag=\"itemTag\"\n :style=\"computedStyle\"\n tabindex=\"0\"\n @user-position=\"$emit('user-position', $event)\"\n @scroll-start=\"$emit('scroll-start')\"\n @scroll-end=\"$emit('scroll-end')\"\n >\n <template\n #default=\"{ item, index, active }\"\n >\n <slot\n v-bind=\"{\n item: item,\n index,\n active,\n }\"\n />\n </template>\n\n <template\n v-if=\"$slots.before\"\n #before\n >\n <!-- @slot Content rendered before the items, inside the scroll viewport. Scrolls with the list. -->\n <slot name=\"before\" />\n </template>\n\n <template\n v-if=\"$slots.empty\"\n #empty\n >\n <!-- @slot Content rendered inside the list wrapper only while the list is empty. -->\n <slot name=\"empty\" />\n </template>\n\n <template\n v-if=\"$slots.after\"\n #after\n >\n <!-- @slot Content rendered after the items, inside the scroll viewport. Scrolls with the list. -->\n <slot name=\"after\" />\n </template>\n </component>\n</template>\n\n<script setup>\nimport CoreScroller from './Modules/CoreScroller.vue';\nimport DynamicScroller from './Modules/DynamicScroller.vue';\nimport { provide, computed, watch, ref } from 'vue';\n\ndefineOptions({\n name: 'DtScroller',\n});\n\nconst props = defineProps({\n /**\n * Amount of pixels added to each edge of the scroll viewport, so items are rendered\n * before they scroll into view. Also controls how early `scroll-start` and `scroll-end`\n * fire relative to the viewport edges.\n */\n buffer: {\n type: Number,\n default: 200,\n },\n\n /**\n * The direction of the scroller.\n * @values vertical, horizontal\n */\n direction: {\n type: String,\n default: 'vertical',\n validator: (value) => ['vertical', 'horizontal'].includes(value),\n },\n\n /**\n * Indicates if the items need to react to changes in their size.\n * If disabled the itemSize prop is required and you will get improved performance.\n * If enabled the minItemSize prop is required and you\n * will have reduced performance but the ability to reactively size list items\n * @values true, false\n */\n dynamic: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Display height (or width in horizontal mode) of the items in pixels\n * used to calculate the scroll size and position.\n * Required if DYNAMIC is false\n */\n itemSize: {\n type: Number,\n default: null,\n },\n\n /**\n * The tag to use for the items.\n */\n itemTag: {\n type: String,\n default: 'div',\n },\n\n /**\n * The items to render.\n * If the items are simple arrays, the index will be used as the key.\n * If the items are objects, the keyField will be used as the key.\n * @example items: [ 'item1', 'item2', 'item3' ]\n * @example items: [ { id: 1, name: 'item1' }, { id: 2, name: 'item2' }, { id: 3, name: 'item3' } ]\n */\n items: {\n type: Array,\n required: true,\n },\n\n /**\n * The key field to use for the items.\n * If the items are objects, the scroller needs to be able to identify them.\n * By default it will look for an id field on the items.\n * This can be configured with this prop if you are using another field name.\n */\n keyField: {\n type: String,\n default: 'id',\n },\n\n /**\n * The tag to use for the list.\n */\n listTag: {\n type: String,\n default: 'div',\n },\n\n /**\n * Minimum size used if the height (or width in horizontal mode) of a item is unknown.\n * Is required for the initial render of items in DYNAMIC size mode.\n */\n minItemSize: {\n type: [Number, String],\n default: null,\n },\n\n /**\n * The height of the scroller.\n * Can be a number (in pixels) or a string (in CSS units).\n */\n scrollerHeight: {\n type: [String, Number],\n default: '100%',\n },\n\n /**\n * The width of the scroller.\n * Can be a number (in pixels) or a string (in CSS units).\n */\n scrollerWidth: {\n type: [String, Number],\n default: '100%',\n },\n});\n\nconst emits = defineEmits([\n /**\n * Describe when the scroller changes from block-start (aka top) / middle / block-end (aka bottom).\n * The top and bottom values are deprecated and will ideally be removed in the next major version.\n * Please use blockStart and blockEnd instead.\n * @param {string} position The position of the scroller.\n * @values blockStart, middle, blockEnd, top, bottom\n */\n 'user-position',\n\n /**\n * Emitted when the first item enters the rendered view pool. Fires at least one `buffer`\n * length before the viewport's start edge is reached (earlier still with `before` slot\n * content), so callers can prepend items ahead of time.\n */\n 'scroll-start',\n\n /**\n * Emitted when the last item enters the rendered view pool. Fires at least one `buffer`\n * length before the viewport's end edge is reached (earlier still with `after` slot\n * content), so callers can append items ahead of time.\n */\n 'scroll-end',\n]);\n\nprovide('emit', emits);\n\nconst scroller = ref(null);\n\nconst computedStyle = computed(() => {\n return {\n width: typeof props.scrollerWidth === 'number' ? `${props.scrollerWidth}px` : props.scrollerWidth,\n height: typeof props.scrollerHeight === 'number' ? `${props.scrollerHeight}px` : props.scrollerHeight,\n };\n});\n\nwatch(props, () => {\n validateProps();\n}, { deep: true, immediate: true });\n\nfunction scrollToBottom () {\n if (scroller.value) scroller.value.scrollToBottom();\n}\n\nfunction scrollToItem (index) {\n if (scroller.value) scroller.value.scrollToItem(index);\n}\n\nfunction updateItems () {\n if (!scroller.value) return;\n if (props.dynamic) {\n scroller.value.dynamicScrollerUpdateItems();\n } else {\n scroller.value._updateVisibleItems(true);\n }\n}\n\nfunction updateItemsFromBottom () {\n if (!scroller.value) return;\n if (props.dynamic) {\n scroller.value.dynamicScrollerUpdateItemsFromBottom();\n } else {\n scroller.value._updateVisibleItems(false, true);\n }\n}\n\nfunction validateProps () {\n if (props.dynamic && !props.minItemSize) {\n console.error('scroller error: \\'minItemSize\\' is required on \\'dynamic\\' mode.');\n }\n\n if (!props.dynamic && !props.itemSize) {\n console.error('scroller error: \\'itemSize\\' is required.');\n }\n}\n\ndefineExpose({\n scrollToBottom,\n scrollToItem,\n updateItems,\n updateItemsFromBottom,\n});\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoFA,IAAM,IAAQ,GAsGR,IAAO,GAEP,IAAQ,kBAAS,IAAI,KAAK,CAAC,EAE3B,IAAc,kBAAS,IAAI,KAAK,CAAC,EAEjC,IAAO,EAAI,EAAE,CAAC,EACd,IAAW,EAAI,KAAK,EACpB,IAAQ,EAAI,GAAM,EAClB,IAAW,EAAI,KAAK,EACpB,IAAS,EAAI,KAAK,EAClB,IAAQ,EAAI,KAAK,EACjB,IAAe,EAAI,aAAa,EAElC,IAAa,GACb,IAAW,GACX,IAAc,IACd,IAA2B,GAC3B,IAAY,MACZ,IAAsB,MACtB,IAAY,GACZ,IAAM,GAEJ,IAAQ,QAAe;AAC3B,OAAI,EAAM,aAAa,MAAM;IAC3B,IAAM,IAAQ,EACZ,MAAM,EAAE,aAAa,GAAG,EACzB,EACK,IAAQ,EAAM,OACd,IAAQ,EAAM,WACd,IAAc,EAAM,aACtB,IAAkB,KAClB,IAAc,GACd;AACJ,SAAK,IAAI,IAAI,GAAG,IAAI,EAAM,QAAQ,IAAI,GAAG,IAMvC,CALA,IAAU,EAAM,GAAG,MAAU,GACzB,IAAU,MACZ,IAAkB,IAEpB,KAAe,GACf,EAAM,KAAK;KAAE;KAAa,MAAM;KAAS;AAI3C,WADA,IAAsB,GACf;;AAET,UAAO,EAAE;IACT,EAEI,IAAc,QACX,EAAM,MAAM,UAAU,OAAO,EAAM,MAAM,MAAO,SACvD,EAEI,IAAiB,QAAe;GACpC,IAAM,IAAS,EAAE;AACjB,QAAK,IAAI,IAAI,GAAG,IAAI,EAAM,MAAM,QAAQ,IAAI,GAAG,IAC7C,GAAO,EAAM,MAAM,GAAG,EAAM,aAAa;AAE3C,UAAO;IACP;AAaF,EAJA,EAAM,SAAa;AACjB,KAAoB,GAAM;KACzB,EAAE,MAAM,IAAM,CAAC,EAElB,QAAgB;AACd,WAAe;AAGb,IADA,EAAoB,GAAK,EACzB,EAAM,QAAQ;KACd;IACF;EAEF,IAAM,KAAY,GAAM,GAAO,GAAM,GAAK,MAAS;GAQjD,IAAM,IAAO,EAAgB;IAC3B;IACA,UAAU;IACV,IAVS,EAAQ;KACjB,IAAI;KACJ;KACA,MAAM;KACN;KACA;KACD,CAAC;IAKD,CAAC;AAEF,UADA,EAAK,MAAM,KAAK,EAAK,EACd;KAGH,KAAc,GAAM,IAAO,OAAU;GACzC,IAAM,IAAe,GACf,IAAO,EAAK,GAAG,MACjB,IAAa,EAAa,IAAI,EAAK;AAMvC,GALK,MACH,IAAa,EAAE,EACf,EAAa,IAAI,GAAM,EAAW,GAEpC,EAAW,KAAK,EAAK,EAChB,MACH,EAAK,GAAG,OAAO,IACf,EAAK,WAAW;KAId,UAAmB;GACvB,IAAM,IAAa,EAAM,cAAc,YACnC;AAcJ,UAZA,AAME,IANE,IACY;IACZ,OAAO,EAAS,MAAM;IACtB,KAAK,EAAS,MAAM,YAAY,EAAS,MAAM;IAChD,GAEa;IACZ,OAAO,EAAS,MAAM;IACtB,KAAK,EAAS,MAAM,aAAa,EAAS,MAAM;IACjD,EAGI;KAGH,UAAyB;AAO7B,SANA,iBAAiB;AAIf,IAFA,QAAQ,MAAM,+FAAgG,aAAa,EAAS,EAEpI,QAAQ,MAAM,6LAAmM;KACjN,EACQ,MAAM,+BAA+B;KAG3C,UAAmB;AACvB,KAAK,MAAM,MAAM,GAAO,MAAU,EAAM,GAAG,QAAQ,EAAM,GAAG,MAAM;KAG9D,KAAuB,GAAW,IAAoB,OAAU;AAGpE,OAAI,CAAC,EAAS,MAAO;GAErB,IAAM,IAAW,EAAM,UACjB,IAAc,GACd,IAAW,EAAY,QAAQ,OAAO,EAAM,UAC5C,IAAQ,EAAM,OACd,IAAQ,EAAM,QACd,IAAS,EAAM,OACf,IAAS,GACT,IAAe,GACf,IAAQ,GACR,IAAkB,GACpB,GAAa,GACb,GACA,GAAmB;AAEvB,OAAI,CAAC,EACH,KAAc,IAAY,IAAoB,IAAkB,IAAa;QACxE;IACL,IAAM,IAAS,GAAY;AAG3B,QAAI,GAAmB;KACrB,IAAI,IAAe,EAAO,QAAQ,EAAyB;AAE3D,SADI,IAAe,MAAG,IAAe,CAAC,IACjC,MAAa,QAAQ,IAAe,EAAY,SAAU,IAAe,EAC5E,QAAO,EACL,YAAY,IACb;;AAGL,QAA2B,EAAO;IAElC,IAAM,IAAU,EAAM;AAEtB,IADA,EAAO,SAAS,GAChB,EAAO,OAAO;IAId,IAAM,IAAW,EAAM,cAAc,aAAa,iBAAiB;AAKnE,QAJI,EAAO,UAAO,EAAO,SAAS,EAAO,MAAM,KAC3C,EAAM,UAAO,EAAO,OAAO,EAAM,MAAM,KAGvC,MAAa,MAAM;KACrB,IAAI,GACA,IAAI,GACJ,IAAI,IAAQ,GACZ,IAAI,CAAC,EAAE,IAAQ,IACf;AAGJ;AAQE,MAPA,IAAO,GACP,IAAI,EAAO,IAAI,aACX,IAAI,EAAO,QACb,IAAI,IACK,IAAI,IAAQ,KAAK,EAAO,IAAI,IAAI,cAAc,EAAO,UAC9D,IAAI,IAEN,IAAI,CAAC,GAAG,IAAI,KAAK;YACV,MAAM;AAQf,UAPA,IAAI,MAAM,IAAI,IACd,IAAc,GAGd,IAAa,EAAO,IAAQ,IAAI,aAI9B,IAAY,GACZ,IAAY,KAAS,EAAO,IAAY,cAAc,EAAO,KAC7D;AAYF,UATI,MAAc,KAChB,IAAY,EAAM,SAAS,KAE3B,KAEA,IAAY,MAAU,IAAY,KAKlC,IAAoB,GACpB,IAAoB,KAAU,EAAO,IAAoB,cAAe,EAAO,OAC/E;AAIF,UACE,IAAkB,GAClB,IAAkB,KAAU,EAAO,IAAkB,cAAe,EAAO,KAC3E;WAEG;AAEL,SAAc,CAAC,EAAE,EAAO,QAAQ;KAChC,IAAM,IAAW,IAAc;AAY/B,KAXA,KAAe,GACf,IAAY,KAAK,KAAK,EAAO,MAAM,EAAS,EAC5C,IAAoB,KAAK,IAAI,GAAG,KAAK,MAAO,EAAO,QAAS,EAAS,CAAC,EACtE,IAAkB,KAAK,MAAO,EAAO,MAAO,EAAS,EAGrD,IAAc,MAAM,IAAc,IAClC,IAAY,MAAU,IAAY,IAClC,IAAoB,MAAM,IAAoB,IAC9C,IAAkB,MAAU,IAAkB,IAE9C,IAAa,KAAK,KAAK,IAAQ,EAAE,GAAG;;;AASxC,GAJI,IAAY,IAAc,OAC5B,GAAkB,EAGpB,IAAY;GAEZ,IAAI,GAEE,IAAa,KAAe,KAAY,KAAa;AAG3D,OAAI,EACF,MAAK,IAAI,IAAI,GAAG,IAAI,EAAM,MAAM,QAAQ,IAAI,GAAG,IAE7C,CADA,IAAO,EAAM,MAAM,IACf,GAAM,GAAG,SAEP,MACF,EAAK,GAAG,QAAQ,EAAgB,EAAK,KAAK,OAK1C,EAAK,GAAG,SAAS,QACjB,EAAK,GAAG,QAAQ,KAChB,EAAK,GAAG,SAAS,MAEjB,EAAW,EAAK;GAMxB,IAAM,IAAc,IAAa,uBAAO,IAAI,KAAK,EAE7C,GAAM,GACN;AACJ,QAAK,IAAI,IAAI,GAAa,IAAI,GAAW,KAAK;AAC5C,QAAO,EAAM;IACb,IAAM,IAAM,IAAW,IAAO,KAAY;AAE1C,QAAI,KAAO,KACT,OAAU,MAAM,UAAU,EAAI,yBAAyB,EAAS,IAAI;AAItE,QAFA,IAAO,EAAO,IAAI,EAAI,EAElB,CAAC,KAAY,CAAC,EAAO,IAAI,MAAM;AACjC,KAAI,KAAM,EAAW,EAAK;AAC1B;;AAGF,QAAO,EAAK;IAEZ,IAAI,IAAa,EAAa,IAAI,EAAK,EACnC,IAAgB;AAGpB,QAAI,CAAC,EAgCH,CA/BI,IAEF,AAGE,IAHE,KAAc,EAAW,SACpB,EAAW,KAAK,GAEhB,EAAS,GAAO,GAAG,GAAM,GAAK,EAAK,IAM5C,IAAI,EAAY,IAAI,EAAK,IAAI,IAEzB,CAAC,KAAc,KAAK,EAAW,YACjC,IAAO,EAAS,GAAO,GAAG,GAAM,GAAK,EAAK,EAC1C,EAAW,GAAM,GAAK,EACtB,IAAa,EAAa,IAAI,EAAK,GAGrC,IAAO,EAAW,IAClB,EAAY,IAAI,GAAM,IAAI,EAAE,GAI9B,EAAO,OAAO,EAAK,GAAG,IAAI,EAC1B,EAAK,GAAG,OAAO,IACf,EAAK,GAAG,QAAQ,GAChB,EAAK,GAAG,MAAM,GACd,EAAK,GAAG,OAAO,GACf,EAAO,IAAI,GAAK,EAAK,EAErB,IAAgB;aAGZ,CAAC,EAAK,GAAG,SACX,EAAK,GAAG,OAAO,IACf,IAAgB,IACZ,IAAY;KACd,IAAM,IAAQ,EAAW,QAAQ,EAAK;AACtC,KAAI,MAAU,MAAI,EAAW,OAAO,GAAO,EAAE;;AAcnD,IARA,EAAK,OAAO,GAER,MACE,MAAM,EAAM,SAAS,KAAG,EAAK,aAAa,EAC1C,MAAM,KAAG,EAAK,eAAe,GAI/B,MAAa,QACf,EAAK,WAAW,EAAO,IAAI,IAAI,aAC/B,EAAK,SAAS,MAEd,EAAK,WAAW,KAAK,MAAM,EAAE,GAAG,GAChC,EAAK,SAAU,IAAI,IAAK;;AAY5B,UARA,IAAa,GACb,IAAW,GAIX,aAAa,EAAU,EACvB,IAAY,WAAW,GAAY,IAAI,EAEhC,EACL,eACD;KAGG,KAAqB,MAAa;GACtC,IAAM,IAAY,EAAM,cAAc,aAClC;IAAE,QAAQ;IAAa,OAAO;IAAM,GACpC;IAAE,QAAQ;IAAc,OAAO;IAAQ,EAErC,IAAW,EAAS,OACpB,IAAkB,EAAU;AAElC,KAAS,KAAmB;KAGxB,MAAgB,MAAU;GAC9B,IAAI;AAMJ,GALA,AAGE,IAHE,EAAM,aAAa,OACZ,IAAQ,IAAI,EAAM,MAAM,IAAQ,IAAI,cAAc,IAElD,KAAK,MAAM,EAAM,GAAG,EAAM,UAErC,EAAkB,EAAO;KAGrB,WAAqB;GACzB,IAAM,IAAY,EAAS;AAqB3B,GAnBI,EAAa,UAAU,aACzB,EAAa,QAAQ,UACrB,EAAK,iBAAiB,SAAS,GAI7B,EAAU,cAAc,MAC1B,EAAa,QAAQ,cACrB,EAAK,iBAAiB,aAAa,EACnC,EAAK,iBAAiB,MAAM,GAI1B,EAAU,YAAY,EAAU,iBAAiB,EAAU,iBAC7D,EAAa,QAAQ,YACrB,EAAK,iBAAiB,WAAW,EACjC,EAAK,iBAAiB,SAAS,GAG5B,MACH,IAAc,IAGc,4BAA4B;AAEtD,IADA,IAAc,IACd,EAAoB,IAAO,GAAK;KAChC;;SAMN,EAAa;GACX;GACA;GACD,CAAC,kBA/nBA,EAwEM,OAAA;YAvEA;GAAJ,KAAI;GACJ,OAAK,EAAA,CAAC,wBAAsB;WACZ,EAAA;kBAA2B,EAAA,cAAS;;oBAInC;;GAGTA,EAAAA,OAAO,UAAA,GAAA,EADf,EAQM,OAAA;;aANA;IAAJ,KAAI;IACJ,WAAQ;IACR,OAAM;OAGN,EAAsB,EAAA,QAAA,SAAA,CAAA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA;SAGxB,EA0CY,EAzCL,EAAA,QAAO,EAAA;IACZ,KAAI;IACH,OAAK,EAAA,GAAK,EAAA,cAAS,aAAA,cAAA,aAAA,GAAgD,EAAA,EAAS,CAAA,KAAA,CAAA;IAC7E,WAAQ;IACR,OAAK,EAAA,CAAC,sCACE,EAAA,UAAS,CAAA;;qBAIK,EAAA,EAAA,GAAA,EAFtB,EA2BY,GAAA,MAAA,EAzBK,EAAA,QAAR,YAFT,EA2BY,EA1BL,EAAA,QAAO,EADd,EA2BY;KAxBT,KAAK,EAAK,GAAG;KACd,WAAQ;KACP,OAAO,EAAA,QAAK;6BAAsC,EAAA,cAAS,aAAA,MAAA,IAAA,GAA+B,EAAK,SAAQ,eAAgB,EAAA,cAAS,aAAA,MAAA,IAAA,GAA+B,EAAK,OAAM;aAAwB,KAAA;cAA6B,KAAA;;KAKhO,OAAK,CAAC,mCAAiC,CACnB,EAAA,WAAA,EAAA,OAA0C,EAAM,eAAe,EAAA,UAAa,EAAK,GAAG,KAAA,CAAA,CAAA;OAMxG,EAAM,EAAM,cAAW;;AAAmC,QAAA,QAAW,EAAK,GAAG;;;AAAqC,QAAA,QAAQ;;;sBASxH,CAJF,EAIE,EAAA,QAAA,WAAA;MAHC,MAAM,EAAK;MACX,OAAO,EAAK,GAAG;MACf,QAAQ,EAAK,GAAG;;;2CAMZ,EAAA,MAAM,SAEb,EAAA,IAAA,GAAA,GAHF,EAGE,EAAA,QAAA,SAAA,EAAA,KAAA,GAAA,CAAA,CAAA,CAAA;;;GAIIA,EAAAA,OAAO,SAAA,GAAA,EADf,EAQM,OAAA;;aANA;IAAJ,KAAI;IACJ,WAAQ;IACR,OAAM;OAGN,EAAqB,EAAA,QAAA,QAAA,CAAA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA;;;GERtB,IAAU;CACb,MAAM;CAEN,YAAY;EACV,cAAA;EACA,gBD7DW;GACb,MAAM;GAEN,QAAQ;IACN;IACA;IACA;IACD;GAED,OAAO;IAEL,MAAM,EACJ,UAAU,IACX;IAED,WAAW;KACT,MAAM;KACN,SAAS;KACV;IAKD,QAAQ;KACN,MAAM;KACN,UAAU;KACX;IAED,OAAO;KACL,MAAM;KACN,SAAS,KAAA;KACV;IAED,kBAAkB;KAChB,MAAM,CAAC,OAAO,OAAO;KACrB,SAAS;KACV;IAED,KAAK;KACH,MAAM;KACN,SAAS;KACV;IACF;GAED,UAAU;IACR,KAAM;AACJ,SAAI,KAAK,YAAY,YAAa,QAAO,KAAK;AAE9C,SAAI,KAAK,YAAY,YAAY,KAAK,KAAM,QAAO,KAAK,KAAK,KAAK,YAAY;AAC9E,WAAU,MAAM,aAAa,KAAK,YAAY,SAAS,iFAAiF;;IAG1I,OAAQ;AACN,YAAO,KAAK,YAAY,MAAM,KAAK,OAAO;;IAG5C,cAAe;AACb,YAAO,KAAK,UAAU,KAAK,YAAY;;IAE1C;GAED,OAAO;IACL,WAAW;IAEX,GAAI,GAAO,GAAU;AAMnB,SALA,EAAc,KAAK,IAAI,CAAC,UAAU,KAAK,IAClC,KAAK,QACR,KAAK,cAAc,EAGjB,KAAK,gBAAgB;MAGvB,IAAM,IAAU,KAAK,YAAY,MAAM,IACjC,IAAO,KAAK,YAAY,MAAM;AACpC,MAAI,KAAW,QAAQ,MAAY,KACjC,KAAK,UAAU,EAAQ;;;IAK7B,YAAa,GAAO;AAelB,KAdK,KAAK,SACJ,IACG,KAAK,cAAc,eAAe,KAAK,QAC1C,KAAK,cAAc,oBACnB,KAAK,cAAc,eAAe,KAAK,MAAM,MAG3C,KAAK,cAAc,eAAe,KAAK,QACzC,KAAK,cAAc,oBACnB,KAAK,cAAc,eAAe,KAAK,MAAM,MAK/C,KAAK,wBACH,IACF,KAAK,aAAa,GAElB,KAAK,eAAe,GAEb,KAAS,KAAK,2BAA2B,KAAK,MACvD,KAAK,YAAY;;IAGtB;GAED,UAAW;AACL,cAAK,cAET,KAAK,2BAA2B,MAChC,KAAK,iBAAiB,EAElB,CAAC,KAAK,uBACR,MAAK,IAAM,KAAK,KAAK,iBACnB,MAAK,aAAa,KAAK,iBAAiB,IAAI,KAAK,aAAa;;GAKpE,UAAW;AACT,IAAI,KAAK,gBACP,KAAK,YAAY,EACjB,KAAK,aAAa;;GAItB,gBAAiB;AACf,SAAK,eAAe;;GAGtB,SAAS;IACP,aAAc;AACZ,KAAI,KAAK,cACH,KAAK,wBAAwB,KAAK,OACpC,KAAK,sBAAsB,KAAK,IAChC,KAAK,2BAA2B,MAChC,KAAK,yBAAyB,MAC9B,KAAK,YAAY,KAAK,GAAG,IAG3B,KAAK,2BAA2B,KAAK;;IAIzC,kBAAmB;AACjB,KAAI,KAAK,aAAa,CAAC,KAAK,wBAC1B,KAAK,cAAc,KAAK,OAAO,cAAc;AAC3C,WAAK,cAAc;QAClB,EACD,MAAM,IACP,CAAC,GACO,KAAK,gBACd,KAAK,aAAa,EAClB,KAAK,cAAc;;IAIvB,gBAAiB,EAAE,YAAS;AAM1B,KAJI,CAAC,KAAK,eAAe,MACvB,KAAK,yBAAyB,KAAK,MAGjC,KAAK,6BAA6B,KAAK,MAAM,KAAS,CAAC,KAAK,SAC9D,KAAK,YAAY;;IAIrB,eAAgB;AACd,UAAK,YAAY;;IAGnB,YAAa,GAAI;AACf,UAAK,gBAAgB;AACnB,UAAI,KAAK,OAAO,GAAI;OAClB,IAAM,IAAQ,EAAc,KAAK,IAAI,CAAC,aAChC,IAAS,EAAc,KAAK,IAAI,CAAC;AACvC,YAAK,iBAAiB,GAAO,EAAO;;AAEtC,WAAK,sBAAsB;OAC3B;;IAGJ,iBAAkB,GAAO,GAAQ;KAC/B,IAAM,IAAO,CAAC,EAAE,KAAK,cAAc,cAAc,aAAa,IAAS;AACvE,KAAI,KAAQ,KAAK,SAAS,KACxB,KAAK,UAAU,EAAK;;IAIxB,UAAW,GAAM;AAKf,KAJI,KAAK,cAAc,eAAe,KAAK,QACzC,KAAK,cAAc,oBACnB,KAAK,cAAc,eAAe,KAAK,MAAM,KAAA,IAE/C,KAAK,YAAY,MAAM,KAAK,MAAM;;IAGpC,cAAe;AACR,UAAK,0BACN,KAAK,mBACT,KAAK,sBAAsB,QAAQ,EAAc,KAAK,IAAI,CAAC,EAC3D,KAAK,IAAI,UAAU,KAAK,IACxB,KAAK,IAAI,gBAAgB,KAAK,UAC9B,KAAK,iBAAiB;;IAGxB,gBAAiB;AACV,UAAK,yBACL,KAAK,mBACV,KAAK,sBAAsB,UAAU,EAAc,KAAK,IAAI,CAAC,EAC7D,KAAK,IAAI,gBAAgB,KAAA,GACzB,KAAK,iBAAiB;;IAGxB,SAAU,GAAI,GAAO,GAAQ;AAC3B,KAAI,KAAK,OAAO,KACd,KAAK,iBAAiB,GAAO,EAAO;;IAGzC;GAED,SAAU;AACR,WAAO,EAAE,KAAK,KAAK,KAAK,OAAO,SAAS,CAAC;;GAE5C;ECrKE;CAED,UAAW;AA0BT,SAzBI,OAAO,iBAAmB,QAC5B,KAAK,mBAAmB,IAAI,gBAAe,MAAW;AACpD,+BAA4B;AACrB,cAAM,QAAQ,EAAQ,EAG3B;UAAK,IAAM,KAAS,EAClB,KAAI,EAAM,UAAU,EAAM,OAAO,eAAe;MAC9C,IAAI,GAAO;AACX,UAAI,EAAM,eAAe;OACvB,IAAM,IAAqB,EAAM,cAAc;AAE/C,OADA,IAAQ,EAAmB,YAC3B,IAAS,EAAmB;YAI5B,CADA,IAAQ,EAAM,YAAY,OAC1B,IAAS,EAAM,YAAY;AAE7B,QAAM,OAAO,cAAc,EAAM,OAAO,SAAS,GAAO,EAAO;;;KAGnE;IACF,GAGG;GACL,aAAa,KAAK;GAClB,eAAe;GACf,uBAAuB,KAAK;GAC7B;;CAGH,cAAc;CAEd,OAAO;EAML,OAAO;GACL,MAAM;GACN,UAAU;GACX;EAOD,SAAS;GACP,MAAM;GACN,SAAS;GACV;EAMD,UAAU;GACR,MAAM;GACN,SAAS;GACV;EAMD,WAAW;GACT,MAAM;GACN,SAAS;GACT,YAAY,MAAU,CAAC,YAAY,aAAa,CAAC,SAAS,EAAM;GACjE;EAKD,SAAS;GACP,MAAM;GACN,SAAS;GACV;EAKD,SAAS;GACP,MAAM;GACN,SAAS;GACV;EAOD,aAAa,EACX,MAAM,CAAC,QAAQ,OAAO,EACvB;EACF;CAED,OAAQ;AACN,SAAO,EACL,aAAa;GACX,QAAQ;GACR,OAAO,EAAE;GACT,UAAU,KAAK;GACf,aAAa;GACd,EACF;;CAGH,UAAU;EACR,cAAe;AACb,UAAO,KAAK,MAAM,UAAU,OAAO,KAAK,MAAM,MAAO;;EAGvD,gBAAiB;GACf,IAAM,IAAS,EAAE,EACX,EAAE,UAAO,aAAU,mBAAgB,MACnC,IAAQ,KAAK,YAAY,OACzB,IAAI,EAAM;AAChB,QAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;IAC1B,IAAM,IAAO,EAAM,IACb,IAAK,IAAc,IAAI,EAAK,IAC9B,IAAO,EAAM;AAIjB,IAHW,MAAS,UAAe,CAAC,KAAK,eAAe,OACtD,IAAO,IAET,EAAO,KAAK;KACV;MACC,IAAW;KACZ;KACD,CAAC;;AAEJ,UAAO;;EAEV;CAED,OAAO;EACL,aAAa;GACX,QAAS,GAAO;AACd,SAAK,YAAY,cAAc;;GAGjC,WAAW;GACZ;EAED,cAAe,GAAM,GAAM;GACzB,IAAM,IAAY,EAAc,KAAK,IAAI,CAAC,WAKtC,IAAgB,GAAO,IAAY,GACjC,IAAS,KAAK,IAAI,EAAK,QAAQ,EAAK,OAAO;AACjD,QAAK,IAAI,IAAI,GAAG,IAAI,KACd,OAAiB,IADK,IAK1B,CADA,KAAiB,EAAK,GAAG,QAAQ,KAAK,aACtC,KAAa,EAAK,GAAG,QAAQ,KAAK;GAEpC,IAAM,IAAS,IAAY;AAEvB,SAAW,MAIf,EAAc,KAAK,IAAI,CAAC,aAAa;;EAExC;CAED,eAAgB;AAGd,EAFA,KAAK,YAAY,EAAE,EACnB,KAAK,mBAAmB,GACxB,KAAK,iBAAiB,EAAE;;CAG1B,YAAa;AACX,OAAK,YAAY,SAAS;;CAG5B,cAAe;AACb,OAAK,YAAY,SAAS;;CAG5B,SAAS;EACP,6BAA8B;GAC5B,IAAM,IAAW,KAAK,MAAM;AAC5B,GAAI,KAAU,EAAS,oBAAoB,GAAK;;EAGlD,uCAAwC;GACtC,IAAM,IAAW,KAAK,MAAM;AAC5B,GAAI,KAAU,EAAS,oBAAoB,IAAO,GAAK;;EAGzD,aAAc,GAAO;GACnB,IAAM,IAAW,KAAK,MAAM;AAC5B,GAAI,KAAU,EAAS,aAAa,EAAM;;EAG5C,iBAAkB;AAChB,OAAI,KAAK,oBAAqB;AAC9B,QAAK,sBAAsB;GAC3B,IAAM,IAAK,EAAc,KAAK,IAAI;AAElC,QAAK,gBAAgB;AACnB,MAAG,YAAY,EAAG,eAAe;IAEjC,IAAM,UAAW;AAEf,KADA,EAAG,YAAY,EAAG,eAAe,KACjC,4BAA4B;AAE1B,MADA,EAAG,YAAY,EAAG,eAAe,KAC7B,KAAK,qBAAqB,IAC5B,KAAK,sBAAsB,KAE3B,sBAAsB,EAAG;OAE3B;;AAEJ,0BAAsB,EAAG;KACzB;;EAEL;CACF;;;aAzSC,EAoDgB,GApDhB,EAoDgB;EAnDd,KAAI;EACH,OAAO,EAAA;EACP,iBAAe,EAAA;EACf,WAAW,EAAA;EACX,aAAW,EAAA;EACX,YAAU,EAAA;EACV,YAAU,EAAA;IACH,EAAA,OAAM,EAAA,EAAA;EAGX,SAAO,GAkBW,EAAA,MAlBD,GAAc,UAAO,gBAAM,CAE7C,EAgBmB,GAAA;GAfhB,MAAM;GACE;GACR,qBAAiB,CAAc,EAAa,QAAA;GAG5C,cAAY;;oBASX,CAPF,EAOE,EAAA,QAAA,WAAA,EAAA,EAAA;UAN4B,EAAa;IAAkB;IAAmB;IAAoB;;;;;;;;;;;EAWhG,EAAA,OAAO,SAAA;SACZ;eAEqB,CAAtB,EAAsB,EAAA,QAAA,SAAA,CAAA,CAAA;;;EAIhB,EAAA,OAAO,QAAA;SACZ;eAEoB,CAArB,EAAqB,EAAA,QAAA,QAAA,CAAA,CAAA;;;EAIf,EAAA,OAAO,QAAA;SACZ;eAEoB,CAArB,EAAqB,EAAA,QAAA,QAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECe3B,IAAM,IAAQ;AAuId,IAAQ,QAzBM,EAyBQ;EAEtB,IAAM,IAAW,EAAI,KAAK,EAEpB,IAAgB,SACb;GACL,OAAO,OAAO,EAAM,iBAAkB,WAAW,GAAG,EAAM,cAAc,MAAM,EAAM;GACpF,QAAQ,OAAO,EAAM,kBAAmB,WAAW,GAAG,EAAM,eAAe,MAAM,EAAM;GACxF,EACD;AAEF,IAAM,SAAa;AACjB,MAAe;KACd;GAAE,MAAM;GAAM,WAAW;GAAM,CAAC;EAEnC,SAAS,IAAkB;AACzB,GAAI,EAAS,SAAO,EAAS,MAAM,gBAAgB;;EAGrD,SAAS,EAAc,GAAO;AAC5B,GAAI,EAAS,SAAO,EAAS,MAAM,aAAa,EAAM;;EAGxD,SAAS,IAAe;AACjB,KAAS,UACV,EAAM,UACR,EAAS,MAAM,4BAA4B,GAE3C,EAAS,MAAM,oBAAoB,GAAK;;EAI5C,SAAS,IAAyB;AAC3B,KAAS,UACV,EAAM,UACR,EAAS,MAAM,sCAAsC,GAErD,EAAS,MAAM,oBAAoB,IAAO,GAAK;;EAInD,SAAS,IAAiB;AAKxB,GAJI,EAAM,WAAW,CAAC,EAAM,eAC1B,QAAQ,MAAM,+DAAmE,EAG/E,CAAC,EAAM,WAAW,CAAC,EAAM,YAC3B,QAAQ,MAAM,0CAA4C;;SAI9D,EAAa;GACX;GACA;GACA;GACA;GACD,CAAC,kBAhQA,EAqDY,EApDL,EAAA,UAAU,IAAkB,EAAY,EAAA;YACzC;GAAJ,KAAI;GACJ,WAAQ;GACP,OAAO,EAAA;GACP,aAAW,EAAA;GACX,iBAAe,EAAA;GACf,QAAQ,EAAA;GACR,WAAW,EAAA;GACX,aAAW,EAAA;GACX,YAAU,EAAA;GACV,YAAU,EAAA;GACV,OAAK,EAAE,EAAA,MAAa;GACrB,UAAS;GACR,gBAAa,EAAA,OAAA,EAAA,MAAA,MAAEC,EAAAA,MAAK,iBAAkB,EAAM;GAC5C,eAAY,EAAA,OAAA,EAAA,MAAA,MAAEA,EAAAA,MAAK,eAAA;GACnB,aAAU,EAAA,OAAA,EAAA,MAAA,MAAEA,EAAAA,MAAK,aAAA;;GAGf,SAAO,GAQN,EARU,SAAM,UAAO,gBAAM,CAE/B,EAME,EAAA,QAAA,WAAA,EAAA,EAAA;IAL0B;IAAgB;IAAiB;;;;GASvDC,EAAAA,OAAO,SAAA;UACZ;gBAGqB,CAAtB,EAAsB,EAAA,QAAA,SAAA,CAAA,CAAA;;;GAIhBA,EAAAA,OAAO,QAAA;UACZ;gBAGoB,CAArB,EAAqB,EAAA,QAAA,QAAA,CAAA,CAAA;;;GAIfA,EAAAA,OAAO,QAAA;UACZ;gBAGoB,CAArB,EAAqB,EAAA,QAAA,QAAA,CAAA,CAAA"}
|
|
@@ -7,7 +7,7 @@ declare const __VLS_component: import('vue').DefineComponent<{}, {
|
|
|
7
7
|
scrollToItem: (index: any) => void;
|
|
8
8
|
_updateVisibleItems: (checkItem: any, checkPositionDiff?: boolean) => {
|
|
9
9
|
continuous: boolean;
|
|
10
|
-
};
|
|
10
|
+
} | undefined;
|
|
11
11
|
$emit: (event: "user-position" | "scroll-start" | "scroll-end", ...args: any[]) => void;
|
|
12
12
|
direction: string;
|
|
13
13
|
listClass: string | unknown[] | Record<string, any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoreScroller.vue.d.ts","sourceRoot":"","sources":["../../../../components/Scroller/Modules/CoreScroller.vue"],"names":[],"mappings":"AA4EA;
|
|
1
|
+
{"version":3,"file":"CoreScroller.vue.d.ts","sourceRoot":"","sources":["../../../../components/Scroller/Modules/CoreScroller.vue"],"names":[],"mappings":"AA4EA;wBAu2CqB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;;6BAEtE,CAAC,EAAE,CAAC;;;AAdjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAWG"}
|
|
@@ -87,7 +87,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
87
87
|
scrollToItem: (index: any) => void;
|
|
88
88
|
_updateVisibleItems: (checkItem: any, checkPositionDiff?: boolean) => {
|
|
89
89
|
continuous: boolean;
|
|
90
|
-
};
|
|
90
|
+
} | undefined;
|
|
91
91
|
$emit: (event: "user-position" | "scroll-start" | "scroll-end", ...args: any[]) => void;
|
|
92
92
|
direction: string;
|
|
93
93
|
listClass: string | unknown[] | Record<string, any>;
|
|
@@ -131,7 +131,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
131
131
|
scrollToItem: (index: any) => void;
|
|
132
132
|
_updateVisibleItems: (checkItem: any, checkPositionDiff?: boolean) => {
|
|
133
133
|
continuous: boolean;
|
|
134
|
-
};
|
|
134
|
+
} | undefined;
|
|
135
135
|
$emit: (event: "user-position" | "scroll-start" | "scroll-end", ...args: any[]) => void;
|
|
136
136
|
direction: string;
|
|
137
137
|
listClass: string | unknown[] | Record<string, any>;
|
|
@@ -167,7 +167,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
167
167
|
scrollToItem: (index: any) => void;
|
|
168
168
|
_updateVisibleItems: (checkItem: any, checkPositionDiff?: boolean) => {
|
|
169
169
|
continuous: boolean;
|
|
170
|
-
};
|
|
170
|
+
} | undefined;
|
|
171
171
|
$emit: (event: "user-position" | "scroll-start" | "scroll-end", ...args: any[]) => void;
|
|
172
172
|
direction: string;
|
|
173
173
|
listClass: string | unknown[] | Record<string, any>;
|
|
@@ -339,7 +339,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
339
339
|
scrollToItem: (index: any) => void;
|
|
340
340
|
_updateVisibleItems: (checkItem: any, checkPositionDiff?: boolean) => {
|
|
341
341
|
continuous: boolean;
|
|
342
|
-
};
|
|
342
|
+
} | undefined;
|
|
343
343
|
$emit: (event: "user-position" | "scroll-start" | "scroll-end", ...args: any[]) => void;
|
|
344
344
|
direction: string;
|
|
345
345
|
listClass: string | unknown[] | Record<string, any>;
|
|
@@ -383,7 +383,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
383
383
|
scrollToItem: (index: any) => void;
|
|
384
384
|
_updateVisibleItems: (checkItem: any, checkPositionDiff?: boolean) => {
|
|
385
385
|
continuous: boolean;
|
|
386
|
-
};
|
|
386
|
+
} | undefined;
|
|
387
387
|
$emit: (event: "user-position" | "scroll-start" | "scroll-end", ...args: any[]) => void;
|
|
388
388
|
direction: string;
|
|
389
389
|
listClass: string | unknown[] | Record<string, any>;
|
|
@@ -419,7 +419,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
419
419
|
scrollToItem: (index: any) => void;
|
|
420
420
|
_updateVisibleItems: (checkItem: any, checkPositionDiff?: boolean) => {
|
|
421
421
|
continuous: boolean;
|
|
422
|
-
};
|
|
422
|
+
} | undefined;
|
|
423
423
|
$emit: (event: "user-position" | "scroll-start" | "scroll-end", ...args: any[]) => void;
|
|
424
424
|
direction: string;
|
|
425
425
|
listClass: string | unknown[] | Record<string, any>;
|
|
@@ -59,7 +59,7 @@ declare const __VLS_component: import('vue').DefineComponent<{}, {
|
|
|
59
59
|
scrollToItem: (index: any) => void;
|
|
60
60
|
_updateVisibleItems: (checkItem: any, checkPositionDiff?: boolean) => {
|
|
61
61
|
continuous: boolean;
|
|
62
|
-
};
|
|
62
|
+
} | undefined;
|
|
63
63
|
$emit: (event: "user-position" | "scroll-start" | "scroll-end", ...args: any[]) => void;
|
|
64
64
|
direction: string;
|
|
65
65
|
listClass: string | unknown[] | Record<string, any>;
|
|
@@ -111,7 +111,7 @@ declare const __VLS_component: import('vue').DefineComponent<{}, {
|
|
|
111
111
|
scrollToItem: (index: any) => void;
|
|
112
112
|
_updateVisibleItems: (checkItem: any, checkPositionDiff?: boolean) => {
|
|
113
113
|
continuous: boolean;
|
|
114
|
-
};
|
|
114
|
+
} | undefined;
|
|
115
115
|
$emit: (event: "user-position" | "scroll-start" | "scroll-end", ...args: any[]) => void;
|
|
116
116
|
direction: string;
|
|
117
117
|
listClass: string | unknown[] | Record<string, any>;
|
|
@@ -210,7 +210,7 @@ declare const __VLS_component: import('vue').DefineComponent<{}, {
|
|
|
210
210
|
scrollToItem: (index: any) => void;
|
|
211
211
|
_updateVisibleItems: (checkItem: any, checkPositionDiff?: boolean) => {
|
|
212
212
|
continuous: boolean;
|
|
213
|
-
};
|
|
213
|
+
} | undefined;
|
|
214
214
|
$emit: (event: "user-position" | "scroll-start" | "scroll-end", ...args: any[]) => void;
|
|
215
215
|
direction: string;
|
|
216
216
|
listClass: string | unknown[] | Record<string, any>;
|
|
@@ -254,7 +254,7 @@ declare const __VLS_component: import('vue').DefineComponent<{}, {
|
|
|
254
254
|
scrollToItem: (index: any) => void;
|
|
255
255
|
_updateVisibleItems: (checkItem: any, checkPositionDiff?: boolean) => {
|
|
256
256
|
continuous: boolean;
|
|
257
|
-
};
|
|
257
|
+
} | undefined;
|
|
258
258
|
$emit: (event: "user-position" | "scroll-start" | "scroll-end", ...args: any[]) => void;
|
|
259
259
|
direction: string;
|
|
260
260
|
listClass: string | unknown[] | Record<string, any>;
|
|
@@ -290,7 +290,7 @@ declare const __VLS_component: import('vue').DefineComponent<{}, {
|
|
|
290
290
|
scrollToItem: (index: any) => void;
|
|
291
291
|
_updateVisibleItems: (checkItem: any, checkPositionDiff?: boolean) => {
|
|
292
292
|
continuous: boolean;
|
|
293
|
-
};
|
|
293
|
+
} | undefined;
|
|
294
294
|
$emit: (event: "user-position" | "scroll-start" | "scroll-end", ...args: any[]) => void;
|
|
295
295
|
direction: string;
|
|
296
296
|
listClass: string | unknown[] | Record<string, any>;
|
|
@@ -498,7 +498,7 @@ type __VLS_TemplateResult = {
|
|
|
498
498
|
scrollToItem: (index: any) => void;
|
|
499
499
|
_updateVisibleItems: (checkItem: any, checkPositionDiff?: boolean) => {
|
|
500
500
|
continuous: boolean;
|
|
501
|
-
};
|
|
501
|
+
} | undefined;
|
|
502
502
|
$emit: (event: "user-position" | "scroll-start" | "scroll-end", ...args: any[]) => void;
|
|
503
503
|
direction: string;
|
|
504
504
|
listClass: string | unknown[] | Record<string, any>;
|
|
@@ -534,7 +534,7 @@ type __VLS_TemplateResult = {
|
|
|
534
534
|
scrollToItem: (index: any) => void;
|
|
535
535
|
_updateVisibleItems: (checkItem: any, checkPositionDiff?: boolean) => {
|
|
536
536
|
continuous: boolean;
|
|
537
|
-
};
|
|
537
|
+
} | undefined;
|
|
538
538
|
$emit: (event: "user-position" | "scroll-start" | "scroll-end", ...args: any[]) => void;
|
|
539
539
|
direction: string;
|
|
540
540
|
listClass: string | unknown[] | Record<string, any>;
|
|
@@ -632,7 +632,7 @@ type __VLS_TemplateResult = {
|
|
|
632
632
|
scrollToItem: (index: any) => void;
|
|
633
633
|
_updateVisibleItems: (checkItem: any, checkPositionDiff?: boolean) => {
|
|
634
634
|
continuous: boolean;
|
|
635
|
-
};
|
|
635
|
+
} | undefined;
|
|
636
636
|
$emit: (event: "user-position" | "scroll-start" | "scroll-end", ...args: any[]) => void;
|
|
637
637
|
direction: string;
|
|
638
638
|
listClass: string | unknown[] | Record<string, any>;
|
package/dist/dialtone-vue.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const ee=require(`./common/mixins/dom.cjs`),e=require(`./common/constants/sizes.cjs`),t=require(`./common/constants/layout.cjs`),n=require(`./common/constants/index.cjs`),r=require(`./common/validators/index.cjs`),i=require(`./common/utils/index.cjs`),a=require(`./common/mixins/input.cjs`),te=require(`./lib/validation-messages/validation-messages.cjs`),ne=require(`./common/mixins/input-group.cjs`),re=require(`./common/mixins/keyboard-list-navigation.cjs`),ie=require(`./common/mixins/modal.cjs`),o=require(`./lib/skeleton/skeleton-constants.cjs`),ae=require(`./common/mixins/skeleton.cjs`),oe=require(`./common/mixins/mode.cjs`),s=require(`./common/dates/index.cjs`),c=require(`./common/emoji/index.cjs`),l=require(`./lib/presence/presence-constants.cjs`),se=require(`./Presence-DLM3JR-n.cjs`),u=require(`./lib/avatar/avatar-constants.cjs`),d=require(`./lib/avatar/avatar.cjs`),f=require(`./lib/badge/badge-constants.cjs`),p=require(`./lib/icon/icon-constants.cjs`),ce=require(`./lib/icon/icon.cjs`),le=require(`./lib/badge/badge.cjs`),m=require(`./lib/notice/notice-constants.cjs`),ue=require(`./lib/notice/notice-icon.cjs`),h=require(`./lib/text/text-constants.cjs`),de=require(`./lib/text/text.cjs`),fe=require(`./lib/notice/notice-content.cjs`),pe=require(`./lib/loader/loader.cjs`),g=require(`./lib/button/button-constants.cjs`),_=require(`./lib/link/link-constants.cjs`),me=require(`./lib/link/link.cjs`),he=require(`./localization/index.cjs`),ge=require(`./lib/button/button.cjs`),_e=require(`./lib/notice/notice-action.cjs`),ve=require(`./lib/notice/notice.cjs`),ye=require(`./lib/banner/banner.cjs`);require(`./lib/banner/index.cjs`);const v=require(`./lib/box/box-constants.cjs`),be=require(`./lib/box/box.cjs`);require(`./lib/box/index.cjs`);const y=require(`./lib/breadcrumbs/breadcrumbs-constants.cjs`),xe=require(`./lib/breadcrumbs/breadcrumb-item.cjs`),b=require(`./lib/breadcrumbs/breadcrumbs.cjs`);require(`./lib/breadcrumbs/index.cjs`);const x=require(`./lib/button-group/button-group-constants.cjs`),S=require(`./lib/button-group/button-group.cjs`);require(`./lib/button-group/index.cjs`);const C=require(`./lib/card/card.cjs`);require(`./lib/card/index.cjs`);const w=require(`./lib/checkbox/checkbox.cjs`),T=require(`./lib/input-group/input-group.cjs`),E=require(`./lib/checkbox-group/checkbox-group.cjs`),D=require(`./lib/chip/chip-constants.cjs`),O=require(`./lib/chip/chip.cjs`);require(`./lib/chip/index.cjs`);const k=require(`./lib/codeblock/codeblock.cjs`);require(`./lib/codeblock/index.cjs`);const A=require(`./lib/collapsible/collapsible.cjs`);require(`./lib/collapsible/index.cjs`);const j=require(`./lib/list-item/list-item-constants.cjs`),M=require(`./lib/item-layout/item-layout.cjs`),Se=require(`./lib/list-item/list-item.cjs`),Ce=require(`./lib/skeleton/skeleton-shape.cjs`),we=require(`./lib/skeleton/skeleton-text.cjs`),Te=require(`./lib/skeleton/skeleton-paragraph.cjs`),Ee=require(`./lib/skeleton/skeleton-list-item.cjs`),De=require(`./lib/skeleton/skeleton.cjs`),Oe=require(`./Combobox-96zAPv6d.cjs`),ke=require(`./lib/combobox/combobox-constants.cjs`),N=require(`./lib/stack/stack-constants.cjs`),Ae=require(`./lib/stack/stack.cjs`),P=require(`./lib/tooltip/tooltip-constants.cjs`),F=require(`./lib/popover/popover-constants.cjs`),je=require(`./lib/tooltip/tooltip.cjs`),Me=require(`./Datepicker-DkGmnVc8.cjs`),I=require(`./lib/datepicker/format-utils.cjs`);require(`./lib/datepicker/index.cjs`);const Ne=require(`./lib/description-list/description-list-constants.cjs`),Pe=require(`./lib/description-list/description-list.cjs`);require(`./lib/description-list/index.cjs`);const Fe=require(`./lib/lazy-show/lazy-show.cjs`),Ie=require(`./lib/popover/popover.cjs`),Le=require(`./lib/dropdown/dropdown-constants.cjs`),Re=require(`./lib/dropdown/dropdown.cjs`),L=require(`./lib/dropdown/dropdown-separator.cjs`),ze=require(`./lib/emoji/emoji.cjs`),R=require(`./lib/input/input-constants.cjs`),Be=require(`./lib/input/input.cjs`),Ve=require(`./EmojiPicker-KO1yhODv.cjs`),z=require(`./lib/tab/tabs-constants.cjs`),He=require(`./lib/tab/tab-group.cjs`),Ue=require(`./lib/tab/tab.cjs`),We=require(`./lib/tab/tab-panel.cjs`),B=require(`./lib/emoji-picker/emoji-picker-constants.cjs`);require(`./lib/emoji-picker/index.cjs`);const Ge=require(`./lib/emoji-text-wrapper/emoji-text-wrapper.cjs`);require(`./lib/emoji-text-wrapper/index.cjs`);const Ke=require(`./lib/empty-state/empty-state-constants.cjs`),qe=require(`./lib/empty-state/empty-state.cjs`);require(`./lib/empty-state/index.cjs`);const Je=require(`./lib/filter-pill/filter-pill.cjs`);require(`./lib/filter-pill/index.cjs`);const Ye=require(`./lib/hovercard/hovercard.cjs`);require(`./lib/hovercard/index.cjs`);const Xe=require(`./lib/illustration/illustration-constants.cjs`),Ze=require(`./lib/illustration/illustration.cjs`);require(`./lib/illustration/index.cjs`);const Qe=require(`./lib/image-viewer/image-viewer.cjs`);require(`./lib/image-viewer/index.cjs`);const $e=require(`./lib/keyboard-shortcut/keyboard-shortcut.cjs`),et=require(`./lib/keyboard-shortcut/keyboard-shortcut-constants.cjs`);require(`./lib/keyboard-shortcut/index.cjs`);const tt=require(`./lib/list-item-group/list-item-group.cjs`);require(`./lib/list-item-group/index.cjs`),require(`./lib/loader/index.cjs`);const V=require(`./lib/modal/modal-constants.cjs`),nt=require(`./lib/modal/modal.cjs`);require(`./lib/modal/index.cjs`);const rt=require(`./lib/mode-island/mode-island-constants.cjs`),it=require(`./lib/mode-island/mode-island.cjs`);require(`./lib/mode-island/index.cjs`);const at=require(`./lib/pagination/pagination.cjs`);require(`./lib/pagination/index.cjs`);const H=require(`./lib/progress-circle/progress-circle-constants.cjs`),ot=require(`./lib/progress-circle/progress-circle.cjs`);require(`./lib/progress-circle/index.cjs`);const U=require(`./lib/prose/prose-constants.cjs`),st=require(`./lib/prose/prose.cjs`);require(`./lib/prose/index.cjs`);const ct=require(`./lib/radio/radio-constants.cjs`),lt=require(`./lib/radio/radio.cjs`);require(`./lib/radio/index.cjs`);const ut=require(`./lib/radio-group/radio-group.cjs`);require(`./lib/radio-group/index.cjs`);const W=require(`./ResizableUtils-DMfertP2.cjs`),dt=require(`./Resizable-DBRsEUf3.cjs`),ft=require(`./ResizableHandle-DQG7a5D9.cjs`),pt=require(`./lib/resizable/resizable-panel.cjs`);require(`./lib/resizable/index.cjs`);const mt=require(`./RichTextEditor-n42FPkjs.cjs`),G=require(`./lib/rich-text-editor/rich-text-editor-constants.cjs`);require(`./lib/rich-text-editor/index.cjs`);const K=require(`./lib/root-layout/root-layout-constants.cjs`),ht=require(`./lib/root-layout/root-layout.cjs`);require(`./lib/root-layout/index.cjs`);const gt=require(`./Scroller-DnobBeAo.cjs`);require(`./lib/scroller/index.cjs`);const q=require(`./lib/segmented-control/segmented-control-constants.cjs`),_t=require(`./lib/segmented-control/segmented-control.cjs`),vt=require(`./lib/segmented-control/segmented-control-item.cjs`);require(`./lib/segmented-control/index.cjs`);const J=require(`./lib/select-menu/select-menu-constants.cjs`),yt=require(`./lib/select-menu/select-menu.cjs`);require(`./lib/select-menu/index.cjs`);const bt=require(`./lib/split-button/split-button-constants.cjs`),xt=require(`./lib/split-button/split-button.cjs`);require(`./lib/split-button/index.cjs`);const Y=require(`./lib/text-list/text-list-constants.cjs`),St=require(`./TextList-Dd-ROFiI.cjs`),Ct=require(`./TextListItem-DIlrCkaM.cjs`);require(`./lib/text-list/index.cjs`);const X=require(`./lib/toast/toast-constants.cjs`),wt=require(`./Toast-IyFVsArp.cjs`);require(`./lib/toast/index.cjs`);const Z=require(`./lib/toggle/toggle-constants.cjs`),Tt=require(`./lib/toggle/toggle.cjs`);require(`./lib/toggle/index.cjs`);const Et=require(`./lib/combobox-with-popover/combobox-with-popover.cjs`),Q=require(`./lib/combobox-multi-select/combobox-multi-select-constants.cjs`),Dt=require(`./lib/combobox-multi-select/combobox-multi-select.cjs`);require(`./lib/combobox-multi-select/index.cjs`),require(`./lib/combobox-with-popover/index.cjs`);const Ot=require(`./lib/tooltip-directive/tooltip.cjs`);require(`./lib/tooltip-directive/index.cjs`);const kt=require(`./lib/scrollbar-directive/scrollbar.cjs`);require(`./lib/scrollbar-directive/index.cjs`);const At=require(`./lib/mode-directive/mode.cjs`);require(`./lib/mode-directive/index.cjs`);const jt=require(`./lib/focusgroup-directive/focusgroup.cjs`);require(`./lib/focusgroup-directive/index.cjs`);const Mt=require(`./lib/focustrap-directive/focustrap.cjs`);require(`./lib/focustrap-directive/index.cjs`);const $=require(`./lib/motion-text/motion-text-constants.cjs`),Nt=require(`./lib/motion-text/motion-text.cjs`);require(`./lib/motion-text/index.cjs`),exports.ARROW_KEYS=B.ARROW_KEYS,exports.AVATAR_CHROMA=u.AVATAR_CHROMA,exports.AVATAR_FAMILY_COUNT=u.AVATAR_FAMILY_COUNT,exports.AVATAR_GROUP_VALIDATOR=u.AVATAR_GROUP_VALIDATOR,exports.AVATAR_HUE_OFFSETS=u.AVATAR_HUE_OFFSETS,exports.AVATAR_ICON_SIZES=u.AVATAR_ICON_SIZES,exports.AVATAR_KIND_MODIFIERS=u.AVATAR_KIND_MODIFIERS,exports.AVATAR_LIGHTNESS=u.AVATAR_LIGHTNESS,exports.AVATAR_PRESENCE_SIZE_MODIFIERS=u.AVATAR_PRESENCE_SIZE_MODIFIERS,exports.AVATAR_PRESENCE_STATES=u.AVATAR_PRESENCE_STATES,exports.AVATAR_SIZE_MODIFIERS=u.AVATAR_SIZE_MODIFIERS,exports.AVATAR_VARIANT_COUNT=u.AVATAR_VARIANT_COUNT,exports.BADGE_DECORATION_MODIFIERS=f.BADGE_DECORATION_MODIFIERS,exports.BADGE_KIND_MODIFIERS=f.BADGE_KIND_MODIFIERS,exports.BADGE_TYPE_MODIFIERS=f.BADGE_TYPE_MODIFIERS,exports.BREADCRUMBS_INVERTED_MODIFIER=y.BREADCRUMBS_INVERTED_MODIFIER,exports.BREADCRUMB_ITEM_SELECTED_MODIFIER=y.BREADCRUMB_ITEM_SELECTED_MODIFIER,exports.BUTTON_GROUP_ALIGNMENT=x.BUTTON_GROUP_ALIGNMENT,exports.BUTTON_ICON_SIZES=g.BUTTON_ICON_SIZES,exports.BUTTON_IMPORTANCE_MODIFIERS=g.BUTTON_IMPORTANCE_MODIFIERS,exports.BUTTON_KIND_MODIFIERS=g.BUTTON_KIND_MODIFIERS,exports.BUTTON_SIZE_MODIFIERS=g.BUTTON_SIZE_MODIFIERS,exports.BUTTON_TYPES=g.BUTTON_TYPES,exports.CDN_URL=B.CDN_URL,exports.CHIP_CLOSE_BUTTON_SIZE_MODIFIERS=D.CHIP_CLOSE_BUTTON_SIZE_MODIFIERS,exports.CHIP_ICON_SIZES=D.CHIP_ICON_SIZES,exports.CHIP_SIZES=Q.CHIP_SIZES,exports.CHIP_SIZE_MODIFIERS=D.CHIP_SIZE_MODIFIERS,exports.CHIP_TOP_POSITION=Q.CHIP_TOP_POSITION,exports.COMBOBOX_LABEL_SIZES=ke.COMBOBOX_LABEL_SIZES,exports.COMPONENT_SIZES=e.COMPONENT_SIZES,exports.CRITICAL=_.CRITICAL,exports.DEFAULT_PANEL_SIZE=W.l,exports.DEFAULT_PREFIX=n.DEFAULT_PREFIX,exports.DEFAULT_VALIDATION_MESSAGE_TYPE=n.DEFAULT_VALIDATION_MESSAGE_TYPE,exports.DESCRIPTION_SIZE_MODIFIERS=n.DESCRIPTION_SIZE_MODIFIERS,exports.DESCRIPTION_SIZE_TYPES=n.DESCRIPTION_SIZE_TYPES,exports.DROPDOWN_PADDING_CLASSES=Le.DROPDOWN_PADDING_CLASSES,exports.DT_BOX_AS_VALUES=v.DT_BOX_AS_VALUES,exports.DT_BOX_BORDER_COLOR_VALUES=v.DT_BOX_BORDER_COLOR_VALUES,exports.DT_BOX_BORDER_RADIUS_VALUES=v.DT_BOX_BORDER_RADIUS_VALUES,exports.DT_BOX_BORDER_WIDTH_VALUES=v.DT_BOX_BORDER_WIDTH_VALUES,exports.DT_BOX_INSET_SIDE_VALUES=v.DT_BOX_INSET_SIDE_VALUES,exports.DT_BOX_INSET_VALUES=v.DT_BOX_INSET_VALUES,exports.DT_BOX_LAYOUT_VALUES=v.DT_BOX_LAYOUT_VALUES,exports.DT_BOX_OVERFLOW_VALUES=v.DT_BOX_OVERFLOW_VALUES,exports.DT_BOX_POSITION_VALUES=v.DT_BOX_POSITION_VALUES,exports.DT_BOX_SCROLLBAR_VALUES=v.DT_BOX_SCROLLBAR_VALUES,exports.DT_BOX_SHADOW_VALUES=v.DT_BOX_SHADOW_VALUES,exports.DT_BOX_SPACING_VALUES=v.DT_BOX_SPACING_VALUES,exports.DT_BOX_SURFACE_VALUES=v.DT_BOX_SURFACE_VALUES,exports.DT_BOX_Z_INDEX_VALUES=v.DT_BOX_Z_INDEX_VALUES,exports.DT_DESCRIPTION_LIST_DIRECTION=Ne.DT_DESCRIPTION_LIST_DIRECTION,exports.DT_MODE_ISLAND_TYPES=rt.DT_MODE_ISLAND_TYPES,exports.DT_STACK_DIRECTION=N.DT_STACK_DIRECTION,exports.DT_STACK_GAP=N.DT_STACK_GAP,exports.DT_STACK_RESPONSIVE_BREAKPOINTS=N.DT_STACK_RESPONSIVE_BREAKPOINTS,exports.DT_TEXT_LIST_DEFAULT_TYPE=Y.DT_TEXT_LIST_DEFAULT_TYPE,exports.DT_TEXT_LIST_GAP=Y.DT_TEXT_LIST_GAP,exports.DT_TEXT_LIST_MARKERS=Y.DT_TEXT_LIST_MARKERS,exports.DT_TEXT_LIST_MARKER_TONES=Y.DT_TEXT_LIST_MARKER_TONES,exports.DT_TEXT_LIST_ORDERED_MARKERS=Y.DT_TEXT_LIST_ORDERED_MARKERS,exports.DT_TEXT_LIST_TYPES=Y.DT_TEXT_LIST_TYPES,exports.DT_TEXT_LIST_UNORDERED_MARKERS=Y.DT_TEXT_LIST_UNORDERED_MARKERS,exports.DialtoneLocalization=he.DialtoneLocalization,exports.DtAvatar=d.default,exports.DtBadge=le.default,exports.DtBanner=ye.default,exports.DtBox=be.default,exports.DtBreadcrumbItem=xe.default,exports.DtBreadcrumbs=b.default,exports.DtButton=ge.default,exports.DtButtonGroup=S.default,exports.DtCard=C.default,exports.DtCheckableInputMixin=a.CheckableMixin,exports.DtCheckbox=w.default,exports.DtCheckboxGroup=E.default,exports.DtChip=O.default,exports.DtCodeblock=k.default,exports.DtCollapsible=A.default,exports.DtCombobox=Oe.t,exports.DtComboboxMultiSelect=Dt.default,exports.DtComboboxWithPopover=Et.default,exports.DtDOMMixin=ee.default,exports.DtDatepicker=Me.t,exports.DtDescriptionList=Pe.default,exports.DtDropdown=Re.default,exports.DtDropdownSeparator=L.default,exports.DtEmoji=ze.default,exports.DtEmojiPicker=Ve.t,exports.DtEmojiTextWrapper=Ge.default,exports.DtEmptyState=qe.default,exports.DtFilterPill=Je.default,exports.DtFocusgroupDirective=jt.DtFocusgroupDirective,exports.DtFocustrapDirective=Mt.DtFocustrapDirective,exports.DtGroupableInputMixin=a.GroupableMixin,exports.DtHovercard=Ye.default,exports.DtIcon=ce.default,exports.DtIllustration=Ze.default,exports.DtImageViewer=Qe.default,exports.DtInput=Be.default,exports.DtInputGroup=T.default,exports.DtInputGroupMixin=ne.InputGroupMixin,exports.DtInputMixin=a.InputMixin,exports.DtItemLayout=M.default,exports.DtKeyboardListNavigationMixin=re.default,exports.DtKeyboardShortcut=$e.default,exports.DtLazyShow=Fe.default,exports.DtLink=me.default,exports.DtListItem=Se.default,exports.DtListItemGroup=tt.default,exports.DtLoader=pe.default,exports.DtModal=nt.default,exports.DtModalMixin=ie.default,exports.DtModeDirective=At.DtModeDirective,exports.DtModeIsland=it.default,exports.DtModeMixin=oe.default,exports.DtMotionText=Nt.default,exports.DtNotice=ve.default,exports.DtNoticeAction=_e.default,exports.DtNoticeContent=fe.default,exports.DtNoticeIcon=ue.default,exports.DtPagination=at.default,exports.DtPopover=Ie.default,exports.DtPresence=se.t,exports.DtProgressCircle=ot.default,exports.DtProse=st.default,exports.DtRadio=lt.default,exports.DtRadioGroup=ut.default,exports.DtResizable=dt.t,exports.DtResizableHandle=ft.t,exports.DtResizablePanel=pt.default,exports.DtRichTextEditor=mt.t,exports.DtRootLayout=ht.default,exports.DtScrollbarDirective=kt.DtScrollbarDirective,exports.DtScroller=gt.t,exports.DtSegmentedControl=_t.default,exports.DtSegmentedControlItem=vt.default,exports.DtSelectMenu=yt.default,exports.DtSkeleton=De.default,exports.DtSkeletonListItem=Ee.default,exports.DtSkeletonMixin=ae.default,exports.DtSkeletonParagraph=Te.default,exports.DtSkeletonShape=Ce.default,exports.DtSkeletonText=we.default,exports.DtSplitButton=xt.default,exports.DtStack=Ae.default,exports.DtTab=Ue.default,exports.DtTabGroup=He.default,exports.DtTabPanel=We.default,exports.DtText=de.default,exports.DtTextList=St.t,exports.DtTextListItem=Ct.t,exports.DtToast=wt.t,exports.DtToggle=Tt.default,exports.DtTooltip=je.default,exports.DtTooltipDirective=Ot.DtTooltipDirective,exports.DtValidationMessages=te.default,exports.EMOJIS_PER_ROW=B.EMOJIS_PER_ROW,exports.EMOJI_PICKER_SKIN_TONE_MODIFIERS=B.EMOJI_PICKER_SKIN_TONE_MODIFIERS,exports.EMPTY_STATE_SIZE_MODIFIERS=Ke.EMPTY_STATE_SIZE_MODIFIERS,exports.EVENT_KEYNAMES=n.EVENT_KEYNAMES,exports.HTML_ELEMENT_TYPE=n.HTML_ELEMENT_TYPE,exports.ICON_NAMES=p.ICON_NAMES,exports.ICON_POSITION_MODIFIERS=g.ICON_POSITION_MODIFIERS,exports.ICON_SIZE_MODIFIERS=p.ICON_SIZE_MODIFIERS,exports.ILLUSTRATION_NAMES=Xe.ILLUSTRATION_NAMES,exports.INPUT_SIZES=R.INPUT_SIZES,exports.INPUT_TYPES=R.INPUT_TYPES,exports.INVALID_COMBINATION=g.INVALID_COMBINATION,exports.LABEL_SIZE_MODIFIERS=n.LABEL_SIZE_MODIFIERS,exports.LAYOUT_PERCENT_VALUES=t.LAYOUT_PERCENT_VALUES,exports.LAYOUT_SIZE_VALUES=t.LAYOUT_SIZE_VALUES,exports.LAYOUT_VALUES=t.LAYOUT_VALUES,exports.LINK_KIND_MODIFIERS=_.LINK_KIND_MODIFIERS,exports.LINK_VARIANTS=_.LINK_VARIANTS,exports.LIST_ITEM_NAVIGATION_TYPES=j.LIST_ITEM_NAVIGATION_TYPES,exports.LIST_ITEM_TYPES=j.LIST_ITEM_TYPES,exports.MENTION=_.MENTION,exports.MIN_PANEL_SIZE_PX=W.u,exports.MODAL_BANNER_KINDS=V.MODAL_BANNER_KINDS,exports.MODAL_KIND_MODIFIERS=V.MODAL_KIND_MODIFIERS,exports.MOTION_TEXT_ANIMATION_MODES=$.MOTION_TEXT_ANIMATION_MODES,exports.MOTION_TEXT_SPEEDS=$.MOTION_TEXT_SPEEDS,exports.MOTION_TEXT_TIMING_PRESETS=$.MOTION_TEXT_TIMING_PRESETS,exports.MULTI_SELECT_SIZES=Q.MULTI_SELECT_SIZES,exports.MUTED=_.MUTED,exports.NOTICE_KINDS=m.NOTICE_KINDS,exports.NOTICE_ROLES=m.NOTICE_ROLES,exports.POPOVER_APPEND_TO_VALUES=F.POPOVER_APPEND_TO_VALUES,exports.POPOVER_CONTENT_WIDTHS=F.POPOVER_CONTENT_WIDTHS,exports.POPOVER_DIRECTIONS=F.POPOVER_DIRECTIONS,exports.POPOVER_HEADER_FOOTER_PADDING_CLASSES=F.POPOVER_HEADER_FOOTER_PADDING_CLASSES,exports.POPOVER_INITIAL_FOCUS_STRINGS=F.POPOVER_INITIAL_FOCUS_STRINGS,exports.POPOVER_PADDING_CLASSES=F.POPOVER_PADDING_CLASSES,exports.POPOVER_ROLES=F.POPOVER_ROLES,exports.POPOVER_STICKY_VALUES=F.POPOVER_STICKY_VALUES,exports.POSITIVE=_.POSITIVE,exports.PRESENCE_STATES=l.PRESENCE_STATES,exports.PRESENCE_STATES_LIST=l.PRESENCE_STATES_LIST,exports.PROGRESS_CIRCLE_KINDS=H.PROGRESS_CIRCLE_KINDS,exports.PROGRESS_CIRCLE_KIND_DEFAULT=H.PROGRESS_CIRCLE_KIND_DEFAULT,exports.PROGRESS_CIRCLE_SIZES=H.PROGRESS_CIRCLE_SIZES,exports.PROGRESS_CIRCLE_SIZE_DEFAULT=H.PROGRESS_CIRCLE_SIZE_DEFAULT,exports.PROSE_ALLOWED_ATTRIBUTES=U.PROSE_ALLOWED_ATTRIBUTES,exports.PROSE_DENSITY_MODIFIERS=U.PROSE_DENSITY_MODIFIERS,exports.PROSE_DISALLOWED_ELEMENTS=U.PROSE_DISALLOWED_ELEMENTS,exports.PROSE_SIZE_MODIFIERS=U.PROSE_SIZE_MODIFIERS,exports.RADIO_INPUT_VALIDATION_CLASSES=ct.RADIO_INPUT_VALIDATION_CLASSES,exports.RESIZABLE_CONTEXT_KEY=W.d,exports.RESIZABLE_HANDLE_CENTER_OFFSET_PX=W.f,exports.RICH_TEXT_EDITOR_AUTOFOCUS_TYPES=G.RICH_TEXT_EDITOR_AUTOFOCUS_TYPES,exports.RICH_TEXT_EDITOR_OUTPUT_FORMATS=G.RICH_TEXT_EDITOR_OUTPUT_FORMATS,exports.ROOT_LAYOUT_RESPONSIVE_BREAKPOINTS=K.ROOT_LAYOUT_RESPONSIVE_BREAKPOINTS,exports.ROOT_LAYOUT_SIDEBAR_POSITIONS=K.ROOT_LAYOUT_SIDEBAR_POSITIONS,exports.SEGMENTED_CONTROL_ACTIVATION_MODES=q.SEGMENTED_CONTROL_ACTIVATION_MODES,exports.SEGMENTED_CONTROL_ACTIVATION_MODE_DEFAULT=q.SEGMENTED_CONTROL_ACTIVATION_MODE_DEFAULT,exports.SEGMENTED_CONTROL_CONTEXT_KEY=q.SEGMENTED_CONTROL_CONTEXT_KEY,exports.SEGMENTED_CONTROL_FOCUS_KEY=q.SEGMENTED_CONTROL_FOCUS_KEY,exports.SEGMENTED_CONTROL_ORIENTATIONS=q.SEGMENTED_CONTROL_ORIENTATIONS,exports.SEGMENTED_CONTROL_ORIENTATION_DEFAULT=q.SEGMENTED_CONTROL_ORIENTATION_DEFAULT,exports.SEGMENTED_CONTROL_SELECT_KEY=q.SEGMENTED_CONTROL_SELECT_KEY,exports.SEGMENTED_CONTROL_SIZES=q.SEGMENTED_CONTROL_SIZES,exports.SEGMENTED_CONTROL_SIZE_DEFAULT=q.SEGMENTED_CONTROL_SIZE_DEFAULT,exports.SEGMENTED_CONTROL_SIZE_MODIFIERS=q.SEGMENTED_CONTROL_SIZE_MODIFIERS,exports.SEGMENTED_CONTROL_SPREADS=q.SEGMENTED_CONTROL_SPREADS,exports.SEGMENTED_CONTROL_SPREAD_DEFAULT=q.SEGMENTED_CONTROL_SPREAD_DEFAULT,exports.SELECT_SIZE_MODIFIERS=J.SELECT_SIZE_MODIFIERS,exports.SELECT_STATE_MODIFIERS=J.SELECT_STATE_MODIFIERS,exports.SHORTCUTS_ALIASES_LIST=et.SHORTCUTS_ALIASES_LIST,exports.SKELETON_HEADING_HEIGHTS=o.SKELETON_HEADING_HEIGHTS,exports.SKELETON_RIPPLE_DURATION=o.SKELETON_RIPPLE_DURATION,exports.SKELETON_SHAPES=o.SKELETON_SHAPES,exports.SKELETON_SHAPE_SIZES=o.SKELETON_SHAPE_SIZES,exports.SKELETON_TEXT_TYPES=o.SKELETON_TEXT_TYPES,exports.SPLIT_BUTTON_ICON_SIZES=bt.SPLIT_BUTTON_ICON_SIZES,exports.TAB_ACTIVATION_MODES=z.TAB_ACTIVATION_MODES,exports.TAB_GROUP_KINDS=z.TAB_GROUP_KINDS,exports.TAB_LIST_IMPORTANCE_MODIFIERS=z.TAB_LIST_IMPORTANCE_MODIFIERS,exports.TAB_LIST_KIND_MODIFIERS=z.TAB_LIST_KIND_MODIFIERS,exports.TAB_LIST_SIZES=z.TAB_LIST_SIZES,exports.TAB_LIST_SIZE_MODIFIERS=z.TAB_LIST_SIZE_MODIFIERS,exports.TAB_SPREADS=z.TAB_SPREADS,exports.TEXT_ALIGN_MODIFIERS=h.TEXT_ALIGN_MODIFIERS,exports.TEXT_BOX_TRIM_MODIFIERS=h.TEXT_BOX_TRIM_MODIFIERS,exports.TEXT_DENSITY_MODIFIERS=h.TEXT_DENSITY_MODIFIERS,exports.TEXT_FAMILY_MODIFIERS=h.TEXT_FAMILY_MODIFIERS,exports.TEXT_FONT_SIZE_MODIFIERS=h.TEXT_FONT_SIZE_MODIFIERS,exports.TEXT_HEADLINE_ONLY_SIZES=h.TEXT_HEADLINE_ONLY_SIZES,exports.TEXT_HEADLINE_SIZES=e.TEXT_HEADLINE_SIZES,exports.TEXT_ITALIC_CLASS=h.TEXT_ITALIC_CLASS,exports.TEXT_KIND_MODIFIERS=h.TEXT_KIND_MODIFIERS,exports.TEXT_LINE_CLAMP_CLASS=h.TEXT_LINE_CLAMP_CLASS,exports.TEXT_NUMERIC_CLASS=h.TEXT_NUMERIC_CLASS,exports.TEXT_SIZE_MODIFIERS=h.TEXT_SIZE_MODIFIERS,exports.TEXT_STRENGTH_MODIFIERS=h.TEXT_STRENGTH_MODIFIERS,exports.TEXT_TONE_MODIFIERS=h.TEXT_TONE_MODIFIERS,exports.TEXT_TRUNCATE_CLASS=h.TEXT_TRUNCATE_CLASS,exports.TEXT_VARIANT_MODIFIERS=h.TEXT_VARIANT_MODIFIERS,exports.TEXT_WRAP_MODIFIERS=h.TEXT_WRAP_MODIFIERS,exports.TOAST_MIN_DURATION=X.TOAST_MIN_DURATION,exports.TOAST_ROLES=X.TOAST_ROLES,exports.TOGGLE_CHECKED_VALUES=Z.TOGGLE_CHECKED_VALUES,exports.TOGGLE_SIZE_MODIFIERS=Z.TOGGLE_SIZE_MODIFIERS,exports.TOOLTIP_DELAY_MS=P.TOOLTIP_DELAY_MS,exports.TOOLTIP_DIRECTIONS=P.TOOLTIP_DIRECTIONS,exports.TOOLTIP_HIDE_ON_CLICK_VARIANTS=P.TOOLTIP_HIDE_ON_CLICK_VARIANTS,exports.TOOLTIP_KIND_MODIFIERS=P.TOOLTIP_KIND_MODIFIERS,exports.TOOLTIP_STICKY_VALUES=P.TOOLTIP_STICKY_VALUES,exports.VALIDATION_MESSAGE_TYPES=n.VALIDATION_MESSAGE_TYPES,exports.WARNING=_.WARNING,exports.buildHandleId=W.p,exports.capitalizeFirstLetter=i.capitalizeFirstLetter,exports.codeToEmojiData=c.codeToEmojiData,exports.colorToFamilyVariant=u.colorToFamilyVariant,exports.computeAvatarHex=u.computeAvatarHex,Object.defineProperty(exports,`customEmojiAssetUrl`,{enumerable:!0,get:function(){return c.customEmojiAssetUrl}}),exports.debounce=i.debounce,exports.defaultEmojiAssetUrl=c.defaultEmojiAssetUrl,exports.disableRootScrolling=i.disableRootScrolling,exports.durationInHHMM=s.durationInHHMM,Object.defineProperty(exports,`emojiFileExtensionLarge`,{enumerable:!0,get:function(){return c.emojiFileExtensionLarge}}),Object.defineProperty(exports,`emojiFileExtensionSmall`,{enumerable:!0,get:function(){return c.emojiFileExtensionSmall}}),Object.defineProperty(exports,`emojiImageUrlLarge`,{enumerable:!0,get:function(){return c.emojiImageUrlLarge}}),Object.defineProperty(exports,`emojiImageUrlSmall`,{enumerable:!0,get:function(){return c.emojiImageUrlSmall}}),exports.emojiJson=c.emojiJson,exports.emojiRegex=c.emojiRegex,exports.emojiShortCodeRegex=c.emojiShortCodeRegex,exports.emojiVersion=c.emojiVersion,exports.enableRootScrolling=i.enableRootScrolling,exports.extractNonListeners=i.extractNonListeners,exports.extractVueListeners=i.extractVueListeners,exports.filterFormattedMessages=i.filterFormattedMessages,exports.filterValidShortCodes=c.filterValidShortCodes,exports.findEmojis=c.findEmojis,exports.findFirstFocusableNode=i.findFirstFocusableNode,exports.findShortCodes=c.findShortCodes,exports.flushPromises=i.flushPromises,exports.formatLong=I.formatLong,exports.formatMedium=I.formatMedium,exports.formatMessages=i.formatMessages,exports.formatNoYear=I.formatNoYear,exports.formatNumerical=I.formatNumerical,exports.formatShort=I.formatShort,exports.getDateMedium=s.getDateMedium,exports.getEmojiData=c.getEmojiData,exports.getEmojiShortCode=c.getEmojiShortCode,exports.getLinkKindModifier=_.getLinkKindModifier,exports.getPhoneNumberRegex=i.getPhoneNumberRegex,exports.getRandomElement=i.getRandomElement,exports.getRandomFamilyVariant=u.getRandomFamilyVariant,exports.getRandomInt=i.getRandomInt,exports.getUniqueString=i.getUniqueString,exports.getValidationState=i.getValidationState,exports.hasFormattedMessageOfType=i.hasFormattedMessageOfType,exports.hasPercentageMinSize=W.t,exports.hasSlotContent=i.hasSlotContent,exports.htmlFragment=i.htmlFragment,exports.invalidateTokenCache=W.n,exports.isCSSValue=W.r,exports.isEmailAddress=i.isEmailAddress,exports.isOutOfViewPort=i.isOutOfViewPort,exports.isPercentageValue=W.i,exports.isPhoneNumber=i.isPhoneNumber,exports.isURL=i.isURL,exports.isValidSizing=W.a,exports.javaHashCode=i.javaHashCode,exports.kebabCaseToPascalCase=i.kebabCaseToPascalCase,exports.linkRegex=i.linkRegex,exports.parseSizeToPixels=W.o,exports.pascalCaseToKebabCase=i.pascalCaseToKebabCase,exports.pixelsToPercentage=W.s,exports.relativeDate=s.relativeDate,exports.removeClassStyleAttrs=i.removeClassStyleAttrs,exports.returnFirstEl=i.returnFirstEl,exports.safeConcatStrings=i.safeConcatStrings,exports.setCustomEmojiJson=c.setCustomEmojiJson,exports.setCustomEmojiUrl=c.setCustomEmojiUrl,exports.setDateLocale=s.setDateLocale,exports.setEmojiAssetUrlLarge=c.setEmojiAssetUrlLarge,exports.setEmojiAssetUrlSmall=c.setEmojiAssetUrlSmall,exports.shortcodeToEmojiData=c.shortcodeToEmojiData,exports.stringToUnicode=c.stringToUnicode,exports.toFluentKeyString=i.toFluentKeyString,exports.unicodeToString=c.unicodeToString,exports.validateContainerSize=W.c,exports.validateCustomEmojiJson=c.validateCustomEmojiJson,exports.validationMessageValidator=r.validationMessageValidator,exports.warnIfUnmounted=i.warnIfUnmounted;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const ee=require(`./common/mixins/dom.cjs`),e=require(`./common/constants/sizes.cjs`),t=require(`./common/constants/layout.cjs`),n=require(`./common/constants/index.cjs`),r=require(`./common/validators/index.cjs`),i=require(`./common/utils/index.cjs`),a=require(`./common/mixins/input.cjs`),te=require(`./lib/validation-messages/validation-messages.cjs`),ne=require(`./common/mixins/input-group.cjs`),re=require(`./common/mixins/keyboard-list-navigation.cjs`),ie=require(`./common/mixins/modal.cjs`),o=require(`./lib/skeleton/skeleton-constants.cjs`),ae=require(`./common/mixins/skeleton.cjs`),oe=require(`./common/mixins/mode.cjs`),s=require(`./common/dates/index.cjs`),c=require(`./common/emoji/index.cjs`),l=require(`./lib/presence/presence-constants.cjs`),se=require(`./Presence-DLM3JR-n.cjs`),u=require(`./lib/avatar/avatar-constants.cjs`),d=require(`./lib/avatar/avatar.cjs`),f=require(`./lib/badge/badge-constants.cjs`),p=require(`./lib/icon/icon-constants.cjs`),ce=require(`./lib/icon/icon.cjs`),le=require(`./lib/badge/badge.cjs`),m=require(`./lib/notice/notice-constants.cjs`),ue=require(`./lib/notice/notice-icon.cjs`),h=require(`./lib/text/text-constants.cjs`),de=require(`./lib/text/text.cjs`),fe=require(`./lib/notice/notice-content.cjs`),pe=require(`./lib/loader/loader.cjs`),g=require(`./lib/button/button-constants.cjs`),_=require(`./lib/link/link-constants.cjs`),me=require(`./lib/link/link.cjs`),he=require(`./localization/index.cjs`),ge=require(`./lib/button/button.cjs`),_e=require(`./lib/notice/notice-action.cjs`),ve=require(`./lib/notice/notice.cjs`),ye=require(`./lib/banner/banner.cjs`);require(`./lib/banner/index.cjs`);const v=require(`./lib/box/box-constants.cjs`),be=require(`./lib/box/box.cjs`);require(`./lib/box/index.cjs`);const y=require(`./lib/breadcrumbs/breadcrumbs-constants.cjs`),xe=require(`./lib/breadcrumbs/breadcrumb-item.cjs`),b=require(`./lib/breadcrumbs/breadcrumbs.cjs`);require(`./lib/breadcrumbs/index.cjs`);const x=require(`./lib/button-group/button-group-constants.cjs`),S=require(`./lib/button-group/button-group.cjs`);require(`./lib/button-group/index.cjs`);const C=require(`./lib/card/card.cjs`);require(`./lib/card/index.cjs`);const w=require(`./lib/checkbox/checkbox.cjs`),T=require(`./lib/input-group/input-group.cjs`),E=require(`./lib/checkbox-group/checkbox-group.cjs`),D=require(`./lib/chip/chip-constants.cjs`),O=require(`./lib/chip/chip.cjs`);require(`./lib/chip/index.cjs`);const k=require(`./lib/codeblock/codeblock.cjs`);require(`./lib/codeblock/index.cjs`);const A=require(`./lib/collapsible/collapsible.cjs`);require(`./lib/collapsible/index.cjs`);const j=require(`./lib/list-item/list-item-constants.cjs`),M=require(`./lib/item-layout/item-layout.cjs`),Se=require(`./lib/list-item/list-item.cjs`),Ce=require(`./lib/skeleton/skeleton-shape.cjs`),we=require(`./lib/skeleton/skeleton-text.cjs`),Te=require(`./lib/skeleton/skeleton-paragraph.cjs`),Ee=require(`./lib/skeleton/skeleton-list-item.cjs`),De=require(`./lib/skeleton/skeleton.cjs`),Oe=require(`./Combobox-96zAPv6d.cjs`),ke=require(`./lib/combobox/combobox-constants.cjs`),N=require(`./lib/stack/stack-constants.cjs`),Ae=require(`./lib/stack/stack.cjs`),P=require(`./lib/tooltip/tooltip-constants.cjs`),F=require(`./lib/popover/popover-constants.cjs`),je=require(`./lib/tooltip/tooltip.cjs`),Me=require(`./Datepicker-DkGmnVc8.cjs`),I=require(`./lib/datepicker/format-utils.cjs`);require(`./lib/datepicker/index.cjs`);const Ne=require(`./lib/description-list/description-list-constants.cjs`),Pe=require(`./lib/description-list/description-list.cjs`);require(`./lib/description-list/index.cjs`);const Fe=require(`./lib/lazy-show/lazy-show.cjs`),Ie=require(`./lib/popover/popover.cjs`),Le=require(`./lib/dropdown/dropdown-constants.cjs`),Re=require(`./lib/dropdown/dropdown.cjs`),L=require(`./lib/dropdown/dropdown-separator.cjs`),ze=require(`./lib/emoji/emoji.cjs`),R=require(`./lib/input/input-constants.cjs`),Be=require(`./lib/input/input.cjs`),Ve=require(`./EmojiPicker-KO1yhODv.cjs`),z=require(`./lib/tab/tabs-constants.cjs`),He=require(`./lib/tab/tab-group.cjs`),Ue=require(`./lib/tab/tab.cjs`),We=require(`./lib/tab/tab-panel.cjs`),B=require(`./lib/emoji-picker/emoji-picker-constants.cjs`);require(`./lib/emoji-picker/index.cjs`);const Ge=require(`./lib/emoji-text-wrapper/emoji-text-wrapper.cjs`);require(`./lib/emoji-text-wrapper/index.cjs`);const Ke=require(`./lib/empty-state/empty-state-constants.cjs`),qe=require(`./lib/empty-state/empty-state.cjs`);require(`./lib/empty-state/index.cjs`);const Je=require(`./lib/filter-pill/filter-pill.cjs`);require(`./lib/filter-pill/index.cjs`);const Ye=require(`./lib/hovercard/hovercard.cjs`);require(`./lib/hovercard/index.cjs`);const Xe=require(`./lib/illustration/illustration-constants.cjs`),Ze=require(`./lib/illustration/illustration.cjs`);require(`./lib/illustration/index.cjs`);const Qe=require(`./lib/image-viewer/image-viewer.cjs`);require(`./lib/image-viewer/index.cjs`);const $e=require(`./lib/keyboard-shortcut/keyboard-shortcut.cjs`),et=require(`./lib/keyboard-shortcut/keyboard-shortcut-constants.cjs`);require(`./lib/keyboard-shortcut/index.cjs`);const tt=require(`./lib/list-item-group/list-item-group.cjs`);require(`./lib/list-item-group/index.cjs`),require(`./lib/loader/index.cjs`);const V=require(`./lib/modal/modal-constants.cjs`),nt=require(`./lib/modal/modal.cjs`);require(`./lib/modal/index.cjs`);const rt=require(`./lib/mode-island/mode-island-constants.cjs`),it=require(`./lib/mode-island/mode-island.cjs`);require(`./lib/mode-island/index.cjs`);const at=require(`./lib/pagination/pagination.cjs`);require(`./lib/pagination/index.cjs`);const H=require(`./lib/progress-circle/progress-circle-constants.cjs`),ot=require(`./lib/progress-circle/progress-circle.cjs`);require(`./lib/progress-circle/index.cjs`);const U=require(`./lib/prose/prose-constants.cjs`),st=require(`./lib/prose/prose.cjs`);require(`./lib/prose/index.cjs`);const ct=require(`./lib/radio/radio-constants.cjs`),lt=require(`./lib/radio/radio.cjs`);require(`./lib/radio/index.cjs`);const ut=require(`./lib/radio-group/radio-group.cjs`);require(`./lib/radio-group/index.cjs`);const W=require(`./ResizableUtils-DMfertP2.cjs`),dt=require(`./Resizable-DBRsEUf3.cjs`),ft=require(`./ResizableHandle-DQG7a5D9.cjs`),pt=require(`./lib/resizable/resizable-panel.cjs`);require(`./lib/resizable/index.cjs`);const mt=require(`./RichTextEditor-n42FPkjs.cjs`),G=require(`./lib/rich-text-editor/rich-text-editor-constants.cjs`);require(`./lib/rich-text-editor/index.cjs`);const K=require(`./lib/root-layout/root-layout-constants.cjs`),ht=require(`./lib/root-layout/root-layout.cjs`);require(`./lib/root-layout/index.cjs`);const gt=require(`./Scroller-BUtC5Z7j.cjs`);require(`./lib/scroller/index.cjs`);const q=require(`./lib/segmented-control/segmented-control-constants.cjs`),_t=require(`./lib/segmented-control/segmented-control.cjs`),vt=require(`./lib/segmented-control/segmented-control-item.cjs`);require(`./lib/segmented-control/index.cjs`);const J=require(`./lib/select-menu/select-menu-constants.cjs`),yt=require(`./lib/select-menu/select-menu.cjs`);require(`./lib/select-menu/index.cjs`);const bt=require(`./lib/split-button/split-button-constants.cjs`),xt=require(`./lib/split-button/split-button.cjs`);require(`./lib/split-button/index.cjs`);const Y=require(`./lib/text-list/text-list-constants.cjs`),St=require(`./TextList-Dd-ROFiI.cjs`),Ct=require(`./TextListItem-DIlrCkaM.cjs`);require(`./lib/text-list/index.cjs`);const X=require(`./lib/toast/toast-constants.cjs`),wt=require(`./Toast-IyFVsArp.cjs`);require(`./lib/toast/index.cjs`);const Z=require(`./lib/toggle/toggle-constants.cjs`),Tt=require(`./lib/toggle/toggle.cjs`);require(`./lib/toggle/index.cjs`);const Et=require(`./lib/combobox-with-popover/combobox-with-popover.cjs`),Q=require(`./lib/combobox-multi-select/combobox-multi-select-constants.cjs`),Dt=require(`./lib/combobox-multi-select/combobox-multi-select.cjs`);require(`./lib/combobox-multi-select/index.cjs`),require(`./lib/combobox-with-popover/index.cjs`);const Ot=require(`./lib/tooltip-directive/tooltip.cjs`);require(`./lib/tooltip-directive/index.cjs`);const kt=require(`./lib/scrollbar-directive/scrollbar.cjs`);require(`./lib/scrollbar-directive/index.cjs`);const At=require(`./lib/mode-directive/mode.cjs`);require(`./lib/mode-directive/index.cjs`);const jt=require(`./lib/focusgroup-directive/focusgroup.cjs`);require(`./lib/focusgroup-directive/index.cjs`);const Mt=require(`./lib/focustrap-directive/focustrap.cjs`);require(`./lib/focustrap-directive/index.cjs`);const $=require(`./lib/motion-text/motion-text-constants.cjs`),Nt=require(`./lib/motion-text/motion-text.cjs`);require(`./lib/motion-text/index.cjs`),exports.ARROW_KEYS=B.ARROW_KEYS,exports.AVATAR_CHROMA=u.AVATAR_CHROMA,exports.AVATAR_FAMILY_COUNT=u.AVATAR_FAMILY_COUNT,exports.AVATAR_GROUP_VALIDATOR=u.AVATAR_GROUP_VALIDATOR,exports.AVATAR_HUE_OFFSETS=u.AVATAR_HUE_OFFSETS,exports.AVATAR_ICON_SIZES=u.AVATAR_ICON_SIZES,exports.AVATAR_KIND_MODIFIERS=u.AVATAR_KIND_MODIFIERS,exports.AVATAR_LIGHTNESS=u.AVATAR_LIGHTNESS,exports.AVATAR_PRESENCE_SIZE_MODIFIERS=u.AVATAR_PRESENCE_SIZE_MODIFIERS,exports.AVATAR_PRESENCE_STATES=u.AVATAR_PRESENCE_STATES,exports.AVATAR_SIZE_MODIFIERS=u.AVATAR_SIZE_MODIFIERS,exports.AVATAR_VARIANT_COUNT=u.AVATAR_VARIANT_COUNT,exports.BADGE_DECORATION_MODIFIERS=f.BADGE_DECORATION_MODIFIERS,exports.BADGE_KIND_MODIFIERS=f.BADGE_KIND_MODIFIERS,exports.BADGE_TYPE_MODIFIERS=f.BADGE_TYPE_MODIFIERS,exports.BREADCRUMBS_INVERTED_MODIFIER=y.BREADCRUMBS_INVERTED_MODIFIER,exports.BREADCRUMB_ITEM_SELECTED_MODIFIER=y.BREADCRUMB_ITEM_SELECTED_MODIFIER,exports.BUTTON_GROUP_ALIGNMENT=x.BUTTON_GROUP_ALIGNMENT,exports.BUTTON_ICON_SIZES=g.BUTTON_ICON_SIZES,exports.BUTTON_IMPORTANCE_MODIFIERS=g.BUTTON_IMPORTANCE_MODIFIERS,exports.BUTTON_KIND_MODIFIERS=g.BUTTON_KIND_MODIFIERS,exports.BUTTON_SIZE_MODIFIERS=g.BUTTON_SIZE_MODIFIERS,exports.BUTTON_TYPES=g.BUTTON_TYPES,exports.CDN_URL=B.CDN_URL,exports.CHIP_CLOSE_BUTTON_SIZE_MODIFIERS=D.CHIP_CLOSE_BUTTON_SIZE_MODIFIERS,exports.CHIP_ICON_SIZES=D.CHIP_ICON_SIZES,exports.CHIP_SIZES=Q.CHIP_SIZES,exports.CHIP_SIZE_MODIFIERS=D.CHIP_SIZE_MODIFIERS,exports.CHIP_TOP_POSITION=Q.CHIP_TOP_POSITION,exports.COMBOBOX_LABEL_SIZES=ke.COMBOBOX_LABEL_SIZES,exports.COMPONENT_SIZES=e.COMPONENT_SIZES,exports.CRITICAL=_.CRITICAL,exports.DEFAULT_PANEL_SIZE=W.l,exports.DEFAULT_PREFIX=n.DEFAULT_PREFIX,exports.DEFAULT_VALIDATION_MESSAGE_TYPE=n.DEFAULT_VALIDATION_MESSAGE_TYPE,exports.DESCRIPTION_SIZE_MODIFIERS=n.DESCRIPTION_SIZE_MODIFIERS,exports.DESCRIPTION_SIZE_TYPES=n.DESCRIPTION_SIZE_TYPES,exports.DROPDOWN_PADDING_CLASSES=Le.DROPDOWN_PADDING_CLASSES,exports.DT_BOX_AS_VALUES=v.DT_BOX_AS_VALUES,exports.DT_BOX_BORDER_COLOR_VALUES=v.DT_BOX_BORDER_COLOR_VALUES,exports.DT_BOX_BORDER_RADIUS_VALUES=v.DT_BOX_BORDER_RADIUS_VALUES,exports.DT_BOX_BORDER_WIDTH_VALUES=v.DT_BOX_BORDER_WIDTH_VALUES,exports.DT_BOX_INSET_SIDE_VALUES=v.DT_BOX_INSET_SIDE_VALUES,exports.DT_BOX_INSET_VALUES=v.DT_BOX_INSET_VALUES,exports.DT_BOX_LAYOUT_VALUES=v.DT_BOX_LAYOUT_VALUES,exports.DT_BOX_OVERFLOW_VALUES=v.DT_BOX_OVERFLOW_VALUES,exports.DT_BOX_POSITION_VALUES=v.DT_BOX_POSITION_VALUES,exports.DT_BOX_SCROLLBAR_VALUES=v.DT_BOX_SCROLLBAR_VALUES,exports.DT_BOX_SHADOW_VALUES=v.DT_BOX_SHADOW_VALUES,exports.DT_BOX_SPACING_VALUES=v.DT_BOX_SPACING_VALUES,exports.DT_BOX_SURFACE_VALUES=v.DT_BOX_SURFACE_VALUES,exports.DT_BOX_Z_INDEX_VALUES=v.DT_BOX_Z_INDEX_VALUES,exports.DT_DESCRIPTION_LIST_DIRECTION=Ne.DT_DESCRIPTION_LIST_DIRECTION,exports.DT_MODE_ISLAND_TYPES=rt.DT_MODE_ISLAND_TYPES,exports.DT_STACK_DIRECTION=N.DT_STACK_DIRECTION,exports.DT_STACK_GAP=N.DT_STACK_GAP,exports.DT_STACK_RESPONSIVE_BREAKPOINTS=N.DT_STACK_RESPONSIVE_BREAKPOINTS,exports.DT_TEXT_LIST_DEFAULT_TYPE=Y.DT_TEXT_LIST_DEFAULT_TYPE,exports.DT_TEXT_LIST_GAP=Y.DT_TEXT_LIST_GAP,exports.DT_TEXT_LIST_MARKERS=Y.DT_TEXT_LIST_MARKERS,exports.DT_TEXT_LIST_MARKER_TONES=Y.DT_TEXT_LIST_MARKER_TONES,exports.DT_TEXT_LIST_ORDERED_MARKERS=Y.DT_TEXT_LIST_ORDERED_MARKERS,exports.DT_TEXT_LIST_TYPES=Y.DT_TEXT_LIST_TYPES,exports.DT_TEXT_LIST_UNORDERED_MARKERS=Y.DT_TEXT_LIST_UNORDERED_MARKERS,exports.DialtoneLocalization=he.DialtoneLocalization,exports.DtAvatar=d.default,exports.DtBadge=le.default,exports.DtBanner=ye.default,exports.DtBox=be.default,exports.DtBreadcrumbItem=xe.default,exports.DtBreadcrumbs=b.default,exports.DtButton=ge.default,exports.DtButtonGroup=S.default,exports.DtCard=C.default,exports.DtCheckableInputMixin=a.CheckableMixin,exports.DtCheckbox=w.default,exports.DtCheckboxGroup=E.default,exports.DtChip=O.default,exports.DtCodeblock=k.default,exports.DtCollapsible=A.default,exports.DtCombobox=Oe.t,exports.DtComboboxMultiSelect=Dt.default,exports.DtComboboxWithPopover=Et.default,exports.DtDOMMixin=ee.default,exports.DtDatepicker=Me.t,exports.DtDescriptionList=Pe.default,exports.DtDropdown=Re.default,exports.DtDropdownSeparator=L.default,exports.DtEmoji=ze.default,exports.DtEmojiPicker=Ve.t,exports.DtEmojiTextWrapper=Ge.default,exports.DtEmptyState=qe.default,exports.DtFilterPill=Je.default,exports.DtFocusgroupDirective=jt.DtFocusgroupDirective,exports.DtFocustrapDirective=Mt.DtFocustrapDirective,exports.DtGroupableInputMixin=a.GroupableMixin,exports.DtHovercard=Ye.default,exports.DtIcon=ce.default,exports.DtIllustration=Ze.default,exports.DtImageViewer=Qe.default,exports.DtInput=Be.default,exports.DtInputGroup=T.default,exports.DtInputGroupMixin=ne.InputGroupMixin,exports.DtInputMixin=a.InputMixin,exports.DtItemLayout=M.default,exports.DtKeyboardListNavigationMixin=re.default,exports.DtKeyboardShortcut=$e.default,exports.DtLazyShow=Fe.default,exports.DtLink=me.default,exports.DtListItem=Se.default,exports.DtListItemGroup=tt.default,exports.DtLoader=pe.default,exports.DtModal=nt.default,exports.DtModalMixin=ie.default,exports.DtModeDirective=At.DtModeDirective,exports.DtModeIsland=it.default,exports.DtModeMixin=oe.default,exports.DtMotionText=Nt.default,exports.DtNotice=ve.default,exports.DtNoticeAction=_e.default,exports.DtNoticeContent=fe.default,exports.DtNoticeIcon=ue.default,exports.DtPagination=at.default,exports.DtPopover=Ie.default,exports.DtPresence=se.t,exports.DtProgressCircle=ot.default,exports.DtProse=st.default,exports.DtRadio=lt.default,exports.DtRadioGroup=ut.default,exports.DtResizable=dt.t,exports.DtResizableHandle=ft.t,exports.DtResizablePanel=pt.default,exports.DtRichTextEditor=mt.t,exports.DtRootLayout=ht.default,exports.DtScrollbarDirective=kt.DtScrollbarDirective,exports.DtScroller=gt.t,exports.DtSegmentedControl=_t.default,exports.DtSegmentedControlItem=vt.default,exports.DtSelectMenu=yt.default,exports.DtSkeleton=De.default,exports.DtSkeletonListItem=Ee.default,exports.DtSkeletonMixin=ae.default,exports.DtSkeletonParagraph=Te.default,exports.DtSkeletonShape=Ce.default,exports.DtSkeletonText=we.default,exports.DtSplitButton=xt.default,exports.DtStack=Ae.default,exports.DtTab=Ue.default,exports.DtTabGroup=He.default,exports.DtTabPanel=We.default,exports.DtText=de.default,exports.DtTextList=St.t,exports.DtTextListItem=Ct.t,exports.DtToast=wt.t,exports.DtToggle=Tt.default,exports.DtTooltip=je.default,exports.DtTooltipDirective=Ot.DtTooltipDirective,exports.DtValidationMessages=te.default,exports.EMOJIS_PER_ROW=B.EMOJIS_PER_ROW,exports.EMOJI_PICKER_SKIN_TONE_MODIFIERS=B.EMOJI_PICKER_SKIN_TONE_MODIFIERS,exports.EMPTY_STATE_SIZE_MODIFIERS=Ke.EMPTY_STATE_SIZE_MODIFIERS,exports.EVENT_KEYNAMES=n.EVENT_KEYNAMES,exports.HTML_ELEMENT_TYPE=n.HTML_ELEMENT_TYPE,exports.ICON_NAMES=p.ICON_NAMES,exports.ICON_POSITION_MODIFIERS=g.ICON_POSITION_MODIFIERS,exports.ICON_SIZE_MODIFIERS=p.ICON_SIZE_MODIFIERS,exports.ILLUSTRATION_NAMES=Xe.ILLUSTRATION_NAMES,exports.INPUT_SIZES=R.INPUT_SIZES,exports.INPUT_TYPES=R.INPUT_TYPES,exports.INVALID_COMBINATION=g.INVALID_COMBINATION,exports.LABEL_SIZE_MODIFIERS=n.LABEL_SIZE_MODIFIERS,exports.LAYOUT_PERCENT_VALUES=t.LAYOUT_PERCENT_VALUES,exports.LAYOUT_SIZE_VALUES=t.LAYOUT_SIZE_VALUES,exports.LAYOUT_VALUES=t.LAYOUT_VALUES,exports.LINK_KIND_MODIFIERS=_.LINK_KIND_MODIFIERS,exports.LINK_VARIANTS=_.LINK_VARIANTS,exports.LIST_ITEM_NAVIGATION_TYPES=j.LIST_ITEM_NAVIGATION_TYPES,exports.LIST_ITEM_TYPES=j.LIST_ITEM_TYPES,exports.MENTION=_.MENTION,exports.MIN_PANEL_SIZE_PX=W.u,exports.MODAL_BANNER_KINDS=V.MODAL_BANNER_KINDS,exports.MODAL_KIND_MODIFIERS=V.MODAL_KIND_MODIFIERS,exports.MOTION_TEXT_ANIMATION_MODES=$.MOTION_TEXT_ANIMATION_MODES,exports.MOTION_TEXT_SPEEDS=$.MOTION_TEXT_SPEEDS,exports.MOTION_TEXT_TIMING_PRESETS=$.MOTION_TEXT_TIMING_PRESETS,exports.MULTI_SELECT_SIZES=Q.MULTI_SELECT_SIZES,exports.MUTED=_.MUTED,exports.NOTICE_KINDS=m.NOTICE_KINDS,exports.NOTICE_ROLES=m.NOTICE_ROLES,exports.POPOVER_APPEND_TO_VALUES=F.POPOVER_APPEND_TO_VALUES,exports.POPOVER_CONTENT_WIDTHS=F.POPOVER_CONTENT_WIDTHS,exports.POPOVER_DIRECTIONS=F.POPOVER_DIRECTIONS,exports.POPOVER_HEADER_FOOTER_PADDING_CLASSES=F.POPOVER_HEADER_FOOTER_PADDING_CLASSES,exports.POPOVER_INITIAL_FOCUS_STRINGS=F.POPOVER_INITIAL_FOCUS_STRINGS,exports.POPOVER_PADDING_CLASSES=F.POPOVER_PADDING_CLASSES,exports.POPOVER_ROLES=F.POPOVER_ROLES,exports.POPOVER_STICKY_VALUES=F.POPOVER_STICKY_VALUES,exports.POSITIVE=_.POSITIVE,exports.PRESENCE_STATES=l.PRESENCE_STATES,exports.PRESENCE_STATES_LIST=l.PRESENCE_STATES_LIST,exports.PROGRESS_CIRCLE_KINDS=H.PROGRESS_CIRCLE_KINDS,exports.PROGRESS_CIRCLE_KIND_DEFAULT=H.PROGRESS_CIRCLE_KIND_DEFAULT,exports.PROGRESS_CIRCLE_SIZES=H.PROGRESS_CIRCLE_SIZES,exports.PROGRESS_CIRCLE_SIZE_DEFAULT=H.PROGRESS_CIRCLE_SIZE_DEFAULT,exports.PROSE_ALLOWED_ATTRIBUTES=U.PROSE_ALLOWED_ATTRIBUTES,exports.PROSE_DENSITY_MODIFIERS=U.PROSE_DENSITY_MODIFIERS,exports.PROSE_DISALLOWED_ELEMENTS=U.PROSE_DISALLOWED_ELEMENTS,exports.PROSE_SIZE_MODIFIERS=U.PROSE_SIZE_MODIFIERS,exports.RADIO_INPUT_VALIDATION_CLASSES=ct.RADIO_INPUT_VALIDATION_CLASSES,exports.RESIZABLE_CONTEXT_KEY=W.d,exports.RESIZABLE_HANDLE_CENTER_OFFSET_PX=W.f,exports.RICH_TEXT_EDITOR_AUTOFOCUS_TYPES=G.RICH_TEXT_EDITOR_AUTOFOCUS_TYPES,exports.RICH_TEXT_EDITOR_OUTPUT_FORMATS=G.RICH_TEXT_EDITOR_OUTPUT_FORMATS,exports.ROOT_LAYOUT_RESPONSIVE_BREAKPOINTS=K.ROOT_LAYOUT_RESPONSIVE_BREAKPOINTS,exports.ROOT_LAYOUT_SIDEBAR_POSITIONS=K.ROOT_LAYOUT_SIDEBAR_POSITIONS,exports.SEGMENTED_CONTROL_ACTIVATION_MODES=q.SEGMENTED_CONTROL_ACTIVATION_MODES,exports.SEGMENTED_CONTROL_ACTIVATION_MODE_DEFAULT=q.SEGMENTED_CONTROL_ACTIVATION_MODE_DEFAULT,exports.SEGMENTED_CONTROL_CONTEXT_KEY=q.SEGMENTED_CONTROL_CONTEXT_KEY,exports.SEGMENTED_CONTROL_FOCUS_KEY=q.SEGMENTED_CONTROL_FOCUS_KEY,exports.SEGMENTED_CONTROL_ORIENTATIONS=q.SEGMENTED_CONTROL_ORIENTATIONS,exports.SEGMENTED_CONTROL_ORIENTATION_DEFAULT=q.SEGMENTED_CONTROL_ORIENTATION_DEFAULT,exports.SEGMENTED_CONTROL_SELECT_KEY=q.SEGMENTED_CONTROL_SELECT_KEY,exports.SEGMENTED_CONTROL_SIZES=q.SEGMENTED_CONTROL_SIZES,exports.SEGMENTED_CONTROL_SIZE_DEFAULT=q.SEGMENTED_CONTROL_SIZE_DEFAULT,exports.SEGMENTED_CONTROL_SIZE_MODIFIERS=q.SEGMENTED_CONTROL_SIZE_MODIFIERS,exports.SEGMENTED_CONTROL_SPREADS=q.SEGMENTED_CONTROL_SPREADS,exports.SEGMENTED_CONTROL_SPREAD_DEFAULT=q.SEGMENTED_CONTROL_SPREAD_DEFAULT,exports.SELECT_SIZE_MODIFIERS=J.SELECT_SIZE_MODIFIERS,exports.SELECT_STATE_MODIFIERS=J.SELECT_STATE_MODIFIERS,exports.SHORTCUTS_ALIASES_LIST=et.SHORTCUTS_ALIASES_LIST,exports.SKELETON_HEADING_HEIGHTS=o.SKELETON_HEADING_HEIGHTS,exports.SKELETON_RIPPLE_DURATION=o.SKELETON_RIPPLE_DURATION,exports.SKELETON_SHAPES=o.SKELETON_SHAPES,exports.SKELETON_SHAPE_SIZES=o.SKELETON_SHAPE_SIZES,exports.SKELETON_TEXT_TYPES=o.SKELETON_TEXT_TYPES,exports.SPLIT_BUTTON_ICON_SIZES=bt.SPLIT_BUTTON_ICON_SIZES,exports.TAB_ACTIVATION_MODES=z.TAB_ACTIVATION_MODES,exports.TAB_GROUP_KINDS=z.TAB_GROUP_KINDS,exports.TAB_LIST_IMPORTANCE_MODIFIERS=z.TAB_LIST_IMPORTANCE_MODIFIERS,exports.TAB_LIST_KIND_MODIFIERS=z.TAB_LIST_KIND_MODIFIERS,exports.TAB_LIST_SIZES=z.TAB_LIST_SIZES,exports.TAB_LIST_SIZE_MODIFIERS=z.TAB_LIST_SIZE_MODIFIERS,exports.TAB_SPREADS=z.TAB_SPREADS,exports.TEXT_ALIGN_MODIFIERS=h.TEXT_ALIGN_MODIFIERS,exports.TEXT_BOX_TRIM_MODIFIERS=h.TEXT_BOX_TRIM_MODIFIERS,exports.TEXT_DENSITY_MODIFIERS=h.TEXT_DENSITY_MODIFIERS,exports.TEXT_FAMILY_MODIFIERS=h.TEXT_FAMILY_MODIFIERS,exports.TEXT_FONT_SIZE_MODIFIERS=h.TEXT_FONT_SIZE_MODIFIERS,exports.TEXT_HEADLINE_ONLY_SIZES=h.TEXT_HEADLINE_ONLY_SIZES,exports.TEXT_HEADLINE_SIZES=e.TEXT_HEADLINE_SIZES,exports.TEXT_ITALIC_CLASS=h.TEXT_ITALIC_CLASS,exports.TEXT_KIND_MODIFIERS=h.TEXT_KIND_MODIFIERS,exports.TEXT_LINE_CLAMP_CLASS=h.TEXT_LINE_CLAMP_CLASS,exports.TEXT_NUMERIC_CLASS=h.TEXT_NUMERIC_CLASS,exports.TEXT_SIZE_MODIFIERS=h.TEXT_SIZE_MODIFIERS,exports.TEXT_STRENGTH_MODIFIERS=h.TEXT_STRENGTH_MODIFIERS,exports.TEXT_TONE_MODIFIERS=h.TEXT_TONE_MODIFIERS,exports.TEXT_TRUNCATE_CLASS=h.TEXT_TRUNCATE_CLASS,exports.TEXT_VARIANT_MODIFIERS=h.TEXT_VARIANT_MODIFIERS,exports.TEXT_WRAP_MODIFIERS=h.TEXT_WRAP_MODIFIERS,exports.TOAST_MIN_DURATION=X.TOAST_MIN_DURATION,exports.TOAST_ROLES=X.TOAST_ROLES,exports.TOGGLE_CHECKED_VALUES=Z.TOGGLE_CHECKED_VALUES,exports.TOGGLE_SIZE_MODIFIERS=Z.TOGGLE_SIZE_MODIFIERS,exports.TOOLTIP_DELAY_MS=P.TOOLTIP_DELAY_MS,exports.TOOLTIP_DIRECTIONS=P.TOOLTIP_DIRECTIONS,exports.TOOLTIP_HIDE_ON_CLICK_VARIANTS=P.TOOLTIP_HIDE_ON_CLICK_VARIANTS,exports.TOOLTIP_KIND_MODIFIERS=P.TOOLTIP_KIND_MODIFIERS,exports.TOOLTIP_STICKY_VALUES=P.TOOLTIP_STICKY_VALUES,exports.VALIDATION_MESSAGE_TYPES=n.VALIDATION_MESSAGE_TYPES,exports.WARNING=_.WARNING,exports.buildHandleId=W.p,exports.capitalizeFirstLetter=i.capitalizeFirstLetter,exports.codeToEmojiData=c.codeToEmojiData,exports.colorToFamilyVariant=u.colorToFamilyVariant,exports.computeAvatarHex=u.computeAvatarHex,Object.defineProperty(exports,`customEmojiAssetUrl`,{enumerable:!0,get:function(){return c.customEmojiAssetUrl}}),exports.debounce=i.debounce,exports.defaultEmojiAssetUrl=c.defaultEmojiAssetUrl,exports.disableRootScrolling=i.disableRootScrolling,exports.durationInHHMM=s.durationInHHMM,Object.defineProperty(exports,`emojiFileExtensionLarge`,{enumerable:!0,get:function(){return c.emojiFileExtensionLarge}}),Object.defineProperty(exports,`emojiFileExtensionSmall`,{enumerable:!0,get:function(){return c.emojiFileExtensionSmall}}),Object.defineProperty(exports,`emojiImageUrlLarge`,{enumerable:!0,get:function(){return c.emojiImageUrlLarge}}),Object.defineProperty(exports,`emojiImageUrlSmall`,{enumerable:!0,get:function(){return c.emojiImageUrlSmall}}),exports.emojiJson=c.emojiJson,exports.emojiRegex=c.emojiRegex,exports.emojiShortCodeRegex=c.emojiShortCodeRegex,exports.emojiVersion=c.emojiVersion,exports.enableRootScrolling=i.enableRootScrolling,exports.extractNonListeners=i.extractNonListeners,exports.extractVueListeners=i.extractVueListeners,exports.filterFormattedMessages=i.filterFormattedMessages,exports.filterValidShortCodes=c.filterValidShortCodes,exports.findEmojis=c.findEmojis,exports.findFirstFocusableNode=i.findFirstFocusableNode,exports.findShortCodes=c.findShortCodes,exports.flushPromises=i.flushPromises,exports.formatLong=I.formatLong,exports.formatMedium=I.formatMedium,exports.formatMessages=i.formatMessages,exports.formatNoYear=I.formatNoYear,exports.formatNumerical=I.formatNumerical,exports.formatShort=I.formatShort,exports.getDateMedium=s.getDateMedium,exports.getEmojiData=c.getEmojiData,exports.getEmojiShortCode=c.getEmojiShortCode,exports.getLinkKindModifier=_.getLinkKindModifier,exports.getPhoneNumberRegex=i.getPhoneNumberRegex,exports.getRandomElement=i.getRandomElement,exports.getRandomFamilyVariant=u.getRandomFamilyVariant,exports.getRandomInt=i.getRandomInt,exports.getUniqueString=i.getUniqueString,exports.getValidationState=i.getValidationState,exports.hasFormattedMessageOfType=i.hasFormattedMessageOfType,exports.hasPercentageMinSize=W.t,exports.hasSlotContent=i.hasSlotContent,exports.htmlFragment=i.htmlFragment,exports.invalidateTokenCache=W.n,exports.isCSSValue=W.r,exports.isEmailAddress=i.isEmailAddress,exports.isOutOfViewPort=i.isOutOfViewPort,exports.isPercentageValue=W.i,exports.isPhoneNumber=i.isPhoneNumber,exports.isURL=i.isURL,exports.isValidSizing=W.a,exports.javaHashCode=i.javaHashCode,exports.kebabCaseToPascalCase=i.kebabCaseToPascalCase,exports.linkRegex=i.linkRegex,exports.parseSizeToPixels=W.o,exports.pascalCaseToKebabCase=i.pascalCaseToKebabCase,exports.pixelsToPercentage=W.s,exports.relativeDate=s.relativeDate,exports.removeClassStyleAttrs=i.removeClassStyleAttrs,exports.returnFirstEl=i.returnFirstEl,exports.safeConcatStrings=i.safeConcatStrings,exports.setCustomEmojiJson=c.setCustomEmojiJson,exports.setCustomEmojiUrl=c.setCustomEmojiUrl,exports.setDateLocale=s.setDateLocale,exports.setEmojiAssetUrlLarge=c.setEmojiAssetUrlLarge,exports.setEmojiAssetUrlSmall=c.setEmojiAssetUrlSmall,exports.shortcodeToEmojiData=c.shortcodeToEmojiData,exports.stringToUnicode=c.stringToUnicode,exports.toFluentKeyString=i.toFluentKeyString,exports.unicodeToString=c.unicodeToString,exports.validateContainerSize=W.c,exports.validateCustomEmojiJson=c.validateCustomEmojiJson,exports.validationMessageValidator=r.validationMessageValidator,exports.warnIfUnmounted=i.warnIfUnmounted;
|
package/dist/dialtone-vue.js
CHANGED
|
@@ -145,7 +145,7 @@ import "./lib/rich-text-editor/index.js";
|
|
|
145
145
|
import { ROOT_LAYOUT_RESPONSIVE_BREAKPOINTS as Oi, ROOT_LAYOUT_SIDEBAR_POSITIONS as ki } from "./lib/root-layout/root-layout-constants.js";
|
|
146
146
|
import Ai from "./lib/root-layout/root-layout.js";
|
|
147
147
|
import "./lib/root-layout/index.js";
|
|
148
|
-
import { t as ji } from "./Scroller-
|
|
148
|
+
import { t as ji } from "./Scroller-BsGXTN6S.js";
|
|
149
149
|
import "./lib/scroller/index.js";
|
|
150
150
|
import { SEGMENTED_CONTROL_ACTIVATION_MODES as Mi, SEGMENTED_CONTROL_ACTIVATION_MODE_DEFAULT as Ni, SEGMENTED_CONTROL_CONTEXT_KEY as Pi, SEGMENTED_CONTROL_FOCUS_KEY as Fi, SEGMENTED_CONTROL_ORIENTATIONS as Ii, SEGMENTED_CONTROL_ORIENTATION_DEFAULT as Li, SEGMENTED_CONTROL_SELECT_KEY as Ri, SEGMENTED_CONTROL_SIZES as zi, SEGMENTED_CONTROL_SIZE_DEFAULT as Bi, SEGMENTED_CONTROL_SIZE_MODIFIERS as Vi, SEGMENTED_CONTROL_SPREADS as Hi, SEGMENTED_CONTROL_SPREAD_DEFAULT as Ui } from "./lib/segmented-control/segmented-control-constants.js";
|
|
151
151
|
import Wi from "./lib/segmented-control/segmented-control.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../Scroller-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../Scroller-BUtC5Z7j.cjs`);exports.DtScroller=e.t;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "../../Scroller-
|
|
1
|
+
import { t as e } from "../../Scroller-BsGXTN6S.js";
|
|
2
2
|
export { e as DtScroller };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../../Scroller-
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../../Scroller-BUtC5Z7j.cjs`);exports.default=e.t;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "../../Scroller-
|
|
1
|
+
import { t as e } from "../../Scroller-BsGXTN6S.js";
|
|
2
2
|
export { e as default };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dialpad/dialtone-vue",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.2",
|
|
4
4
|
"description": "Vue component library for Dialpad's design system Dialtone",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -61,12 +61,12 @@
|
|
|
61
61
|
"react": "19.2.4",
|
|
62
62
|
"storybook": "10.3.0",
|
|
63
63
|
"vue": "^3.3.4",
|
|
64
|
-
"@dialpad/dialtone
|
|
65
|
-
"@dialpad/
|
|
64
|
+
"@dialpad/generator-dialtone": "0.1.0",
|
|
65
|
+
"@dialpad/dialtone-css": "9.0.1"
|
|
66
66
|
},
|
|
67
67
|
"peerDependencies": {
|
|
68
68
|
"vue": ">=3.2",
|
|
69
|
-
"@dialpad/dialtone-css": "^9.0.
|
|
69
|
+
"@dialpad/dialtone-css": "^9.0.1"
|
|
70
70
|
},
|
|
71
71
|
"bugs": {
|
|
72
72
|
"email": "dialtone@dialpad.com"
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
require(`./chunk-Bmb41Sf3.cjs`);const e=require(`./common/utils/index.cjs`),t=require(`./_plugin-vue_export-helper-D8jCH6HB.cjs`);let n=require(`vue`);var r={__name:`CoreScroller`,props:{items:{type:Array,required:!0},keyField:{type:String,default:`id`},direction:{type:String,default:`vertical`,validator:e=>[`vertical`,`horizontal`].includes(e)},itemSize:{type:Number,default:null},minItemSize:{type:[Number,String],default:null},sizeField:{type:String,default:`size`},buffer:{type:Number,default:200},enableHover:{type:Boolean,default:!0},listTag:{type:String,default:`div`},itemTag:{type:String,default:`div`},listClass:{type:[String,Object,Array],default:``},itemClass:{type:[String,Object,Array],default:``}},emits:[`user-position`,`scroll-start`,`scroll-end`],setup(e,{expose:t,emit:r}){let i=e,a=r,o=(0,n.reactive)(new Map),s=(0,n.reactive)(new Map),c=(0,n.ref)([]),l=(0,n.ref)(null),u=(0,n.ref)(!1),d=(0,n.ref)(null),f=(0,n.ref)(null),p=(0,n.ref)(null),m=(0,n.ref)(`blockStart`),h=0,g=0,_=!1,v=0,y=null,b=null,x=0,S=0,C=(0,n.computed)(()=>{if(i.itemSize===null){let e={"-1":{accumulator:0}},t=i.items,n=i.sizeField,r=i.minItemSize,a=1e4,o=0,s;for(let i=0,c=t.length;i<c;i++)s=t[i][n]||r,s<a&&(a=s),o+=s,e[i]={accumulator:o,size:s};return b=a,e}return[]}),w=(0,n.computed)(()=>i.items.length&&typeof i.items[0]!=`object`),T=(0,n.computed)(()=>{let e={};for(let t=0,n=i.items.length;t<n;t++)e[i.items[t][i.keyField]]=t;return e});(0,n.watch)(C,()=>{j(!1)},{deep:!0}),(0,n.onMounted)(()=>{(0,n.nextTick)(()=>{j(!0),u.value=!0})});let E=(e,t,r,i,a)=>{let o=(0,n.shallowReactive)({item:r,position:0,nr:(0,n.markRaw)({id:S++,index:t,used:!0,key:i,type:a})});return e.value.push(o),o},D=(e,t=!1)=>{let n=s,r=e.nr.type,i=n.get(r);i||(i=[],n.set(r,i)),i.push(e),t||(e.nr.used=!1,e.position=-9999)},O=()=>{let e=i.direction===`vertical`,t;return t=e?{start:d.value.scrollTop,end:d.value.scrollTop+d.value.clientHeight}:{start:d.value.scrollLeft,end:d.value.scrollLeft+d.value.clientWidth},t},k=()=>{throw setTimeout(()=>{console.error(`It seems the scroller element isn't scrolling, so it tries to render all the items at once.`,`Scroller:`,d),console.error(`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.`)}),Error(`Rendered items limit reached`)},A=()=>{c.value.sort((e,t)=>e.nr.index-t.nr.index)},j=(e,t=!1)=>{let n=i.itemSize,r=b,l=w.value?null:i.keyField,u=i.items,d=u.length,m=C.value,_=o,S=s,j=c,M=T,N,P,F,I,L;if(!d)N=P=I=L=F=0;else{let e=O();if(t){let t=e.start-v.value;if(t<0&&(t=-t),n===null&&t<r.value||t<n)return{continuous:!0}}v=e.start;let a=i.buffer;e.start-=a,e.end+=a;let o=i.direction===`vertical`?`scrollHeight`:`scrollWidth`;if(f.value&&(e.start-=f.value[o]),p.value&&(e.end+=p.value[o]),n===null){let t,n=0,r=d-1,i=~~(d/2),a;do a=i,t=m[i]?.accumulator,t<e.start?n=i:i<d-1&&m[i+1]?.accumulator>e.start&&(r=i),i=~~((n+r)/2);while(i!==a);for(i<0&&(i=0),N=i,F=m[d-1]?.accumulator,P=i;P<d&&m[P]?.accumulator<e.end;P++);for(P===-1?P=u.length-1:(P++,P>d&&(P=d)),I=h;I<d&&m[I]?.accumulator<e.start;I++);for(L=I;L<d&&m[L]?.accumulator<e.end;L++);}else{N=~~(e.start/n);let t=N%1;N-=t,P=Math.ceil(e.end/n),I=Math.max(0,Math.floor(e.start/n)),L=Math.floor(e.end/n),N<0&&(N=0),P>d&&(P=d),I<0&&(I=0),L>d&&(L=d),F=Math.ceil(d/1)*n}}P-N>1e3&&k(),x=F;let R,z=N<=g&&P>=N;if(z)for(let t=0,n=j.value.length;t<n;t++)R=j.value[t],R?.nr.used&&(e&&(R.nr.index=M[R.item[l]]),(R.nr.index==null||R.nr.index<N||R.nr.index>=P)&&D(R));let B=z?null:new Map,V,H,U;for(let e=N;e<P;e++){V=u[e];let t=l?V?.[l]:V;if(t==null)throw Error(`Key is ${t} on item (keyField is '${l}')`);if(R=_.get(t),!n&&!m[e]?.size){R&&D(R);continue}H=V.type;let r=S.get(H),i=!1;if(!R)z?R=r&&r.length?r.pop():E(j,e,V,t,H):(U=B.get(H)||0,(!r||U>=r.length)&&(R=E(j,e,V,t,H),D(R,!0),r=S.get(H)),R=r[U],B.set(H,U+1)),_.delete(R.nr.key),R.nr.used=!0,R.nr.index=e,R.nr.key=t,R.nr.type=H,_.set(t,R),i=!0;else if(!R.nr.used&&(R.nr.used=!0,i=!0,r)){let e=r.indexOf(R);e!==-1&&r.splice(e,1)}R.item=V,i&&(e===u.length-1&&a(`scroll-end`),e===0&&a(`scroll-start`)),n===null?(R.position=m[e-1]?.accumulator,R.offset=0):(R.position=Math.floor(e)*n,R.offset=e%1*n)}return h=N,g=P,clearTimeout(y),y=setTimeout(A,300),{continuous:z}},M=e=>{let t=i.direction===`vertical`?{scroll:`scrollTop`,start:`top`}:{scroll:`scrollLeft`,start:`left`},n=d.value,r=t.scroll;n[r]=e},N=e=>{let t;t=i.itemSize===null?e>0?C.value[e-1]?.accumulator:0:Math.floor(e)*i.itemSize,M(t)},P=()=>{let e=d.value;m.value!==`middle`&&(m.value=`middle`,a(`user-position`,`middle`)),e.scrollTop===0&&(m.value=`blockStart`,a(`user-position`,`blockStart`),a(`user-position`,`top`)),e.scrollTop+e.clientHeight===e.scrollHeight&&(m.value=`blockEnd`,a(`user-position`,`blockEnd`),a(`user-position`,`bottom`)),_||(_=!0,requestAnimationFrame(()=>{_=!1,j(!1,!0)}))};return t({scrollToItem:N,_updateVisibleItems:j}),(t,r)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{ref_key:`scroller`,ref:d,class:(0,n.normalizeClass)([`vue-recycle-scroller`,{ready:u.value,[`direction-${e.direction}`]:!0}]),onScrollPassive:P},[t.$slots.before?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:0,ref_key:`before`,ref:f,"data-qa":`dt-scroller-before`,class:`vue-recycle-scroller__slot`},[(0,n.renderSlot)(t.$slots,`before`)],512)):(0,n.createCommentVNode)(``,!0),((0,n.openBlock)(),(0,n.createBlock)((0,n.resolveDynamicComponent)(e.listTag),{ref:`wrapper`,style:(0,n.normalizeStyle)({[e.direction===`vertical`?`minHeight`:`minWidth`]:`${(0,n.unref)(x)}px`}),"data-qa":`dt-scroller-item-wrapper`,class:(0,n.normalizeClass)([`vue-recycle-scroller__item-wrapper`,e.listClass])},{default:(0,n.withCtx)(()=>[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(c.value,r=>((0,n.openBlock)(),(0,n.createBlock)((0,n.resolveDynamicComponent)(e.itemTag),(0,n.mergeProps)({key:r.nr.id,"data-qa":`dt-scroller-item`,style:u.value?{transform:`translate${e.direction===`vertical`?`Y`:`X`}(${r.position}px) translate${e.direction===`vertical`?`X`:`Y`}(${r.offset}px)`,width:void 0,height:void 0}:null,class:[`vue-recycle-scroller__item-view`,[e.itemClass,{hover:i.enableHover&&l.value===r.nr.key}]]},(0,n.toHandlers)(i.enableHover?{mouseenter:()=>{l.value=r.nr.key},mouseleave:()=>{l.value=null}}:{})),{default:(0,n.withCtx)(()=>[(0,n.renderSlot)(t.$slots,`default`,{item:r.item,index:r.nr.index,active:r.nr.used})]),_:2},1040,[`style`,`class`]))),128)),e.items.length?(0,n.createCommentVNode)(``,!0):(0,n.renderSlot)(t.$slots,`empty`,{key:0})]),_:3},8,[`style`,`class`])),t.$slots.after?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:1,ref_key:`after`,ref:p,"data-qa":`dt-scroller-after`,class:`vue-recycle-scroller__slot`},[(0,n.renderSlot)(t.$slots,`after`)],512)):(0,n.createCommentVNode)(``,!0)],34))}},i={name:`DynamicScroller`,components:{CoreScroller:r,DtScrollerItem:{name:`DtScrollerItem`,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},tag:{type:String,default:`div`}},computed:{id(){if(this.vscrollData.simpleArray)return this.index;if(this.vscrollData.keyField in this.item)return this.item[this.vscrollData.keyField];throw 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(t,n){if(e.returnFirstEl(this.$el).$_vs_id=this.id,this.size||this.onDataUpdate(),this.$_sizeObserved){let e=this.vscrollData.sizes[n],r=this.vscrollData.sizes[t];e!=null&&e!==r&&this.applySize(e)}},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(let e in this.sizeDependencies)this.$watch(()=>this.sizeDependencies[e],this.onDataUpdate)},mounted(){this.finalActive&&(this.updateSize(),this.observeSize())},beforeUnmount(){this.unobserveSize()},methods:{updateSize(){this.finalActive?this.$_pendingSizeUpdate!==this.id&&(this.$_pendingSizeUpdate=this.id,this.$_forceNextVScrollUpdate=null,this.$_pendingVScrollUpdate=null,this.computeSize(this.id)):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(t){this.$nextTick(()=>{if(this.id===t){let t=e.returnFirstEl(this.$el).offsetWidth,n=e.returnFirstEl(this.$el).offsetHeight;this.applyWidthHeight(t,n)}this.$_pendingSizeUpdate=null})},applyWidthHeight(e,t){let n=~~(this.vscrollParent.direction===`vertical`?t:e);n&&this.size!==n&&this.applySize(n)},applySize(e){this.vscrollParent.$_undefinedMap[this.id]&&(this.vscrollParent.$_undefinedSizes--,this.vscrollParent.$_undefinedMap[this.id]=void 0),this.vscrollData.sizes[this.id]=e},observeSize(){this.vscrollResizeObserver&&(this.$_sizeObserved||(this.vscrollResizeObserver.observe(e.returnFirstEl(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(e.returnFirstEl(this.$el)),this.$el.$_vs_onResize=void 0,this.$_sizeObserved=!1)},onResize(e,t,n){this.id===e&&this.applyWidthHeight(t,n)}},render(){return(0,n.h)(this.tag,this.$slots.default())}}},provide(){return typeof ResizeObserver<`u`&&(this.$_resizeObserver=new ResizeObserver(e=>{requestAnimationFrame(()=>{if(Array.isArray(e)){for(let t of e)if(t.target&&t.target.$_vs_onResize){let e,n;if(t.borderBoxSize){let r=t.borderBoxSize[0];e=r.inlineSize,n=r.blockSize}else e=t.contentRect.width,n=t.contentRect.height;t.target.$_vs_onResize(t.target.$_vs_id,e,n)}}})})),{vscrollData:this.vscrollData,vscrollParent:this,vscrollResizeObserver:this.$_resizeObserver}},inheritAttrs:!1,props:{items:{type:Array,required:!0},dynamic:{type:Boolean,default:!1},keyField:{type:String,default:`id`},direction:{type:String,default:`vertical`,validator:e=>[`vertical`,`horizontal`].includes(e)},listTag:{type:String,default:`div`},itemTag:{type:String,default:`div`},minItemSize:{type:[Number,String]}},data(){return{vscrollData:{active:!0,sizes:{},keyField:this.keyField,simpleArray:!1}}},computed:{simpleArray(){return this.items.length&&typeof this.items[0]!=`object`},itemsWithSize(){let e=[],{items:t,keyField:n,simpleArray:r}=this,i=this.vscrollData.sizes,a=t.length;for(let o=0;o<a;o++){let a=t[o],s=r?o:a[n],c=i[s];c===void 0&&!this.$_undefinedMap[s]&&(c=0),e.push({item:a,[n]:s,size:c})}return e}},watch:{simpleArray:{handler(e){this.vscrollData.simpleArray=e},immediate:!0},itemsWithSize(t,n){let r=e.returnFirstEl(this.$el).scrollTop,i=0,a=0,o=Math.min(t.length,n.length);for(let e=0;e<o&&!(i>=r);e++)i+=n[e].size||this.minItemSize,a+=t[e].size||this.minItemSize;let s=a-i;s!==0&&(e.returnFirstEl(this.$el).scrollTop+=s)}},beforeCreate(){this.$_updates=[],this.$_undefinedSizes=0,this.$_undefinedMap={}},activated(){this.vscrollData.active=!0},deactivated(){this.vscrollData.active=!1},methods:{dynamicScrollerUpdateItems(){let e=this.$refs.scroller;e&&e._updateVisibleItems(!0)},dynamicScrollerUpdateItemsFromBottom(){let e=this.$refs.scroller;e&&e._updateVisibleItems(!1,!0)},scrollToItem(e){let t=this.$refs.scroller;t&&t.scrollToItem(e)},scrollToBottom(){if(this.$_scrollingToBottom)return;this.$_scrollingToBottom=!0;let t=e.returnFirstEl(this.$el);this.$nextTick(()=>{t.scrollTop=t.scrollHeight+5e3;let e=()=>{t.scrollTop=t.scrollHeight+5e3,requestAnimationFrame(()=>{t.scrollTop=t.scrollHeight+5e3,this.$_undefinedSizes===0?this.$_scrollingToBottom=!1:requestAnimationFrame(e)})};requestAnimationFrame(e)})}}};function a(e,t,r,i,a,o){let s=(0,n.resolveComponent)(`dt-scroller-item`),c=(0,n.resolveComponent)(`core-scroller`);return(0,n.openBlock)(),(0,n.createBlock)(c,(0,n.mergeProps)({ref:`scroller`,items:o.itemsWithSize,"min-item-size":r.minItemSize,direction:r.direction,"key-field":r.keyField,"list-tag":r.listTag,"item-tag":r.itemTag},e.$attrs),(0,n.createSlots)({default:(0,n.withCtx)(({item:t,index:r,active:i})=>[(0,n.createVNode)(s,{item:t,active:i,"size-dependencies":[t.message],"data-index":r},{default:(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`default`,(0,n.normalizeProps)((0,n.guardReactiveProps)({item:t.item,index:r,active:i,itemWithSize:t})))]),_:2},1032,[`item`,`active`,`size-dependencies`,`data-index`])]),_:2},[e.$slots.before?{name:`before`,fn:(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`before`)]),key:`0`}:void 0,e.$slots.empty?{name:`empty`,fn:(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`empty`)]),key:`1`}:void 0,e.$slots.after?{name:`after`,fn:(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`after`)]),key:`2`}:void 0]),1040,[`items`,`min-item-size`,`direction`,`key-field`,`list-tag`,`item-tag`])}var o=t.t(i,[[`render`,a]]),s=Object.assign({name:`DtScroller`},{__name:`Scroller`,props:{buffer:{type:Number,default:200},direction:{type:String,default:`vertical`,validator:e=>[`vertical`,`horizontal`].includes(e)},dynamic:{type:Boolean,default:!1},itemSize:{type:Number,default:null},itemTag:{type:String,default:`div`},items:{type:Array,required:!0},keyField:{type:String,default:`id`},listTag:{type:String,default:`div`},minItemSize:{type:[Number,String],default:null},scrollerHeight:{type:[String,Number],default:`100%`},scrollerWidth:{type:[String,Number],default:`100%`}},emits:[`user-position`,`scroll-start`,`scroll-end`],setup(e,{expose:t,emit:i}){let a=e;(0,n.provide)(`emit`,i);let s=(0,n.ref)(null),c=(0,n.computed)(()=>({width:typeof a.scrollerWidth==`number`?`${a.scrollerWidth}px`:a.scrollerWidth,height:typeof a.scrollerHeight==`number`?`${a.scrollerHeight}px`:a.scrollerHeight}));(0,n.watch)(a,()=>{p()},{deep:!0,immediate:!0});function l(){s.value&&s.value.scrollToBottom()}function u(e){s.value&&s.value.scrollToItem(e)}function d(){s.value&&(a.dynamic?s.value.dynamicScrollerUpdateItems():s.value._updateVisibleItems(!0))}function f(){s.value&&(a.dynamic?s.value.dynamicScrollerUpdateItemsFromBottom():s.value._updateVisibleItems(!1,!0))}function p(){a.dynamic&&!a.minItemSize&&console.error(`scroller error: 'minItemSize' is required on 'dynamic' mode.`),!a.dynamic&&!a.itemSize&&console.error(`scroller error: 'itemSize' is required.`)}return t({scrollToBottom:l,scrollToItem:u,updateItems:d,updateItemsFromBottom:f}),(t,i)=>((0,n.openBlock)(),(0,n.createBlock)((0,n.resolveDynamicComponent)(e.dynamic?o:r),{ref_key:`scroller`,ref:s,"data-qa":`dt-scroller`,items:e.items,"item-size":e.itemSize,"min-item-size":e.minItemSize,buffer:e.buffer,direction:e.direction,"key-field":e.keyField,"list-tag":e.listTag,"item-tag":e.itemTag,style:(0,n.normalizeStyle)(c.value),tabindex:`0`,onUserPosition:i[0]||(i[0]=e=>t.$emit(`user-position`,e)),onScrollStart:i[1]||(i[1]=e=>t.$emit(`scroll-start`)),onScrollEnd:i[2]||(i[2]=e=>t.$emit(`scroll-end`))},(0,n.createSlots)({default:(0,n.withCtx)(({item:e,index:r,active:i})=>[(0,n.renderSlot)(t.$slots,`default`,(0,n.normalizeProps)((0,n.guardReactiveProps)({item:e,index:r,active:i})))]),_:2},[t.$slots.before?{name:`before`,fn:(0,n.withCtx)(()=>[(0,n.renderSlot)(t.$slots,`before`)]),key:`0`}:void 0,t.$slots.empty?{name:`empty`,fn:(0,n.withCtx)(()=>[(0,n.renderSlot)(t.$slots,`empty`)]),key:`1`}:void 0,t.$slots.after?{name:`after`,fn:(0,n.withCtx)(()=>[(0,n.renderSlot)(t.$slots,`after`)]),key:`2`}:void 0]),1064,[`items`,`item-size`,`min-item-size`,`buffer`,`direction`,`key-field`,`list-tag`,`item-tag`,`style`]))}});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}});
|
|
2
|
-
//# sourceMappingURL=Scroller-DnobBeAo.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Scroller-DnobBeAo.cjs","names":["$slots","$emit","$slots"],"sources":["../components/Scroller/Modules/CoreScroller.vue","../components/Scroller/Modules/ScrollerItem.vue","../components/Scroller/Modules/DynamicScroller.vue","../components/Scroller/Scroller.vue"],"sourcesContent":["<!-- eslint-disable max-len -->\n<template>\n <div\n ref=\"scroller\"\n class=\"vue-recycle-scroller\"\n :class=\"{\n ready,\n [`direction-${direction}`]: true,\n }\"\n @scroll.passive=\"handleScroll\"\n >\n <div\n v-if=\"$slots.before\"\n ref=\"before\"\n data-qa=\"dt-scroller-before\"\n class=\"vue-recycle-scroller__slot\"\n >\n <!-- @slot Content rendered before the items, inside the scroll viewport. Scrolls with the list. -->\n <slot name=\"before\" />\n </div>\n\n <component\n :is=\"listTag\"\n ref=\"wrapper\"\n :style=\"{ [direction === 'vertical' ? 'minHeight' : 'minWidth']: `${totalSize}px` }\"\n data-qa=\"dt-scroller-item-wrapper\"\n class=\"vue-recycle-scroller__item-wrapper\"\n :class=\"listClass\"\n >\n <component\n :is=\"itemTag\"\n v-for=\"view in pool\"\n :key=\"view.nr.id\"\n data-qa=\"dt-scroller-item\"\n :style=\"ready ? {\n transform: `translate${direction === 'vertical' ? 'Y' : 'X'}(${view.position}px) translate${direction === 'vertical' ? 'X' : 'Y'}(${view.offset}px)`,\n width: undefined,\n height: undefined,\n } : null\"\n class=\"vue-recycle-scroller__item-view\"\n :class=\"[\n itemClass,\n {\n hover: props.enableHover && hoverKey === view.nr.key,\n },\n ]\"\n v-on=\"props.enableHover ? {\n mouseenter: () => { hoverKey = view.nr.key },\n mouseleave: () => { hoverKey = null },\n } : {}\"\n >\n <slot\n :item=\"view.item\"\n :index=\"view.nr.index\"\n :active=\"view.nr.used\"\n />\n </component>\n\n <!-- @slot Content rendered inside the list wrapper only while the list is empty. -->\n <slot\n v-if=\"!items.length\"\n name=\"empty\"\n />\n </component>\n\n <div\n v-if=\"$slots.after\"\n ref=\"after\"\n data-qa=\"dt-scroller-after\"\n class=\"vue-recycle-scroller__slot\"\n >\n <!-- @slot Content rendered after the items, inside the scroll viewport. Scrolls with the list. -->\n <slot name=\"after\" />\n </div>\n </div>\n</template>\n\n<script setup>\n/*\nThis is a code from external library (https://github.com/Akryum/vue-virtual-scroller/blob/master/packages/vue-virtual-scroller/src/components/RecycleScroller.vue)\nWe have modified it for our own specific use.\n*/\nimport { computed, watch, markRaw, shallowReactive, onMounted, nextTick, reactive, ref } from 'vue';\n\nconst props = defineProps({\n /**\n * List of items you want to display in the scroller.\n */\n items: {\n type: Array,\n required: true,\n },\n\n /**\n *\n * Field used to identify items and optimize managing rendered views\n */\n keyField: {\n type: String,\n default: 'id',\n },\n\n /**\n * Direction of the scroller. Can be either `vertical` or `horizontal`.\n */\n direction: {\n type: String,\n default: 'vertical',\n validator: (value) => ['vertical', 'horizontal'].includes(value),\n },\n\n /**\n * Size of the items in the list.\n * If it is set to null (the default value), it will use variable size mode.\n */\n itemSize: {\n type: Number,\n default: null,\n },\n\n /**\n * Minimum size used if the height (or width in horizontal mode) of an item is unknown.\n */\n minItemSize: {\n type: [Number, String],\n default: null,\n },\n\n /**\n * Field used to get the item's size in variable size mode.\n */\n sizeField: {\n type: String,\n default: 'size',\n },\n\n /**\n * Amount of pixel to add to edges of the scrolling visible area to start rendering items further away.\n */\n buffer: {\n type: Number,\n default: 200,\n },\n\n /**\n * Enables hover state CSS class and mouse events on items.\n * Set to false if you want to manage hover state yourself.\n */\n enableHover: {\n type: Boolean,\n default: true,\n },\n\n /**\n * The element to render as the list's wrapper.\n */\n listTag: {\n type: String,\n default: 'div',\n },\n\n /**\n * The element to render as the list item.\n */\n itemTag: {\n type: String,\n default: 'div',\n },\n\n /**\n * The custom classes added to the item list wrapper.\n */\n listClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * The custom classes added to each item.\n */\n itemClass: {\n type: [String, Object, Array],\n default: '',\n },\n});\n\nconst emit = defineEmits(['user-position', 'scroll-start', 'scroll-end']);\n\nconst views = reactive(new Map());\n// const reactiveItems = reactive(props.items);\nconst unusedViews = reactive(new Map());\nconst updateTimeout = null;\nconst pool = ref([]);\nconst hoverKey = ref(null);\nconst ready = ref(false);\nconst scroller = ref(null);\nconst before = ref(null);\nconst after = ref(null);\nconst userPosition = ref('blockStart');\n\nlet startIndex = 0;\nlet endIndex = 0;\nlet scrollDirty = false;\nlet lastUpdateScrollPosition = 0;\nlet sortTimer = null;\nlet computedMinItemSize = null;\nlet totalSize = 0;\nlet uid = 0;\n\nconst sizes = computed(() => {\n if (props.itemSize === null) {\n const sizes = {\n '-1': { accumulator: 0 },\n };\n const items = props.items;\n const field = props.sizeField;\n const minItemSize = props.minItemSize;\n let computedMinSize = 10000;\n let accumulator = 0;\n let current;\n for (let i = 0, l = items.length; i < l; i++) {\n current = items[i][field] || minItemSize;\n if (current < computedMinSize) {\n computedMinSize = current;\n }\n accumulator += current;\n sizes[i] = { accumulator, size: current };\n }\n\n computedMinItemSize = computedMinSize;\n return sizes;\n }\n return [];\n});\n\nconst simpleArray = computed(() => {\n return props.items.length && typeof props.items[0] !== 'object';\n});\n\nconst itemIndexByKey = computed(() => {\n const result = {};\n for (let i = 0, l = props.items.length; i < l; i++) {\n result[props.items[i][props.keyField]] = i;\n }\n return result;\n});\n\n// watch(reactiveItems, () => {\n// // if add to the top\n// // _updateVisibleItems(true);\n// // if autoscrolling if add to the bottom\n// // _updateVisibleItems(false, true);\n// });\n\nwatch(sizes, () => {\n _updateVisibleItems(false);\n}, { deep: true });\n\nonMounted(() => {\n nextTick(() => {\n // In SSR mode, render the real number of visible items\n _updateVisibleItems(true);\n ready.value = true;\n });\n});\n\nconst _addView = (pool, index, item, key, type) => {\n const nr = markRaw({\n id: uid++,\n index,\n used: true,\n key,\n type,\n });\n const view = shallowReactive({\n item,\n position: 0,\n nr,\n });\n pool.value.push(view);\n return view;\n};\n\nconst _unuseView = (view, fake = false) => {\n const _unusedViews = unusedViews;\n const type = view.nr.type;\n let unusedPool = _unusedViews.get(type);\n if (!unusedPool) {\n unusedPool = [];\n _unusedViews.set(type, unusedPool);\n }\n unusedPool.push(view);\n if (!fake) {\n view.nr.used = false;\n view.position = -9999;\n }\n};\n\nconst _getScroll = () => {\n const isVertical = props.direction === 'vertical';\n let scrollState;\n\n if (isVertical) {\n scrollState = {\n start: scroller.value.scrollTop,\n end: scroller.value.scrollTop + scroller.value.clientHeight,\n };\n } else {\n scrollState = {\n start: scroller.value.scrollLeft,\n end: scroller.value.scrollLeft + scroller.value.clientWidth,\n };\n }\n\n return scrollState;\n};\n\nconst _itemsLimitError = () => {\n setTimeout(() => {\n \n console.error('It seems the scroller element isn\\'t scrolling, so it tries to render all the items at once.', 'Scroller:', scroller);\n \n console.error('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.');\n });\n throw new Error('Rendered items limit reached');\n};\n\nconst _sortViews = () => {\n pool.value.sort((viewA, viewB) => viewA.nr.index - viewB.nr.index);\n};\n\nconst _updateVisibleItems = (checkItem, checkPositionDiff = false) => {\n const itemSize = props.itemSize;\n const minItemSize = computedMinItemSize;\n const keyField = simpleArray.value ? null : props.keyField;\n const items = props.items;\n const count = items.length;\n const _sizes = sizes.value;\n const _views = views;\n const _unusedViews = unusedViews;\n const _pool = pool;\n const _itemIndexByKey = itemIndexByKey;\n let _startIndex, _endIndex;\n let _totalSize;\n let visibleStartIndex, visibleEndIndex;\n\n if (!count) {\n _startIndex = _endIndex = visibleStartIndex = visibleEndIndex = _totalSize = 0;\n } else {\n const scroll = _getScroll();\n\n // Skip update if use hasn't scrolled enough\n if (checkPositionDiff) {\n let positionDiff = scroll.start - lastUpdateScrollPosition.value;\n if (positionDiff < 0) positionDiff = -positionDiff;\n if ((itemSize === null && positionDiff < minItemSize.value) || positionDiff < itemSize) {\n return {\n continuous: true,\n };\n }\n }\n lastUpdateScrollPosition = scroll.start;\n\n const _buffer = props.buffer;\n scroll.start -= _buffer;\n scroll.end += _buffer;\n\n // The leading and trailing slots sit in normal flow inside the viewport, so the item\n // wrapper does not start at offset 0. Widen the window by their measured size.\n const slotSize = props.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth';\n if (before.value) scroll.start -= before.value[slotSize];\n if (after.value) scroll.end += after.value[slotSize];\n\n // Variable size mode\n if (itemSize === null) {\n let h;\n let a = 0;\n let b = count - 1;\n let i = ~~(count / 2);\n let oldI;\n\n // Searching for _startIndex\n do {\n oldI = i;\n h = _sizes[i]?.accumulator;\n if (h < scroll.start) {\n a = i;\n } else if (i < count - 1 && _sizes[i + 1]?.accumulator > scroll.start) {\n b = i;\n }\n i = ~~((a + b) / 2);\n } while (i !== oldI);\n i < 0 && (i = 0);\n _startIndex = i;\n\n // For container style\n _totalSize = _sizes[count - 1]?.accumulator;\n\n // Searching for _endIndex\n for (\n _endIndex = i;\n _endIndex < count && _sizes[_endIndex]?.accumulator < scroll.end;\n _endIndex++\n );\n\n if (_endIndex === -1) {\n _endIndex = items.length - 1;\n } else {\n _endIndex++;\n // Bounds\n _endIndex > count && (_endIndex = count);\n }\n\n // search visible _startIndex\n for (\n visibleStartIndex = startIndex;\n visibleStartIndex < count && (_sizes[visibleStartIndex]?.accumulator) < scroll.start;\n visibleStartIndex++\n );\n\n // search visible endIndex\n for (\n visibleEndIndex = visibleStartIndex;\n visibleEndIndex < count && (_sizes[visibleEndIndex]?.accumulator) < scroll.end;\n visibleEndIndex++\n );\n } else {\n // Fixed size mode\n _startIndex = ~~(scroll.start / itemSize);\n const remainer = _startIndex % 1;\n _startIndex -= remainer;\n _endIndex = Math.ceil(scroll.end / itemSize);\n visibleStartIndex = Math.max(0, Math.floor((scroll.start) / itemSize));\n visibleEndIndex = Math.floor((scroll.end) / itemSize);\n\n // Bounds\n _startIndex < 0 && (_startIndex = 0);\n _endIndex > count && (_endIndex = count);\n visibleStartIndex < 0 && (visibleStartIndex = 0);\n visibleEndIndex > count && (visibleEndIndex = count);\n\n _totalSize = Math.ceil(count / 1) * itemSize;\n }\n }\n\n // items limit 1000\n if (_endIndex - _startIndex > 1000) {\n _itemsLimitError();\n }\n\n totalSize = _totalSize;\n\n let view;\n\n const continuous = _startIndex <= endIndex && _endIndex >= _startIndex;\n\n // Unuse views that are no longer visible\n if (continuous) {\n for (let i = 0, l = _pool.value.length; i < l; i++) {\n view = _pool.value[i];\n if (view?.nr.used) {\n // Update view item index\n if (checkItem) {\n view.nr.index = _itemIndexByKey[view.item[keyField]];\n }\n\n // Check if index is still in visible range\n if (\n view.nr.index == null ||\n view.nr.index < _startIndex ||\n view.nr.index >= _endIndex\n ) {\n _unuseView(view);\n }\n }\n }\n }\n\n const unusedIndex = continuous ? null : new Map();\n\n let item, type;\n let v;\n for (let i = _startIndex; i < _endIndex; i++) {\n item = items[i];\n const key = keyField ? item?.[keyField] : item;\n\n if (key == null) {\n throw new Error(`Key is ${key} on item (keyField is '${keyField}')`);\n }\n view = _views.get(key);\n\n if (!itemSize && !_sizes[i]?.size) {\n if (view) _unuseView(view);\n continue;\n }\n\n type = item.type;\n\n let unusedPool = _unusedViews.get(type);\n let newlyUsedView = false;\n\n // No view assigned to item\n if (!view) {\n if (continuous) {\n // Reuse existing view\n if (unusedPool && unusedPool.length) {\n view = unusedPool.pop();\n } else {\n view = _addView(_pool, i, item, key, type);\n }\n } else {\n // Use existing view\n // We don't care if they are already used\n // because we are not in continous scrolling\n v = unusedIndex.get(type) || 0;\n\n if (!unusedPool || v >= unusedPool.length) {\n view = _addView(_pool, i, item, key, type);\n _unuseView(view, true);\n unusedPool = _unusedViews.get(type);\n }\n\n view = unusedPool[v];\n unusedIndex.set(type, v + 1);\n }\n\n // Assign view to item\n _views.delete(view.nr.key);\n view.nr.used = true;\n view.nr.index = i;\n view.nr.key = key;\n view.nr.type = type;\n _views.set(key, view);\n\n newlyUsedView = true;\n } else {\n // View already assigned to item\n if (!view.nr.used) {\n view.nr.used = true;\n newlyUsedView = true;\n if (unusedPool) {\n const index = unusedPool.indexOf(view);\n if (index !== -1) unusedPool.splice(index, 1);\n }\n }\n }\n\n // Always set item in case it's a new object with the same key\n view.item = item;\n\n if (newlyUsedView) {\n if (i === items.length - 1) emit('scroll-end');\n if (i === 0) emit('scroll-start');\n }\n\n // Update position\n if (itemSize === null) {\n view.position = _sizes[i - 1]?.accumulator;\n view.offset = 0;\n } else {\n view.position = Math.floor(i) * itemSize;\n view.offset = (i % 1) * itemSize;\n }\n }\n\n startIndex = _startIndex;\n endIndex = _endIndex;\n\n // After the user has finished scrolling\n // Sort views so text selection is correct\n clearTimeout(sortTimer);\n sortTimer = setTimeout(_sortViews, 300);\n\n return {\n continuous,\n };\n};\n\nconst _scrollToPosition = (position) => {\n const direction = props.direction === 'vertical'\n ? { scroll: 'scrollTop', start: 'top' }\n : { scroll: 'scrollLeft', start: 'left' };\n\n const viewport = scroller.value;\n const scrollDirection = direction.scroll;\n\n viewport[scrollDirection] = position;\n};\n\nconst scrollToItem = (index) => {\n let scroll;\n if (props.itemSize === null) {\n scroll = index > 0 ? sizes.value[index - 1]?.accumulator : 0;\n } else {\n scroll = Math.floor(index) * props.itemSize;\n }\n _scrollToPosition(scroll);\n};\n\nconst handleScroll = () => {\n const container = scroller.value;\n\n if (userPosition.value !== 'middle') {\n userPosition.value = 'middle';\n emit('user-position', 'middle');\n }\n\n // Check if the scroll is at the block-start (aka top) of the container\n if (container.scrollTop === 0) {\n userPosition.value = 'blockStart';\n emit('user-position', 'blockStart');\n emit('user-position', 'top');\n }\n\n // Check if the scroll is at the block-end (aka bottom) of the container\n if (container.scrollTop + container.clientHeight === container.scrollHeight) {\n userPosition.value = 'blockEnd';\n emit('user-position', 'blockEnd');\n emit('user-position', 'bottom');\n }\n\n if (!scrollDirty) {\n scrollDirty = true;\n if (updateTimeout) return;\n\n const requestUpdate = () => requestAnimationFrame(() => {\n scrollDirty = false;\n _updateVisibleItems(false, true);\n });\n\n requestUpdate();\n }\n};\n\ndefineExpose({\n scrollToItem,\n _updateVisibleItems,\n});\n</script>\n","<script>\n/*\nThis is a code from external library (https://github.com/Akryum/vue-virtual-scroller/blob/master/packages/vue-virtual-scroller/src/components/DynamicScrollerItem.vue)\nWe have modified it for our own specific use.\n*/\nimport { h } from 'vue';\nimport { returnFirstEl } from '@/common/utils';\n\nexport default {\n name: 'DtScrollerItem',\n\n inject: [\n 'vscrollData',\n 'vscrollParent',\n 'vscrollResizeObserver',\n ],\n\n props: {\n // eslint-disable-next-line vue/require-prop-types\n item: {\n required: true,\n },\n\n watchData: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Indicates if the view is actively used to display an item.\n */\n active: {\n type: Boolean,\n required: true,\n },\n\n index: {\n type: Number,\n default: undefined,\n },\n\n sizeDependencies: {\n type: [Array, Object],\n default: null,\n },\n\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n computed: {\n id () {\n if (this.vscrollData.simpleArray) return this.index;\n \n if (this.vscrollData.keyField in this.item) return this.item[this.vscrollData.keyField];\n throw new Error(`keyField '${this.vscrollData.keyField}' not found in your item. You should set a valid keyField prop on your Scroller`);\n },\n\n size () {\n return this.vscrollData.sizes[this.id] || 0;\n },\n\n finalActive () {\n return this.active && this.vscrollData.active;\n },\n },\n\n watch: {\n watchData: 'updateWatchData',\n\n id (value, oldValue) {\n returnFirstEl(this.$el).$_vs_id = this.id;\n if (!this.size) {\n this.onDataUpdate();\n }\n\n if (this.$_sizeObserved) {\n // In case the old item had the same size, it won't trigger the ResizeObserver\n // since we are reusing the same DOM node\n const oldSize = this.vscrollData.sizes[oldValue];\n const size = this.vscrollData.sizes[value];\n if (oldSize != null && oldSize !== size) {\n this.applySize(oldSize);\n }\n }\n },\n\n finalActive (value) {\n if (!this.size) {\n if (value) {\n if (!this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes++;\n this.vscrollParent.$_undefinedMap[this.id] = true;\n }\n } else {\n if (this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes--;\n this.vscrollParent.$_undefinedMap[this.id] = false;\n }\n }\n }\n\n if (this.vscrollResizeObserver) {\n if (value) {\n this.observeSize();\n } else {\n this.unobserveSize();\n }\n } else if (value && this.$_pendingVScrollUpdate === this.id) {\n this.updateSize();\n }\n },\n },\n\n created () {\n if (this.$isServer) return;\n\n this.$_forceNextVScrollUpdate = null;\n this.updateWatchData();\n\n if (!this.vscrollResizeObserver) {\n for (const k in this.sizeDependencies) {\n this.$watch(() => this.sizeDependencies[k], this.onDataUpdate);\n }\n }\n },\n\n mounted () {\n if (this.finalActive) {\n this.updateSize();\n this.observeSize();\n }\n },\n\n beforeUnmount () {\n this.unobserveSize();\n },\n\n methods: {\n updateSize () {\n if (this.finalActive) {\n if (this.$_pendingSizeUpdate !== this.id) {\n this.$_pendingSizeUpdate = this.id;\n this.$_forceNextVScrollUpdate = null;\n this.$_pendingVScrollUpdate = null;\n this.computeSize(this.id);\n }\n } else {\n this.$_forceNextVScrollUpdate = this.id;\n }\n },\n\n updateWatchData () {\n if (this.watchData && !this.vscrollResizeObserver) {\n this.$_watchData = this.$watch('item', () => {\n this.onDataUpdate();\n }, {\n deep: true,\n });\n } else if (this.$_watchData) {\n this.$_watchData();\n this.$_watchData = null;\n }\n },\n\n onVscrollUpdate ({ force }) {\n // If not active, sechedule a size update when it becomes active\n if (!this.finalActive && force) {\n this.$_pendingVScrollUpdate = this.id;\n }\n\n if (this.$_forceNextVScrollUpdate === this.id || force || !this.size) {\n this.updateSize();\n }\n },\n\n onDataUpdate () {\n this.updateSize();\n },\n\n computeSize (id) {\n this.$nextTick(() => {\n if (this.id === id) {\n const width = returnFirstEl(this.$el).offsetWidth;\n const height = returnFirstEl(this.$el).offsetHeight;\n this.applyWidthHeight(width, height);\n }\n this.$_pendingSizeUpdate = null;\n });\n },\n\n applyWidthHeight (width, height) {\n const size = ~~(this.vscrollParent.direction === 'vertical' ? height : width);\n if (size && this.size !== size) {\n this.applySize(size);\n }\n },\n\n applySize (size) {\n if (this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes--;\n this.vscrollParent.$_undefinedMap[this.id] = undefined;\n }\n this.vscrollData.sizes[this.id] = size;\n },\n\n observeSize () {\n if (!this.vscrollResizeObserver) return;\n if (this.$_sizeObserved) return;\n this.vscrollResizeObserver.observe(returnFirstEl(this.$el));\n this.$el.$_vs_id = this.id;\n this.$el.$_vs_onResize = this.onResize;\n this.$_sizeObserved = true;\n },\n\n unobserveSize () {\n if (!this.vscrollResizeObserver) return;\n if (!this.$_sizeObserved) return;\n this.vscrollResizeObserver.unobserve(returnFirstEl(this.$el));\n this.$el.$_vs_onResize = undefined;\n this.$_sizeObserved = false;\n },\n\n onResize (id, width, height) {\n if (this.id === id) {\n this.applyWidthHeight(width, height);\n }\n },\n },\n\n render () {\n return h(this.tag, this.$slots.default());\n },\n};\n</script>\n","<template>\n <core-scroller\n ref=\"scroller\"\n :items=\"itemsWithSize\"\n :min-item-size=\"minItemSize\"\n :direction=\"direction\"\n :key-field=\"keyField\"\n :list-tag=\"listTag\"\n :item-tag=\"itemTag\"\n v-bind=\"$attrs\"\n >\n <template\n #default=\"{ item: itemWithSize, index, active }\"\n >\n <dt-scroller-item\n :item=\"itemWithSize\"\n :active=\"active\"\n :size-dependencies=\"[\n itemWithSize.message,\n ]\"\n :data-index=\"index\"\n >\n <slot\n v-bind=\"{\n item: itemWithSize.item,\n index,\n active,\n itemWithSize,\n }\"\n />\n </dt-scroller-item>\n </template>\n\n <template\n v-if=\"$slots.before\"\n #before\n >\n <slot name=\"before\" />\n </template>\n\n <template\n v-if=\"$slots.empty\"\n #empty\n >\n <slot name=\"empty\" />\n </template>\n\n <template\n v-if=\"$slots.after\"\n #after\n >\n <slot name=\"after\" />\n </template>\n </core-scroller>\n</template>\n\n<!-- eslint-disable-next-line max-len -->\n<!-- This is a code from external library (https://github.com/Akryum/vue-virtual-scroller/blob/master/packages/vue-virtual-scroller/src/components/DynamicScroller.vue)\nWe have modified it for our own specific use. -->\n<script>\nimport CoreScroller from './CoreScroller.vue';\nimport DtScrollerItem from './ScrollerItem.vue';\nimport { returnFirstEl } from '@/common/utils';\n\nexport default {\n name: 'DynamicScroller',\n\n components: {\n CoreScroller,\n DtScrollerItem,\n },\n\n provide () {\n if (typeof ResizeObserver !== 'undefined') {\n this.$_resizeObserver = new ResizeObserver(entries => {\n requestAnimationFrame(() => {\n if (!Array.isArray(entries)) {\n return;\n }\n for (const entry of entries) {\n if (entry.target && entry.target.$_vs_onResize) {\n let width, height;\n if (entry.borderBoxSize) {\n const resizeObserverSize = entry.borderBoxSize[0];\n width = resizeObserverSize.inlineSize;\n height = resizeObserverSize.blockSize;\n } else {\n // @TODO remove when contentRect is deprecated\n width = entry.contentRect.width;\n height = entry.contentRect.height;\n }\n entry.target.$_vs_onResize(entry.target.$_vs_id, width, height);\n }\n }\n });\n });\n }\n\n return {\n vscrollData: this.vscrollData,\n vscrollParent: this,\n vscrollResizeObserver: this.$_resizeObserver,\n };\n },\n\n inheritAttrs: false,\n\n props: {\n /*\n * The items to render.\n * If the items are simple arrays, the index will be used as the key.\n * If the items are objects, the keyField will be used as the key.\n */\n items: {\n type: Array,\n required: true,\n },\n\n /*\n * Indicates if the items are dynamic.\n * If true, the items will be wrapped in a DtScrollerItem component.\n * This is required for dynamic items to be able to react to changes in their size.\n */\n dynamic: {\n type: Boolean,\n default: false,\n },\n\n /*\n * The key field to use for the items.\n * Only used if the items are objects.\n */\n keyField: {\n type: String,\n default: 'id',\n },\n\n /*\n * The direction of the scroller.\n * Can be either 'vertical' or 'horizontal'.\n */\n direction: {\n type: String,\n default: 'vertical',\n validator: (value) => ['vertical', 'horizontal'].includes(value),\n },\n\n /*\n * The tag to use for the list.\n */\n listTag: {\n type: String,\n default: 'div',\n },\n\n /*\n * The tag to use for the items.\n */\n itemTag: {\n type: String,\n default: 'div',\n },\n\n /*\n * Display height (or width in horizontal mode) of the items in pixels\n * used to calculate the scroll size and position.\n * Is required for the initial render of items in DYNAMIC size mode.\n */\n minItemSize: {\n type: [Number, String],\n },\n },\n\n data () {\n return {\n vscrollData: {\n active: true,\n sizes: {},\n keyField: this.keyField,\n simpleArray: false,\n },\n };\n },\n\n computed: {\n simpleArray () {\n return this.items.length && typeof this.items[0] !== 'object';\n },\n\n itemsWithSize () {\n const result = [];\n const { items, keyField, simpleArray } = this;\n const sizes = this.vscrollData.sizes;\n const l = items.length;\n for (let i = 0; i < l; i++) {\n const item = items[i];\n const id = simpleArray ? i : item[keyField];\n let size = sizes[id];\n if (typeof size === 'undefined' && !this.$_undefinedMap[id]) {\n size = 0;\n }\n result.push({\n item,\n [keyField]: id,\n size,\n });\n }\n return result;\n },\n },\n\n watch: {\n simpleArray: {\n handler (value) {\n this.vscrollData.simpleArray = value;\n },\n\n immediate: true,\n },\n\n itemsWithSize (next, prev) {\n const scrollTop = returnFirstEl(this.$el).scrollTop;\n\n // Calculate total diff between prev and next sizes\n // over current scroll top. Then add it to scrollTop to\n // avoid jumping the contents that the user is seeing.\n let prevActiveTop = 0; let activeTop = 0;\n const length = Math.min(next.length, prev.length);\n for (let i = 0; i < length; i++) {\n if (prevActiveTop >= scrollTop) {\n break;\n }\n prevActiveTop += prev[i].size || this.minItemSize;\n activeTop += next[i].size || this.minItemSize;\n }\n const offset = activeTop - prevActiveTop;\n\n if (offset === 0) {\n return;\n }\n\n returnFirstEl(this.$el).scrollTop += offset;\n },\n },\n\n beforeCreate () {\n this.$_updates = [];\n this.$_undefinedSizes = 0;\n this.$_undefinedMap = {};\n },\n\n activated () {\n this.vscrollData.active = true;\n },\n\n deactivated () {\n this.vscrollData.active = false;\n },\n\n methods: {\n dynamicScrollerUpdateItems () {\n const scroller = this.$refs.scroller;\n if (scroller) scroller._updateVisibleItems(true);\n },\n\n dynamicScrollerUpdateItemsFromBottom () {\n const scroller = this.$refs.scroller;\n if (scroller) scroller._updateVisibleItems(false, true);\n },\n\n scrollToItem (index) {\n const scroller = this.$refs.scroller;\n if (scroller) scroller.scrollToItem(index);\n },\n\n scrollToBottom () {\n if (this.$_scrollingToBottom) return;\n this.$_scrollingToBottom = true;\n const el = returnFirstEl(this.$el);\n // Item is inserted to the DOM\n this.$nextTick(() => {\n el.scrollTop = el.scrollHeight + 5000;\n // Item sizes are computed\n const cb = () => {\n el.scrollTop = el.scrollHeight + 5000;\n requestAnimationFrame(() => {\n el.scrollTop = el.scrollHeight + 5000;\n if (this.$_undefinedSizes === 0) {\n this.$_scrollingToBottom = false;\n } else {\n requestAnimationFrame(cb);\n }\n });\n };\n requestAnimationFrame(cb);\n });\n },\n },\n};\n</script>\n","<template>\n <component\n :is=\"dynamic ? DynamicScroller : CoreScroller\"\n ref=\"scroller\"\n data-qa=\"dt-scroller\"\n :items=\"items\"\n :item-size=\"itemSize\"\n :min-item-size=\"minItemSize\"\n :buffer=\"buffer\"\n :direction=\"direction\"\n :key-field=\"keyField\"\n :list-tag=\"listTag\"\n :item-tag=\"itemTag\"\n :style=\"computedStyle\"\n tabindex=\"0\"\n @user-position=\"$emit('user-position', $event)\"\n @scroll-start=\"$emit('scroll-start')\"\n @scroll-end=\"$emit('scroll-end')\"\n >\n <template\n #default=\"{ item, index, active }\"\n >\n <slot\n v-bind=\"{\n item: item,\n index,\n active,\n }\"\n />\n </template>\n\n <template\n v-if=\"$slots.before\"\n #before\n >\n <!-- @slot Content rendered before the items, inside the scroll viewport. Scrolls with the list. -->\n <slot name=\"before\" />\n </template>\n\n <template\n v-if=\"$slots.empty\"\n #empty\n >\n <!-- @slot Content rendered inside the list wrapper only while the list is empty. -->\n <slot name=\"empty\" />\n </template>\n\n <template\n v-if=\"$slots.after\"\n #after\n >\n <!-- @slot Content rendered after the items, inside the scroll viewport. Scrolls with the list. -->\n <slot name=\"after\" />\n </template>\n </component>\n</template>\n\n<script setup>\nimport CoreScroller from './Modules/CoreScroller.vue';\nimport DynamicScroller from './Modules/DynamicScroller.vue';\nimport { provide, computed, watch, ref } from 'vue';\n\ndefineOptions({\n name: 'DtScroller',\n});\n\nconst props = defineProps({\n /**\n * Amount of pixels added to each edge of the scroll viewport, so items are rendered\n * before they scroll into view. Also controls how early `scroll-start` and `scroll-end`\n * fire relative to the viewport edges.\n */\n buffer: {\n type: Number,\n default: 200,\n },\n\n /**\n * The direction of the scroller.\n * @values vertical, horizontal\n */\n direction: {\n type: String,\n default: 'vertical',\n validator: (value) => ['vertical', 'horizontal'].includes(value),\n },\n\n /**\n * Indicates if the items need to react to changes in their size.\n * If disabled the itemSize prop is required and you will get improved performance.\n * If enabled the minItemSize prop is required and you\n * will have reduced performance but the ability to reactively size list items\n * @values true, false\n */\n dynamic: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Display height (or width in horizontal mode) of the items in pixels\n * used to calculate the scroll size and position.\n * Required if DYNAMIC is false\n */\n itemSize: {\n type: Number,\n default: null,\n },\n\n /**\n * The tag to use for the items.\n */\n itemTag: {\n type: String,\n default: 'div',\n },\n\n /**\n * The items to render.\n * If the items are simple arrays, the index will be used as the key.\n * If the items are objects, the keyField will be used as the key.\n * @example items: [ 'item1', 'item2', 'item3' ]\n * @example items: [ { id: 1, name: 'item1' }, { id: 2, name: 'item2' }, { id: 3, name: 'item3' } ]\n */\n items: {\n type: Array,\n required: true,\n },\n\n /**\n * The key field to use for the items.\n * If the items are objects, the scroller needs to be able to identify them.\n * By default it will look for an id field on the items.\n * This can be configured with this prop if you are using another field name.\n */\n keyField: {\n type: String,\n default: 'id',\n },\n\n /**\n * The tag to use for the list.\n */\n listTag: {\n type: String,\n default: 'div',\n },\n\n /**\n * Minimum size used if the height (or width in horizontal mode) of a item is unknown.\n * Is required for the initial render of items in DYNAMIC size mode.\n */\n minItemSize: {\n type: [Number, String],\n default: null,\n },\n\n /**\n * The height of the scroller.\n * Can be a number (in pixels) or a string (in CSS units).\n */\n scrollerHeight: {\n type: [String, Number],\n default: '100%',\n },\n\n /**\n * The width of the scroller.\n * Can be a number (in pixels) or a string (in CSS units).\n */\n scrollerWidth: {\n type: [String, Number],\n default: '100%',\n },\n});\n\nconst emits = defineEmits([\n /**\n * Describe when the scroller changes from block-start (aka top) / middle / block-end (aka bottom).\n * The top and bottom values are deprecated and will ideally be removed in the next major version.\n * Please use blockStart and blockEnd instead.\n * @param {string} position The position of the scroller.\n * @values blockStart, middle, blockEnd, top, bottom\n */\n 'user-position',\n\n /**\n * Emitted when the first item enters the rendered view pool. Fires at least one `buffer`\n * length before the viewport's start edge is reached (earlier still with `before` slot\n * content), so callers can prepend items ahead of time.\n */\n 'scroll-start',\n\n /**\n * Emitted when the last item enters the rendered view pool. Fires at least one `buffer`\n * length before the viewport's end edge is reached (earlier still with `after` slot\n * content), so callers can append items ahead of time.\n */\n 'scroll-end',\n]);\n\nprovide('emit', emits);\n\nconst scroller = ref(null);\n\nconst computedStyle = computed(() => {\n return {\n width: typeof props.scrollerWidth === 'number' ? `${props.scrollerWidth}px` : props.scrollerWidth,\n height: typeof props.scrollerHeight === 'number' ? `${props.scrollerHeight}px` : props.scrollerHeight,\n };\n});\n\nwatch(props, () => {\n validateProps();\n}, { deep: true, immediate: true });\n\nfunction scrollToBottom () {\n if (scroller.value) scroller.value.scrollToBottom();\n}\n\nfunction scrollToItem (index) {\n if (scroller.value) scroller.value.scrollToItem(index);\n}\n\nfunction updateItems () {\n if (!scroller.value) return;\n if (props.dynamic) {\n scroller.value.dynamicScrollerUpdateItems();\n } else {\n scroller.value._updateVisibleItems(true);\n }\n}\n\nfunction updateItemsFromBottom () {\n if (!scroller.value) return;\n if (props.dynamic) {\n scroller.value.dynamicScrollerUpdateItemsFromBottom();\n } else {\n scroller.value._updateVisibleItems(false, true);\n }\n}\n\nfunction validateProps () {\n if (props.dynamic && !props.minItemSize) {\n console.error('scroller error: \\'minItemSize\\' is required on \\'dynamic\\' mode.');\n }\n\n if (!props.dynamic && !props.itemSize) {\n console.error('scroller error: \\'itemSize\\' is required.');\n }\n}\n\ndefineExpose({\n scrollToBottom,\n scrollToItem,\n updateItems,\n updateItemsFromBottom,\n});\n</script>\n"],"mappings":"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"}
|