UNPKG

@speaker-ender/react-position-tools

Version:
3 lines (2 loc) 6.99 kB
var ke=Object.create;var L=Object.defineProperty;var we=Object.getOwnPropertyDescriptor;var fe=Object.getOwnPropertyNames;var xe=Object.getPrototypeOf,ge=Object.prototype.hasOwnProperty;var he=(e,t)=>{for(var o in t)L(e,o,{get:t[o],enumerable:!0})},Y=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of fe(t))!ge.call(e,r)&&r!==o&&L(e,r,{get:()=>t[r],enumerable:!(n=we(t,r))||n.enumerable});return e};var U=(e,t,o)=>(o=e!=null?ke(xe(e)):{},Y(t||!e||!e.__esModule?L(o,"default",{value:e,enumerable:!0}):o,e)),ve=e=>Y(L({},"__esModule",{value:!0}),e);var Se={};he(Se,{CursorContextProvider:()=>ue,ScrollContextProvider:()=>F.ScrollContextProvider,ViewportContextProvider:()=>se,WindowContextProvider:()=>re,useCursorContext:()=>B,useCursorTracking:()=>be,useElementTracking:()=>j,useScrollContext:()=>F.useScrollContext,useViewportContext:()=>N,useWindowContext:()=>y});module.exports=ve(Se);var k=U(require("react")),O=require("@speaker-ender/js-measure"),Z=require("throttle-debounce"),ee=require("@speaker-ender/react-ssr-tools");var q=require("@speaker-ender/react-ssr-tools"),T=require("react"),G=require("throttle-debounce"),x=e=>{let t=(0,T.useRef)(e),o=(0,T.useCallback)(r=>{t.current=[...t.current,r]},[t.current]),n=(0,T.useCallback)(r=>{t.current=t.current.filter(u=>u!==r)},[t.current]);return[o,n,t]},J=(e,t,o)=>{let n=(0,q.useClientHook)(),r=(0,G.throttle)(t,o);return(0,T.useEffect)(()=>(n&&window.addEventListener(e,r),()=>{window.removeEventListener(e,r)}),[n]),[]};var K=10,te=(0,k.createContext)(null),Q=()=>({height:(0,O.windowHeight)(),width:(0,O.windowWidth)()}),Pe=({stateInterval:e,listenerInterval:t})=>{let o=(0,ee.useClientHook)(),n=k.default.useRef(null),r=(0,k.useRef)(Q()),[u,w,p]=x([]),c=(0,Z.throttle)(e,a=>r.current=a),C=(0,k.useCallback)(()=>{let a=Q();p.current.map(i=>i(a?a.height:0,a?a.width:0)),c(a)},[r.current,p]);return J("resize",t,C),(0,k.useEffect)(()=>{n.current=document.documentElement},[o]),[u,w,r,n]},y=()=>{let e=k.default.useContext(te);if(!e)throw new Error("WindowContext used outside of WindowContext.Provider");return e},re=e=>{let t=Pe({stateInterval:K,listenerInterval:K,...e});return k.default.createElement(te.Provider,{value:t},e.children)};var d=U(require("react")),ne=require("@speaker-ender/react-ssr-tools"),A=require("@speaker-ender/js-measure");var ie=(0,d.createContext)(null),oe=e=>({height:(0,A.rawHeight)(e),width:(0,A.rawWidth)(e)}),Ie=e=>{let t=(0,ne.useClientHook)(),o=(0,d.useRef)(e?oe(e):{height:0,width:0}),[n,r]=y(),[u,w,p]=x([]),c=(0,d.useCallback)(()=>{if(e&&o.current){let C=oe(e);C!==o.current&&(o.current=C,p.current&&p.current.map(a=>{a(C.height,C.width)}))}},[e]);return(0,d.useEffect)(()=>{c()},[e]),(0,d.useEffect)(()=>(t&&n&&n(c),()=>{t&&r&&r(c)}),[t,n,c,r]),[o,u,w]},N=()=>{let e=d.default.useContext(ie);if(!e)throw new Error("ViewportContext used outside of ViewportContext.Provider");return e},se=e=>{let t=d.default.useRef(null),o=Ie(t.current);return d.default.createElement(ie.Provider,{value:o},d.default.createElement("div",{style:{position:"absolute",visibility:"hidden",width:"100%",height:"100vh",pointerEvents:"none"},ref:t}),e.children)};var F=require("@speaker-ender/react-scrollr");var le=require("@speaker-ender/react-ssr-tools"),f=U(require("react")),_=require("throttle-debounce");var Ee=(e,t,o)=>{let n=(0,le.useClientHook)(),r=(0,_.throttle)(t,o);return(0,f.useEffect)(()=>(n&&window.addEventListener(e,r),()=>{window.removeEventListener(e,r)}),[n]),[]},ae=10,ce=(0,f.createContext)(null),Te=({listenerInterval:e,stateInterval:t})=>{let o=(0,f.useRef)({currentPosition:{x:0,y:0}}),[n,r,u]=x([]),w=(0,_.throttle)(t,c=>o.current=c),p=(0,f.useCallback)(c=>{if(c){let C={x:c.clientX,y:c.clientY};C!==o.current.currentPosition&&(u.current.map(a=>a(C,o.current.currentPosition)),w({currentPosition:C,previousPosition:o.current.currentPosition}))}},[o.current.currentPosition,w,u.current]);return Ee("pointermove",e,p),[o,n,r]},B=()=>{let e=f.default.useContext(ce);if(!e)throw new Error("Cursor Context used outside of CursorContext.Provider");return e},ue=e=>{let t=Te({listenerInterval:ae,stateInterval:ae,...e});return f.default.createElement(ce.Provider,{value:t},e.children)};var g=require("react"),m=require("@speaker-ender/js-measure");var de=require("@speaker-ender/react-scrollr"),D=require("@speaker-ender/react-ssr-tools"),me=require("throttle-debounce");var Re=10,$=["relativeTop","relativeBottom","inViewport"],Ce=["width","height","top","left","bottom","right",...$],j=e=>{let t=e?.updateInterval||Re,o=(0,D.useClientHook)(),[n]=N(),r=e?.trackedProperties?$.filter(l=>e.trackedProperties?.includes(l)):$,u=e?.trackedProperties?Ce.filter(l=>e.trackedProperties?.includes(l)):Ce,[w,p]=y(),[c,C,a]=(0,de.useScrollContext)(),i=(0,g.useRef)(),W=(0,g.useRef)({}),[I,M,E]=x([]),b=l=>{let s=l.getBoundingClientRect();return s.top<=(n?n.current.height:0)&&s.bottom>=0},h=l=>l.reduce((s,H)=>{if(i.current)switch(H){case"top":s.top=(0,m.topEdgeDistance)(i.current,"document");break;case"left":s.left=(0,m.leftEdgeDistance)(i.current,"viewport");break;case"bottom":s.bottom=(0,m.bottomEdgeDistance)(i.current,"document");break;case"right":s.right=(0,m.rightEdgeDistance)(i.current,"viewport");break;case"relativeTop":s.relativeTop=(0,m.topEdgeDistance)(i.current,"viewport");break;case"relativeBottom":s.relativeBottom=(0,m.bottomEdgeDistance)(i.current,"viewport");break;case"width":s.width=(0,m.rawWidth)(i.current);break;case"height":s.height=(0,m.rawHeight)(i.current);break;case"inViewport":s.inViewport=b(i.current);break}return s},{}),v=(0,g.useCallback)(l=>{l&&(i.current=l)},[i.current]),S=(0,D.useEventCallback)(l=>{let s=h(l),H={...W.current,...s};E.current.map(pe=>{pe(H)}),W.current=H},[E.current,h]),P=(0,me.throttle)(t,S),z=(0,D.useEventCallback)((l,s)=>{l&&l!==s&&S(r)},[P,E]),X=(0,g.useCallback)((l,s)=>{P(u)},[P,E]);return(0,g.useEffect)(()=>{i.current&&P(u)},[u,P]),(0,g.useEffect)(()=>(o&&(r.length>0&&C(z),w&&w(X)),()=>{a(z),p&&p(X)}),[o]),[W,I,M,v]};var R=require("react"),V=require("@speaker-ender/react-ssr-tools");var be=()=>{let e=(0,V.useClientHook)(),[t,o,n]=B(),[r,u,w,p]=j({trackedProperties:["width","height","left","relativeTop","inViewport"]}),[c,C,a]=x([]),i=(0,R.useRef)(t.current.currentPosition||{x:0,y:0}),W=(0,R.useCallback)(b=>({x:Math.round(b.x/(r.current.width||0)*1e4)/100,y:Math.round(b.y/(r.current.height||0)*1e4)/100}),[r.current]),I=(0,V.useEventCallback)((b,h)=>{let v=b?b.x:0,S=b?b.y:0;r.current&&(v=Math.min(Math.max(0,v-(h.left||0)),h.width||0),S=Math.min(Math.max(0,S-(h.relativeTop||0)),h.height||0));let P={x:v,y:S};a.current.map(z=>z({pixels:P,percent:W(P)}))},[r.current,a.current]),M=(0,V.useEventCallback)(b=>{I(i.current,b)},[a.current]),E=(0,V.useEventCallback)((b,h)=>{let v=b||{x:0,y:0};i.current=v,I(v,r.current)},[I,i.current]);return(0,R.useEffect)(()=>{r&&I(i.current,r.current)},[i.current,r,I]),(0,R.useEffect)(()=>(e&&(o(E),u(M)),()=>{n(E),w(M)}),[e]),[c,C,p,r]}; //# sourceMappingURL=index.cjs.js.map