@surdeddd/bottom-sheet 0.1.0
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.
- package/LICENSE +21 -0
- package/README.md +377 -0
- package/dist/BottomSheetEngine-CvSVbo6c.d.cts +704 -0
- package/dist/BottomSheetEngine-DbO8rW_3.d.ts +704 -0
- package/dist/element.cjs +3442 -0
- package/dist/element.d.cts +88 -0
- package/dist/element.d.ts +88 -0
- package/dist/element.iife.global.js +3 -0
- package/dist/element.js +3442 -0
- package/dist/index.cjs +3693 -0
- package/dist/index.d.cts +184 -0
- package/dist/index.d.ts +184 -0
- package/dist/index.js +3669 -0
- package/dist/integrations/formik.cjs +27 -0
- package/dist/integrations/formik.d.cts +27 -0
- package/dist/integrations/formik.d.ts +27 -0
- package/dist/integrations/formik.js +25 -0
- package/dist/integrations/react-hook-form.cjs +28 -0
- package/dist/integrations/react-hook-form.d.cts +30 -0
- package/dist/integrations/react-hook-form.d.ts +30 -0
- package/dist/integrations/react-hook-form.js +26 -0
- package/dist/overlay.cjs +1058 -0
- package/dist/overlay.d.cts +282 -0
- package/dist/overlay.d.ts +282 -0
- package/dist/overlay.js +1053 -0
- package/dist/preact.cjs +2 -0
- package/dist/preact.d.cts +5 -0
- package/dist/preact.d.ts +5 -0
- package/dist/preact.js +2 -0
- package/dist/qwik.cjs +3046 -0
- package/dist/qwik.d.cts +55 -0
- package/dist/qwik.d.ts +55 -0
- package/dist/qwik.js +3044 -0
- package/dist/react.cjs +4162 -0
- package/dist/react.d.cts +301 -0
- package/dist/react.d.ts +301 -0
- package/dist/react.js +4156 -0
- package/dist/solid.cjs +3063 -0
- package/dist/solid.d.cts +66 -0
- package/dist/solid.d.ts +66 -0
- package/dist/solid.js +3061 -0
- package/dist/styles.css +508 -0
- package/dist/svelte.cjs +3200 -0
- package/dist/svelte.d.ts +89 -0
- package/dist/svelte.js +3177 -0
- package/dist/themes/ios.css +24 -0
- package/dist/themes/material.css +24 -0
- package/dist/themes/vercel.css +24 -0
- package/dist/transform-Brkf-wzo.d.cts +4 -0
- package/dist/transform-Brkf-wzo.d.ts +4 -0
- package/dist/vue.cjs +3361 -0
- package/dist/vue.d.ts +68 -0
- package/dist/vue.js +3358 -0
- package/package.json +288 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { E as EngineState } from './BottomSheetEngine-CvSVbo6c.cjs';
|
|
2
|
+
import './transform-Brkf-wzo.cjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Custom element wrapping the engine. Works in any framework — drop it into
|
|
6
|
+
* Angular, Svelte, plain HTML, WordPress, anything that accepts HTML.
|
|
7
|
+
*
|
|
8
|
+
* <bottom-sheet snap-points='[{"id":"min","size":80},{"id":"full","size":"80%"}]'
|
|
9
|
+
* initial="min">
|
|
10
|
+
* <div slot="header">Title</div>
|
|
11
|
+
* <p>Content</p>
|
|
12
|
+
* </bottom-sheet>
|
|
13
|
+
*
|
|
14
|
+
* ## Per-snap header limitation
|
|
15
|
+
*
|
|
16
|
+
* The framework adapters (React, Vue, Svelte) accept a function/scoped-slot
|
|
17
|
+
* `header` that re-renders on every snap transition — so the header can morph
|
|
18
|
+
* (e.g. minimized vs full) without imperative wiring. The Web Component
|
|
19
|
+
* deliberately does NOT replicate this: native `<slot>` in Shadow DOM has
|
|
20
|
+
* no concept of "render this slot with these props per state", and
|
|
21
|
+
* synthesizing that on top would either bloat the shadow tree or force
|
|
22
|
+
* Light DOM consumers into an opaque, framework-flavored API.
|
|
23
|
+
*
|
|
24
|
+
* If you need per-snap header content with the Web Component, listen to the
|
|
25
|
+
* `snap` CustomEvent and update the slotted node imperatively:
|
|
26
|
+
*
|
|
27
|
+
* const sheet = document.querySelector("bottom-sheet");
|
|
28
|
+
* const header = sheet.querySelector('[slot="header"]');
|
|
29
|
+
* sheet.addEventListener("snap", e => {
|
|
30
|
+
* const { id } = e.detail;
|
|
31
|
+
* header.textContent = id === "min" ? "Title" : "Full title";
|
|
32
|
+
* });
|
|
33
|
+
*
|
|
34
|
+
* `snap` fires after the animation settles, so the swap is jank-free.
|
|
35
|
+
*/
|
|
36
|
+
declare class BottomSheetElement extends HTMLElement {
|
|
37
|
+
static get observedAttributes(): string[];
|
|
38
|
+
private engine;
|
|
39
|
+
private root;
|
|
40
|
+
private offHandlers;
|
|
41
|
+
private refs;
|
|
42
|
+
private backdropClickHandler;
|
|
43
|
+
constructor();
|
|
44
|
+
connectedCallback(): void;
|
|
45
|
+
disconnectedCallback(): void;
|
|
46
|
+
attributeChangedCallback(): void;
|
|
47
|
+
private teardownEngine;
|
|
48
|
+
private initEngine;
|
|
49
|
+
snapTo(id: string): Promise<void>;
|
|
50
|
+
open(id?: string): Promise<void>;
|
|
51
|
+
close(): Promise<void>;
|
|
52
|
+
setAllowed(ids: string[], snap?: string): void;
|
|
53
|
+
get sheetState(): EngineState | null;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Opt-in literal-id narrowing for the Web Component instance. The class
|
|
57
|
+
* itself stays `string`-typed — making `BottomSheetElement` generic would
|
|
58
|
+
* break `customElements.define`, which registers a 1:1 tag→class mapping
|
|
59
|
+
* (one runtime class per tag, regardless of TS generic instantiations).
|
|
60
|
+
*
|
|
61
|
+
* Consumers narrow at the call site by typing the `querySelector` result:
|
|
62
|
+
*
|
|
63
|
+
* ```ts
|
|
64
|
+
* import type { TypedBottomSheetElement } from "@surdeddd/bottom-sheet/element";
|
|
65
|
+
*
|
|
66
|
+
* const el = document.querySelector<
|
|
67
|
+
* TypedBottomSheetElement<"min" | "full">
|
|
68
|
+
* >("bottom-sheet");
|
|
69
|
+
* el?.snapTo("typo"); // ❌ TS2345
|
|
70
|
+
* el?.snapTo("full"); // ✓
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* Defaults `TId = string` so untyped `querySelector("bottom-sheet")` keeps
|
|
74
|
+
* the existing string-loose behaviour. The runtime class is unchanged; this
|
|
75
|
+
* is purely a TS-level convenience layered on the HTMLElement instance.
|
|
76
|
+
*/
|
|
77
|
+
type TypedBottomSheetElement<TId extends string = string> = HTMLElement & {
|
|
78
|
+
snapTo: (id: TId) => Promise<void>;
|
|
79
|
+
open: (id?: TId) => Promise<void>;
|
|
80
|
+
close: () => Promise<void>;
|
|
81
|
+
setAllowed: (ids: TId[], snap?: TId) => void;
|
|
82
|
+
readonly sheetState: (EngineState & {
|
|
83
|
+
activeId: TId;
|
|
84
|
+
}) | null;
|
|
85
|
+
};
|
|
86
|
+
declare const defineBottomSheet: (tag?: string) => void;
|
|
87
|
+
|
|
88
|
+
export { BottomSheetElement, type TypedBottomSheetElement, defineBottomSheet };
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { E as EngineState } from './BottomSheetEngine-DbO8rW_3.js';
|
|
2
|
+
import './transform-Brkf-wzo.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Custom element wrapping the engine. Works in any framework — drop it into
|
|
6
|
+
* Angular, Svelte, plain HTML, WordPress, anything that accepts HTML.
|
|
7
|
+
*
|
|
8
|
+
* <bottom-sheet snap-points='[{"id":"min","size":80},{"id":"full","size":"80%"}]'
|
|
9
|
+
* initial="min">
|
|
10
|
+
* <div slot="header">Title</div>
|
|
11
|
+
* <p>Content</p>
|
|
12
|
+
* </bottom-sheet>
|
|
13
|
+
*
|
|
14
|
+
* ## Per-snap header limitation
|
|
15
|
+
*
|
|
16
|
+
* The framework adapters (React, Vue, Svelte) accept a function/scoped-slot
|
|
17
|
+
* `header` that re-renders on every snap transition — so the header can morph
|
|
18
|
+
* (e.g. minimized vs full) without imperative wiring. The Web Component
|
|
19
|
+
* deliberately does NOT replicate this: native `<slot>` in Shadow DOM has
|
|
20
|
+
* no concept of "render this slot with these props per state", and
|
|
21
|
+
* synthesizing that on top would either bloat the shadow tree or force
|
|
22
|
+
* Light DOM consumers into an opaque, framework-flavored API.
|
|
23
|
+
*
|
|
24
|
+
* If you need per-snap header content with the Web Component, listen to the
|
|
25
|
+
* `snap` CustomEvent and update the slotted node imperatively:
|
|
26
|
+
*
|
|
27
|
+
* const sheet = document.querySelector("bottom-sheet");
|
|
28
|
+
* const header = sheet.querySelector('[slot="header"]');
|
|
29
|
+
* sheet.addEventListener("snap", e => {
|
|
30
|
+
* const { id } = e.detail;
|
|
31
|
+
* header.textContent = id === "min" ? "Title" : "Full title";
|
|
32
|
+
* });
|
|
33
|
+
*
|
|
34
|
+
* `snap` fires after the animation settles, so the swap is jank-free.
|
|
35
|
+
*/
|
|
36
|
+
declare class BottomSheetElement extends HTMLElement {
|
|
37
|
+
static get observedAttributes(): string[];
|
|
38
|
+
private engine;
|
|
39
|
+
private root;
|
|
40
|
+
private offHandlers;
|
|
41
|
+
private refs;
|
|
42
|
+
private backdropClickHandler;
|
|
43
|
+
constructor();
|
|
44
|
+
connectedCallback(): void;
|
|
45
|
+
disconnectedCallback(): void;
|
|
46
|
+
attributeChangedCallback(): void;
|
|
47
|
+
private teardownEngine;
|
|
48
|
+
private initEngine;
|
|
49
|
+
snapTo(id: string): Promise<void>;
|
|
50
|
+
open(id?: string): Promise<void>;
|
|
51
|
+
close(): Promise<void>;
|
|
52
|
+
setAllowed(ids: string[], snap?: string): void;
|
|
53
|
+
get sheetState(): EngineState | null;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Opt-in literal-id narrowing for the Web Component instance. The class
|
|
57
|
+
* itself stays `string`-typed — making `BottomSheetElement` generic would
|
|
58
|
+
* break `customElements.define`, which registers a 1:1 tag→class mapping
|
|
59
|
+
* (one runtime class per tag, regardless of TS generic instantiations).
|
|
60
|
+
*
|
|
61
|
+
* Consumers narrow at the call site by typing the `querySelector` result:
|
|
62
|
+
*
|
|
63
|
+
* ```ts
|
|
64
|
+
* import type { TypedBottomSheetElement } from "@surdeddd/bottom-sheet/element";
|
|
65
|
+
*
|
|
66
|
+
* const el = document.querySelector<
|
|
67
|
+
* TypedBottomSheetElement<"min" | "full">
|
|
68
|
+
* >("bottom-sheet");
|
|
69
|
+
* el?.snapTo("typo"); // ❌ TS2345
|
|
70
|
+
* el?.snapTo("full"); // ✓
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* Defaults `TId = string` so untyped `querySelector("bottom-sheet")` keeps
|
|
74
|
+
* the existing string-loose behaviour. The runtime class is unchanged; this
|
|
75
|
+
* is purely a TS-level convenience layered on the HTMLElement instance.
|
|
76
|
+
*/
|
|
77
|
+
type TypedBottomSheetElement<TId extends string = string> = HTMLElement & {
|
|
78
|
+
snapTo: (id: TId) => Promise<void>;
|
|
79
|
+
open: (id?: TId) => Promise<void>;
|
|
80
|
+
close: () => Promise<void>;
|
|
81
|
+
setAllowed: (ids: TId[], snap?: TId) => void;
|
|
82
|
+
readonly sheetState: (EngineState & {
|
|
83
|
+
activeId: TId;
|
|
84
|
+
}) | null;
|
|
85
|
+
};
|
|
86
|
+
declare const defineBottomSheet: (tag?: string) => void;
|
|
87
|
+
|
|
88
|
+
export { BottomSheetElement, type TypedBottomSheetElement, defineBottomSheet };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";var surdeddd_bottomSheet=(()=>{var C=Object.defineProperty;var Ct=Object.getOwnPropertyDescriptor;var It=Object.getOwnPropertyNames;var Rt=Object.prototype.hasOwnProperty;var Lt=(t,e,i)=>e in t?C(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i;var u=(t,e)=>()=>(t&&(e=t(t=0)),e);var ie=(t,e)=>{for(var i in e)C(t,i,{get:e[i],enumerable:!0})},Dt=(t,e,i,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of It(e))!Rt.call(t,s)&&s!==i&&C(t,s,{get:()=>e[s],enumerable:!(n=Ct(e,s))||n.enumerable});return t};var Pt=t=>Dt(C({},"__esModule",{value:!0}),t);var a=(t,e,i)=>Lt(t,typeof e!="symbol"?e+"":e,i);var K,ne,se=u(()=>{"use strict";K=class{constructor(){a(this,"entries",[])}push(e){return this.entries.push(e),this.recompute(),()=>this.remove(e.id)}remove(e){let i=this.entries.findIndex(n=>n.id===e);i!==-1&&(this.entries.splice(i,1),this.recompute())}size(){return this.entries.length}clear(){this.entries=[]}recompute(){this.entries.forEach((e,i)=>{e.setZIndex(100+i*10),e.setIsTop(i===this.entries.length-1)})}},ne=new K});function re(t){switch(t){case"bottom":return e=>`translate3d(0, ${e}px, 0)`;case"top":return e=>`translate3d(0, ${-e}px, 0)`;case"left":return e=>`translate3d(${-e}px, 0, 0)`;case"right":return e=>`translate3d(${e}px, 0, 0)`}}var oe,ae=u(()=>{"use strict";oe=t=>t==="left"||t==="right"?"width":"height"});function le(t){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?`${t}-${crypto.randomUUID()}`:(N[t]=(N[t]??0)+1,`${t}-${N[t]}`)}var N,de=u(()=>{"use strict";N={}});function ce(){let t=new Map;return{on(e,i){let n=t.get(e);return n||(n=new Set,t.set(e,n)),n.add(i),()=>{n.delete(i)}},emit(e,i){let n=t.get(e);if(n)for(let s of[...n])s(i)},listenerCount(e){return t.get(e)?.size??0},clear(){t.clear()}}}var pe=u(()=>{"use strict"});var f,ue,Ot,me,he,Bt,be,fe=u(()=>{"use strict";f=null,ue="data-bs-probe",Ot=t=>{if(typeof document>"u")return null;if(!f||!f.isConnected){let e=document.querySelector(`[${ue}]`);e?f=e:(f=document.createElement("div"),f.setAttribute("aria-hidden","true"),f.setAttribute(ue,""),f.style.cssText="position:absolute;visibility:hidden;pointer-events:none;contain:strict;left:0;top:0;width:0;height:0;",document.body.appendChild(f))}return t==="vertical"?(f.style.width="0",f.style.height=""):(f.style.height="0",f.style.width=""),f},me=t=>t==="bottom"||t==="top",he=t=>typeof window>"u"?0:me(t)?window.innerHeight:window.innerWidth,Bt=/^(-?\d+(?:\.\d+)?)%$/,be=(t,e,i)=>{if(typeof t=="number")return Math.max(0,t);if(t==="full")return he(e);if(t==="fit")return Math.max(0,i?.()??0);let n=t.match(Bt);if(n){let l=parseFloat(n[1])/100;return Math.max(0,he(e)*l)}let s=me(e)?"vertical":"horizontal",o=Ot(s);return o?s==="vertical"?(o.style.height=t,Math.max(0,o.getBoundingClientRect().height)):(o.style.width=t,Math.max(0,o.getBoundingClientRect().width)):0}});var ge,Ht,V,_t,ve,k,Ft,Kt,Nt,ye,I=u(()=>{"use strict";fe();ge=(t,e,i)=>t.map(n=>{let s=be(n.size,e,i);return!Number.isFinite(s)||s<0?(console.warn(`[BottomSheet] snap "${n.id}" resolved to invalid size (${String(n.size)} \u2192 ${s}); clamped to 0.`),{id:n.id,size:0}):{id:n.id,size:s}}).sort((n,s)=>n.size-s.size),Ht=/(^|[^a-z])vh\b/i,V=t=>{for(let e of t)typeof e.size=="string"&&Ht.test(e.size)&&console.warn(`[BottomSheet] snap "${e.id}" uses "vh" \u2014 prefer "dvh" on mobile (iOS Safari URL bar makes vh unstable). See https://web.dev/blog/viewport-units`)},_t=(t,e,i,n=0,s=0)=>{let o=e.filter(d=>i.includes(d.id));if(o.length===0)return null;let l=t+n*s,r=o[0],c=Math.abs(l-r.size);for(let d=1;d<o.length;d++){let p=o[d],h=Math.abs(l-p.size);h<c&&(r=p,c=h)}return r},ve=(t,e)=>{let i=t.filter(n=>e.includes(n.id));return i.length===0?{min:0,max:0}:{min:i[0].size,max:i[i.length-1].size}},k=(t,e)=>e.find(i=>i.id===t)??null,Ft=.4,Kt=12,Nt=.15,ye=t=>{let e=Math.abs(t.velocity),i=t.pointerKind==="mouse"?Ft:t.flickVelocity,n=t.pointerKind==="mouse"?Kt:t.dragThreshold,s=0;if((e>i||e>Nt)&&(s=t.velocity>0?1:-1),Math.abs(t.delta)<n&&s===0)return k(t.activeId,t.resolved);let o=e>i?Math.min(e*180,t.maxAxisSize):0;return _t(t.size,t.resolved,t.allowed,s,o)}});var R,Se=u(()=>{"use strict";I();R=class{constructor(e,i,n,s,o){a(this,"mode",n);a(this,"measureFit",s);a(this,"onMaxAxisSizeChange",o);a(this,"raw");a(this,"allowedIds");a(this,"resolved",[]);a(this,"maxAxisSize",0);a(this,"rangeCache",null);this.raw=e,this.allowedIds=i??e.map(l=>l.id),this.recompute()}recompute(){this.resolved=ge(this.raw,this.mode,this.measureFit),this.maxAxisSize=this.resolved.reduce((e,i)=>i.size>e?i.size:e,0),this.rangeCache=null,this.onMaxAxisSizeChange?.(this.maxAxisSize)}setRaw(e){this.raw=e,this.recompute()}setAllowedIds(e){this.allowedIds=e,this.rangeCache=null}findById(e){return k(e,this.resolved)}findDragSettleTarget(e){return ye({...e,resolved:this.resolved,allowed:this.allowedIds,maxAxisSize:this.maxAxisSize})}getAllowedRange(){return this.rangeCache??(this.rangeCache=ve(this.resolved,this.allowedIds))}getResolvedSnaps(){return this.resolved}getAllowedIds(){return this.allowedIds}getMaxAxisSize(){return this.maxAxisSize}setMaxAxisSize(e){this.maxAxisSize=e,this.onMaxAxisSizeChange?.(e)}}});function xe(t){if(!t||typeof window>"u"||typeof localStorage>"u")return null;try{return localStorage.getItem(t)}catch{return null}}function we(t,e){return t.on("snap",({id:n})=>{if(!(typeof window>"u")&&!(typeof localStorage>"u"))try{localStorage.setItem(e,n)}catch{}})}var U=u(()=>{"use strict"});function Te(t){let{ms:e}=t;if(e===void 0||e<=0)return()=>{};let i=null,n=()=>{i!==null&&(clearTimeout(i),i=null)},s=()=>{if(t.isDestroyed()||t.isDragging())return;let c=t.getAllowedIds().find(d=>{let p=t.resolveSnap(d);return p!==null&&p.size>0});c&&c!==t.getActiveId()&&t.snapTo(c)},o=()=>{n(),!t.isDestroyed()&&(i=setTimeout(()=>{i=null,s()},e))},l=t.on("snap",()=>o());return()=>{n(),l()}}var Ee=u(()=>{"use strict"});function Ae(t,e){if(t.length!==0){for(let i of t)if(i!==e)try{let s=i.getAllowedIds().find(o=>o!=="closed");s&&s!==i.state.activeId&&i.snapTo(s)}catch(n){queueMicrotask(()=>{throw n})}}}var ze=u(()=>{"use strict"});function ke(t){if(typeof window>"u")return()=>{};if(!t.routedTo&&!t.closeOnBack)return()=>{};let e=!1,i=!1,n=null,s=(d,p)=>{let h=history.state;if(h&&h[d]===p)try{history.back()}catch{}},o=()=>{if(t.routedTo&&!n){let d=t.routedTo;try{history.pushState({__bsRouted:d},"",d),e=!0}catch{}let p=h=>{if(t.isDestroyed())return;let b=h.state;b&&b.__bsRouted===d&&t.getSize()>0&&(e=!1,t.close())};window.addEventListener("popstate",p),n=()=>window.removeEventListener("popstate",p)}else if(t.closeOnBack&&!n){try{history.pushState({__bsSheet:t.sheetId},""),i=!0}catch{}let d=()=>{t.isDestroyed()||t.getSize()>0&&t.isTopSheet()&&(history.state?.__bsSheet!==t.sheetId&&(i=!1),t.close())};window.addEventListener("popstate",d),n=()=>window.removeEventListener("popstate",d)}},l=()=>{n?.(),n=null,e&&(e=!1,t.routedTo!==void 0&&s("__bsRouted",t.routedTo)),i&&(i=!1,s("__bsSheet",t.sheetId))},r=t.on("open",o),c=t.on("close",l);return t.getSize()>0&&o(),()=>{r(),c(),n?.(),n=null,e&&(e=!1,t.routedTo!==void 0&&s("__bsRouted",t.routedTo)),i&&(i=!1,s("__bsSheet",t.sheetId))}}var Me=u(()=>{"use strict"});function Ce(t){let{container:e}=t,i=0,n=!1,s=r=>{let c=r.touches[0];c&&(i=c.clientY,n=!1)},o=r=>{let c=r.touches[0];c&&Math.abs(c.clientY-i)>60&&(n=!0)},l=r=>{if(!n||t.isDragging()||t.isAnimating())return;let c=r.changedTouches[0];if(!c)return;let d=c.clientY-i,p=e.scrollTop<=0,h=t.getAllowedIds(),b=h.indexOf(t.getActiveId());b!==-1&&(p&&d>60&&b>0?t.snapTo(h[b-1]):d<-60&&b<h.length-1&&t.snapTo(h[b+1]))};return e.addEventListener("touchstart",s,{passive:!0}),e.addEventListener("touchmove",o,{passive:!0}),e.addEventListener("touchend",l,{passive:!0}),()=>{e.removeEventListener("touchstart",s),e.removeEventListener("touchmove",o),e.removeEventListener("touchend",l)}}var Ie=u(()=>{"use strict"});function Re(t){if(typeof window>"u"||!window.visualViewport)return()=>{};let e=window.visualViewport,i=null,n=()=>{i===null&&(i=requestAnimationFrame(()=>{if(i=null,t.isDestroyed())return;t.recomputeSnaps();let s=t.isVerticalAxis(),o=s?e.height:e.width,l=s?window.innerHeight:window.innerWidth,r=Math.max(0,Math.min(l,o)-8);r<t.getMaxAxisSize()&&t.setMaxAxisSize(r);let c=t.getMaxAxisSize();t.setSize(Math.min(t.getSize(),c));let d=t.resolveActiveSnap();d&&!t.isDragging()?t.applySize(Math.min(d.size,c)):t.applySize(t.getSize())}))};return e.addEventListener("resize",n),()=>{e.removeEventListener("resize",n),i!==null&&cancelAnimationFrame(i)}}var Le=u(()=>{"use strict"});function De(t){if(typeof window>"u")return()=>{};let e=()=>{if(t.isDestroyed())return;t.recomputeSnaps();let s=t.getMode(),l=s==="bottom"||s==="top"?window.innerHeight:window.innerWidth,r=t.getMaxAxisSize();l>0&&l<r&&t.setMaxAxisSize(l),t.cancelInFlight(),t.newCycle();let c=t.resolveActiveSnap(),d=t.getMaxAxisSize(),p=Math.min(c?c.size:t.getSize(),d);t.setSize(p),c&&!t.isDragging()&&t.applySize(p)},i=null;typeof ResizeObserver<"u"?(i=new ResizeObserver(e),i.observe(document.documentElement)):window.addEventListener("resize",e),window.addEventListener("orientationchange",e);let n=()=>{t.isDestroyed()||document.hidden&&t.cancelInFlight()};return document.addEventListener("visibilitychange",n),()=>{i?.disconnect(),window.removeEventListener("resize",e),window.removeEventListener("orientationchange",e),document.removeEventListener("visibilitychange",n)}}var Pe=u(()=>{"use strict"});function Oe(t){let e=t.mode==="bottom"||t.mode==="top",i=e?"ArrowUp":"ArrowRight",n=e?"ArrowDown":"ArrowLeft",s=t.mode==="top"?n:i,o=t.mode==="top"?i:n,l=r=>{if(t.isDestroyed())return;let c=t.getAllowedIds(),d=c.indexOf(t.getActiveId());d!==-1&&(r.key===s&&d<c.length-1?(r.preventDefault(),t.snapTo(c[d+1])):r.key===o&&d>0?(r.preventDefault(),t.snapTo(c[d-1])):r.key==="Home"?(r.preventDefault(),t.snapTo(c[0])):r.key==="End"&&(r.preventDefault(),t.snapTo(c[c.length-1])))};return t.handle.addEventListener("keydown",l),()=>t.handle.removeEventListener("keydown",l)}var Be=u(()=>{"use strict"});var Y,He=u(()=>{"use strict";Y=Object.freeze({subtle:{color:"rgba(0,0,0,0.2)",blur:void 0,range:[.3,1],interactive:!1},standard:{color:"rgba(0,0,0,0.4)",blur:void 0,range:[0,1],interactive:!1},monitoring:{color:"rgba(15,15,20,0.55)",blur:"4px",range:[0,1],interactive:!1},cinematic:{color:"rgba(0,0,0,0.7)",blur:"12px",range:[0,1],interactive:!1}})});var S,W=u(()=>{"use strict";S=class{constructor(){a(this,"last",-1)}shouldWrite(e,i){return Math.abs(e-this.last)<=i?!1:(this.last=e,!0)}invalidate(){this.last=-1}setLastWritten(e){this.last=e}get value(){return this.last}}});var L,Fe=u(()=>{"use strict";He();I();W();L=class{constructor(e,i){a(this,"screenComponent");a(this,"backdrop");a(this,"mode");a(this,"isDestroyed");a(this,"isTopSheet");a(this,"getAllowedIds");a(this,"getResolvedSnaps");a(this,"snapToFn");a(this,"scrimMode");a(this,"backdropRange");a(this,"screenRange");a(this,"scrimEnabled",!0);a(this,"savedScrimRanges",null);a(this,"scrimTapToCloseEnabled",!1);a(this,"detachScrimTap",null);a(this,"scrimOverlayTeardown",null);a(this,"backdropOpacitySentinel",new S);a(this,"screenOpacitySentinel",new S);a(this,"lastBackdropPointer","");a(this,"lastScreenDisplay","");this.screenComponent=e.screenComponent,this.backdrop=e.backdrop,this.mode=e.mode,this.isDestroyed=e.isDestroyed,this.isTopSheet=e.isTopSheet,this.getAllowedIds=e.getAllowedIds,this.getResolvedSnaps=e.getResolvedSnaps,this.snapToFn=e.snapTo,this.scrimMode=i.scrimMode??"full";let n=i.scrimPreset?Y[i.scrimPreset]:null;if(this.backdropRange=i.backdropRange??n?.range??[0,1],this.screenRange=i.screenRange??n?.range??[0,1],this.scrimTapToCloseEnabled=i.scrimTapToClose??!1,this.screenComponent){if(this.applyScrimStyles({color:i.scrimColor??n?.color,blur:i.scrimBlur??n?.blur,interactive:i.scrimInteractive??n?.interactive??!1}),this.scrimMode==="above-sheet")this.applyAboveSheetInset();else if(this.scrimMode==="off"){let s=this.screenComponent.style;s.opacity="0",s.display="none",this.screenOpacitySentinel.setLastWritten(0),this.lastScreenDisplay="none"}}}invalidateOpacityCache(){this.backdropOpacitySentinel.invalidate(),this.screenOpacitySentinel.invalidate()}attach(){this.scrimTapToCloseEnabled&&this.setScrimTapToClose(!0)}applyOpacity(e,i){if(!(!i&&this.backdropOpacitySentinel.value!==-1&&this.screenOpacitySentinel.value!==-1)){if(this.backdrop&&this.isTopSheet()){let[n,s]=this.backdropRange,o=Math.max(s-n,1e-4),l=Math.min(Math.max((e-n)/o,0),1);this.backdropOpacitySentinel.shouldWrite(l,.005)&&(this.backdrop.style.opacity=String(l));let r=l>.05?"auto":"none";r!==this.lastBackdropPointer&&(this.backdrop.style.pointerEvents=r,this.lastBackdropPointer=r)}if(this.screenComponent&&this.scrimMode!=="off"){let[n,s]=this.screenRange,o=Math.min(1,Math.max(0,(e-n)/Math.max(1e-4,s-n)));this.screenOpacitySentinel.shouldWrite(o,.005)&&(this.screenComponent.style.opacity=String(o));let l=o>0?"":"none";l!==this.lastScreenDisplay&&(this.screenComponent.style.display=l,this.lastScreenDisplay=l)}}}setBackdropRange(e,i){this.isDestroyed()||(this.backdropRange=e,this.invalidateOpacityCache(),i())}setScreenRange(e,i){this.isDestroyed()||(this.screenRange=e,this.invalidateOpacityCache(),i())}setScrimColor(e){this.isDestroyed()||this.applyScrimStyles({color:e===void 0?null:e})}setScrimBlur(e){this.isDestroyed()||this.applyScrimStyles({blur:e===void 0?null:e})}setScrimInteractive(e){this.isDestroyed()||this.applyScrimStyles({interactive:e})}setScrimMode(e,i){if(this.isDestroyed()||e===this.scrimMode)return;this.invalidateOpacityCache();let n=this.scrimMode;if(this.scrimMode=e,this.screenComponent){let s=this.screenComponent.style;n==="above-sheet"&&e!=="above-sheet"&&(s.position="",s.inset="",s.pointerEvents=""),e==="above-sheet"?this.applyAboveSheetInset():e==="off"?(s.opacity="0",s.display="none",this.screenOpacitySentinel.setLastWritten(0),this.lastScreenDisplay="none"):this.lastScreenDisplay==="none"&&(s.display="",this.lastScreenDisplay="")}i()}setScrimTapToClose(e){if(this.isDestroyed()||!this.screenComponent)return;let i=this.detachScrimTap!==null;if(e!==i)if(e){let n=this.screenComponent;n.style.pointerEvents==="none"&&(n.style.pointerEvents="auto");let s=()=>{if(this.isDestroyed())return;let o=this.getAllowedIds(),l=this.getResolvedSnaps(),r=o.find(c=>{let d=k(c,l);return d!==null&&d.size>0});r&&this.snapToFn(r)};n.addEventListener("click",s),this.detachScrimTap=()=>n.removeEventListener("click",s),this.scrimTapToCloseEnabled=!0}else this.detachScrimTap?.(),this.detachScrimTap=null,this.scrimTapToCloseEnabled=!1}setScrimEnabled(e,i){this.isDestroyed()||e!==this.scrimEnabled&&(this.scrimEnabled=e,e?(this.screenRange=this.savedScrimRanges?.screen??[0,1],this.backdropRange=this.savedScrimRanges?.backdrop??[0,1],this.savedScrimRanges=null):(this.savedScrimRanges={screen:this.screenRange,backdrop:this.backdropRange},this.screenRange=[1,1],this.backdropRange=[1,1]),i())}setScrim(e,i){if(this.isDestroyed())return;if(e.preset){let s=Y[e.preset];this.applyScrimStyles({color:s.color,blur:s.blur??null,interactive:s.interactive}),this.screenRange=s.range}let n=()=>{};e.mode!==void 0&&this.setScrimMode(e.mode,n),e.enabled!==void 0&&this.setScrimEnabled(e.enabled,n),e.tapToClose!==void 0&&this.setScrimTapToClose(e.tapToClose),this.applyScrimStyles({color:e.color,blur:e.blur,interactive:e.interactive}),e.range!==void 0&&(this.screenRange=e.range),this.invalidateOpacityCache(),i()}setScrimOverlay(e){if(this.isDestroyed())return()=>{};if(!this.screenComponent)return()=>{};this.scrimOverlayTeardown?.();let i=this.screenComponent,n=e.inset??"16px",s=e.position??"top-right",o=e.interactive??!0,l=i.ownerDocument.createElement("div");l.className="bs-scrim-overlay";let r=l.style;switch(r.position="absolute",s){case"top-left":r.top=n,r.left=n;break;case"top-center":r.top=n,r.left="50%",r.transform="translateX(-50%)";break;case"top-right":r.top=n,r.right=n;break;case"center-left":r.top="50%",r.left=n,r.transform="translateY(-50%)";break;case"center":r.top="50%",r.left="50%",r.transform="translate(-50%, -50%)";break;case"center-right":r.top="50%",r.right=n,r.transform="translateY(-50%)";break;case"bottom-left":r.bottom=n,r.left=n;break;case"bottom-center":r.bottom=n,r.left="50%",r.transform="translateX(-50%)";break;case"bottom-right":r.bottom=n,r.right=n;break}o&&(r.pointerEvents="auto"),l.appendChild(e.children),i.appendChild(l);let c=()=>{l.parentNode&&l.parentNode.removeChild(l),this.scrimOverlayTeardown===c&&(this.scrimOverlayTeardown=null)};return this.scrimOverlayTeardown=c,c}destroy(){if(this.detachScrimTap?.(),this.detachScrimTap=null,this.scrimOverlayTeardown?.(),this.scrimOverlayTeardown=null,this.screenComponent){let e=this.screenComponent.style;e.opacity="",e.display=""}this.backdrop&&(this.backdrop.style.opacity="",this.backdrop.style.pointerEvents=""),this.invalidateOpacityCache(),this.lastBackdropPointer="",this.lastScreenDisplay=""}applyScrimStyles(e){if(!this.screenComponent)return;let i=this.screenComponent.style;if(e.color!==void 0&&(i.background=e.color===null?"":e.color),e.blur!==void 0){let n=i;if(e.blur===null)i.backdropFilter="",n.webkitBackdropFilter="";else{let s=`blur(${e.blur})`;i.backdropFilter=s,n.webkitBackdropFilter=s}}e.interactive!==void 0&&(i.pointerEvents=e.interactive?"auto":"none")}applyAboveSheetInset(){if(!this.screenComponent)return;let e={bottom:"0 0 var(--bs-size) 0",top:"var(--bs-size) 0 0 0",left:"0 0 0 var(--bs-size)",right:"0 var(--bs-size) 0 0"},i=this.screenComponent.style;i.position="fixed",i.inset=e[this.mode],i.pointerEvents="none"}}});var Ke,Ut,Ne,Ve,Ue,$=u(()=>{"use strict";Ke=t=>1+2.40158*Math.pow(t-1,3)+1.40158*Math.pow(t-1,2),Ut=t=>1-Math.pow(1-t,3),Ne=t=>t,Ve=t=>1-Math.pow(1-t,5),Ue=({from:t,to:e,duration:i,easing:n=Ut,onUpdate:s})=>{let o=!1,l=0,r=null,c=performance.now(),d=new Promise(p=>{if(r=p,i<=0){s(e),p();return}let h=b=>{if(o)return;let g=b-c,y=Math.min(g/i,1),x=t+(e-t)*n(y);s(x),y<1?l=requestAnimationFrame(h):p()};l=requestAnimationFrame(h)});return{cancel:()=>{o=!0,cancelAnimationFrame(l),r?.()},promise:d}}});var Yt,Wt,Ye,We=u(()=>{"use strict";Yt={stiffness:220,damping:26,mass:1,restDelta:.5,restSpeed:.5},Wt=1/30,Ye=({from:t,to:e,velocity:i=0,config:n,onUpdate:s})=>{let o={...Yt,...n},l=!1,r=0,c=null,d=t,p=i,h=performance.now(),b=new Promise(g=>{c=g;let y=x=>{if(l)return;let E=Math.min((x-h)/1e3,Wt);h=x;let m=Math.min(E,1/240),w=Math.max(1,Math.ceil(E/m));for(;w-- >0;){let z=(-o.stiffness*(d-e)-o.damping*p)/o.mass;p+=z*m,d+=p*m}s(d,p),Math.abs(e-d)<(o.restDelta??.5)&&Math.abs(p)<(o.restSpeed??.5)?(s(e,0),g()):r=requestAnimationFrame(y)};r=requestAnimationFrame(y)});return{cancel:()=>{l=!0,cancelAnimationFrame(r),c?.()},promise:b}}});function $e(t){switch(t){case"ios-spring":return{kind:"spring",spring:{stiffness:300,damping:30,mass:1}};case"material-bounce":return{kind:"spring",spring:{stiffness:200,damping:22,mass:1}};case"linear":return{kind:"tween",duration:$t,easing:Ne};case"snappy":return{kind:"tween",duration:180,easing:Ve};case"tween":return{kind:"tween"};default:return{kind:"spring"}}}var $t,qe=u(()=>{"use strict";$();$t=220});var qt,Gt,D,Ge=u(()=>{"use strict";$();We();qe();qt=220,Gt=1e3,D=class{constructor(e,i){a(this,"element");a(this,"getRootEl");a(this,"applySizeFn");a(this,"getSize");a(this,"isDragging");a(this,"animationKind");a(this,"springConfig");a(this,"duration");a(this,"easing");a(this,"respectReducedMotion");a(this,"reducedMotion",!1);a(this,"detachReducedMotion",null);a(this,"viewTransitionsAvailable");a(this,"currentTween",null);a(this,"currentSpring",null);this.element=e.element,this.getRootEl=e.getRootEl,this.applySizeFn=e.applySize,this.getSize=e.getSize,this.isDragging=e.isDragging;let n=$e(i.animation);this.animationKind=n.kind,this.duration=i.duration??n.duration??qt,this.easing=i.easing??n.easing??Ke,this.springConfig={...n.spring??{},...i.spring??{}},this.respectReducedMotion=i.respectReducedMotion??!0;let s=i.viewTransitions??!1;if(this.viewTransitionsAvailable=s&&typeof document<"u"&&typeof document.startViewTransition=="function",this.respectReducedMotion&&typeof window<"u"&&typeof window.matchMedia=="function"){let o=window.matchMedia("(prefers-reduced-motion: reduce)");this.reducedMotion=o.matches;let l=r=>{this.reducedMotion=r.matches};typeof o.addEventListener=="function"?(o.addEventListener("change",l),this.detachReducedMotion=()=>o.removeEventListener("change",l)):typeof o.addListener=="function"&&(o.addListener(l),this.detachReducedMotion=()=>o.removeListener(l))}}get isAnimating(){return this.currentTween!==null||this.currentSpring!==null}cancel(){this.currentTween?.cancel(),this.currentSpring?.cancel()}async animateTo(e,i){if(e!==this.getSize()){if(this.currentTween?.cancel(),this.currentSpring?.cancel(),this.getRootEl()?.setAttribute("data-animating","true"),this.element.style.willChange="transform",this.reducedMotion){this.applySizeFn(e),this.getRootEl()?.removeAttribute("data-animating"),this.isDragging()||(this.element.style.willChange="auto");return}if(this.animationKind==="spring"){let n=Ye({from:this.getSize(),to:e,velocity:i*Gt,config:this.springConfig,onUpdate:s=>this.applySizeFn(s)});this.currentSpring=n,await n.promise,this.currentSpring===n&&(this.currentSpring=null)}else{let n=Ue({from:this.getSize(),to:e,duration:this.duration,easing:this.easing,onUpdate:s=>this.applySizeFn(s)});this.currentTween=n,await n.promise,this.currentTween===n&&(this.currentTween=null)}this.isAnimating||(this.getRootEl()?.removeAttribute("data-animating"),this.isDragging()||(this.element.style.willChange="auto"))}}destroy(){this.detachReducedMotion?.(),this.detachReducedMotion=null,this.currentTween=null,this.currentSpring=null}}});var Xt,jt,q,Xe,je=u(()=>{"use strict";Xt=["a[href]","area[href]","button:not([disabled])","input:not([disabled]):not([type='hidden'])","select:not([disabled])","textarea:not([disabled])","iframe","object","embed","[contenteditable='true']","[tabindex]:not([tabindex='-1'])"].join(","),jt=t=>typeof t.checkVisibility=="function"?t.checkVisibility({checkOpacity:!1,checkVisibilityCSS:!0}):t.offsetParent!==null,q=t=>Array.from(t.querySelectorAll(Xt)).filter(e=>!e.hasAttribute("inert")&&jt(e)&&!e.matches("[aria-hidden='true']")),Xe=(t,e={})=>{if(typeof document>"u")return()=>{};let i=document.activeElement;(typeof e.initialFocus=="string"?t.querySelector(e.initialFocus):e.initialFocus??q(t)[0]??t)?.focus({preventScroll:!0});let s=r=>{if(r.key==="Escape"&&e.onEscape){e.onEscape();return}if(r.key!=="Tab")return;let c=q(t);if(c.length===0){r.preventDefault();return}let d=c[0],p=c[c.length-1],h=document.activeElement;r.shiftKey&&h===d?(r.preventDefault(),p.focus()):!r.shiftKey&&h===p&&(r.preventDefault(),d.focus())},o=r=>{let c=r.target;c&&!t.contains(c)&&q(t)[0]?.focus({preventScroll:!0})};document.addEventListener("keydown",s,!0),document.addEventListener("focusin",o,!0);let l=!1;return()=>{l||(l=!0,document.removeEventListener("keydown",s,!0),document.removeEventListener("focusin",o,!0),i&&document.contains(i)?i.focus({preventScroll:!0}):document.querySelector("[data-bs-restore-fallback]")?.focus({preventScroll:!0}))}}});var M,v,Qe,Ze=u(()=>{"use strict";M=0,v=null,Qe=()=>{if(typeof document>"u")return()=>{};if(M===0){let e=document.body;v={overflow:e.style.overflow,position:e.style.position,top:e.style.top,width:e.style.width,scrollY:window.scrollY},e.style.overflow="hidden",e.style.position="fixed",e.style.top=`-${v.scrollY}px`,e.style.width="100%"}M++;let t=!1;return()=>{if(!t&&(t=!0,M=Math.max(0,M-1),M===0&&v)){let e=document.body;e.style.overflow=v.overflow,e.style.position=v.position,e.style.top=v.top,e.style.width=v.width,window.scrollTo(0,v.scrollY),v=null}}}});function Je(t){let e=[];return{apply(){if(typeof document>"u")return;let i=t(),n=i.parentElement??document.body;for(let s of Array.from(n.children))s!==i&&(s.hasAttribute("inert")||(s.setAttribute("inert",""),e.push(s)))},remove(){for(let i of e)i.removeAttribute("inert");e.length=0}}}var et=u(()=>{"use strict"});var P,tt=u(()=>{"use strict";je();Ze();et();P=class{constructor(e,i){a(this,"element");a(this,"closeFn");a(this,"focusTrapEnabled");a(this,"initialFocus");a(this,"closeOnEscape");a(this,"bodyScrollLockEnabled");a(this,"inertSiblingsEnabled");a(this,"inertSiblings");a(this,"shouldApplyInertSiblings");a(this,"returnFocus");a(this,"releaseFocusTrap",null);a(this,"releaseScrollLock",null);a(this,"installed",!1);a(this,"destroyed",!1);this.element=e.element,this.closeFn=e.close,this.focusTrapEnabled=i.focusTrap??!1,this.initialFocus=i.initialFocus,this.closeOnEscape=i.closeOnEscape??!0,this.bodyScrollLockEnabled=i.lockBodyScroll??!0,this.inertSiblingsEnabled=i.inertSiblings??!1,this.shouldApplyInertSiblings=i.shouldApplyInertSiblings??(()=>!0),this.returnFocus=i.returnFocus,this.inertSiblings=Je(()=>this.element)}install(){this.destroyed||(this.installed=!0,this.bodyScrollLockEnabled&&!this.releaseScrollLock&&(this.releaseScrollLock=Qe()),this.focusTrapEnabled&&!this.releaseFocusTrap&&(this.releaseFocusTrap=Xe(this.element,{initialFocus:this.initialFocus,onEscape:this.closeOnEscape?()=>{this.closeFn()}:void 0})),this.inertSiblingsEnabled&&this.shouldApplyInertSiblings()&&this.inertSiblings.apply())}setReturnFocus(e){this.destroyed||(this.returnFocus=e)}release(){this.installed&&(this.installed=!1,this.releaseFocusTrap?.(),this.releaseFocusTrap=null,this.releaseScrollLock?.(),this.releaseScrollLock=null,this.inertSiblings.remove(),this.returnFocus&&(typeof this.returnFocus=="function"?this.returnFocus():this.returnFocus)?.focus?.())}destroy(){this.release(),this.destroyed=!0}}});var it,G,nt,st=u(()=>{"use strict";it=t=>t==="bottom"||t==="top",G=class{constructor(e){a(this,"slots");a(this,"capacity");a(this,"head",0);a(this,"size",0);this.capacity=e,this.slots=new Array(e);for(let i=0;i<e;i++)this.slots[i]={t:0,v:0}}push(e,i){let n=this.slots[this.head];n.t=e,n.v=i,this.head=(this.head+1)%this.capacity,this.size<this.capacity&&this.size++}pruneBefore(e,i){for(;this.size>i;){let n=(this.head-this.size+this.capacity)%this.capacity;if(this.slots[n].t<e)this.size--;else break}}get length(){return this.size}oldest(){if(this.size!==0)return this.slots[(this.head-this.size+this.capacity)%this.capacity]}newest(){if(this.size!==0)return this.slots[(this.head-1+this.capacity)%this.capacity]}reset(){this.head=0,this.size=0}},nt=(t,e,i)=>{let n=null,s="touch",o=0,l=0,r=m=>m==="mouse"?160:120,c=32,d=new G(c),p=it(e)?"Y":"X",h=e==="bottom"||e==="right"?-1:1,b=m=>p==="Y"?m.clientY:m.clientX,g=m=>{if(n===null&&!(m.button!==void 0&&m.button!==0)){n=m.pointerId,s=m.pointerType||"touch",o=b(m),l=o,d.reset(),d.push(m.timeStamp,o);try{t.setPointerCapture(m.pointerId)}catch{}i.onStart(o,s)}},y=m=>{if(m.pointerId!==n)return;let w=b(m),A=(w-o)*h;l=w,d.push(m.timeStamp,w);let z=m.timeStamp-r(s);d.pruneBefore(z,2),i.onMove(A)},x=m=>{if(m.pointerId!==n)return;let F=(l-o)*h,A=0;if(d.length>=3){let J=d.oldest(),ee=d.newest(),te=ee.t-J.t;te>0&&(A=(ee.v-J.v)/te*h)}let z=s;n=null,d.reset();try{t.hasPointerCapture(m.pointerId)&&t.releasePointerCapture(m.pointerId)}catch{}i.onEnd(F,A,z)},E=m=>{m.pointerId===n&&(n=null,d.reset(),i.onCancel?.())};return t.addEventListener("pointerdown",g),t.addEventListener("pointermove",y),t.addEventListener("pointerup",x),t.addEventListener("pointercancel",E),t.style.touchAction=it(e)?"pan-x":"pan-y",()=>{t.removeEventListener("pointerdown",g),t.removeEventListener("pointermove",y),t.removeEventListener("pointerup",x),t.removeEventListener("pointercancel",E),n!==null&&t.hasPointerCapture(n)&&t.releasePointerCapture(n)}}});function X(t,e){let i=Math.min(e*.15,80);return Math.sign(t)*Math.pow(Math.abs(t),.55)*Math.min(6,i/Math.max(Math.abs(t),1))}var rt=u(()=>{"use strict"});function ot(t){if(typeof document>"u")return!1;let e=document.activeElement;if(!e||!t.contains(e))return!1;let i=e.tagName;if(!(i==="INPUT"||i==="TEXTAREA"||e.isContentEditable===!0))return!1;try{return e.blur(),!0}catch{return!1}}var at=u(()=>{"use strict"});var O,lt=u(()=>{"use strict";st();rt();at();O=class{constructor(e){a(this,"deps");a(this,"detach",null);a(this,"isDragging_",!1);a(this,"dragStartSize",0);a(this,"currentPointerKind","touch");a(this,"keyboardDismissed",!1);a(this,"dragPayload",{size:0,delta:0});this.deps=e}get isDragging(){return this.isDragging_}install(){return this.detach?this.detach:(this.detach=nt(this.deps.handle,this.deps.mode,{onStart:(e,i)=>{this.deps.cancelAnimation(),this.isDragging_=!0,this.dragStartSize=this.deps.getDragContext().size,this.currentPointerKind=i,this.keyboardDismissed=!1,this.deps.getRoot()?.setAttribute("data-dragging","true"),this.deps.element.style.willChange="transform",this.deps.emit("dragstart",{size:this.dragStartSize})},onMove:e=>{let i=this.deps.getDragContext(),{min:n,max:s}=i.range,o=i.maxAxisSize,l=i.rubberBandEnabled,r=this.dragStartSize+e;r>s?r=l?s+X(r-s,o):s:r<n&&(r=l?n-X(n-r,o):n),this.deps.applySize(r),!this.keyboardDismissed&&this.currentPointerKind==="touch"&&this.deps.mode==="bottom"&&r<this.dragStartSize&&ot(this.deps.element)&&(this.keyboardDismissed=!0),this.deps.listenerCount("drag")>0&&(this.dragPayload.size=r,this.dragPayload.delta=e,this.deps.emit("drag",this.dragPayload))},onEnd:(e,i,n)=>{this.isDragging_=!1,this.keyboardDismissed=!1,this.deps.getRoot()?.removeAttribute("data-dragging"),this.deps.emit("dragend",{size:this.deps.getDragContext().size,velocity:i}),this.deps.settleAfterDrag(e,i,n)},onCancel:()=>{this.isDragging_=!1,this.keyboardDismissed=!1,this.deps.getRoot()?.removeAttribute("data-dragging");let e=this.dragStartSize;this.deps.animateTo(e,0)}}),this.detach)}forceClearDragState(){this.isDragging_&&(this.isDragging_=!1,this.keyboardDismissed=!1,this.deps.getRoot()?.removeAttribute("data-dragging"),this.deps.element.style.willChange="auto")}}});var B,dt=u(()=>{"use strict";B=class{constructor(e,i){a(this,"handle",e);e.setAttribute("aria-orientation",i==="bottom"||i==="top"?"vertical":"horizontal")}setValue(e,i){if(e.length===0){this.handle.removeAttribute("aria-valuemin"),this.handle.removeAttribute("aria-valuemax"),this.handle.removeAttribute("aria-valuenow"),this.handle.removeAttribute("aria-valuetext");return}let n=Math.max(e.length-1,0),s=Math.max(e.indexOf(i),0);this.handle.setAttribute("aria-valuemin","0"),this.handle.setAttribute("aria-valuemax",String(n)),this.handle.setAttribute("aria-valuenow",String(s)),this.handle.setAttribute("aria-valuetext",i)}}});function ct(t){let e=new Map,i=n=>{let s=t.getMaxAxisSize();return s<=0?!1:n<s/2};return{cache(n,s,o){let l=t.scrollContainer;l&&(i(s)||i(o)&&e.set(n,l.scrollTop))},restore(n,s,o){let l=t.scrollContainer;if(!l||i(o)||!i(s))return;let r=e.get(n);r!==void 0&&(l.scrollTop=r,e.delete(n))},clear(){e.clear()}}}var pt=u(()=>{"use strict"});function ut(t,e){let i=t.allowed??t.snapPoints.map(s=>s.id),n=t.initial??i[0]??t.snapPoints[0]?.id??"default";if(t.persistKey){let s=xe(t.persistKey);s&&i.includes(s)&&(n=s)}return{mode:t.mode??"bottom",flickVelocity:t.flickVelocity??Qt,dragThreshold:t.dragThreshold??Zt,rubberBandEnabled:t.rubberBand??!0,closeOnBack:t.closeOnBack??!1,initialAllowed:i,initialId:n,scrim:{scrimMode:t.scrimMode,scrimColor:t.scrimColor,scrimBlur:t.scrimBlur,scrimInteractive:t.scrimInteractive??(t.scrimTapToClose?!0:void 0),scrimTapToClose:t.scrimTapToClose,scrimPreset:t.scrimPreset,screenRange:t.screenRange,backdropRange:t.backdropRange},animation:{animation:t.animation,duration:t.duration,easing:t.easing,spring:t.spring,respectReducedMotion:t.respectReducedMotion,viewTransitions:t.viewTransitions},lifecycle:{focusTrap:t.focusTrap,initialFocus:t.initialFocus,closeOnEscape:t.closeOnEscape,lockBodyScroll:t.lockBodyScroll,inertSiblings:t.inertSiblings,shouldApplyInertSiblings:e?.shouldApplyInertSiblings}}}var Qt,Zt,ht=u(()=>{"use strict";U();Qt=.65,Zt=18});var Jt,j,H,mt=u(()=>{"use strict";se();ae();de();pe();I();Se();U();Ee();ze();Me();Ie();Le();Pe();Be();Fe();Ge();tt();lt();dt();pt();ht();W();Jt=8,j=class{constructor(){a(this,"fns",[])}add(e){e&&this.fns.push(e)}drain(){for(;this.fns.length;)try{this.fns.pop()()}catch(e){queueMicrotask(()=>{throw e})}}},H=class{constructor(e){a(this,"id",le("bs"));a(this,"element");a(this,"handle");a(this,"scrollContainer");a(this,"backdrop");a(this,"screenComponent");a(this,"mode");a(this,"flickVelocity");a(this,"dragThreshold");a(this,"rubberBandEnabled");a(this,"scrim");a(this,"aria");a(this,"animation");a(this,"lifecycle");a(this,"closeOnBack");a(this,"routedTo");a(this,"snapPointsRaw");a(this,"snaps");a(this,"activeId");a(this,"size",0);a(this,"gesture");a(this,"rootEl",null);a(this,"destroyed",!1);a(this,"currentViewTransition",null);a(this,"currentAbort",new AbortController);a(this,"sizeWriteSentinel",new S);a(this,"progressWriteSentinel",new S);a(this,"isTopSheet",!0);a(this,"progressPayload",{value:0,size:0});a(this,"dragContextBuf",{size:0,maxAxisSize:0,range:{min:0,max:0},rubberBandEnabled:!1});a(this,"bus",ce());a(this,"persistKey");a(this,"linkedSheets",[]);a(this,"scrollCache");a(this,"teardowns",new j);a(this,"transformTemplate");let i=ut(e,{shouldApplyInertSiblings:()=>typeof document>"u"?!1:Array.from(document.body.children).some(o=>o===e.element||o.contains(e.element))});this.element=e.element,this.handle=e.handle??e.element,this.scrollContainer=e.scrollContainer,this.backdrop=e.backdrop,this.screenComponent=e.screenComponent,this.mode=i.mode,this.transformTemplate=re(this.mode),this.aria=new B(this.handle,this.mode),this.flickVelocity=i.flickVelocity,this.dragThreshold=i.dragThreshold,this.rubberBandEnabled=i.rubberBandEnabled,this.scrim=new L({mode:this.mode,screenComponent:this.screenComponent,backdrop:this.backdrop,isDestroyed:()=>this.destroyed,isTopSheet:()=>this.isTopSheet,getAllowedIds:()=>this.snaps.getAllowedIds().slice(),getResolvedSnaps:()=>this.snaps.getResolvedSnaps().slice(),snapTo:s=>{this.snapTo(s)}},i.scrim),this.animation=new D({element:this.element,getRootEl:()=>this.rootEl,applySize:s=>this.applySize(s),getSize:()=>this.size,isDragging:()=>this.gesture?.isDragging??!1},i.animation),this.lifecycle=new P({element:this.element,close:()=>this.close()},i.lifecycle),this.closeOnBack=i.closeOnBack,this.routedTo=e.routedTo,this.snapPointsRaw=e.snapPoints,this.persistKey=e.persistKey,e.linkedSheets&&(this.linkedSheets=e.linkedSheets),this.activeId=i.initialId,V(this.snapPointsRaw),this.rootEl=this.element.closest(".bs-root"),this.snaps=new R(this.snapPointsRaw,i.initialAllowed,this.mode,()=>this.handle.offsetHeight,s=>{this.element.style[oe(this.mode)]=`${s}px`});let n=this.snaps.findById(this.activeId);if(n&&(this.size=n.size),this.applySize(this.size),this.updateAriaSlider(),this.scrollCache=ct({scrollContainer:this.scrollContainer,getMaxAxisSize:()=>this.snaps.getMaxAxisSize()}),this.attach(),this.registerInStack(),this.snaps.getMaxAxisSize()===0&&typeof IntersectionObserver<"u"&&typeof document<"u"){let s=new IntersectionObserver(o=>{for(let l of o){if(!l.isIntersecting)continue;if(this.destroyed)return;this.snaps.recompute();let r=this.snaps.findById(this.activeId);r&&(this.size=r.size,this.applySize(this.size),this.updateAriaSlider()),s.disconnect();return}});s.observe(this.element),this.teardowns.add(()=>s.disconnect())}this.persistKey&&this.teardowns.add(we(this,this.persistKey)),this.teardowns.add(Te({ms:e.autoCollapseAfter,isDestroyed:()=>this.destroyed,isDragging:()=>this.gesture?.isDragging??!1,getAllowedIds:()=>this.snaps.getAllowedIds().slice(),getActiveId:()=>this.activeId,resolveSnap:s=>this.snaps.findById(s),snapTo:s=>{this.snapTo(s)},on:(s,o)=>this.on(s,o)})),this.teardowns.add(ke({routedTo:this.routedTo,closeOnBack:this.closeOnBack,isTopSheet:()=>this.isTopSheet,getSize:()=>this.size,isDestroyed:()=>this.destroyed,close:()=>this.close(),on:(s,o)=>this.on(s,o),sheetId:this.id})),this.size>0&&this.handleOpen()}get state(){return{size:this.size,activeId:this.activeId,isDragging:this.gesture?.isDragging??!1,isAnimating:this.animation.isAnimating,progress:this.computeProgress(this.size)}}on(e,i){return this.bus.on(e,i)}use(e){if(this.destroyed)return console.warn(`[BottomSheet] use("${e.name}") called on destroyed engine \u2014 ignored.`),this;let i=[],n={add:o=>{typeof o=="function"&&i.push(o)}},s;try{s=e.install(this,n)}catch(o){for(let l=i.length-1;l>=0;l--)try{i[l]()}catch(r){queueMicrotask(()=>{throw r})}return queueMicrotask(()=>{throw o}),this}for(let o of i)this.teardowns.add(o);return typeof s=="function"&&this.teardowns.add(s),this}setLinkedSheets(e){this.destroyed||(this.linkedSheets=e)}getAllowedIds(){return this.snaps.getAllowedIds().slice()}async snapTo(e,i=0,n=!1){if(this.destroyed)return;let s=typeof i=="object"?i:{velocity:i},o=s.velocity??0,l=s.signal;if(l?.aborted)return;let r=this.snaps.findById(e);if(!r){console.warn(`[BottomSheet] unknown snap id: ${e}`);return}if(!this.snaps.getAllowedIds().includes(e)){console.warn(`[BottomSheet] snap "${e}" is not in allowed list`);return}if(!n&&this.emitBeforeSnap(r,this.activeId))return;let c=this.newCycle(),d=()=>{this.animation.cancel(),this.newCycle()};l?.addEventListener("abort",d,{once:!0});let p=this.size===0,h=this.activeId,b=this.size;if(this.scrollCache.cache(h,b,r.size),this.activeId=e,this.animation.viewTransitionsAvailable){this.currentViewTransition?.skipTransition?.();let g=document.startViewTransition(()=>{this.applySize(r.size)});this.currentViewTransition=g;try{await g.finished}catch{}this.currentViewTransition===g&&(this.currentViewTransition=null)}else await this.animation.animateTo(r.size,o);l?.removeEventListener("abort",d),!c.aborted&&(this.scrollCache.restore(e,b,r.size),this.updateAriaSlider(),this.emit("snap",{id:e,size:r.size}),p&&r.size>0&&(this.emit("open",{id:e}),this.handleOpen(),Ae(this.linkedSheets,this)),r.size===0&&(this.emit("close",void 0),this.handleClose()))}async dragTo(e,i=0){if(this.destroyed)return;let n=typeof i=="object"?i:{velocity:i},s=n.velocity??0,o=n.signal;if(o?.aborted)return;this.newCycle();let l=()=>{this.animation.cancel(),this.newCycle()};o?.addEventListener("abort",l,{once:!0});let r=Math.max(0,Math.min(e,this.snaps.getMaxAxisSize()));await this.animation.animateTo(r,s),o?.removeEventListener("abort",l),this.destroyed||o?.aborted}open(e){if(this.destroyed)return Promise.resolve();let i=e??this.snaps.getAllowedIds().find(n=>n!=="closed")??this.activeId;return this.snapTo(i)}close(){if(this.destroyed)return Promise.resolve();let e=this.snapPointsRaw.find(i=>i.id==="closed")?.id??this.snaps.getAllowedIds()[0];return this.snapTo(e??this.activeId)}setAllowed(e,i){if(this.destroyed)return;if(i!==void 0&&e.includes(i)||!e.includes(this.activeId)&&e.length>0||(this.animation.cancel(),this.newCycle()),this.snaps.setAllowedIds(e),this.updateAriaSlider(),i&&e.includes(i))this.snapTo(i,0,!0);else if(!e.includes(this.activeId)){let s=e[0];s&&this.snapTo(s,0,!0)}}setBackdropRange(e){this.scrim.setBackdropRange(e,()=>this.applySize(this.size))}setScreenRange(e){this.scrim.setScreenRange(e,()=>this.applySize(this.size))}setScrimColor(e){this.scrim.setScrimColor(e)}setScrimBlur(e){this.scrim.setScrimBlur(e)}setScrimInteractive(e){this.scrim.setScrimInteractive(e)}setScrim(e){this.scrim.setScrim(e,()=>this.applySize(this.size))}setScrimMode(e){this.scrim.setScrimMode(e,()=>this.applySize(this.size))}setScrimTapToClose(e){this.scrim.setScrimTapToClose(e)}setScrimEnabled(e){this.scrim.setScrimEnabled(e,()=>this.applySize(this.size))}setScrimOverlay(e){return this.scrim.setScrimOverlay(e)}getScrimState(){return{mode:this.scrim.scrimMode,enabled:this.scrim.scrimEnabled}}setSnapPoints(e,i){if(this.destroyed)return;this.animation.cancel(),this.newCycle(),this.snapPointsRaw=e,V(e),this.snaps.setRaw(e),i&&this.snaps.setAllowedIds(i),this.scrollCache.clear(),this.scrim.invalidateOpacityCache();let n=this.snaps.findById(this.activeId);n&&this.applySize(n.size),this.updateAriaSlider()}destroy(){this.destroyed=!0,this.currentAbort.abort(),this.currentViewTransition?.skipTransition?.(),this.currentViewTransition=null,this.bus.clear(),this.animation.cancel(),this.gesture?.forceClearDragState(),this.teardowns.drain(),this.scrim.destroy(),this.animation.destroy(),this.lifecycle.destroy(),this.backdrop&&(this.backdrop.style.opacity="",this.backdrop.style.pointerEvents=""),this.screenComponent&&(this.screenComponent.style.opacity="",this.screenComponent.style.display=""),this.sizeWriteSentinel.invalidate(),this.progressWriteSentinel.invalidate()}emit(e,i){this.bus.emit(e,i)}newCycle(){return this.currentAbort.abort(),this.currentAbort=new AbortController,this.currentAbort.signal}emitBeforeSnap(e,i){let n=!1,s=!1;return this.emit("before-snap",{id:e.id,size:e.size,previousId:i,cancel:()=>{if(s){console.warn("[BottomSheet] before-snap.cancel() called asynchronously \u2014 ignored. cancel() must be invoked synchronously inside the listener.");return}n=!0}}),s=!0,n}recomputeSnaps(){let e=new Set;for(let i of this.snapPointsRaw)e.has(i.id)&&console.warn(`[BottomSheet] duplicate snap id "${i.id}" \u2014 only the first occurrence is reachable.`),e.add(i.id);this.snaps.setRaw(this.snapPointsRaw),this.scrim.invalidateOpacityCache()}getAllowedRange(){return this.snaps.getAllowedRange()}updateAriaSlider(){this.aria.setValue(this.snaps.getAllowedIds(),this.activeId)}registerInStack(){this.teardowns.add(ne.push({id:this.id,setZIndex:e=>{this.element.style.zIndex=String(e),this.backdrop&&(this.backdrop.style.zIndex=String(e-1))},setIsTop:e=>{this.isTopSheet=e,this.backdrop&&(this.backdrop.style.display=e?"":"none")}}))}attach(){this.gesture=new O({handle:this.handle,element:this.element,mode:this.mode,getRoot:()=>this.rootEl,getDragContext:()=>{let e=this.dragContextBuf,i=this.getAllowedRange();return e.size=this.size,e.maxAxisSize=this.snaps.getMaxAxisSize(),e.range.min=i.min,e.range.max=i.max,e.rubberBandEnabled=this.rubberBandEnabled,e},cancelAnimation:()=>this.animation.cancel(),applySize:e=>this.applySize(e),animateTo:(e,i)=>this.animation.animateTo(e,i),settleAfterDrag:(e,i,n)=>this.settleAfterDrag(e,i,n),emit:(e,i)=>this.emit(e,i),listenerCount:e=>this.bus.listenerCount(e)}),this.teardowns.add(this.gesture.install());try{this.attachFeatures()}catch(e){this.teardowns.drain();try{this.scrim.destroy()}catch(i){queueMicrotask(()=>{throw i})}try{this.animation.destroy()}catch(i){queueMicrotask(()=>{throw i})}try{this.lifecycle.destroy()}catch(i){queueMicrotask(()=>{throw i})}throw this.destroyed=!0,e}}attachFeatures(){if(this.scrollContainer&&this.teardowns.add(Ce({container:this.scrollContainer,isDragging:()=>this.gesture?.isDragging??!1,isAnimating:()=>this.animation.isAnimating,getAllowedIds:()=>this.snaps.getAllowedIds(),getActiveId:()=>this.activeId,snapTo:e=>{this.snapTo(e)}})),typeof window<"u"){if(this.teardowns.add(De({element:this.element,getMode:()=>this.mode,isDestroyed:()=>this.destroyed,isDragging:()=>this.gesture?.isDragging??!1,resolveActiveSnap:()=>this.snaps.findById(this.activeId),getMaxAxisSize:()=>this.snaps.getMaxAxisSize(),getSize:()=>this.size,setMaxAxisSize:e=>{this.snaps.setMaxAxisSize(e)},setSize:e=>{this.size=e},recomputeSnaps:()=>this.recomputeSnaps(),applySize:e=>this.applySize(e),cancelInFlight:()=>{this.animation.cancel()},newCycle:()=>{this.newCycle()}})),this.lifecycle.closeOnEscape){let e=i=>{this.destroyed||i.key==="Escape"&&this.isTopSheet&&this.size>0&&this.close()};document.addEventListener("keydown",e),this.teardowns.add(()=>document.removeEventListener("keydown",e))}this.teardowns.add(Re({element:this.element,isVerticalAxis:()=>this.mode==="bottom"||this.mode==="top",isDestroyed:()=>this.destroyed,isDragging:()=>this.gesture?.isDragging??!1,recomputeSnaps:()=>this.recomputeSnaps(),resolveActiveSnap:()=>this.snaps.findById(this.activeId),getMaxAxisSize:()=>this.snaps.getMaxAxisSize(),getSize:()=>this.size,setMaxAxisSize:e=>{this.snaps.setMaxAxisSize(e)},setSize:e=>{this.size=e},applySize:e=>this.applySize(e)}))}this.teardowns.add(Oe({handle:this.handle,mode:this.mode,isDestroyed:()=>this.destroyed,getAllowedIds:()=>this.snaps.getAllowedIds(),getActiveId:()=>this.activeId,snapTo:e=>{this.snapTo(e)}})),this.scrim.attach()}settleAfterDrag(e,i,n="touch"){let s=this.newCycle(),o=this.snaps.findDragSettleTarget({delta:e,velocity:i,pointerKind:n,size:this.size,activeId:this.activeId,flickVelocity:this.flickVelocity,dragThreshold:this.dragThreshold});if(!o)return;let l=this.activeId;if(this.emitBeforeSnap(o,l)){let c=this.snaps.findById(l);c&&this.animation.animateTo(c.size,0);return}let r=this.size;this.scrollCache.cache(l,r,o.size),this.activeId=o.id,this.animation.animateTo(o.size,i).then(()=>{s.aborted||(this.scrollCache.restore(o.id,r,o.size),this.updateAriaSlider(),this.emit("snap",{id:o.id,size:o.size}),this.haptic(),l==="closed"&&o.size>0&&(this.emit("open",{id:o.id}),this.handleOpen()),o.size===0&&(this.emit("close",void 0),this.handleClose()))})}haptic(){if(typeof navigator<"u"&&"vibrate"in navigator)try{navigator.vibrate(Jt)}catch{}}applySize(e){this.size=e;let i=this.snaps.getMaxAxisSize()-e,n=this.element.style;n.transform=this.transformTemplate(i),this.sizeWriteSentinel.shouldWrite(e,.5)&&n.setProperty("--bs-size",`${e}px`);let s=this.computeProgress(e),o=this.progressWriteSentinel.shouldWrite(s,.005);o&&n.setProperty("--bs-progress",String(s)),this.scrim.applyOpacity(s,o),o&&this.bus.listenerCount("progress")>0&&(this.progressPayload.value=s,this.progressPayload.size=e,this.emit("progress",this.progressPayload))}computeProgress(e){let{min:i,max:n}=this.getAllowedRange();return n<=i?0:Math.min(Math.max((e-i)/(n-i),0),1)}handleOpen(){try{this.lifecycle.install()}catch(e){this.destroyed||this.newCycle(),this.handleClose(),this.applySize(0),this.activeId=this.snapPointsRaw.find(i=>i.id==="closed")?.id??this.activeId,this.size=0,queueMicrotask(()=>{throw e})}}handleClose(){this.lifecycle.release()}}});var bt,ft=u(()=>{"use strict";bt=':where(.bs-root){--bs-surface:#ffffff;--bs-surface-border:rgba(225,227,237,1);--bs-shadow:0 -3px 12px rgba(0,0,0,0.12);--bs-radius:20px;--bs-handle-color:#b5b3a8;--bs-handle-width:40px;--bs-handle-height:5px;--bs-z-backdrop:90;--bs-z-sheet:100;--bs-header-min-height:80px;--bs-backdrop-color:rgba(0,0,0,0.5);--bs-scrim-color:rgba(0,0,0,0.4);--bs-scrim-blur:0px;--bs-z-scrim:calc(var(--bs-z-sheet) - 1);--bs-size:0px;--bs-progress:0}.bs-backdrop{position:fixed;inset:0;background:var(--bs-backdrop-color);opacity:0;pointer-events:none;z-index:var(--bs-z-backdrop);transition:opacity 0.15s linear;will-change:opacity}.bs-root[data-dragging="true"] .bs-backdrop,.bs-root[data-animating="true"] .bs-backdrop{transition:none}.bs-sheet{position:fixed;background:var(--bs-surface);box-shadow:var(--bs-shadow);z-index:var(--bs-z-sheet);overflow:hidden;display:flex;flex-direction:column;-webkit-tap-highlight-color:transparent;user-select:none;overscroll-behavior:contain}.bs-sheet[data-mode="bottom"]{left:0;right:0;bottom:0;width:100%;border-top-left-radius:var(--bs-radius);border-top-right-radius:var(--bs-radius);border-top:1px solid var(--bs-surface-border);padding-bottom:env(safe-area-inset-bottom);box-shadow:0 calc(var(--bs-progress,0) * -2px - 3px) calc(var(--bs-progress,0) * 18px + 12px) rgba(0,0,0,calc(var(--bs-progress,0) * 0.15 + 0.12))}.bs-sheet[data-mode="top"]{left:0;right:0;top:0;width:100%;border-bottom-left-radius:var(--bs-radius);border-bottom-right-radius:var(--bs-radius);border-bottom:1px solid var(--bs-surface-border);flex-direction:column-reverse;box-shadow:0 3px 12px rgba(0,0,0,0.12);padding-top:env(safe-area-inset-top)}.bs-sheet[data-mode="left"]{top:0;bottom:0;left:0;height:100%;border-top-right-radius:var(--bs-radius);border-bottom-right-radius:var(--bs-radius);border-right:1px solid var(--bs-surface-border);box-shadow:3px 0 12px rgba(0,0,0,0.12)}.bs-sheet[data-mode="right"]{top:0;bottom:0;right:0;height:100%;border-top-left-radius:var(--bs-radius);border-bottom-left-radius:var(--bs-radius);border-left:1px solid var(--bs-surface-border);box-shadow:-3px 0 12px rgba(0,0,0,0.12)}.bs-sheet[data-mode="left"] .bs-content{padding-right:36px}.bs-sheet[data-mode="right"] .bs-content{padding-left:36px}.bs-handle{flex-shrink:0;min-height:44px;display:flex;flex-direction:column;justify-content:center;padding:8px 16px 4px;cursor:grab;touch-action:none;user-select:none;background:var(--bs-surface);-webkit-tap-highlight-color:transparent;outline:none;position:relative}.bs-handle:active{cursor:grabbing}.bs-handle:focus-visible{outline:2px solid currentColor;outline-offset:-2px;border-radius:var(--bs-radius)}.bs-handle::before{content:"";display:block;width:var(--bs-handle-width);height:var(--bs-handle-height);background:var(--bs-handle-color);border-radius:calc(var(--bs-handle-height) / 2);margin:0 auto 8px;transition:width 0.15s ease,background 0.15s ease,transform 0.15s ease;pointer-events:none}.bs-sheet[data-mode="left"] .bs-handle,.bs-sheet[data-mode="right"] .bs-handle{position:absolute;top:0;bottom:0;width:28px;min-width:0;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;background:var(--bs-surface);z-index:1;overflow:hidden}.bs-sheet[data-mode="left"] .bs-handle>*,.bs-sheet[data-mode="right"] .bs-handle>*{display:none}.bs-sheet[data-mode="left"] .bs-handle{right:0;border-left:1px solid var(--bs-surface-border)}.bs-sheet[data-mode="right"] .bs-handle{left:0;border-right:1px solid var(--bs-surface-border)}.bs-sheet[data-mode="left"] .bs-handle::before,.bs-sheet[data-mode="right"] .bs-handle::before{width:var(--bs-handle-height);height:var(--bs-handle-width);margin:0}.bs-sheet:hover .bs-handle::before{background:color-mix(in oklab,var(--bs-handle-color),#000 15%)}.bs-handle:active::before{background:color-mix(in oklab,var(--bs-handle-color),#000 35%);transform:scaleX(1.15)}.bs-handle.bs-handle--ticks::after{content:"";display:block;position:absolute;left:50%;bottom:6px;transform:translateX(-50%);width:calc(var(--bs-handle-width) * 2);height:3px;background-image:radial-gradient( circle,var(--bs-handle-color) 0 1.5px,transparent 1.6px );background-size:8px 3px;background-repeat:repeat-x;background-position:center;opacity:0;transition:opacity 0.18s ease-out;pointer-events:none}.bs-root[data-dragging="true"] .bs-handle.bs-handle--ticks::after{opacity:0.4}.bs-sheet[data-mode="top"] .bs-handle.bs-handle--ticks::after{bottom:auto;top:6px}.bs-sheet[data-mode="left"] .bs-handle.bs-handle--ticks::after,.bs-sheet[data-mode="right"] .bs-handle.bs-handle--ticks::after{left:50%;top:50%;bottom:auto;transform:translate(-50%,-50%);width:3px;height:calc(var(--bs-handle-width) * 2);background-size:3px 8px;background-repeat:repeat-y;margin-left:calc(var(--bs-handle-height) + 6px)}.bs-sheet[data-mode="right"] .bs-handle.bs-handle--ticks::after{margin-left:calc(-1 * (var(--bs-handle-height) + 6px))}.bs-content{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:0 16px 16px}.bs-screen{position:absolute;inset:0;pointer-events:none;display:none;z-index:var(--bs-z-scrim)}.bs-scrim{background:var(--bs-scrim-color);transition:opacity 0.15s linear;will-change:opacity}.bs-root[data-dragging="true"] .bs-scrim,.bs-root[data-animating="true"] .bs-scrim{transition:none}.bs-scrim{backdrop-filter:blur(var(--bs-scrim-blur));-webkit-backdrop-filter:blur(var(--bs-scrim-blur))}.bs-button-slot{position:absolute;z-index:calc(var(--bs-z-sheet) + 1);pointer-events:auto}.bs-button-slot[data-side="left"]{left:16px;bottom:calc(var(--bs-size,0px) + 12px);transition:bottom 0.15s ease}.bs-button-slot[data-side="right"]{right:16px;bottom:calc(var(--bs-size,0px) + 12px);transition:bottom 0.15s ease}@media (prefers-reduced-motion:reduce){.bs-backdrop,.bs-handle::before,.bs-button-slot[data-side="left"],.bs-button-slot[data-side="right"]{transition:none !important}}@media (prefers-color-scheme:dark){:where(.bs-root){--bs-surface:#1a1a1d;--bs-surface-border:rgba(255,255,255,0.08);--bs-handle-color:rgba(255,255,255,0.45);--bs-shadow:0 -3px 16px rgba(0,0,0,0.5)}}.bs-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:where(.ovl-root){--ovl-surface:var(--bs-surface,#ffffff);--ovl-surface-border:var(--bs-surface-border,rgba(0,0,0,0.08));--ovl-shadow:0 -8px 40px rgba(0,0,0,0.35);--ovl-radius:var(--bs-radius,20px);--ovl-backdrop-color:rgba(0,0,0,0.5);--ovl-z-backdrop:200;--ovl-z-panel:201}.ovl-backdrop{position:fixed;inset:0;background:var(--ovl-backdrop-color);opacity:0;pointer-events:none;z-index:var(--ovl-z-backdrop)}.ovl-panel{position:fixed;background:var(--ovl-surface);box-shadow:var(--ovl-shadow);z-index:var(--ovl-z-panel);-webkit-tap-highlight-color:transparent;outline:none;transition:transform 0.32s cubic-bezier(0.29,1.24,0.84,0.99),opacity 0.32s ease-out}.ovl-panel[data-state="open"]{transform:translate3d(0,0,0);opacity:1}@starting-style{.ovl-panel[data-edge="bottom"][data-state="open"]{transform:translate3d(0,100%,0);opacity:0}.ovl-panel[data-edge="top"][data-state="open"]{transform:translate3d(0,-100%,0);opacity:0}.ovl-panel[data-edge="left"][data-state="open"]{transform:translate3d(-100%,0,0);opacity:0}.ovl-panel[data-edge="right"][data-state="open"]{transform:translate3d(100%,0,0);opacity:0}}.ovl-panel[data-edge="bottom"]{left:0;right:0;bottom:0;width:100%;border-top-left-radius:var(--ovl-radius);border-top-right-radius:var(--ovl-radius);border-top:1px solid var(--ovl-surface-border);padding-bottom:env(safe-area-inset-bottom)}.ovl-panel[data-edge="top"]{left:0;right:0;top:0;width:100%;border-bottom-left-radius:var(--ovl-radius);border-bottom-right-radius:var(--ovl-radius);border-bottom:1px solid var(--ovl-surface-border);padding-top:env(safe-area-inset-top)}.ovl-panel[data-edge="left"]{top:0;bottom:0;left:0;height:100%;border-top-right-radius:var(--ovl-radius);border-bottom-right-radius:var(--ovl-radius);border-right:1px solid var(--ovl-surface-border)}.ovl-panel[data-edge="right"]{top:0;bottom:0;right:0;height:100%;border-top-left-radius:var(--ovl-radius);border-bottom-left-radius:var(--ovl-radius);border-left:1px solid var(--ovl-surface-border)}@media (prefers-reduced-motion:reduce){.ovl-panel,.ovl-backdrop{transition:none !important}}'});var Mt={};ie(Mt,{BottomSheetElement:()=>T,defineBottomSheet:()=>Q});var gt,vt,yt,St,xt,ei,wt,Tt,Et,At,ti,zt,ii,ni,si,ri,oi,ai,_,li,T,kt,Q,Z=u(()=>{"use strict";mt();ft();gt="snap-points",vt="allowed",yt="initial",St="mode",xt="backdrop",ei="stylesheet",wt="animation",Tt="focus-trap",Et="close-on-escape",At="lock-body-scroll",ti=t=>!!t&&typeof t=="object"&&typeof t.id=="string"&&(typeof t.size=="number"||typeof t.size=="string"),zt=[{id:"full",size:"full"}],ii=t=>{if(!t)return zt;try{let e=JSON.parse(t);if(Array.isArray(e)&&e.length>0&&e.every(ti))return e;if(Array.isArray(e))return zt}catch{}return t.split(",").map(e=>e.trim()).filter(Boolean).map(e=>{let[i,n]=e.split(":").map(l=>l.trim()),s=Number(n),o=Number.isFinite(s)?s:n;return{id:i??"default",size:o}})},ni=["bottom","top","left","right"],si=["spring","tween","ios-spring","material-bounce","linear","snappy"],ri=t=>t&&ni.includes(t)?t:"bottom",oi=t=>t&&si.includes(t)?t:void 0,ai=t=>t?t.split(",").map(e=>e.trim()).filter(Boolean):void 0,_=t=>{let e=document.createElement("slot");return e.name=t,e},li=()=>{let t=document.createElement("div");t.className="bs-root";let e=document.createElement("div");e.className="bs-backdrop",e.setAttribute("part","backdrop");let i=document.createElement("div");i.className="bs-screen",i.setAttribute("part","screen"),i.appendChild(_("screen"));let n=document.createElement("section");n.className="bs-sheet",n.setAttribute("part","sheet"),n.setAttribute("role","dialog"),n.setAttribute("aria-modal","false");let s=document.createElement("div");s.className="bs-button-slot",s.setAttribute("data-side","left"),s.setAttribute("part","left-button"),s.appendChild(_("leftButton"));let o=document.createElement("div");o.className="bs-button-slot",o.setAttribute("data-side","right"),o.setAttribute("part","right-button"),o.appendChild(_("rightButton"));let l=document.createElement("div");l.className="bs-handle",l.setAttribute("part","handle"),l.setAttribute("role","slider"),l.setAttribute("tabindex","0"),l.setAttribute("aria-label","Resize sheet"),l.appendChild(_("header"));let r=document.createElement("div");r.className="bs-content",r.setAttribute("part","content"),r.setAttribute("tabindex","0"),r.setAttribute("role","region"),r.setAttribute("aria-label","Sheet content");let c=document.createElement("slot");r.appendChild(c);let d=document.createElement("span");d.className="bs-sr-announce",d.setAttribute("role","status"),d.setAttribute("aria-live","polite"),d.setAttribute("aria-atomic","true"),d.style.cssText="position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);",n.append(s,o,l,r),t.append(e,i,n,d);let p=document.createDocumentFragment();return p.appendChild(t),{fragment:p,refs:{sheet:n,handle:l,content:r,backdrop:e,screen:i,leftButton:s,rightButton:o,announcer:d}}},T=class extends HTMLElement{constructor(){super();a(this,"engine",null);a(this,"root");a(this,"offHandlers",[]);a(this,"refs");a(this,"backdropClickHandler",null);this.root=this.attachShadow({mode:"open"});let i=document.createElement("style");i.textContent=bt,this.root.appendChild(i);let n=this.getAttribute(ei);if(n){let r=document.createElement("link");r.rel="stylesheet",r.href=n,this.root.appendChild(r)}let s=document.createElement("style");s.textContent=[":host { display: contents; }",".bs-handle:focus-visible {"," outline: 2px solid currentColor;"," outline-offset: -2px;"," border-radius: var(--bs-radius, 20px);","}","@media (forced-colors: active) {"," .bs-handle:focus-visible { outline: 2px solid CanvasText; }","}"].join(`
|
|
2
|
+
`),this.root.appendChild(s);let{fragment:o,refs:l}=li();this.refs=l,this.root.appendChild(o)}static get observedAttributes(){return[gt,vt,yt,St,xt,wt,Tt,Et,At]}connectedCallback(){this.initEngine()}disconnectedCallback(){this.teardownEngine()}attributeChangedCallback(){this.engine&&(this.teardownEngine(),this.initEngine())}teardownEngine(){this.offHandlers.forEach(i=>i()),this.offHandlers=[],this.backdropClickHandler&&(this.refs.backdrop.removeEventListener("click",this.backdropClickHandler),this.backdropClickHandler=null),this.engine?.destroy(),this.engine=null}initEngine(){let{sheet:i,handle:n,content:s,backdrop:o,announcer:l}=this.refs,r=ri(this.getAttribute(St));i.setAttribute("data-mode",r);let c=this.getAttribute(Tt)==="true";c?i.setAttribute("aria-modal","true"):i.removeAttribute("aria-modal");let d=this.getAttribute(xt)!=="false";o.style.display=d?"":"none",d&&(this.backdropClickHandler=()=>{this.engine?.close()},o.addEventListener("click",this.backdropClickHandler));let p={element:i,handle:n,scrollContainer:s,backdrop:d?o:void 0,screenComponent:this.refs.screen,mode:r,snapPoints:ii(this.getAttribute(gt)),allowed:ai(this.getAttribute(vt)),initial:this.getAttribute(yt)??void 0,animation:oi(this.getAttribute(wt)),focusTrap:c,closeOnEscape:this.getAttribute(Et)!=="false",lockBodyScroll:this.getAttribute(At)!=="false"};this.engine=new H(p),this.offHandlers=[this.engine.on("snap",h=>{l.textContent=h.id,this.dispatchEvent(new CustomEvent("snap",{detail:h}))}),this.engine.on("open",h=>this.dispatchEvent(new CustomEvent("open",{detail:h}))),this.engine.on("close",()=>this.dispatchEvent(new CustomEvent("close"))),this.engine.on("progress",h=>this.dispatchEvent(new CustomEvent("progress",{detail:h})))]}snapTo(i){return this.engine?.snapTo(i)??Promise.resolve()}open(i){return this.engine?.open(i)??Promise.resolve()}close(){return this.engine?.close()??Promise.resolve()}setAllowed(i,n){this.engine?.setAllowed(i,n)}get sheetState(){return this.engine?.state??null}},kt=!1,Q=(t="bottom-sheet")=>{kt||customElements.get(t)||(customElements.define(t,T),kt=!0)}});var di={};ie(di,{BottomSheetElement:()=>T,defineBottomSheet:()=>Q});Z();typeof window<"u"&&typeof customElements<"u"&&Promise.resolve().then(()=>(Z(),Mt)).then(({defineBottomSheet:t})=>{t()});return Pt(di);})();
|
|
3
|
+
//# sourceMappingURL=element.iife.global.js.map
|