index-a8a64e67.js 1.9 KB

1
  1. import{bu as I,aU as T,aF as $,bl as B,c as O,n as z,m as F,b,d as H,r as p,bD as N,x as C,e as v,bG as D,ai as E,i as L,w,a3 as U,bF as g,z as V,a4 as u,bK as _,bL as j,a as y,bm as A,k as G}from"./index-0e5e6e51.js";function K(o,f){if(!I||!window.IntersectionObserver)return;const r=new IntersectionObserver(e=>{f(e[0].intersectionRatio>0)},{root:document.body}),s=()=>{o.value&&r.observe(o.value)},d=()=>{o.value&&r.unobserve(o.value)};T(d),$(d),B(s)}const[M,W]=O("sticky"),Z={zIndex:z,position:F("top"),container:Object,offsetTop:b(0),offsetBottom:b(0)};var q=H({name:M,props:Z,emits:["scroll","change"],setup(o,{emit:f,slots:r}){const s=p(),d=N(s),e=C({fixed:!1,width:0,height:0,transform:0}),c=p(!1),i=v(()=>D(o.position==="top"?o.offsetTop:o.offsetBottom)),S=v(()=>{if(c.value)return;const{fixed:t,height:h,width:n}=e;if(t)return{width:`${n}px`,height:`${h}px`}}),k=v(()=>{if(!e.fixed||c.value)return;const t=E(L(o.zIndex),{width:`${e.width}px`,height:`${e.height}px`,[o.position]:`${i.value}px`});return e.transform&&(t.transform=`translate3d(0, ${e.transform}px, 0)`),t}),P=t=>f("scroll",{scrollTop:t,isFixed:e.fixed}),m=()=>{if(!s.value||g(s))return;const{container:t,position:h}=o,n=u(s),R=A(window);if(e.width=n.width,e.height=n.height,h==="top")if(t){const a=u(t),l=a.bottom-i.value-e.height;e.fixed=i.value>n.top&&a.bottom>0,e.transform=l<0?l:0}else e.fixed=i.value>n.top;else{const{clientHeight:a}=document.documentElement;if(t){const l=u(t),x=a-l.top-i.value-e.height;e.fixed=a-i.value<n.bottom&&a>l.top,e.transform=x<0?-x:0}else e.fixed=a-i.value<n.bottom}P(R)};return w(()=>e.fixed,t=>f("change",t)),U("scroll",m,{target:d,passive:!0}),K(s,m),w([_,j],()=>{!s.value||g(s)||!e.fixed||(c.value=!0,V(()=>{const t=u(s);e.width=t.width,e.height=t.height,c.value=!1}))}),()=>{var t;return y("div",{ref:s,style:S.value},[y("div",{class:W({fixed:e.fixed&&!c.value}),style:k.value},[(t=r.default)==null?void 0:t.call(r)])])}}});const Q=G(q);export{Q as S,K as u};