ant-design-x-vue
Version:
Craft AI-driven interfaces effortlessly
2 lines (1 loc) • 3.31 kB
JavaScript
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),M=require("../chunks/helper-chunk.js"),U=require("../chunks/module-chunk.js"),y=require("../_util/hooks/use-event-callback.js"),z=require("../_util/pick-attrs.js");require("../x-provider/index.js");const O=require("./Bubble.js"),X=require("./hooks/useDisplayData.js"),$=require("./hooks/useListData.js"),j=require("./style/index.js"),g=require("../_util/hooks/use-state.js"),K=require("./context.js"),W=require("../x-provider/hooks/use-x-provider-context.js"),F=1,G=e.defineComponent({name:"AXBubbleList",inheritAttrs:!1,__name:"BubbleList",props:e.mergeDefaults({prefixCls:null,rootClassName:null,items:null,autoScroll:{type:Boolean},roles:null},{autoScroll:!0}),setup(r,{expose:p}){const E=M.createPropsRestProxy(r,["prefixCls","rootClassName","items","autoScroll","roles"]);e.toRef(r,"roles"),e.toRef(r,"items"),e.toRef(r,"prefixCls");const I=e.useAttrs(),s=e.useSlots(),V=e.computed(()=>z.default(e.mergeProps(E,I),{attr:!0,aria:!0})),v=e.ref(r.items),C=e.ref(r.roles);e.watch(()=>r.items,()=>{v.value=r.items}),e.watch(()=>r.roles,()=>{C.value=r.roles});const u=e.ref(null),d=e.ref({}),{getPrefixCls:w}=W.default(),x=w("bubble",r.prefixCls),S=`${x}-list`,[N,T,D]=j.default(x),[_,P]=g.default(!1);e.watchPostEffect(()=>{P(!0),e.onWatcherCleanup(()=>{P(!1)})});const b=$.default(v,C),[c,A]=X.default(b),[q,m]=g.default(!0),[h,R]=g.default(0),B=t=>{const n=t.target;m(n.scrollHeight-Math.abs(n.scrollTop)-n.clientHeight<=F)};e.watch(h,()=>{r.autoScroll&&e.unref(u)&&e.unref(q)&&e.nextTick(()=>{e.unref(u).scrollTo({top:e.unref(u).scrollHeight})})}),e.watch(()=>e.unref(c).length,()=>{var t;if(r.autoScroll){const n=(t=e.unref(c)[e.unref(c).length-2])==null?void 0:t.key,o=e.unref(d)[n];if(o){const{nativeElement:a}=o,{top:i=0,bottom:f=0}=(a==null?void 0:a.getBoundingClientRect())??{},{top:l,bottom:H}=e.unref(u).getBoundingClientRect();i<H&&f>l&&(R(e.unref(h)+1),m(!0))}}});const L=y.useEventCallback(()=>{r.autoScroll&&R(e.unref(h)+1)}),k=e.computed(()=>({onUpdate:L}));return p({nativeElement:u,scrollTo:({key:t,offset:n,behavior:o="smooth",block:a})=>{if(typeof n=="number")e.unref(u).scrollTo({top:n,behavior:o});else if(t!==void 0){const i=e.unref(d)[t];if(i){const f=e.unref(c).findIndex(l=>l.key===t);m(f===e.unref(c).length-1),i.nativeElement.scrollIntoView({behavior:o,block:a})}}}}),()=>N(e.createVNode(K.BubbleContextProvider,{value:k.value},{default:()=>[e.createVNode("div",e.mergeProps(V.value,{class:U.classnames(S,r.rootClassName,T.value,D,{[`${S}-reach-end`]:q.value}),ref:u,onScroll:B}),[e.renderList(e.unref(c),({key:t,onTypingComplete:n,...o})=>{var a,i,f;return e.createVNode(O.default,e.mergeProps(o,{avatar:s.avatar?()=>{var l;return(l=s.avatar)==null?void 0:l.call(s,{item:{key:t,...o}})}:o.avatar,header:((a=s.header)==null?void 0:a.call(s,{item:{key:t,...o}}))??o.header,footer:((i=s.footer)==null?void 0:i.call(s,{item:{key:t,...o}}))??o.footer,loadingRender:s.loading?()=>s.loading({item:{key:t,...o}}):o.loadingRender,content:((f=s.message)==null?void 0:f.call(s,{item:{key:t,...o}}))??o.content,key:t,ref:l=>{l?d.value[t]=l:delete d.value[t]},typing:_.value?o.typing:!1,onTypingComplete:()=>{n==null||n(),A(t)}}),null)})])]}))}});exports.default=G;