UNPKG

ant-design-x-vue

Version:

Craft AI-driven interfaces effortlessly

2 lines (1 loc) 2.84 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),P=require("../attachments/Attachments2.js"),H=require("../_util/hooks/use-event-callback.js"),M=require("../_util/pick-attrs.js"),U=require("../x-provider/hooks/use-x-provider-context.js");require("../x-provider/context.js");require("ant-design-vue");const z=require("./Bubble.js"),O=require("./hooks/useDisplayData.js"),X=require("./hooks/useListData.js"),$=require("./style/index.js"),m=require("../_util/hooks/use-state.js"),j=require("./context.js"),K=1,W=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(t,{expose:R}){const p=P.createPropsRestProxy(t,["prefixCls","rootClassName","items","autoScroll","roles"]);e.toRef(t,"roles"),e.toRef(t,"items"),e.toRef(t,"prefixCls");const E=e.useAttrs(),I=M.default(e.mergeProps(p,E),{attr:!0,aria:!0}),h=e.ref(t.items),C=e.ref(t.roles);e.watch(()=>t.items,()=>{h.value=t.items}),e.watch(()=>t.roles,()=>{C.value=t.roles});const n=e.ref(null),a=e.ref({}),{getPrefixCls:V}=U.default(),g=V("bubble",t.prefixCls),v=`${g}-list`,[k,w,y]=$.default(g),[N,x]=m.default(!1);e.watchEffect(()=>{x(!0),e.onWatcherCleanup(()=>{x(!1)})});const T=X.default(h,C),[u,A]=O.default(T),[S,c]=m.default(!0),[f,q]=m.default(0),D=s=>{const l=s.target;c(l.scrollHeight-Math.abs(l.scrollTop)-l.clientHeight<=K)};e.watch(f,()=>{t.autoScroll&&e.unref(n)&&e.unref(S)&&e.nextTick(()=>{e.unref(n).scrollTo({top:e.unref(n).scrollHeight})})}),e.watch(()=>e.unref(u).length,()=>{var s;if(t.autoScroll){const l=(s=e.unref(u)[e.unref(u).length-2])==null?void 0:s.key,o=e.unref(a)[l];if(o){const{nativeElement:r}=o,{top:i=0,bottom:d=0}=(r==null?void 0:r.getBoundingClientRect())??{},{top:b,bottom:L}=e.unref(n).getBoundingClientRect();i<L&&d>b&&(q(e.unref(f)+1),c(!0))}}});const B=H.useEventCallback(()=>{t.autoScroll&&q(e.unref(f)+1)}),_=e.computed(()=>({onUpdate:B}));return R({nativeElement:n,scrollTo:({key:s,offset:l,behavior:o="smooth",block:r})=>{if(typeof l=="number")e.unref(n).scrollTo({top:l,behavior:o});else if(s!==void 0){const i=e.unref(a)[s];if(i){const d=e.unref(u).findIndex(b=>b.key===s);c(d===e.unref(u).length-1),i.nativeElement.scrollIntoView({behavior:o,block:r})}}}}),()=>k(e.createVNode(j.BubbleContextProvider,{value:_.value},{default:()=>[e.createVNode("div",e.mergeProps(I,{class:P.classnames(v,t.rootClassName,w.value,y,{[`${v}-reach-end`]:S.value}),ref:n,onScroll:D}),[e.unref(u).map(({key:s,onTypingComplete:l,...o})=>e.createVNode(z.default,e.mergeProps(o,{key:s,ref:r=>{r?a.value[s]=r:delete a.value[s]},typing:N.value?o.typing:!1,onTypingComplete:()=>{l==null||l(),A(s)}}),null))])]}))}});exports.default=W;