@nipe-solutions/react-spring-bottom-sheet
Version:
Accessible and composable bottom sheets for React
2 lines • 25.5 kB
JavaScript
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("react"),t=require("react/jsx-runtime"),n=require("react-dom");function r(e,t){if(typeof e==`function`){let n=e(t);return t===null?void 0:typeof n==`function`?n:()=>e(null)}if(e&&(e.current=t,t!==null))return()=>e.current=null}function i(...e){return t=>{let n=e.map(e=>r(e,t)).filter(e=>e!==void 0);if(t!==null&&n.length>0)return()=>{for(let e of n)e()}}}var a=(0,e.forwardRef)(function({children:t,className:n,onClick:r,onPointerCancel:a,onPointerDown:o,onPointerMove:s,onPointerUp:c,style:l,...u},d){let f=e.Children.only(t);if(!(0,e.isValidElement)(f))throw Error(`asChild requires exactly one valid element`);let p=f.props.onClick,m=e=>{p?.(e),e.defaultPrevented||r?.(e)},h=(e,t)=>n=>{e?.(n),n.defaultPrevented||t?.(n)},g={...l,...f.props.style};return(0,e.cloneElement)(f,{...u,...f.props,className:[n,f.props.className].filter(Boolean).join(` `)||void 0,onClick:m,onPointerCancel:h(f.props.onPointerCancel,a),onPointerDown:h(f.props.onPointerDown,o),onPointerMove:h(f.props.onPointerMove,s),onPointerUp:h(f.props.onPointerUp,c),ref:i(d,f.props.ref),style:g})}),o=(0,e.createContext)(null);function s(t){let n=(0,e.useContext)(o);if(!n)throw Error(`${t} must be used inside Sheet.Root`);return n}var c=(0,e.forwardRef)(function({asChild:n=!1,children:r,className:o,onClick:c,...l},u){let{dismissible:d,registerBackdrop:f,requestOpenChange:p,transitionPhase:m}=s(`Sheet.Backdrop`),h=(0,e.useMemo)(()=>i(f,u),[u,f]),g={...l,className:[`rsbs-backdrop`,o].filter(Boolean).join(` `),"data-rsbs-backdrop":``,"data-rsbs-state":m,onClick:e=>{c?.(e),d&&e.target===e.currentTarget&&!e.defaultPrevented&&p(!1,`backdrop`)}};return n?(0,t.jsx)(a,{...g,ref:h,children:r}):(0,t.jsx)(`div`,{...g,ref:h,children:r})}),l=(0,e.forwardRef)(function({asChild:e=!1,children:n,className:r,onClick:i,type:o=`button`,...c},l){let{requestOpenChange:u}=s(`Sheet.Close`),d={...c,className:[`rsbs-close`,r].filter(Boolean).join(` `),"data-rsbs-close":``,onClick:e=>{i?.(e),e.defaultPrevented||u(!1,`close`)}};return e?(0,t.jsx)(a,{...d,ref:l,children:n}):(0,t.jsx)(`button`,{...d,ref:l,type:o,children:n})}),u=[`a[href]`,`button:not([disabled])`,`input:not([disabled])`,`select:not([disabled])`,`textarea:not([disabled])`,`[tabindex]:not([tabindex="-1"])`].join(`,`);function d(e){return[...e.querySelectorAll(u)].filter(e=>!e.hidden&&e.getAttribute(`aria-hidden`)!==`true`)}function f(e){(e.querySelector(`[autofocus]`)??d(e)[0]??e).focus({preventScroll:!0})}function p(e,t){if(e.key!==`Tab`)return;let n=d(t);if(n.length===0){e.preventDefault(),t.focus({preventScroll:!0});return}let r=n[0],i=n[n.length-1];e.shiftKey&&document.activeElement===r?(e.preventDefault(),i.focus({preventScroll:!0})):!e.shiftKey&&document.activeElement===i&&(e.preventDefault(),r.focus({preventScroll:!0}))}function m(e){let t=new Map,n=e,r=e.parentElement;for(;r;){for(let e of r.children)e instanceof HTMLElement&&e!==n&&(e.hasAttribute(`data-rsbs-backdrop`)||e.querySelector(`[data-rsbs-backdrop]`)||t.has(e)||(t.set(e,{element:e,ariaHidden:e.getAttribute(`aria-hidden`),inert:e.inert}),e.setAttribute(`aria-hidden`,`true`),e.inert=!0));if(r===document.body)break;n=r,r=r.parentElement}return()=>{for(let{element:e,ariaHidden:n,inert:r}of[...t.values()].reverse())n===null?e.removeAttribute(`aria-hidden`):e.setAttribute(`aria-hidden`,n),e.inert=r}}var h=(0,e.forwardRef)(function({asChild:n=!1,children:r,className:o,onPointerCancel:c,onPointerDown:l,onPointerMove:u,onPointerUp:d,style:h,...g},_){let{descriptionId:v,dismissible:y,modal:b,open:x,requestOpenChange:S,registerContent:C,interactionHandlers:w,position:T,surfaceProgress:E,dragging:D,titleId:O,transitionPhase:k}=s(`Sheet.Content`),A=(0,e.useRef)(null);(0,e.useEffect)(()=>{let e=A.current;if(!e||!x)return;let t=b&&document.activeElement instanceof HTMLElement?document.activeElement:null,n=b?m(e):void 0,r=t=>{t.key===`Escape`&&y?(t.preventDefault(),S(!1,`escape`)):b&&p(t,e)},i=t=>{b&&t.target instanceof Node&&!e.contains(t.target)&&f(e)};return document.addEventListener(`keydown`,r),document.addEventListener(`focusin`,i),b&&f(e),()=>{document.removeEventListener(`keydown`,r),document.removeEventListener(`focusin`,i),n?.(),t?.focus({preventScroll:!0})}},[y,b,x,S]),(0,e.useEffect)(()=>{let e=A.current;if(process.env.NODE_ENV===`production`||!e||!x)return;let t=!0;return queueMicrotask(()=>{t&&e.isConnected&&!e.hasAttribute(`aria-label`)&&!e.getAttribute(`aria-labelledby`)&&console.warn(`Sheet.Content requires Sheet.Title or an aria-label.`)}),()=>{t=!1}},[x,O]);let j=[`rsbs-content`,o].filter(Boolean).join(` `),M=(e,t)=>n=>{e?.(n),n.defaultPrevented||t(n)},N={...h,"--rsbs-position":`${T}px`,"--rsbs-surface-progress":E},P={...g,role:`dialog`,tabIndex:g.tabIndex??-1,inert:!x,"aria-modal":b||void 0,"aria-hidden":!x||void 0,"aria-labelledby":g[`aria-label`]?void 0:O,"aria-describedby":v,className:j,"data-rsbs-content":``,"data-rsbs-state":k,"data-rsbs-dragging":D||void 0,onPointerDown:M(l,w.onPointerDown),onPointerMove:M(u,w.onPointerMove),onPointerUp:M(d,w.onPointerUp),onPointerCancel:M(c,w.onPointerCancel),style:N};return n?(0,t.jsx)(a,{...P,ref:i(A,C,_),children:r}):(0,t.jsx)(`div`,{...P,ref:i(_,e=>{A.current=e,C(e)}),children:r})}),g=(0,e.forwardRef)(function({asChild:n=!1,children:r,className:i,id:o,...c},l){let u=(0,e.useId)(),d=o??u,{registerDescription:f}=s(`Sheet.Description`);(0,e.useEffect)(()=>f(d),[d,f]);let p={...c,id:d,className:[`rsbs-description`,i].filter(Boolean).join(` `),"data-rsbs-description":``};return n?(0,t.jsx)(a,{...p,ref:l,children:r}):(0,t.jsx)(`p`,{...p,ref:l,children:r})});function _(e,t,n){if(n.length===0)return null;let r=n.find(({id:t})=>t===e);if(r)return r;let i=n[0],a=Math.abs(t-i.position);for(let e=1;e<n.length;e+=1){let r=n[e],o=Math.abs(t-r.position);o<a&&(i=r,a=o)}return i}function v(){return{phase:`closed`,open:!1,activeSnapPoint:null,position:0,targetPosition:0,velocity:0,dismissReason:null}}function y(e,t){return{state:e,diagnostic:{code:`invalid-transition`,event:t.type,phase:e.phase}}}function b(e,t){if(t.type===`OPEN_REQUESTED`)return{state:{...e,phase:`opening`,open:!0,activeSnapPoint:t.snapPoint,targetPosition:t.targetPosition,velocity:0,dismissReason:null},diagnostic:null};if(t.type===`CLOSE_REQUESTED`&&e.phase!==`closed`)return{state:{...e,phase:`closing`,open:!1,dismissReason:t.reason,velocity:t.velocity??0},diagnostic:null};if(t.type===`DRAG_STARTED`&&[`open`,`opening`,`settling`].includes(e.phase))return{state:{...e,phase:`dragging`,position:t.position,velocity:0},diagnostic:null};if(t.type===`DRAG_MOVED`&&e.phase===`dragging`)return{state:{...e,position:t.position},diagnostic:null};if(t.type===`DRAG_ENDED`&&e.phase===`dragging`)return{state:{...e,phase:`settling`,position:t.position,targetPosition:t.targetPosition,velocity:t.velocity,activeSnapPoint:t.snapPoint},diagnostic:null};if(t.type===`LAYOUT_CHANGED`){if(e.phase===`closed`)return{state:{...e,position:t.layout.closedPosition,targetPosition:t.layout.closedPosition},diagnostic:null};if(e.phase===`closing`)return{state:{...e,targetPosition:t.layout.closedPosition},diagnostic:null};let n=_(e.activeSnapPoint,e.position,t.layout.snapPoints);return n?{state:{...e,phase:e.phase===`dragging`?`dragging`:`settling`,activeSnapPoint:n.id,targetPosition:n.position,velocity:e.phase===`dragging`?e.velocity:0},diagnostic:null}:{state:e,diagnostic:null}}return t.type===`SETTLED`&&e.phase===`closing`?{state:{...v(),position:t.position,targetPosition:t.position,velocity:0},diagnostic:null}:t.type===`SETTLED`&&(e.phase===`opening`||e.phase===`settling`)?{state:{...e,phase:`open`,position:t.position,targetPosition:t.position,velocity:0},diagnostic:null}:y(e,t)}function x(e){if(e.phase===`closed`&&e.open)throw Error(`closed phase requires open to be false`);if((e.phase===`opening`||e.phase===`open`||e.phase===`dragging`||e.phase===`settling`)&&!e.activeSnapPoint)throw Error(`${e.phase} phase requires an active snap point`);if(!Number.isFinite(e.position)||!Number.isFinite(e.targetPosition)||!Number.isFinite(e.velocity))throw Error(`sheet positions must be finite`)}function S(e={}){let t=e.initialState??v(),n=new Set;return{getState(){return t},dispatch(r){let i=t,a=b(i,r);if(a.diagnostic){e.onDiagnostic?.(a.diagnostic);return}if(t=a.state,process.env.NODE_ENV!==`production`&&x(t),t!==i){let e=t;for(let t of[...n])t(e)}},subscribe(e){return n.add(e),()=>{n.delete(e)}}}}function C(){let[t,n]=(0,e.useState)(()=>typeof window>`u`?!1:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches);return(0,e.useEffect)(()=>{let e=window.matchMedia(`(prefers-reduced-motion: reduce)`),t=()=>n(e.matches);return e.addEventListener(`change`,t),t(),()=>e.removeEventListener(`change`,t)},[]),t}function w(e,t=100){if(e.length<2)return 0;let n=e[e.length-1],r=n.time-t,i=e.find(({time:e})=>e>=r)??e[0],a=n.time-i.time;return a>0?(n.position-i.position)/a:0}function T(e,t){try{e.setPointerCapture?.(t)}catch{}}function E(e,t){try{(!e.hasPointerCapture||e.hasPointerCapture(t))&&e.releasePointerCapture?.(t)}catch{}}function D(e){let t=null,n=0,r=0,i=0,a,o=[],s=()=>({deltaY:r-n,deltaSinceLastY:i,positionY:r,velocityY:w(o)}),c=n=>{if(t===null)return;let r=t,i={...s(),cancelled:n};t=null,a&&E(a,r),a=void 0,o=[],e.onEnd(i)};return{get active(){return t!==null},start(s,c){return t===null&&(t=s.pointerId,n=s.clientY,r=s.clientY,i=0,a=c,o=[{position:s.clientY,time:s.timeStamp}],c&&T(c,s.pointerId),e.onStart(s.clientY),!0)},capture(e){t===null||a||(a=e,T(e,t))},move(n){n.pointerId===t&&(i=n.clientY-r,r=n.clientY,o.push({position:n.clientY,time:n.timeStamp}),e.onMove(s()))},end(e){e.pointerId===t&&(i=e.clientY-r,r=e.clientY,o.push({position:e.clientY,time:e.timeStamp}),c(!1))},cancel(){c(!0)},dispose(){c(!0)}}}var O=.35;function k(e,t,n=O){if(t.min>t.max)throw Error(`drag range minimum cannot exceed maximum`);return e<t.min?t.min+(e-t.min)*n:e>t.max?t.max+(e-t.max)*n:e}function A({deltaY:e,scrollTop:t,scrollHeight:n,clientHeight:r,startedOnHandle:i}){if(i)return`sheet`;let a=Math.max(0,n-r);return a<=0?`sheet`:e<0?t<a?`content`:`sheet`:e>0?t>0?`content`:`sheet`:`content`}function j(e,t){let n=e instanceof HTMLElement?e:null;for(;n&&n!==t;){let e=getComputedStyle(n).overflowY;if(n.scrollHeight>n.clientHeight&&[`auto`,`scroll`,`overlay`].includes(e))return n;n=n.parentElement}return null}var M=.45;function N(e,t){let n=0,r=Math.abs(e-t[0].position);for(let i=1;i<t.length;i+=1){let a=Math.abs(e-t[i].position);a<r&&(n=i,r=a)}return n}function P({position:e,velocity:t,snapPoints:n,closedPosition:r,dismissible:i}){if(n.length===0)return{type:`none`};let a=n.length-1,o=(n[a].position+r)/2,s=N(e,n);return i&&(e>=o||s===a&&t>=M)?{type:`dismiss`,position:r}:Math.abs(t)>=M?{type:`snap`,snapPoint:n[Math.max(0,Math.min(a,s+(t>0?1:-1)))]}:{type:`snap`,snapPoint:n[s]}}function ee({content:t,controller:n,state:r,layout:i,dismissible:a,onDismiss:o,onSnapPointChange:s,onPositionChange:c}){let l=(0,e.useRef)(r),u=(0,e.useRef)(i),d=(0,e.useRef)(null),f=(0,e.useRef)(!1),p=(0,e.useRef)(!1),m=(0,e.useRef)(0),h=(0,e.useRef)(0),g=(0,e.useRef)(null);l.current=r,u.current=i;let _=(0,e.useMemo)(()=>D({onStart(){h.current=l.current.position,p.current=f.current,m.current=0,p.current&&[`open`,`opening`,`settling`].includes(l.current.phase)&&n.dispatch({type:`DRAG_STARTED`,position:h.current})},onMove(e){let t=u.current;if(!t)return;if(!p.current){let t=d.current;if(A({deltaY:e.deltaSinceLastY,scrollTop:t?.scrollTop??0,scrollHeight:t?.scrollHeight??0,clientHeight:t?.clientHeight??0,startedOnHandle:f.current})===`content`||![`open`,`opening`,`settling`].includes(l.current.phase))return;p.current=!0,g.current&&_.capture(g.current),m.current=e.deltaY,h.current=l.current.position,n.dispatch({type:`DRAG_STARTED`,position:h.current})}let r=t.snapPoints[0]?.position;if(r===void 0)return;let i=k(h.current+e.deltaY-m.current,{min:r,max:t.closedPosition});n.dispatch({type:`DRAG_MOVED`,position:i}),c(i)},onEnd(e){let t=u.current;if(!p.current||!t)return;let r=l.current,i=P({position:r.position,velocity:e.cancelled?0:e.velocityY,snapPoints:t.snapPoints,closedPosition:t.closedPosition,dismissible:a});i.type===`dismiss`?(n.dispatch({type:`CLOSE_REQUESTED`,reason:`drag`,velocity:e.velocityY}),o()):i.type===`snap`&&(n.dispatch({type:`DRAG_ENDED`,position:r.position,velocity:e.velocityY,snapPoint:i.snapPoint.id,targetPosition:i.snapPoint.position}),s(i.snapPoint.id))}}),[n,a,o,c,s]);return(0,e.useEffect)(()=>{let e=()=>_.cancel();return window.addEventListener(`blur`,e),()=>{window.removeEventListener(`blur`,e),_.dispose()}},[_]),{onPointerDown(e){if(!t||!i||![`open`,`opening`,`settling`].includes(r.phase))return;if(_.active){_.cancel();return}let n=e.target instanceof HTMLElement?e.target:null;f.current=!!n?.closest(`[data-rsbs-handle]`),d.current=f.current?null:j(e.target,t),g.current=e.currentTarget,_.start(e.nativeEvent,f.current?e.currentTarget:void 0)},onPointerMove(e){_.move(e.nativeEvent),p.current&&e.preventDefault()},onPointerUp(e){_.end(e.nativeEvent)},onPointerCancel(){_.cancel()}}}function F(){if(typeof document>`u`)return{top:0,bottom:0};let e=document.createElement(`div`);e.style.cssText=`position:fixed;visibility:hidden;pointer-events:none;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)`,document.body.append(e);let t=getComputedStyle(e),n={top:Number.parseFloat(t.paddingTop)||0,bottom:Number.parseFloat(t.paddingBottom)||0};return e.remove(),n}function I({viewport:e,content:t,onChange:n,getSafeArea:r=F,visualViewport:i=typeof window>`u`?null:window.visualViewport,createResizeObserver:a=e=>typeof ResizeObserver>`u`?null:new ResizeObserver(e)}){let o=!1,s=typeof document<`u`&&e.parentElement===document.body?i:null,c=()=>{if(o)return;let i=r(),a=t.getBoundingClientRect().height;n({viewportHeight:s?.height??e.clientHeight,contentHeight:a||t.scrollHeight,safeAreaTop:i.top,safeAreaBottom:i.bottom})},l=a(c);return l?.observe(e),l?.observe(t),s?.addEventListener(`resize`,c),c(),{measure:c,dispose(){o||(o=!0,l?.disconnect(),s?.removeEventListener(`resize`,c))}}}function L(e){return[e.viewportHeight,e.contentHeight,e.safeAreaTop,e.safeAreaBottom].every(e=>Number.isFinite(e)&&e>=0)&&e.viewportHeight>e.safeAreaTop+e.safeAreaBottom}function R(e,t,n){if(e===`content`)return t.contentHeight;if(typeof e==`number`)return e>0&&e<=1?e*n:null;let r=/^(-?(?:\d+\.?\d*|\.\d+))(px|%)$/.exec(e);if(!r)return null;let i=Number(r[1]);return!Number.isFinite(i)||i<=0?null:r[2]===`%`?i/100*n:i}function z(e,t){if(!L(t))return{snapPoints:[],diagnostics:[{code:`invalid-measurements`}]};let n=t.viewportHeight-t.safeAreaTop-t.safeAreaBottom,r=new Set,i=[],a=[];for(let o of e){if(r.has(o.id)){a.push({code:`duplicate-id`,id:o.id});continue}r.add(o.id);let e=R(o.value,t,n);if(e===null){a.push({code:`invalid-value`,id:o.id,value:o.value});continue}let s=Math.min(e,n);i.push({id:o.id,position:t.viewportHeight-t.safeAreaBottom-s})}return i.sort((e,t)=>e.position-t.position),{snapPoints:i,diagnostics:a}}function te({viewport:t,content:n,snapPoints:r,onLayout:i}){(0,e.useEffect)(()=>{if(t&&n)return I({viewport:t,content:n,onChange(e){let t=z(r,e);t.snapPoints.length!==0&&i({viewportHeight:e.viewportHeight,closedPosition:e.viewportHeight-e.safeAreaBottom,snapPoints:t.snapPoints})}}).dispose},[n,i,r,t])}function B(e){return Math.min(1,Math.max(0,e))}function V(e,t,n,r,i=e===`opening`?0:1){if(n===r)return e===`closing`?0:1;let a=B((t-n)/(r-n));return B(i+((e===`closing`?0:1)-i)*a)}function ne({controller:t,state:n,closedPosition:r,reducedMotion:i,adapter:a,getPosition:o,onUpdate:s,getBackdropProgress:c,onBackdropProgress:l}){(0,e.useEffect)(()=>{if(![`opening`,`settling`,`closing`].includes(n.phase))return;let e=o(),u=n.phase===`closing`?r:n.targetPosition,d=c(),f=a.start({from:e,to:u,velocity:n.velocity,reducedMotion:i,onUpdate(t){s(t),l(V(n.phase,t,e,u,d))},onComplete:()=>t.dispatch({type:`SETTLED`,position:u})});return()=>f.stop()},[a,r,t,o,c,l,s,i,n])}var H=(e,t,n)=>n>t?t:n<e?e:n;function U(e,t){return t?`${e}. For more information and steps for solving, visit https://motion.dev/troubleshooting/${t}`:e}var W=()=>{};typeof process<`u`&&process.env.NODE_ENV!==`production`&&(W=(e,t,n)=>{!e&&typeof console<`u`&&console.warn(U(t,n))});var G=e=>e*1e3,K=e=>e/1e3,q=(e,t,n=10)=>{let r=``,i=Math.max(Math.round(t/n),2);for(let t=0;t<i;t++)r+=Math.round(e(t/(i-1))*1e4)/1e4+`, `;return`linear(${r.substring(0,r.length-2)})`},J=2e4;function Y(e,t=50,n=J,r){let i=0,a=e.next(i);for(r?.push(a.value);!a.done&&i<n;)i+=t,a=e.next(i),r?.push(a.value);return i>=n?1/0:i}function X(e,t=100,n){let r=n({...e,keyframes:[0,t]}),i=Math.min(Y(r),J);return{type:`keyframes`,ease:e=>r.next(i*e).value/t,duration:K(i)}}var Z={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1};function Q(e,t){return e*Math.sqrt(1-t*t)}var re=12;function ie(e,t,n){let r=n;for(let n=1;n<re;n++)r-=e(r)/t(r);return r}var ae=.001;function oe({duration:e=Z.duration,bounce:t=Z.bounce,velocity:n=Z.velocity,mass:r=Z.mass}){let i,a;W(e<=G(Z.maxDuration),`Spring duration must be 10 seconds or less`,`spring-duration-limit`);let o=1-t;o=H(Z.minDamping,Z.maxDamping,o),e=H(Z.minDuration,Z.maxDuration,K(e)),o<1?(i=t=>{let r=t*o,i=r*e,a=r-n,s=Q(t,o),c=Math.exp(-i);return ae-a/s*c},a=t=>{let r=t*o*e,a=r*n+n,s=o*o*t*t*e,c=Math.exp(-r),l=Q(t*t,o);return(-i(t)+ae>0?-1:1)*((a-s)*c)/l}):(i=t=>-.001+Math.exp(-t*e)*((t-n)*e+1),a=t=>Math.exp(-t*e)*((n-t)*(e*e)));let s=5/e,c=ie(i,a,s);if(e=G(e),isNaN(c))return{stiffness:Z.stiffness,damping:Z.damping,duration:e};{let t=c*c*r;return{stiffness:t,damping:o*2*Math.sqrt(r*t),duration:e}}}var se=[`duration`,`bounce`],ce=[`stiffness`,`damping`,`mass`];function le(e,t){return t.some(t=>e[t]!==void 0)}function ue(e){let t={velocity:Z.velocity,stiffness:Z.stiffness,damping:Z.damping,mass:Z.mass,isResolvedFromDuration:!1,...e};if(!le(e,ce)&&le(e,se)){if(t.velocity=0,e.visualDuration){let n=e.visualDuration,r=2*Math.PI/(n*1.2),i=r*r,a=2*H(.05,1,1-(e.bounce||0))*Math.sqrt(i);t={...t,mass:Z.mass,stiffness:i,damping:a}}else{let n=oe({...e,velocity:0});t={...t,...n,mass:Z.mass},t.isResolvedFromDuration=!0}}return t}function $(e=Z.visualDuration,t=Z.bounce){let n=typeof e==`object`?e:{visualDuration:e,keyframes:[0,1],bounce:t},{restSpeed:r,restDelta:i}=n,a=n.keyframes[0],o=n.keyframes[n.keyframes.length-1],s={done:!1,value:a},{stiffness:c,damping:l,mass:u,duration:d,velocity:f,isResolvedFromDuration:p}=ue({...n,velocity:-K(n.velocity||0)}),m=f||0,h=l/(2*Math.sqrt(c*u)),g=o-a,_=K(Math.sqrt(c/u)),v=h*_,y=Math.abs(g)<5;r||=y?Z.restSpeed.granular:Z.restSpeed.default,i||=y?Z.restDelta.granular:Z.restDelta.default;let b,x;if(h<1){let e=Q(_,h),t=(m+v*g)/e,n=v*t+g*e,r=v*g-t*e,i=-1,a=0,s=0,c=c=>{if(c!==i){i=c;let l=Math.exp(-v*c),u=Math.sin(e*c),d=Math.cos(e*c);a=o-l*(t*u+g*d),s=l*(n*u+r*d)}};b=e=>(c(e),a),x=e=>(c(e),s)}else if(h===1){b=e=>o-Math.exp(-_*e)*(g+(m+_*g)*e);let e=m+_*g;x=t=>Math.exp(-_*t)*(_*e*t-m)}else{let e=_*Math.sqrt(h*h-1);b=t=>{let n=Math.exp(-v*t),r=Math.min(e*t,300);return o-n*((m+v*g)*Math.sinh(r)+e*g*Math.cosh(r))/e};let t=(m+v*g)/e,n=v*t-g*e,r=v*g-t*e;x=t=>{let i=Math.exp(-v*t),a=Math.min(e*t,300);return i*(n*Math.sinh(a)+r*Math.cosh(a))}}let S={calculatedDuration:p&&d||null,velocity:e=>G(x(e)),next:e=>{let t=b(e);if(p)s.done=e>=d;else{let n=G(x(e));s.done=Math.abs(n)<=r&&Math.abs(o-t)<=i}return s.value=s.done?o:t,s},toString:()=>{let e=Math.min(Y(S),J),t=q(t=>S.next(e*t).value,e,30);return e+`ms `+t},toTransition:()=>{}};return S}$.applyToOptions=e=>{let t=X(e,100,$);return e.ease=t.ease,e.duration=G(t.duration),e.type=`keyframes`,e};var de=(e,t,n)=>{let r=$({keyframes:[e,t],velocity:n.velocity,stiffness:n.stiffness,damping:n.damping}),i=Y(r),a=performance.now(),o=!1,s,c=e=>{if(o)return;a=Math.min(a,e);let l=Math.round(e-a),u=l>=i;n.onUpdate(u?t:r.next(l).value),!o&&(u?queueMicrotask(()=>{o||(o=!0,n.onComplete())}):s=requestAnimationFrame(c))};return s=requestAnimationFrame(c),{stop(){o=!0,cancelAnimationFrame(s)}}};function fe(e=de){return{start(t){if(t.reducedMotion)return t.onUpdate(t.to),t.onComplete(),{stop(){}};let n=e(t.from,t.to,{type:`spring`,velocity:t.velocity*1e3,stiffness:380,damping:38,onUpdate:t.onUpdate,onComplete:t.onComplete});return{stop:()=>n.stop()}}}}var pe=fe(),me=[{id:`content`,value:`content`}];function he({children:n,open:r,defaultOpen:i,onOpenChange:a,snapPoints:s=me,activeSnapPoint:c,defaultSnapPoint:l,onSnapPointChange:u,modal:d=!0,dismissible:f=!0}){let[p,m]=(0,e.useState)(i??!1),[h,g]=(0,e.useState)(),[_,v]=(0,e.useState)(),[y,b]=(0,e.useState)(null),[x,w]=(0,e.useState)(null),[T,E]=(0,e.useState)(null),[D,O]=(0,e.useState)(l??s[0]?.id),k=(0,e.useRef)(null);k.current||=S();let A=k.current,j=(0,e.useSyncExternalStore)(A.subscribe,A.getState,A.getState),M=(0,e.useRef)(T),N=(0,e.useRef)(j.position),P=(0,e.useRef)(null),F=(0,e.useRef)(0);M.current=T,j.phase===`closed`&&(N.current=j.position);let I=r??p,L=I||j.phase!==`closed`,R=I&&j.phase===`closed`?`open`:j.phase,z=r!==void 0,B=c??D,V=C();(0,e.useEffect)(()=>{process.env.NODE_ENV!==`production`&&r!==void 0&&i!==void 0&&console.warn(`Sheet.Root cannot use both open and defaultOpen; open takes precedence.`)},[r,i]);let H=(0,e.useCallback)((e,t)=>{e!==I&&(z||m(e),a?.(e,{reason:t}))},[z,a,I]),U=(0,e.useCallback)(e=>(g(e),()=>g(t=>t===e?void 0:t)),[]),W=(0,e.useCallback)(e=>(v(e),()=>v(t=>t===e?void 0:t)),[]),G=(0,e.useCallback)(e=>{N.current=e,x?.style.setProperty(`--rsbs-position`,`${e}px`)},[x]),K=(0,e.useCallback)(()=>N.current,[]),q=(0,e.useCallback)(e=>{F.current=e,P.current?.style.setProperty(`--rsbs-backdrop-progress`,String(e)),x?.style.setProperty(`--rsbs-surface-progress`,String(e))},[x]),J=(0,e.useCallback)(()=>F.current,[]),Y=(0,e.useCallback)(e=>{P.current=e,e?.style.setProperty(`--rsbs-backdrop-progress`,String(F.current))},[]);te({viewport:y,content:x,snapPoints:s,onLayout:(0,e.useCallback)(e=>{M.current=e,E(e),A.dispatch({type:`LAYOUT_CHANGED`,layout:e})},[A])}),(0,e.useEffect)(()=>{let e=A.getState(),t=M.current;if(I&&t){let n=t.snapPoints.find(({id:e})=>e===B)??t.snapPoints[0];n&&(e.phase===`closed`||e.phase===`closing`||e.phase===`open`&&e.activeSnapPoint!==n.id)&&A.dispatch({type:`OPEN_REQUESTED`,reason:`imperative`,snapPoint:n.id,targetPosition:n.position})}else!I&&![`closed`,`closing`].includes(e.phase)&&A.dispatch({type:`CLOSE_REQUESTED`,reason:`imperative`})},[B,A,T,I]),ne({controller:A,state:j,closedPosition:T?.closedPosition??j.position,reducedMotion:V,adapter:pe,getPosition:K,onUpdate:G,getBackdropProgress:J,onBackdropProgress:q});let X=(0,e.useCallback)(e=>{c===void 0&&O(e),u?.(e)},[c,u]),Z=ee({content:x,controller:A,state:j,layout:T,dismissible:f,onDismiss:(0,e.useCallback)(()=>{H(!1,`drag`)},[H]),onSnapPointChange:X,onPositionChange:G}),Q=(0,e.useMemo)(()=>({open:I,present:L,transitionPhase:R,modal:d,dismissible:f,titleId:h,descriptionId:_,requestOpenChange:H,registerTitle:U,registerDescription:W,registerViewport:b,registerContent:w,registerBackdrop:Y,interactionHandlers:Z,position:N.current,surfaceProgress:F.current,dragging:j.phase===`dragging`}),[_,f,d,I,L,R,j.phase,j.position,Z,W,Y,U,H,w,b,h]);return(0,t.jsx)(o.Provider,{value:Q,children:n})}var ge=(0,e.forwardRef)(function({asChild:n=!1,children:r,className:i,id:o,...c},l){let u=(0,e.useId)(),d=o??u,{registerTitle:f}=s(`Sheet.Title`);(0,e.useEffect)(()=>f(d),[d,f]);let p={...c,id:d,className:[`rsbs-title`,i].filter(Boolean).join(` `),"data-rsbs-title":``};return n?(0,t.jsx)(a,{...p,ref:l,children:r}):(0,t.jsx)(`h2`,{...p,ref:l,children:r})}),_e=(0,e.forwardRef)(function({asChild:e=!1,children:n,className:r,onClick:i,type:o=`button`,...c},l){let{open:u,requestOpenChange:d}=s(`Sheet.Trigger`),f={...c,className:[`rsbs-trigger`,r].filter(Boolean).join(` `),"aria-expanded":u,"data-rsbs-trigger":``,onClick:e=>{i?.(e),e.defaultPrevented||d(!0,`trigger`)}};return e?(0,t.jsx)(a,{...f,ref:l,children:n}):(0,t.jsx)(`button`,{...f,ref:l,type:o,children:n})}),ve=(0,e.forwardRef)(function({asChild:e=!1,children:n,className:r,...o},c){let{registerViewport:l,transitionPhase:u}=s(`Sheet.Viewport`),d={...o,className:[`rsbs-viewport`,r].filter(Boolean).join(` `),"data-rsbs-viewport":``,"data-rsbs-state":u};return e?(0,t.jsx)(a,{...d,ref:i(l,c),children:n}):(0,t.jsx)(`div`,{...d,ref:i(c,e=>l(e)),children:n})}),ye=(0,e.forwardRef)(function({asChild:e=!1,children:n,className:r,...i},o){let s={...i,className:[`rsbs-handle`,r].filter(Boolean).join(` `),"data-rsbs-handle":``};return e?(0,t.jsx)(a,{...s,ref:o,children:n}):(0,t.jsx)(`div`,{...s,ref:o,children:n})});function be({children:t,container:r}){let{present:i}=s(`Sheet.Portal`),[a,o]=(0,e.useState)(!1);return(0,e.useEffect)(()=>(o(!0),()=>o(!1)),[]),!a||!i?null:(0,n.createPortal)(t,r??document.body)}var xe={Root:he,Trigger:_e,Portal:be,Backdrop:c,Viewport:ve,Content:h,Handle:ye,Title:ge,Description:g,Close:l};function Se({backdropProps:e,children:n,contentProps:r,description:i,title:a,viewportProps:o,...s}){return(0,t.jsx)(he,{...s,children:(0,t.jsxs)(be,{children:[(0,t.jsx)(c,{...e}),(0,t.jsx)(ve,{...o,children:(0,t.jsxs)(h,{...r,children:[(0,t.jsx)(ye,{}),(0,t.jsx)(ge,{children:a}),i===void 0?null:(0,t.jsx)(g,{children:i}),n]})})]})})}exports.BottomSheet=Se,exports.Sheet=xe;
//# sourceMappingURL=index.cjs.map