@plainsheet/react 0.4.5 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- (function(M,S){typeof exports=="object"&&typeof module<"u"?S(exports,require("react"),require("react-dom")):typeof define=="function"&&define.amd?define(["exports","react","react-dom"],S):(M=typeof globalThis<"u"?globalThis:M||self,S(M.BottomSheet={},M.React,M.ReactDOM))})(this,function(M,S,Dt){"use strict";function At(t){return t!=null}(function(){try{if(typeof document<"u"){var t=document.createElement("style");t.appendChild(document.createTextNode('.pbs-root{position:fixed;left:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;width:100%;height:fit-content;max-height:100vh;z-index:2}.pbs-dialog-reset{background-color:transparent;color:inherit;border:none;outline:none;padding:0;margin:0}.pbs-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background-color:transparent;z-index:1;transition:background-color .2s ease-out}.pbs-backdrop.hidden{visibility:hidden}.pbs-backdrop.open{background-color:#454545b3}.pbs-backdrop.transparent{background-color:transparent}.pbs-container{--pbs-container-background-color: rgb(240, 240, 240);background-color:var(--pbs-container-background-color);position:relative;display:none;flex-direction:column;align-items:center;justify-content:flex-start;width:92%;height:fit-content;max-height:100vh;border-radius:10px 10px 0 0}.pbs-container.open{display:flex}.pbs-container .pbs-gap-filler{position:absolute;bottom:calc(-100vh + .5px);left:0;background-color:var(--pbs-container-background-color);content:"";width:100%;height:100vh}.pbs-handle{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:30px;cursor:pointer}.pbs-handle.hidden{display:none}.pbs-button-reset{background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;border:none}button:focus.pbs-button-reset{outline:none}.pbs-handle-bar{background-color:#a8a8a8;position:relative;width:12%;height:7px;border-radius:12px}.pbs-handle-bar.hidden{display:none}.pbs-content-wrapper{position:relative;width:100%;height:fit-content;max-height:100%;overflow-y:scroll}.pbs-content-wrapper::-webkit-scrollbar{display:none}.example{-ms-overflow-style:none;scrollbar-width:none}')),document.head.appendChild(t)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();var Bt=Object.defineProperty,Mt=(t,e,n)=>e in t?Bt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,z=(t,e,n)=>Mt(t,typeof e!="symbol"?e+"":e,n);function L(t){return typeof t=="string"}function Pt(t,e){return t.classList.contains(V(e))}function G(t,e){t.classList.add(V(e))}function ot(t,e){t.classList.remove(V(e))}function _(t,e,n){L(n)&&(L(e)&&ot(t,e),G(t,n))}function V(t){return L(t)?t.trim().replace(/\./g,""):""}function I(t){return t.map(e=>V(e)).filter(Boolean).join(" ")}function Yt(t){return t.map(e=>e==null?void 0:e.trim()).filter(Boolean).map(e=>`.${e}`).join(" ")}const dt="open",ht="hidden";function rt(t,e){const n=e;if(Array.isArray(t)){t.forEach(o=>{K(o,n),o.setAttribute("aria-modal",n?"true":"false")});return}K(t,n),t.setAttribute("aria-modal",n?"true":"false")}function K(t,e){e?(G(t,dt),ot(t,ht)):(G(t,ht),ot(t,dt))}function pt(t){return t instanceof HTMLElement}function A(t){return typeof t=="number"&&!Number.isNaN(t)}function It(t){pt(t)&&t.focus()}function Rt(t){if(!pt(t)||t.offsetParent===null||"disabled"in t&&t.disabled)return!1;const e=t.getAttribute("tabindex"),n=A(e)?parseInt(e,10):-1,o=["INPUT","BUTTON","SELECT","TEXTAREA","A","AREA","IFRAME"].includes(t.tagName),r=t instanceof HTMLAnchorElement&&t.href!==""||t instanceof HTMLAreaElement&&t.href!=="";return o||r||n>-1}var T=(t=>(t.Backdrop="pbs-backdrop",t.Root="pbs-root",t.Container="pbs-container",t.GapFiller="pbs-gap-filler",t.Handle="pbs-handle",t.HandleBar="pbs-handle-bar",t.ContentWrapper="pbs-content-wrapper",t))(T||{}),it=(t=>(t.Button="pbs-button-reset",t.Dialog="pbs-dialog-reset",t))(it||{}),J=(t=>(t.Hidden="hidden",t))(J||{});function Y(t,e,n){const o=document.createElement(t);return e.split(" ").forEach(r=>{G(o,r)}),L(n)&&o.setAttribute("data-testid",n),o}Yt([T.Root,T.ContentWrapper]);function mt(t,e,n,o){switch(o){case"content-height":return e>=t?vt(t,e,n):0;case"middle":return-(t/2-e);case"top":return-(t-e)+n;default:return 0}}function ft(t,e){const n=e<t,o=e>t;return{isUp:n,isDown:o,stayedSame:e===t}}function gt(t,e){return e<t?-(t-e):e-t}function Q(t,e){return t>e?t-e:e-t}function Nt(t,e){const n=t<e,o=t>e;return{isUp:n,isDown:o,stayedSame:t===e}}function bt(t,e,n){const o=t==="above";return n.filter(r=>{const a=r*e.viewportHeight;return o?e.visibleHeight<a:e.visibleHeight>a})}function vt(t,e,n){return-(t-e)+n}function St(t){return Number(t.replace("px",""))}function Z(t,...e){return Number(t.toFixed(...e))}function Ct(t){const e=/(?<type>\w+)\((?<values>[^)]+)\)/g,n=[];let o;for(;(o=e.exec(t))!==null;){const r=o[1],a=o[2].split(",").map(i=>i.trim());n.push({type:r,values:a})}return n}function Ft(t){const e=t.style.transform,n=Ct(e);return{transform:e,transformValues:n}}function yt(t,e){return t.find(o=>o.type.startsWith(e))||null}const at="translate";function P(t){const e=t.style.transform,n=Ct(e),o=yt(n,at);return Et(o??{type:at,values:[]})}function tt(t,{x:e,y:n}){const{transform:o,transformValues:r}=Ft(t),a=yt(r,at);if(a){const i=Et(a);t.style.transform=`translate(${e??i.x??0}px,${n??i.y??0}px)`;return}if(o){t.style.transform=`${o}, translate(${e??0}px,${n??0}px)`;return}t.style.transform=`translate(${e??0}px,${n??0}px)`}function Et(t){if(t.type!=="translate")throw new Error(`Could not get coordinates from ${t.type}, since is not translate.`);const e=t.values[0],n=t.values[1];return{x:St(e)??0,y:St(n)??0}}function st(t){return t!=null}function wt(t,{min:e,max:n}){return st(n)&&t>=n?n:st(e)&&t<=e?e:t}const Wt=(t,e,n)=>{e instanceof HTMLElement&&!Pt(e,T.Handle)&&n.scrollTop>=1||(t.isDragging=!0)},jt=(t,e,n,o)=>r=>{o.startY=t.getCoordinates(r).y,o.containerStartTranslate=P(e),n.onDragStart()},Ut=(t,e,n,o,r)=>a=>{$t(a,t,n,o,r,e,n.marginTop)};function $t(t,e,n,o,r,a,i){if(!o.isDragging||!A(o.startY))return;const s=e.getCoordinates(t).y,u=gt(o.startY,s),p=window.innerHeight,c=a.clientHeight,m=c-(o.containerStartTranslate.y+u);if(m>=p)return;const C=ft(o.startY,s);if(C.isUp&&!n.expandable&&m>=c)return;r.start(()=>{tt(a,{y:o.containerStartTranslate.y+u})},0);const l=p-i,y=c-o.containerStartTranslate.y;if(C.isUp){const b=l-y,v=l-m,E=wt(1-Z(v/b,2),{min:0,max:1});n.onDragMove(C,E)}else if(C.isDown){const b=wt(Z(1-m/y,2),{min:0,max:1});n.onDragMove(C,b)}}const Gt=(t,e,n,o,r,a,i)=>s=>{if(!o.isDragging||(o.isDragging=!1,!A(o.startY)))return;n.onDragEnd();const u=o.startY,p=t.getCoordinates(s).y,c=P(e).y,m=ft(u,p),C=window.innerHeight,l=e.clientHeight;if(m.isUp){const y=[...n.snapPoints].sort((E,x)=>E-x),b=l+-c;if(!n.expandable&&b>=l)return;for(const E of y){const x=E*window.innerHeight;if(b<=x){const H=Q(b,x);i.translateContainer({startY:c,endY:c-H,animationFrame:r,bottomSheetContainer:e});return}}const v=vt(C,l,n.marginTop);i.translateContainer({startY:c,endY:v,animationFrame:r,bottomSheetContainer:e})}else if(m.isDown){const y=[...n.snapPoints].sort((b,v)=>v-b);for(const b of y){const v=b*window.innerHeight,E=l+-c;if(E>=v){const x=Q(E,v);i.translateContainer({startY:c,endY:c+x,animationFrame:r,bottomSheetContainer:e});return}}a()}};var R=(t=>(t[t.All=-1]="All",t[t.None=0]="None",t[t.Capture=1]="Capture",t[t.Target=2]="Target",t[t.Bubble=3]="Bubble",t))(R||{});function Tt(t){switch(t){case 0:return 0;case 1:return 1;case 2:return 2;case 3:return 3;default:return-1}}const _t={eventPhase:R.All};class X{constructor(e){z(this,"currentTarget"),this.currentTarget=e}addEventListeners({onStart:e,onStartOptions:n=_t,onMove:o,onEnd:r}){this.addTouchEventListeners({onStart:e,onStartOptions:n,onMove:o,onEnd:r}),this.addMouseEventListeners({onStart:e,onStartOptions:n,onMove:o,onEnd:r})}addTouchEventListeners({onStart:e,onStartOptions:n,onMove:o,onEnd:r}){e&&this.currentTarget.addEventListener("touchstart",a=>{if(n.eventPhase===R.All){e(a);return}Tt(a.eventPhase)===n.eventPhase&&e(a)},{passive:!0}),o&&this.currentTarget.addEventListener("touchmove",o),r&&this.currentTarget.addEventListener("touchend",r)}addMouseEventListeners({onStart:e,onStartOptions:n,onMove:o,onEnd:r}){e&&this.currentTarget.addEventListener("mousedown",a=>{if(n.eventPhase===R.All){e(a);return}Tt(a.eventPhase)===n.eventPhase&&e(a)},{passive:!0}),o&&this.currentTarget.addEventListener("mousemove",o),r&&this.currentTarget.addEventListener("mouseup",a=>{r(a)})}removeEventListeners({onStart:e,onMove:n,onEnd:o}){e&&this.currentTarget.removeEventListener("touchstart",e),o&&this.currentTarget.removeEventListener("touchend",o),n&&this.currentTarget.removeEventListener("touchmove",n),e&&this.currentTarget.removeEventListener("mousedown",e),n&&this.currentTarget.removeEventListener("mousemove",n),o&&this.currentTarget.removeEventListener("mouseup",o)}getCoordinates(e){if(e.type==="touchstart"||e.type==="mousedown"){if("touches"in e)return{x:e.touches[0].clientX,y:e.touches[0].clientY};if(e instanceof MouseEvent)return{x:e.clientX,y:e.clientY}}if(e.type==="touchend"||e.type==="mouseup"||e.type==="mousemove"||e.type==="touchmove"){if("touches"in e)return{x:e.changedTouches[0].clientX,y:e.changedTouches[0].clientY};if(e instanceof MouseEvent)return{x:e.clientX,y:e.clientY}}return{x:0,y:0}}}function Ht(t){const e=t;return`${e} ${e} 0px 0px`}function Xt(t,e){const n=qt(t);zt(n),n.bottomSheetContainer.style.width=t.width;const o=document.createElement("div");o.innerHTML=t.content??"";const r=window.innerHeight;n.bottomSheetContainer.style.maxHeight=`${r}px`,n.bottomSheetContentWrapper.appendChild(o);const a=Vt({bottomSheetElements:n,bottomSheetProps:t,options:e});return{elements:n,eventHandlers:a}}function qt(t){const e=Y("dialog",I([T.Root,it.Dialog,t.rootClass]),T.Root);e.ariaLabel=t.ariaLabel;const n=Y("section",I([T.Container,t.containerClass]),T.Container);t.containerBorderRadius&&(n.style.borderRadius=Ht(t.containerBorderRadius));const o=Y("div",T.GapFiller,T.GapFiller),r=Y("button",I([T.Handle,it.Button,t.shouldShowHandle?null:J.Hidden,t.handleClass]),T.Handle);r.setAttribute("type","button"),r.ariaLabel="bottom sheet close button";const a=Y("span",I([T.HandleBar,t.shouldShowHandle?null:J.Hidden]),T.HandleBar),i=Y("article",I([T.ContentWrapper,t.contentWrapperClass]),T.ContentWrapper),s=Y("div",I([T.Backdrop,t.backdropClass,J.Hidden]),T.Backdrop);return t.backdropColor&&(s.style.backgroundColor=t.backdropColor),t.backDropTransition&&(s.style.transition=t.backDropTransition),{bottomSheetRoot:e,bottomSheetBackdrop:s,bottomSheetContainer:n,bottomSheetHandle:r,bottomSheetHandleBar:a,bottomSheetContentWrapper:i,bottomSheetContainerGapFiller:o}}function zt({bottomSheetRoot:t,bottomSheetContainer:e,bottomSheetHandle:n,bottomSheetHandleBar:o,bottomSheetContentWrapper:r,bottomSheetContainerGapFiller:a}){t.appendChild(e),n.appendChild(o),e.appendChild(n),e.appendChild(r),e.appendChild(a)}function Vt({bottomSheetElements:t,bottomSheetProps:e,options:n}){const{bottomSheetRoot:o,bottomSheetContainer:r,bottomSheetHandle:a,bottomSheetContainerGapFiller:i,bottomSheetContentWrapper:s,bottomSheetBackdrop:u}=t,{animationFrame:p}=n,c=new X(a),m=new X(s),C=new X(i),l=e.dragTriggers.reduce((O,D)=>{const w=o.querySelectorAll(D);if(!w.length)return O;const h=Array.from(w).map(d=>d instanceof HTMLElement?new X(d):null).filter(d=>!!d);return[...O,...h]},[]),y=new X(window),b=jt(y,r,e,n.draggingState),v=Ut(y,r,e,n.draggingState,p),E=Gt(y,r,e,n.draggingState,p,n.onClose,n.bottomSheetState);function x(O){O.target instanceof Element&&!o.contains(O.target)&&n.onClose()}function H(O){Wt(n.draggingState,O.target,t.bottomSheetContentWrapper)}function j(O){const D=O??e;D.draggable&&(c.addEventListeners({onStart:H}),l.forEach(w=>{w.addEventListeners({onStart:H,onStartOptions:{eventPhase:R.Target}})})),D.draggable&&D.backgroundDraggable&&(m.addEventListeners({onStart:H,onStartOptions:{eventPhase:R.Target}}),C.addEventListeners({onStart:H})),D.draggable&&y.addEventListeners({onStart:b,onMove:v,onEnd:E}),D.draggable&&window.document.addEventListener("keyup",w=>{w.key==="Escape"&&n.onClose()}),a.addEventListener("keyup",w=>{if(w.key==="ArrowUp"){n.moveUp();return}if(w.key==="ArrowDown"){n.moveDown();return}if(w.shiftKey&&w.key==="Tab"){const h=U(t.bottomSheetContentWrapper);It(h)}})}function et(){e.shouldCloseOnOutsideClick?u.addEventListener("click",x):u.style.pointerEvents="none"}function q(){u.removeEventListener("click",x)}function U(O){let D=[...Array.from(O.childNodes).reverse()];for(;D.length;){const w=D.shift();if(Rt(w))return w;w&&(D=[...D,...Array.from(w.childNodes).reverse()])}return null}function nt(){c.removeEventListeners({onStart:H}),m.removeEventListeners({onStart:H}),C.removeEventListeners({onStart:H}),l.forEach(O=>{O.removeEventListeners({onStart:H})}),y.removeEventListeners({onStart:b,onMove:v,onEnd:E})}return{attachEventListeners:j,clearEventListeners:nt,attacheOnOpenEventListeners:et,clearOnOpenEventListeners:q}}class Kt{constructor(){z(this,"animationId"),z(this,"isInProgress"),z(this,"startedAt"),this.animationId=null,this.isInProgress=!1,this.startedAt=null}start(e,n,o=!1){this.isInProgress=!0;const r=a=>{this.startedAt||(this.startedAt=a);const i=a-this.startedAt,s=n===0?1:Z(i/n,2),u=s>=1&&!o;e(s),u?this.stop():this.animationId=requestAnimationFrame(r)};this.animationId=requestAnimationFrame(r)}stop(){this.isInProgress=!1,this.startedAt=null,A(this.animationId)&&cancelAnimationFrame(this.animationId)}}function Jt(t){const{startY:e,endY:n,bottomSheetContainer:o,animationFrame:r,onEnd:a,animationTimingFunction:i,animationDuration:s}=t,u=gt(e,n);r.stop();let p=!1;r.start(c=>{tt(o,{y:e+u*i(c)}),!p&&c>=1&&(a==null||a(),p=!0)},s)}const ct=(t,e)=>n=>{Jt({...n,animationTimingFunction:t,animationDuration:e})},N={TOP:"top",MIDDLE:"middle",CONTENT_HEIGHT:"content-height",CLOSED:"closed"};function Qt(t){return!(!A(t)||t>1||t<0)}function Zt(t,e){const n={set(o,r,a,i){return e(r,a),Reflect.set(o,r,a,i)}};return new Proxy(t,n)}function te(...t){console.error(t)}const F={EASE:"ease",EASE_IN:"ease-in",EASE_OUT:"ease-out",EASE_IN_OUT:"ease-in-out",SPRING:"spring"};function ee(t){for(const e of Object.values(F))if(e===t)return!0;return!1}function kt(t){return!!(t instanceof Object&&"p1x"in t&&"p1y"in t&&"p2x"in t&&"p2y"in t&&A(t.p1x)&&A(t.p1y)&&A(t.p2x)&&A(t.p2y))}function W(t,e,n,o){return function(s){return i(r(s))};function r(s){let u=0,p=1,c=s,m;if(s===0||s===1)return s;for(;u<p;){if(m=a(c),Math.abs(m-s)<.001)return c;s>m?u=c:p=c,c=(p+u)/2}return c}function a(s){return 3*t*s*Math.pow(1-s,2)+3*n*Math.pow(s,2)*(1-s)+Math.pow(s,3)}function i(s){return 3*e*s*Math.pow(1-s,2)+3*o*Math.pow(s,2)*(1-s)+Math.pow(s,3)}}const Ot=W(.25,.1,.25,1),ne=W(.42,0,1,1),Lt=W(.42,0,.58,1),oe=W(.4,.1,.6,1),re=W(.45,1.5,.55,1);function ie(t){switch(t){case F.EASE:return Ot;case F.EASE_IN:return ne;case F.EASE_OUT:return Lt;case F.EASE_IN_OUT:return oe;case F.SPRING:return re;default:return Ot}}function xt(t){return typeof t=="boolean"}const ae={ariaLabel:"Bottom sheet",content:"",defaultPosition:N.CONTENT_HEIGHT,marginTop:20,snapPoints:[],width:"92%",dragTriggers:[],beforeOpen:()=>{},afterOpen:()=>{},beforeClose:()=>{},afterClose:()=>{},onDragStart:()=>{},onDragMove:()=>{},onDragEnd:()=>{},expandable:!0,draggable:!0,backgroundDraggable:!0,shouldCloseOnOutsideClick:!0,shouldShowBackdrop:!0,shouldShowHandle:!0,backDropTransition:null,backdropColor:null,containerBorderRadius:null,rootClass:null,containerClass:null,handleClass:null,contentWrapperClass:null,backdropClass:null,draggingAnimationTimings:"ease-in-out",draggingAnimationDuration:180};function se(t){const e={...ae},n=Object.entries(t).reduce((o,r)=>{const[a,i]=r;return st(i)&&(o[a]=i),o},{});return{...e,...n}}function lt(t){if(kt(t)){const{p1x:e,p1y:n,p2x:o,p2y:r}=t;return W(e,n,o,r)}return ee(t)?ie(t):Lt}function ce(t,e,n,o){function r(a,i){switch(a){case"content":L(i)&&(t.bottomSheetContentWrapper.innerHTML=i);break;case"width":L(i)&&(t.bottomSheetContainer.style.width=i);break;case"shouldShowHandle":xt(i)||K(t.bottomSheetHandle,!1);break;case"shouldShowBackdrop":xt(i)||K(t.bottomSheetBackdrop,!1);break;case"containerBorderRadius":L(i)&&(t.bottomSheetContainer.style.borderRadius=Ht(i));break;case"backdropColor":L(i)&&(t.bottomSheetBackdrop.style.backgroundColor=i);break;case"backDropTransition":L(i)&&(t.bottomSheetBackdrop.style.transition=i);break;case"rootClass":if(!L(i))return;_(t.bottomSheetRoot,n.rootClass,i);break;case"containerClass":if(!L(i))return;_(t.bottomSheetContainer,n.containerClass,i);break;case"handleClass":if(!L(i))return;_(t.bottomSheetHandle,n.handleClass,i);break;case"contentWrapperClass":if(!L(i))return;_(t.bottomSheetContentWrapper,n.contentWrapperClass,i);break;case"backdropClass":if(!L(i))return;_(t.bottomSheetBackdrop,n.backdropClass,i);break;case"expandable":o.clearEventListeners(),o.attachEventListeners(n);break;case"draggable":o.clearEventListeners(),o.attachEventListeners(n);break;case"draggingAnimationTimings":if(kt(i)){const s=lt(i),u=ct(s,n.draggingAnimationDuration);e.translateContainer=u}break;case"draggingAnimationDuration":if(A(i)){const s=lt(n.draggingAnimationTimings),u=ct(s,i);e.translateContainer=u}break}}return r}function le(t){const e=se(t),n=lt(t.draggingAnimationTimings),o={isMounted:!1,translateContainer:ct(n,e.draggingAnimationDuration)},r={startY:null,containerStartTranslate:{x:0,y:0},isDragging:!1,originalDocumentOverflowY:null,originalDocumentOverscrollBehavior:null};function a(){r.originalDocumentOverflowY&&r.originalDocumentOverflowY!=="hidden"&&(document.body.style.overflowY=r.originalDocumentOverflowY),r.originalDocumentOverscrollBehavior&&(document.body.style.position=r.originalDocumentOverscrollBehavior)}const i=new Kt,s={animationFrame:i,onClose:E,bottomSheetState:o,draggingState:r,snapTo:w,moveUp:O,moveDown:D},{elements:u,eventHandlers:p}=Xt(e,s),c=Zt(e,ce(u,o,e,p)),{bottomSheetBackdrop:m,bottomSheetRoot:C,bottomSheetContainer:l}=u,y=h=>{const d=h??window.document.body;d.appendChild(C),d.appendChild(m);const f=window.innerHeight;tt(l,{y:f}),p.attachEventListeners(),o.isMounted=!0},b=()=>{p.clearEventListeners(),Object.values(u).forEach(h=>{h.remove()}),a(),o.isMounted=!1},v=()=>{var h;if(x()||te('Bottom Sheet is not mounted yet. call the "mount" method first.'),(h=t.beforeOpen)==null||h.call(t),H())return;rt(m,!0),c.shouldShowBackdrop||G(m,"transparent"),rt([l],!0),tt(l,{y:l.clientHeight});const d=window.innerHeight,f=mt(d,l.clientHeight,c.marginTop,c.defaultPosition),g=P(l).y;o.translateContainer({startY:g,endY:f,animationFrame:i,bottomSheetContainer:l,onEnd:t.afterOpen});const k=document.body.style.overflowY;r.originalDocumentOverflowY=k||"initial";const B=document.body.style.overscrollBehavior;r.originalDocumentOverscrollBehavior=B||"initial",document.body.style.overflow="hidden",document.body.style.overscrollBehavior="contain",u.bottomSheetHandle.focus(),p.attacheOnOpenEventListeners()};function E(){var h;if(j())return;(h=t.beforeClose)==null||h.call(t);const d=P(l).y,f=l.clientHeight;o.translateContainer({startY:d,endY:f,animationFrame:i,bottomSheetContainer:l,onEnd:()=>{var g;(g=t.afterClose)==null||g.call(t),rt([m,l],!1),p.clearOnOpenEventListeners()}}),a()}function x(){return o.isMounted}function H(){const h=P(l).y,d=window.innerHeight,f=l.clientHeight>=d?d:l.clientHeight;return h<=f}function j(){return!H()}function et(){const h=P(l).y,d=l.clientHeight,f=window.innerHeight;if(h<=5&&h>=-5)return N.CONTENT_HEIGHT;const g=d-h;if(g===f/2)return N.MIDDLE;const k=f-c.marginTop,B=10;return g<=k+B&&g>=k-B?N.TOP:N.CLOSED}function q(){return l.clientHeight}function U(h){if(!H())return;const d=P(l).y,f=l.clientHeight-d,g=window.innerHeight-h,k=Nt(f,g),B=Q(f,g);o.translateContainer({startY:d,endY:d+(k.isUp?-B:B),animationFrame:i,bottomSheetContainer:l})}function nt(h,{viewportHeight:d,visibleHeight:f}){let g=null;for(const k of h){const B=k*d,$=Q(f,B);(g===null||$<g)&&(g=$)}return{minOffset:g}}function O(){const h=[...c.snapPoints].reverse(),d=P(l).y,f=l.clientHeight,g=f-d;if(!c.expandable&&g>=f)return;const k=window.innerHeight,B=bt("above",{visibleHeight:g,viewportHeight:k},h),{minOffset:$}=nt(B,{visibleHeight:g,viewportHeight:k});if($===null&&g<k-c.marginTop){o.translateContainer({startY:d,endY:mt(k,f,c.marginTop,"top"),animationFrame:i,bottomSheetContainer:l});return}A($)&&o.translateContainer({startY:d,endY:d-$,animationFrame:i,bottomSheetContainer:l})}function D(){const h=P(l).y,d=l.clientHeight-h;if(d<1)return;const f=window.innerHeight,g=bt("below",{visibleHeight:d,viewportHeight:f},c.snapPoints),{minOffset:k}=nt(g,{visibleHeight:d,viewportHeight:f});A(k)&&o.translateContainer({startY:h,endY:h+k,animationFrame:i,bottomSheetContainer:l})}function w(h){const d=window.innerHeight;if(!Qt(h))return;const f=Z(d*h,2);U(f)}return{props:c,elements:u,mount:y,unmount:b,open:v,close:E,getIsMounted:x,getIsOpen:H,getIsClosed:j,getPosition:et,getHeight:q,moveTo:U,snapTo:w}}function ut(){return{elements:{bottomSheetRoot:void 0,bottomSheetBackdrop:void 0,bottomSheetContainer:void 0,bottomSheetHandle:void 0,bottomSheetHandleBar:void 0,bottomSheetContentWrapper:void 0,bottomSheetContainerGapFiller:void 0},mount:()=>{},unmount:()=>{},open:()=>{},close:()=>{},getIsMounted:()=>!1,getHeight:()=>0,getIsOpen:()=>!1,getIsClosed:()=>!0,getPosition:()=>N.CLOSED,moveTo:()=>{},snapTo:()=>{},props:{content:""}}}const ue=ut(),de=S.forwardRef(function(e,n){const{children:o,isOpen:r,setIsOpen:a,afterClose:i,mountingPointRef:s,...u}=e,p=S.useRef(ue),[c,m]=S.useState(p.current);S.useImperativeHandle(n,()=>c,[c]);const C=S.useCallback(()=>{a(!1),i==null||i()},[i]);S.useEffect(()=>{r?c.open():c.close()},[r]);const l=S.useRef(null);return S.useEffect(function(){var E;if(s&&!s.current)return;const b=At((E=e.mountingPointRef)==null?void 0:E.current)?e.mountingPointRef.current:window.document.body;if(!b||c.getIsMounted())return;const v=le({content:"",...u,afterClose:C});return v.mount(b),l.current=v.elements.bottomSheetContentWrapper??null,p.current=v,m(v),()=>{c.unmount()}},[e.mountingPointRef,u,C]),S.useEffect(function(){Object.assign(p.current.props,{...u}),m(p.current)},[u]),S.useEffect(function(){return()=>{p.current.unmount()}},[]),l.current?Dt.createPortal(e.children,l.current):null}),he=ut();function pe(t={}){const e=S.useRef(he),[n,o]=S.useState(!1),[r,a]=S.useState(e.current);S.useEffect(()=>{a(e.current)},[e.current]);const{beforeOpen:i,afterOpen:s,beforeClose:u,afterClose:p,onDragStart:c,onDragMove:m,onDragEnd:C,...l}=t,y=()=>{i==null||i()},b=()=>{s==null||s(),o(!0)},v=()=>{u==null||u()},E=()=>{p==null||p(),o(!1)},x=()=>{c==null||c()},H=(q,U)=>{m==null||m(q,U)},j=()=>{C==null||C()};return{props:S.useMemo(()=>({ref:e,isOpen:n,setIsOpen:o,beforeOpen:y,afterOpen:b,beforeClose:v,afterClose:E,onDragStart:x,onDragMove:H,onDragEnd:j,...l}),[e.current,n,o,t]),instance:r,isOpen:n,setIsOpen:o}}M.BottomSheet=de,M.createPlaceholderBottomSheet=ut,M.useBottomSheet=pe,Object.defineProperty(M,Symbol.toStringTag,{value:"Module"})});
1
+ (function(M,g){typeof exports=="object"&&typeof module<"u"?g(exports,require("react"),require("react-dom")):typeof define=="function"&&define.amd?define(["exports","react","react-dom"],g):(M=typeof globalThis<"u"?globalThis:M||self,g(M.BottomSheet={},M.React,M.ReactDOM))})(this,function(M,g,At){"use strict";function Bt(t){return t!=null}(function(){try{if(typeof document<"u"){var t=document.createElement("style");t.appendChild(document.createTextNode('.pbs-root{position:fixed;left:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;width:100%;height:fit-content;max-height:100vh;z-index:2}.pbs-dialog-reset{background-color:transparent;color:inherit;border:none;outline:none;padding:0;margin:0}.pbs-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background-color:transparent;z-index:1;transition:background-color .2s ease-out}.pbs-backdrop.hidden{visibility:hidden}.pbs-backdrop.open{background-color:#454545b3}.pbs-backdrop.transparent{background-color:transparent}.pbs-container{--pbs-container-background-color: rgb(240, 240, 240);background-color:var(--pbs-container-background-color);position:relative;display:none;flex-direction:column;align-items:center;justify-content:flex-start;width:92%;height:fit-content;max-height:100vh;border-radius:10px 10px 0 0}.pbs-container.open{display:flex}.pbs-container .pbs-gap-filler{position:absolute;bottom:calc(-100vh + .5px);left:0;background-color:var(--pbs-container-background-color);content:"";width:100%;height:100vh}.pbs-handle{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:30px;cursor:pointer}.pbs-handle.hidden{display:none}.pbs-button-reset{background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;border:none}button:focus.pbs-button-reset{outline:none}.pbs-handle-bar{background-color:#a8a8a8;position:relative;width:12%;height:7px;border-radius:12px}.pbs-handle-bar.hidden{display:none}.pbs-content-wrapper{position:relative;width:100%;height:fit-content;max-height:100%;overflow-y:scroll}.pbs-content-wrapper::-webkit-scrollbar{display:none}.example{-ms-overflow-style:none;scrollbar-width:none}')),document.head.appendChild(t)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();var Dt=Object.defineProperty,Mt=(t,e,n)=>e in t?Dt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,J=(t,e,n)=>Mt(t,typeof e!="symbol"?e+"":e,n);function x(t){return typeof t=="string"}function Pt(t,e){return t.classList.contains(Q(e))}function _(t,e){t.classList.add(Q(e))}function ot(t,e){t.classList.remove(Q(e))}function X(t,e,n){x(n)&&(x(e)&&ot(t,e),_(t,n))}function Q(t){return x(t)?t.trim().replace(/\./g,""):""}function R(t){return t.map(e=>Q(e)).filter(Boolean).join(" ")}function Yt(t){return t.map(e=>e==null?void 0:e.trim()).filter(Boolean).map(e=>`.${e}`).join(" ")}const dt="open",pt="hidden";function rt(t,e){const n=e;if(Array.isArray(t)){t.forEach(o=>{Z(o,n),o.setAttribute("aria-modal",n?"true":"false")});return}Z(t,n),t.setAttribute("aria-modal",n?"true":"false")}function Z(t,e){e?(_(t,dt),ot(t,pt)):(_(t,pt),ot(t,dt))}function ht(t){return t instanceof HTMLElement}function B(t){return typeof t=="number"&&!Number.isNaN(t)}function Rt(t){ht(t)&&t.focus()}function It(t){if(!ht(t)||t.offsetParent===null||"disabled"in t&&t.disabled)return!1;const e=t.getAttribute("tabindex"),n=B(e)?parseInt(e,10):-1,o=["INPUT","BUTTON","SELECT","TEXTAREA","A","AREA","IFRAME"].includes(t.tagName),r=t instanceof HTMLAnchorElement&&t.href!==""||t instanceof HTMLAreaElement&&t.href!=="";return o||r||n>-1}var k=(t=>(t.Backdrop="pbs-backdrop",t.Root="pbs-root",t.Container="pbs-container",t.GapFiller="pbs-gap-filler",t.Handle="pbs-handle",t.HandleBar="pbs-handle-bar",t.ContentWrapper="pbs-content-wrapper",t))(k||{}),it=(t=>(t.Button="pbs-button-reset",t.Dialog="pbs-dialog-reset",t))(it||{}),tt=(t=>(t.Hidden="hidden",t))(tt||{});function Y(t,e,n){const o=document.createElement(t);return e.split(" ").forEach(r=>{_(o,r)}),x(n)&&o.setAttribute("data-testid",n),o}Yt([k.Root,k.ContentWrapper]);function mt(t,e,n,o){switch(o){case"content-height":return e>=t?vt(t,e,n):0;case"middle":return-(t/2-e);case"top":return-(t-e)+n;default:return 0}}function ft(t,e){const n=e<t,o=e>t;return{isUp:n,isDown:o,stayedSame:e===t}}function bt(t,e){return e<t?-(t-e):e-t}function q(t,e){return t>e?t-e:e-t}function Wt(t,e){const n=t<e,o=t>e;return{isUp:n,isDown:o,stayedSame:t===e}}function gt(t,e,n){const o=t==="above";return n.filter(r=>{const a=r*e.viewportHeight;return o?e.visibleHeight<a:e.visibleHeight>a})}function vt(t,e,n){return-(t-e)+n}function St(t){return Number(t.replace("px",""))}function et(t,...e){return Number(t.toFixed(...e))}function yt(t){const e=/(?<type>\w+)\((?<values>[^)]+)\)/g,n=[];let o;for(;(o=e.exec(t))!==null;){const r=o[1],a=o[2].split(",").map(i=>i.trim());n.push({type:r,values:a})}return n}function Nt(t){const e=t.style.transform,n=yt(e);return{transform:e,transformValues:n}}function Ct(t,e){return t.find(o=>o.type.startsWith(e))||null}const at="translate";function P(t){const e=t.style.transform,n=yt(e),o=Ct(n,at);return Et(o??{type:at,values:[]})}function nt(t,{x:e,y:n}){const{transform:o,transformValues:r}=Nt(t),a=Ct(r,at);if(a){const i=Et(a);t.style.transform=`translate(${e??i.x??0}px,${n??i.y??0}px)`;return}if(o){t.style.transform=`${o}, translate(${e??0}px,${n??0}px)`;return}t.style.transform=`translate(${e??0}px,${n??0}px)`}function Et(t){if(t.type!=="translate")throw new Error(`Could not get coordinates from ${t.type}, since is not translate.`);const e=t.values[0],n=t.values[1];return{x:St(e)??0,y:St(n)??0}}function st(t){return t!=null}function wt(t,{min:e,max:n}){return st(n)&&t>=n?n:st(e)&&t<=e?e:t}const Ft=(t,e,n)=>{e instanceof HTMLElement&&!Pt(e,k.Handle)&&n.scrollTop>=1||(t.isDragging=!0)},jt=(t,e,n,o)=>r=>{o.startY=t.getCoordinates(r).y,o.containerStartTranslate=P(e),n.onDragStart()},Ut=(t,e,n,o,r)=>a=>{$t(a,t,n,o,r,e,n.marginTop)};function $t(t,e,n,o,r,a,i){if(!o.isDragging||!B(o.startY))return;const c=e.getCoordinates(t).y,u=bt(o.startY,c),h=window.innerHeight,s=a.clientHeight,m=s-(o.containerStartTranslate.y+u);if(m>=h)return;const E=ft(o.startY,c);if(E.isUp&&!n.expandable&&m>=s||n.preventClosing&&m<=s)return;r.start(()=>{nt(a,{y:o.containerStartTranslate.y+u})},0);const l=h-i,w=s-o.containerStartTranslate.y;if(E.isUp){const f=l-w,S=l-m,T=wt(1-et(S/f,2),{min:0,max:1});n.onDragMove(E,T)}else if(E.isDown){const f=wt(et(1-m/w,2),{min:0,max:1});n.onDragMove(E,f)}}const Gt=(t,e,n,o,r,a,i)=>c=>{if(!o.isDragging||(o.isDragging=!1,!B(o.startY)))return;n.onDragEnd();const u=o.startY,h=t.getCoordinates(c).y,s=P(e).y,m=ft(u,h),E=window.innerHeight,l=e.clientHeight;if(m.isUp){const w=[...n.snapPoints].sort((T,A)=>T-A),f=l+-s;if(!n.expandable&&f>=l)return;for(const T of w){const A=T*window.innerHeight;if(f<=A){const H=q(f,A);i.translateContainer({startY:s,endY:s-H,animationFrame:r,bottomSheetContainer:e});return}}const S=vt(E,l,n.marginTop);i.translateContainer({startY:s,endY:S,animationFrame:r,bottomSheetContainer:e})}else if(m.isDown){const w=[...n.snapPoints].sort((f,S)=>S-f);for(const f of w){const S=f*window.innerHeight,T=l+-s;if(T>=S){const A=q(T,S);i.translateContainer({startY:s,endY:s+A,animationFrame:r,bottomSheetContainer:e});return}}if(n.preventClosing){const f=l+-s;if(f>=l){const S=q(f,l);i.translateContainer({startY:s,endY:s+S,animationFrame:r,bottomSheetContainer:e})}return}a()}};var I=(t=>(t[t.All=-1]="All",t[t.None=0]="None",t[t.Capture=1]="Capture",t[t.Target=2]="Target",t[t.Bubble=3]="Bubble",t))(I||{});function Tt(t){switch(t){case 0:return 0;case 1:return 1;case 2:return 2;case 3:return 3;default:return-1}}const _t={eventPhase:I.All};class z{constructor(e){J(this,"currentTarget"),this.currentTarget=e}addEventListeners({onStart:e,onStartOptions:n=_t,onMove:o,onEnd:r}){this.addTouchEventListeners({onStart:e,onStartOptions:n,onMove:o,onEnd:r}),this.addMouseEventListeners({onStart:e,onStartOptions:n,onMove:o,onEnd:r})}addTouchEventListeners({onStart:e,onStartOptions:n,onMove:o,onEnd:r}){e&&this.currentTarget.addEventListener("touchstart",a=>{if(n.eventPhase===I.All){e(a);return}Tt(a.eventPhase)===n.eventPhase&&e(a)},{passive:!0}),o&&this.currentTarget.addEventListener("touchmove",o),r&&this.currentTarget.addEventListener("touchend",r)}addMouseEventListeners({onStart:e,onStartOptions:n,onMove:o,onEnd:r}){e&&this.currentTarget.addEventListener("mousedown",a=>{if(n.eventPhase===I.All){e(a);return}Tt(a.eventPhase)===n.eventPhase&&e(a)},{passive:!0}),o&&this.currentTarget.addEventListener("mousemove",o),r&&this.currentTarget.addEventListener("mouseup",a=>{r(a)})}removeEventListeners({onStart:e,onMove:n,onEnd:o}){e&&this.currentTarget.removeEventListener("touchstart",e),o&&this.currentTarget.removeEventListener("touchend",o),n&&this.currentTarget.removeEventListener("touchmove",n),e&&this.currentTarget.removeEventListener("mousedown",e),n&&this.currentTarget.removeEventListener("mousemove",n),o&&this.currentTarget.removeEventListener("mouseup",o)}getCoordinates(e){if(e.type==="touchstart"||e.type==="mousedown"){if("touches"in e)return{x:e.touches[0].clientX,y:e.touches[0].clientY};if(e instanceof MouseEvent)return{x:e.clientX,y:e.clientY}}if(e.type==="touchend"||e.type==="mouseup"||e.type==="mousemove"||e.type==="touchmove"){if("touches"in e)return{x:e.changedTouches[0].clientX,y:e.changedTouches[0].clientY};if(e instanceof MouseEvent)return{x:e.clientX,y:e.clientY}}return{x:0,y:0}}}function kt(t){const e=t;return`${e} ${e} 0px 0px`}function Xt(t,e){const n=qt(t);zt(n),n.bottomSheetContainer.style.width=t.width;const o=document.createElement("div");o.innerHTML=t.content??"";const r=window.innerHeight;n.bottomSheetContainer.style.maxHeight=`${r}px`,n.bottomSheetContentWrapper.appendChild(o);const a=Vt({bottomSheetElements:n,bottomSheetProps:t,options:e});return t.rootStyle&&Object.assign(n.bottomSheetRoot.style,t.rootStyle),t.backdropStyle&&Object.assign(n.bottomSheetBackdrop.style,t.backdropStyle),t.containerStyle&&Object.assign(n.bottomSheetContainer.style,t.containerStyle),t.handleStyle&&Object.assign(n.bottomSheetHandleBar.style,t.handleStyle),t.contentWrapperStyle&&Object.assign(n.bottomSheetContentWrapper.style,t.contentWrapperStyle),{elements:n,eventHandlers:a}}function qt(t){const e=Y("dialog",R([k.Root,it.Dialog,t.rootClass]),k.Root);e.ariaLabel=t.ariaLabel;const n=Y("section",R([k.Container,t.containerClass]),k.Container);t.containerBorderRadius&&(n.style.borderRadius=kt(t.containerBorderRadius));const o=Y("div",k.GapFiller,k.GapFiller),r=Y("button",R([k.Handle,it.Button,t.shouldShowHandle?null:tt.Hidden,t.handleClass]),k.Handle);r.setAttribute("type","button"),r.ariaLabel="bottom sheet close button";const a=Y("span",R([k.HandleBar,t.shouldShowHandle?null:tt.Hidden]),k.HandleBar),i=Y("article",R([k.ContentWrapper,t.contentWrapperClass]),k.ContentWrapper),c=Y("div",R([k.Backdrop,t.backdropClass,tt.Hidden]),k.Backdrop);return t.backdropColor&&(c.style.backgroundColor=t.backdropColor),t.backDropTransition&&(c.style.transition=t.backDropTransition),{bottomSheetRoot:e,bottomSheetBackdrop:c,bottomSheetContainer:n,bottomSheetHandle:r,bottomSheetHandleBar:a,bottomSheetContentWrapper:i,bottomSheetContainerGapFiller:o}}function zt({bottomSheetRoot:t,bottomSheetContainer:e,bottomSheetHandle:n,bottomSheetHandleBar:o,bottomSheetContentWrapper:r,bottomSheetContainerGapFiller:a}){t.appendChild(e),n.appendChild(o),e.appendChild(n),e.appendChild(r),e.appendChild(a)}function Vt({bottomSheetElements:t,bottomSheetProps:e,options:n}){const{bottomSheetRoot:o,bottomSheetContainer:r,bottomSheetHandle:a,bottomSheetContainerGapFiller:i,bottomSheetContentWrapper:c,bottomSheetBackdrop:u}=t,{animationFrame:h}=n,s=new z(a),m=new z(c),E=new z(i),l=e.dragTriggers.reduce((O,C)=>{const y=o.querySelectorAll(C);if(!y.length)return O;const p=Array.from(y).map(d=>d instanceof HTMLElement?new z(d):null).filter(d=>!!d);return[...O,...p]},[]),w=new z(window),f=jt(w,r,e,n.draggingState),S=Ut(w,r,e,n.draggingState,h),T=Gt(w,r,e,n.draggingState,h,n.onClose,n.bottomSheetState);function A(O){O.target instanceof Element&&!o.contains(O.target)&&n.onClose()}function H(O){Ft(n.draggingState,O.target,t.bottomSheetContentWrapper)}function j(O){const C=O??e;C.draggable&&(s.addEventListeners({onStart:H}),l.forEach(y=>{y.addEventListeners({onStart:H,onStartOptions:{eventPhase:I.Target}})})),C.draggable&&C.backgroundDraggable&&(m.addEventListeners({onStart:H,onStartOptions:{eventPhase:I.Target}}),E.addEventListeners({onStart:H})),C.draggable&&w.addEventListeners({onStart:f,onMove:S,onEnd:T}),C.draggable&&window.document.addEventListener("keyup",y=>{y.key==="Escape"&&n.onClose()}),a.addEventListener("keyup",y=>{if(y.key==="ArrowUp"){n.moveUp();return}if(y.key==="ArrowDown"){n.moveDown();return}if(y.shiftKey&&y.key==="Tab"){const p=U(t.bottomSheetContentWrapper);Rt(p)}})}function V(){e.shouldCloseOnOutsideClick?u.addEventListener("click",A):u.style.pointerEvents="none"}function K(){u.removeEventListener("click",A)}function U(O){let C=[...Array.from(O.childNodes).reverse()];for(;C.length;){const y=C.shift();if(It(y))return y;y&&(C=[...C,...Array.from(y.childNodes).reverse()])}return null}function $(){s.removeEventListeners({onStart:H}),m.removeEventListeners({onStart:H}),E.removeEventListeners({onStart:H}),l.forEach(O=>{O.removeEventListeners({onStart:H})}),w.removeEventListeners({onStart:f,onMove:S,onEnd:T})}return{attachEventListeners:j,clearEventListeners:$,attacheOnOpenEventListeners:V,clearOnOpenEventListeners:K}}class Kt{constructor(){J(this,"animationId"),J(this,"isInProgress"),J(this,"startedAt"),this.animationId=null,this.isInProgress=!1,this.startedAt=null}start(e,n,o=!1){this.isInProgress=!0;const r=a=>{this.startedAt||(this.startedAt=a);const i=a-this.startedAt,c=n===0?1:et(i/n,2),u=c>=1&&!o;e(c),u?this.stop():this.animationId=requestAnimationFrame(r)};this.animationId=requestAnimationFrame(r)}stop(){this.isInProgress=!1,this.startedAt=null,B(this.animationId)&&cancelAnimationFrame(this.animationId)}}function Jt(t){const{startY:e,endY:n,bottomSheetContainer:o,animationFrame:r,onEnd:a,animationTimingFunction:i,animationDuration:c}=t,u=bt(e,n);r.stop();let h=!1;r.start(s=>{nt(o,{y:e+u*i(s)}),!h&&s>=1&&(a==null||a(),h=!0)},c)}const ct=(t,e)=>n=>{Jt({...n,animationTimingFunction:t,animationDuration:e})},W={TOP:"top",MIDDLE:"middle",CONTENT_HEIGHT:"content-height",CLOSED:"closed"};function Qt(t){return!(!B(t)||t>1||t<0)}function Zt(t,e){const n={set(o,r,a,i){return e(r,a),Reflect.set(o,r,a,i)}};return new Proxy(t,n)}function te(...t){console.error(t)}const N={EASE:"ease",EASE_IN:"ease-in",EASE_OUT:"ease-out",EASE_IN_OUT:"ease-in-out",SPRING:"spring"};function ee(t){for(const e of Object.values(N))if(e===t)return!0;return!1}function Ht(t){return!!(t instanceof Object&&"p1x"in t&&"p1y"in t&&"p2x"in t&&"p2y"in t&&B(t.p1x)&&B(t.p1y)&&B(t.p2x)&&B(t.p2y))}function F(t,e,n,o){return function(c){return i(r(c))};function r(c){let u=0,h=1,s=c,m;if(c===0||c===1)return c;for(;u<h;){if(m=a(s),Math.abs(m-c)<.001)return s;c>m?u=s:h=s,s=(h+u)/2}return s}function a(c){return 3*t*c*Math.pow(1-c,2)+3*n*Math.pow(c,2)*(1-c)+Math.pow(c,3)}function i(c){return 3*e*c*Math.pow(1-c,2)+3*o*Math.pow(c,2)*(1-c)+Math.pow(c,3)}}const Ot=F(.25,.1,.25,1),ne=F(.42,0,1,1),Lt=F(.42,0,.58,1),oe=F(.4,.1,.6,1),re=F(.45,1.5,.55,1);function ie(t){switch(t){case N.EASE:return Ot;case N.EASE_IN:return ne;case N.EASE_OUT:return Lt;case N.EASE_IN_OUT:return oe;case N.SPRING:return re;default:return Ot}}function xt(t){return typeof t=="boolean"}const ae={ariaLabel:"Bottom sheet",content:"",defaultPosition:W.CONTENT_HEIGHT,marginTop:20,snapPoints:[],width:"92%",dragTriggers:[],beforeOpen:()=>{},afterOpen:()=>{},beforeClose:()=>{},afterClose:()=>{},onDragStart:()=>{},onDragMove:()=>{},onDragEnd:()=>{},expandable:!0,preventClosing:!1,draggable:!0,backgroundDraggable:!0,shouldCloseOnOutsideClick:!0,shouldShowBackdrop:!0,shouldShowHandle:!0,backDropTransition:null,backdropColor:null,containerBorderRadius:null,rootClass:null,containerClass:null,handleClass:null,contentWrapperClass:null,backdropClass:null,draggingAnimationTimings:"ease-in-out",draggingAnimationDuration:180,rootStyle:{},containerStyle:{},handleStyle:{},contentWrapperStyle:{},backdropStyle:{}};function se(t){const e={...ae},n=Object.entries(t).reduce((o,r)=>{const[a,i]=r;return st(i)&&(o[a]=i),o},{});return{...e,...n}}function lt(t){if(Ht(t)){const{p1x:e,p1y:n,p2x:o,p2y:r}=t;return F(e,n,o,r)}return ee(t)?ie(t):Lt}function ce(t,e,n,o){function r(a,i){switch(a){case"content":x(i)&&(t.bottomSheetContentWrapper.innerHTML=i);break;case"width":x(i)&&(t.bottomSheetContainer.style.width=i);break;case"shouldShowHandle":xt(i)||Z(t.bottomSheetHandle,!1);break;case"shouldShowBackdrop":xt(i)||Z(t.bottomSheetBackdrop,!1);break;case"containerBorderRadius":x(i)&&(t.bottomSheetContainer.style.borderRadius=kt(i));break;case"backdropColor":x(i)&&(t.bottomSheetBackdrop.style.backgroundColor=i);break;case"backDropTransition":x(i)&&(t.bottomSheetBackdrop.style.transition=i);break;case"rootClass":if(!x(i))return;X(t.bottomSheetRoot,n.rootClass,i);break;case"containerClass":if(!x(i))return;X(t.bottomSheetContainer,n.containerClass,i);break;case"handleClass":if(!x(i))return;X(t.bottomSheetHandle,n.handleClass,i);break;case"contentWrapperClass":if(!x(i))return;X(t.bottomSheetContentWrapper,n.contentWrapperClass,i);break;case"backdropClass":if(!x(i))return;X(t.bottomSheetBackdrop,n.backdropClass,i);break;case"expandable":o.clearEventListeners(),o.attachEventListeners(n);break;case"preventClosing":o.clearEventListeners(),o.attachEventListeners(n);break;case"draggable":o.clearEventListeners(),o.attachEventListeners(n);break;case"draggingAnimationTimings":if(Ht(i)){const c=lt(i),u=ct(c,n.draggingAnimationDuration);e.translateContainer=u}break;case"draggingAnimationDuration":if(B(i)){const c=lt(n.draggingAnimationTimings),u=ct(c,i);e.translateContainer=u}break;case"rootStyle":n.rootStyle&&Object.assign(t.bottomSheetRoot.style,n.rootStyle);break;case"backdropStyle":n.backdropStyle&&Object.assign(t.bottomSheetBackdrop.style,n.backdropStyle);break;case"containerStyle":n.containerStyle&&Object.assign(t.bottomSheetContainer.style,n.containerStyle);break;case"handleStyle":n.handleStyle&&Object.assign(t.bottomSheetHandleBar.style,n.handleStyle);break;case"contentWrapperStyle":n.contentWrapperStyle&&Object.assign(t.bottomSheetContentWrapper.style,n.contentWrapperStyle);break}}return r}function le(t){const e=se(t),n=lt(t.draggingAnimationTimings),o={isMounted:!1,translateContainer:ct(n,e.draggingAnimationDuration)},r={startY:null,containerStartTranslate:{x:0,y:0},isDragging:!1,originalDocumentOverflowY:null,originalDocumentOverscrollBehavior:null};function a(){r.originalDocumentOverflowY&&r.originalDocumentOverflowY!=="hidden"&&(document.body.style.overflowY=r.originalDocumentOverflowY),r.originalDocumentOverscrollBehavior&&(document.body.style.position=r.originalDocumentOverscrollBehavior)}const i=new Kt,c={animationFrame:i,onClose:T,bottomSheetState:o,draggingState:r,snapTo:y,moveUp:O,moveDown:C},{elements:u,eventHandlers:h}=Xt(e,c),s=Zt(e,ce(u,o,e,h)),{bottomSheetBackdrop:m,bottomSheetRoot:E,bottomSheetContainer:l}=u,w=p=>{const d=p??window.document.body;d.appendChild(E),d.appendChild(m);const b=window.innerHeight;nt(l,{y:b}),h.attachEventListeners(),o.isMounted=!0},f=()=>{h.clearEventListeners(),Object.values(u).forEach(p=>{p.remove()}),a(),o.isMounted=!1},S=()=>{var p;if(A()||te('Bottom Sheet is not mounted yet. call the "mount" method first.'),(p=t.beforeOpen)==null||p.call(t),H())return;rt(m,!0),s.shouldShowBackdrop||_(m,"transparent"),rt([l],!0),nt(l,{y:l.clientHeight});const d=window.innerHeight,b=mt(d,l.clientHeight,s.marginTop,s.defaultPosition),v=P(l).y;o.translateContainer({startY:v,endY:b,animationFrame:i,bottomSheetContainer:l,onEnd:t.afterOpen});const L=document.body.style.overflowY;r.originalDocumentOverflowY=L||"initial";const D=document.body.style.overscrollBehavior;r.originalDocumentOverscrollBehavior=D||"initial",document.body.style.overflow="hidden",document.body.style.overscrollBehavior="contain",u.bottomSheetHandle.focus(),h.attacheOnOpenEventListeners()};function T(){var p;if(j())return;(p=t.beforeClose)==null||p.call(t);const d=P(l).y,b=l.clientHeight;o.translateContainer({startY:d,endY:b,animationFrame:i,bottomSheetContainer:l,onEnd:()=>{var v;(v=t.afterClose)==null||v.call(t),rt([m,l],!1),h.clearOnOpenEventListeners()}}),a()}function A(){return o.isMounted}function H(){const p=P(l).y,d=window.innerHeight,b=l.clientHeight>=d?d:l.clientHeight;return p<=b}function j(){return!H()}function V(){const p=P(l).y,d=l.clientHeight,b=window.innerHeight;if(p<=5&&p>=-5)return W.CONTENT_HEIGHT;const v=d-p;if(v===b/2)return W.MIDDLE;const L=b-s.marginTop,D=10;return v<=L+D&&v>=L-D?W.TOP:W.CLOSED}function K(){return l.clientHeight}function U(p){if(!H())return;const d=P(l).y,b=l.clientHeight-d,v=window.innerHeight-p,L=Wt(b,v),D=q(b,v);o.translateContainer({startY:d,endY:d+(L.isUp?-D:D),animationFrame:i,bottomSheetContainer:l})}function $(p,{viewportHeight:d,visibleHeight:b}){let v=null;for(const L of p){const D=L*d,G=q(b,D);(v===null||G<v)&&(v=G)}return{minOffset:v}}function O(){const p=[...s.snapPoints].reverse(),d=P(l).y,b=l.clientHeight,v=b-d;if(!s.expandable&&v>=b)return;const L=window.innerHeight,D=gt("above",{visibleHeight:v,viewportHeight:L},p),{minOffset:G}=$(D,{visibleHeight:v,viewportHeight:L});if(G===null&&v<L-s.marginTop){o.translateContainer({startY:d,endY:mt(L,b,s.marginTop,"top"),animationFrame:i,bottomSheetContainer:l});return}B(G)&&o.translateContainer({startY:d,endY:d-G,animationFrame:i,bottomSheetContainer:l})}function C(){const p=P(l).y,d=l.clientHeight-p;if(d<1)return;const b=window.innerHeight,v=gt("below",{visibleHeight:d,viewportHeight:b},s.snapPoints),{minOffset:L}=$(v,{visibleHeight:d,viewportHeight:b});B(L)&&o.translateContainer({startY:p,endY:p+L,animationFrame:i,bottomSheetContainer:l})}function y(p){const d=window.innerHeight;if(!Qt(p))return;const b=et(d*p,2);U(b)}return{props:s,elements:u,mount:w,unmount:f,open:S,close:T,getIsMounted:A,getIsOpen:H,getIsClosed:j,getPosition:V,getHeight:K,moveTo:U,snapTo:y}}function ut(){return{elements:{bottomSheetRoot:void 0,bottomSheetBackdrop:void 0,bottomSheetContainer:void 0,bottomSheetHandle:void 0,bottomSheetHandleBar:void 0,bottomSheetContentWrapper:void 0,bottomSheetContainerGapFiller:void 0},mount:()=>{},unmount:()=>{},open:()=>{},close:()=>{},getIsMounted:()=>!1,getHeight:()=>0,getIsOpen:()=>!1,getIsClosed:()=>!0,getPosition:()=>W.CLOSED,moveTo:()=>{},snapTo:()=>{},props:{content:""}}}const ue=ut(),de=g.forwardRef(function(e,n){const{children:o,isOpen:r,setIsOpen:a,afterClose:i,mountingPointRef:c,...u}=e,h=g.useRef(ue),[s,m]=g.useState(h.current);g.useImperativeHandle(n,()=>s,[s]);const E=g.useCallback(()=>{a(!1),i==null||i()},[i]);g.useEffect(()=>{r?s.open():s.close()},[r]);const l=g.useRef(null);return g.useEffect(function(){var T;if(c&&!c.current)return;const f=Bt((T=e.mountingPointRef)==null?void 0:T.current)?e.mountingPointRef.current:window.document.body;if(!f||s.getIsMounted())return;const S=le({content:"",...u,afterClose:E});return S.mount(f),l.current=S.elements.bottomSheetContentWrapper??null,h.current=S,m(S),()=>{s.unmount()}},[e.mountingPointRef,u,E]),g.useEffect(function(){Object.assign(h.current.props,{...u}),m(h.current)},[u]),g.useEffect(function(){return()=>{h.current.unmount()}},[]),l.current?At.createPortal(e.children,l.current):null}),pe=ut();function he(t={}){const e=g.useRef(pe),[n,o]=g.useState(!1),[r,a]=g.useState(e.current);g.useEffect(()=>{a(e.current)},[e.current]);const{beforeOpen:i,afterOpen:c,beforeClose:u,afterClose:h,onDragStart:s,onDragMove:m,onDragEnd:E,...l}=t,w=()=>{i==null||i()},f=()=>{c==null||c(),o(!0)},S=()=>{u==null||u()},T=()=>{h==null||h(),o(!1)},A=()=>{s==null||s()},H=(C,y)=>{m==null||m(C,y)},j=()=>{E==null||E()},V=g.useMemo(()=>({ref:e,isOpen:n,setIsOpen:o,beforeOpen:w,afterOpen:f,beforeClose:S,afterClose:T,onDragStart:A,onDragMove:H,onDragEnd:j,...l}),[e.current,n,o,t]),K=g.useCallback(()=>{o(!0)},[o]),U=g.useCallback(()=>{o(!0)},[o]),$=g.useCallback((...C)=>{r.moveTo(...C)},[r]),O=g.useCallback((...C)=>{r.snapTo(...C)},[r]);return{props:V,instance:r,isOpen:n,setIsOpen:o,open:K,close:U,moveTo:$,snapTo:O}}M.BottomSheet=de,M.createPlaceholderBottomSheet=ut,M.useBottomSheet=he,Object.defineProperty(M,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plainsheet/react",
3
- "version": "0.4.5",
3
+ "version": "0.4.8",
4
4
  "private": false,
5
5
  "sideEffects": false,
6
6
  "license": "MIT",
@@ -31,7 +31,7 @@
31
31
  "access": "public"
32
32
  },
33
33
  "dependencies": {
34
- "@plainsheet/core": "0.7.5",
34
+ "@plainsheet/core": "0.7.8",
35
35
  "@plainsheet/utility": "0.0.3"
36
36
  },
37
37
  "devDependencies": {