@solid2-aria/vaul 0.0.0-stage → 0.0.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["<DrawerContext value={context}>{props.children}</DrawerContext>","value={context}","<Show when={mounted() && (context.present || props.forceMount === true)}>\n <SolidPortal\n mount={props.container ?? context.props.container ?? document.body}\n >\n <PortalContext value={props.forceMount ?? false}>\n {props.children}\n </PortalContext>\n </SolidPortal>\n </Show>","mounted() && (context.present || props.forceMount === true)","<SolidPortal\n mount={props.container ?? context.props.container ?? document.body}\n >\n <PortalContext value={props.forceMount ?? false}>\n {props.children}\n </PortalContext>\n </SolidPortal>","<PortalContext value={props.forceMount ?? false}>\n {props.children}\n </PortalContext>","<Show when={props.render} keyed fallback={<button {...attributes} />}>\n {(render) => render(attributes)}\n </Show>","<button {...attributes} />","<Show\n when={\n context.modal &&\n (context.present || props.forceMount === true || forceMount)\n }\n >\n <OverlayElement {...props} />\n </Show>","context.modal &&\n (context.present || props.forceMount === true || forceMount)","<OverlayElement {...props} />","ref={[\n props.ref,\n (element) => {\n context.setOverlay(element);\n },\n ]}","<div\n {...rest}\n ref={[\n props.ref,\n (element) => {\n context.setOverlay(element);\n },\n ]}\n data-vaul-overlay=\"\"\n data-state={context.isOpen ? \"open\" : \"closed\"}\n data-vaul-snap-points={\n (context.props.snapPoints?.length ?? 0) > 0 ? \"true\" : \"false\"\n }\n data-vaul-snap-points-overlay={context.shouldFade ? \"true\" : \"false\"}\n data-vaul-animate={context.shouldAnimate ? \"true\" : \"false\"}\n />","<Show when={context.present || props.forceMount === true || forceMount}>\n <ContentElement {...props} />\n </Show>","<ContentElement {...props} />","<FocusScope contain={context.isOpen && context.modal && !context.childOpen}>\n <div\n id={context.contentId}\n role=\"dialog\"\n aria-modal={context.modal ? \"true\" : undefined}\n aria-labelledby={context.titleId}\n aria-describedby={context.descriptionId}\n tabindex={-1}\n {...rest}\n ref={[\n props.ref,\n (element) => {\n context.setContent(element);\n },\n ]}\n data-state={context.isOpen ? \"open\" : \"closed\"}\n data-vaul-drawer=\"\"\n data-vaul-drawer-direction={context.direction}\n data-vaul-custom-container={context.props.container ? \"true\" : \"false\"}\n data-vaul-snap-points={\n (context.props.snapPoints?.length ?? 0) > 0 ? \"true\" : \"false\"\n }\n data-vaul-delayed-snap-points={\n context.snapPointsOffset.length > 0 ? \"true\" : \"false\"\n }\n data-vaul-handle-only={\n context.props.handleOnly === true ? \"true\" : \"false\"\n }\n data-vaul-animate={context.shouldAnimate ? \"true\" : \"false\"}\n onPointerDown={(event) => {\n callHandler(props.onPointerDown, event);\n context.press(event);\n }}\n onPointerMove={(event) => {\n callHandler(props.onPointerMove, event);\n\n if (!event.defaultPrevented) {\n context.drag(event);\n }\n }}\n onPointerUp={(event) => {\n callHandler(props.onPointerUp, event);\n context.release(event);\n }}\n onPointerCancel={(event) => {\n callHandler(props.onPointerCancel, event);\n context.cancelDrag();\n }}\n onLostPointerCapture={(event) => {\n callHandler(props.onLostPointerCapture, event);\n context.cancelDrag();\n }}\n />\n </FocusScope>","context.isOpen && context.modal && !context.childOpen","role=\"dialog\"","tabindex={-1}","onPointerDown={(event) => {\n callHandler(props.onPointerDown, event);\n context.press(event);\n }}","onPointerMove={(event) => {\n callHandler(props.onPointerMove, event);\n\n if (!event.defaultPrevented) {\n context.drag(event);\n }\n }}","onPointerUp={(event) => {\n callHandler(props.onPointerUp, event);\n context.release(event);\n }}","onPointerCancel={(event) => {\n callHandler(props.onPointerCancel, event);\n context.cancelDrag();\n }}","onLostPointerCapture={(event) => {\n callHandler(props.onLostPointerCapture, event);\n context.cancelDrag();\n }}","ref={[\n props.ref,\n (element) => {\n context.setContent(element);\n },\n ]}","<div\n id={context.contentId}\n role=\"dialog\"\n aria-modal={context.modal ? \"true\" : undefined}\n aria-labelledby={context.titleId}\n aria-describedby={context.descriptionId}\n tabindex={-1}\n {...rest}\n ref={[\n props.ref,\n (element) => {\n context.setContent(element);\n },\n ]}\n data-state={context.isOpen ? \"open\" : \"closed\"}\n data-vaul-drawer=\"\"\n data-vaul-drawer-direction={context.direction}\n data-vaul-custom-container={context.props.container ? \"true\" : \"false\"}\n data-vaul-snap-points={\n (context.props.snapPoints?.length ?? 0) > 0 ? \"true\" : \"false\"\n }\n data-vaul-delayed-snap-points={\n context.snapPointsOffset.length > 0 ? \"true\" : \"false\"\n }\n data-vaul-handle-only={\n context.props.handleOnly === true ? \"true\" : \"false\"\n }\n data-vaul-animate={context.shouldAnimate ? \"true\" : \"false\"}\n onPointerDown={(event) => {\n callHandler(props.onPointerDown, event);\n context.press(event);\n }}\n onPointerMove={(event) => {\n callHandler(props.onPointerMove, event);\n\n if (!event.defaultPrevented) {\n context.drag(event);\n }\n }}\n onPointerUp={(event) => {\n callHandler(props.onPointerUp, event);\n context.release(event);\n }}\n onPointerCancel={(event) => {\n callHandler(props.onPointerCancel, event);\n context.cancelDrag();\n }}\n onLostPointerCapture={(event) => {\n callHandler(props.onLostPointerCapture, event);\n context.cancelDrag();\n }}\n />","<h2 id={context.titleId} {...props} />","<p id={context.descriptionId} {...props} />","onClick={(event) => {\n callHandler(props.onClick, event);\n\n if (!event.defaultPrevented) {\n cycle();\n }\n }}","onPointerDown={(event) => {\n callHandler(props.onPointerDown, event);\n\n if (event.defaultPrevented) {\n return;\n }\n\n pressTime = Date.now();\n pressPosition = { x: event.clientX, y: event.clientY };\n moved = false;\n context.press(event, true);\n event.stopPropagation();\n }}","onPointerMove={(event) => {\n callHandler(props.onPointerMove, event);\n\n if (\n Math.abs(event.clientX - pressPosition.x) > 2 ||\n Math.abs(event.clientY - pressPosition.y) > 2\n ) {\n moved = true;\n }\n }}","onPointerCancel={(event) => {\n callHandler(props.onPointerCancel, event);\n moved = true;\n context.cancelDrag();\n }}","{props.children}","<div\n {...rest}\n data-vaul-handle=\"\"\n aria-hidden=\"true\"\n data-vaul-drawer-visible={context.isOpen ? \"true\" : \"false\"}\n onClick={(event) => {\n callHandler(props.onClick, event);\n\n if (!event.defaultPrevented) {\n cycle();\n }\n }}\n onPointerDown={(event) => {\n callHandler(props.onPointerDown, event);\n\n if (event.defaultPrevented) {\n return;\n }\n\n pressTime = Date.now();\n pressPosition = { x: event.clientX, y: event.clientY };\n moved = false;\n context.press(event, true);\n event.stopPropagation();\n }}\n onPointerMove={(event) => {\n callHandler(props.onPointerMove, event);\n\n if (\n Math.abs(event.clientX - pressPosition.x) > 2 ||\n Math.abs(event.clientY - pressPosition.y) > 2\n ) {\n moved = true;\n }\n }}\n onPointerCancel={(event) => {\n callHandler(props.onPointerCancel, event);\n moved = true;\n context.cancelDrag();\n }}\n >\n <span data-vaul-handle-hitarea=\"\" aria-hidden=\"true\">\n {props.children}\n </span>\n </div>","_$createComponent","_$memo","SolidPortal","_$getNextElement","_$scope"],"sources":["../../src/context.ts","../../src/constants.ts","../../src/helpers.ts","../../src/create-background.ts","../../src/create-snap-points.ts","../../src/create-drawer.ts","../../src/create-layer.ts","../../src/create-position.ts","../../src/drawer.tsx","../../src/index.ts"],"sourcesContent":["/*\n * Derived from Vaul (https://github.com/emilkowalski/vaul): src/context.ts.\n * Copyright (c) 2023 Emil Kowalski\n * Modified for Solid Aria: native Solid 2 contexts, reactive getters, and callback refs.\n * MIT licensed. See LICENSE, VAUL-LICENSE, and NOTICE.txt in the package root.\n */\n\nimport { createContext } from \"solid-js\";\n\nimport type { DialogProps, DrawerDirection, SnapPoint } from \"./types\";\n\nexport interface DrawerContextValue {\n readonly props: DialogProps;\n readonly isOpen: boolean;\n readonly present: boolean;\n readonly shouldAnimate: boolean;\n readonly direction: DrawerDirection;\n readonly modal: boolean;\n readonly dismissible: boolean;\n readonly contentId: string;\n readonly titleId: string;\n readonly descriptionId: string;\n readonly content: HTMLDivElement | null;\n readonly overlay: HTMLDivElement | null;\n readonly trigger: HTMLButtonElement | null;\n readonly activeSnapPoint: SnapPoint | null;\n readonly activeSnapPointIndex: number;\n readonly snapPointsOffset: readonly number[];\n readonly shouldFade: boolean;\n readonly isDragging: boolean;\n readonly dragProgress: number;\n readonly childOpen: boolean;\n setContent: (element: HTMLDivElement | null) => void;\n setOverlay: (element: HTMLDivElement | null) => void;\n setTrigger: (element: HTMLButtonElement | null) => void;\n setActiveSnapPoint: (point: SnapPoint | null) => void;\n setOpen: (open: boolean) => void;\n close: () => void;\n press: (event: PointerEvent, fromHandle?: boolean) => void;\n drag: (event: PointerEvent) => void;\n release: (event: PointerEvent) => void;\n cancelDrag: () => void;\n setChildOpen: (open: boolean) => void;\n setChildProgress: (progress: number) => void;\n}\n\nexport const DrawerContext = createContext<DrawerContextValue>();\nexport const PortalContext = createContext(false);\n","/*\n * Derived from Vaul (https://github.com/emilkowalski/vaul): src/constants.ts.\n * Copyright (c) 2023 Emil Kowalski\n * Modified for Solid Aria: preserved drawer animation and gesture constants.\n * MIT licensed. See LICENSE, VAUL-LICENSE, and NOTICE.txt in the package root.\n */\n\nexport const TRANSITIONS = {\n DURATION: 0.5,\n EASE: [0.32, 0.72, 0, 1],\n};\n\nexport const VELOCITY_THRESHOLD = 0.4;\n\nexport const CLOSE_THRESHOLD = 0.25;\n\nexport const SCROLL_LOCK_TIMEOUT = 100;\n\nexport const BORDER_RADIUS = 8;\n\nexport const NESTED_DISPLACEMENT = 16;\n\nexport const WINDOW_TOP_OFFSET = 26;\n\nexport const DRAG_CLASS = \"vaul-dragging\";\n","/*\n * Derived from Vaul (https://github.com/emilkowalski/vaul): src/helpers.ts and src/browser.ts.\n * Copyright (c) 2023 Emil Kowalski\n * Modified for Solid Aria: typed geometry and property-scoped style restoration without shared style caches.\n * MIT licensed. See LICENSE, VAUL-LICENSE, and NOTICE.txt in the package root.\n */\n\nimport type { DrawerDirection } from \"./types\";\n\nexport function isVertical(direction: DrawerDirection): boolean {\n return direction === \"top\" || direction === \"bottom\";\n}\n\nexport function directionSign(direction: DrawerDirection): 1 | -1 {\n return direction === \"bottom\" || direction === \"right\" ? 1 : -1;\n}\n\nexport function translate(\n distance: number,\n direction: DrawerDirection\n): string {\n return isVertical(direction)\n ? `translate3d(0, ${distance}px, 0)`\n : `translate3d(${distance}px, 0, 0)`;\n}\n\nexport function dampenValue(value: number): number {\n return Math.max(0, 8 * (Math.log(value + 1) - 2));\n}\n\nexport function clamp(value: number, min = 0, max = 1): number {\n return Math.min(max, Math.max(min, value));\n}\n\n/** Restore only the properties this operation owns, including priorities. */\nexport function assignStyle(\n element: HTMLElement,\n styles: Record<string, string>\n): () => void {\n const previous = Object.keys(styles).map((property) => ({\n priority: element.style.getPropertyPriority(property),\n property,\n value: element.style.getPropertyValue(property),\n }));\n\n for (const [property, value] of Object.entries(styles)) {\n element.style.setProperty(property, value);\n }\n\n return () => {\n for (const { property, value, priority } of previous) {\n if (value) {\n element.style.setProperty(property, value, priority);\n } else {\n element.style.removeProperty(property);\n }\n }\n };\n}\n\nexport function isSafari(view: Window): boolean {\n return /^(?:(?!chrome|android).)*safari/iu.test(view.navigator.userAgent);\n}\n\nexport function canScroll(\n target: HTMLElement,\n content: HTMLElement,\n direction: DrawerDirection,\n distance: number\n): boolean {\n const vertical = isVertical(direction);\n const forward = distance * directionSign(direction) < 0;\n\n for (\n let node: HTMLElement | null = target;\n node && content.contains(node);\n node = node.parentElement\n ) {\n const scrollSize = vertical ? node.scrollHeight : node.scrollWidth;\n const size = vertical ? node.clientHeight : node.clientWidth;\n\n if (scrollSize <= size) {\n continue;\n }\n\n const position = vertical ? node.scrollTop : node.scrollLeft;\n\n if (\n (forward && position < scrollSize - size) ||\n (!forward && position > 0)\n ) {\n return true;\n }\n }\n\n return false;\n}\n","/*\n * Derived from Vaul (https://github.com/emilkowalski/vaul): src/use-scale-background.ts and src/index.tsx.\n * Copyright (c) 2023 Emil Kowalski\n * Modified for Solid Aria: Solid 2 effects, document-local scaling, drag interpolation, and complete style cleanup.\n * MIT licensed. See LICENSE, VAUL-LICENSE, and NOTICE.txt in the package root.\n */\n\nimport { createEffect } from \"solid-js\";\n\nimport { BORDER_RADIUS, TRANSITIONS, WINDOW_TOP_OFFSET } from \"./constants\";\nimport type { DrawerContextValue } from \"./context\";\nimport { assignStyle, isVertical } from \"./helpers\";\n\nexport function createBackground(context: DrawerContextValue): void {\n let background: HTMLElement | null = null;\n let initialScale = 1;\n let vertical = true;\n createEffect(\n () => ({\n color:\n context.props.setBackgroundColorOnScale !== false &&\n context.props.noBodyStyles !== true,\n direction: context.direction,\n element: context.content,\n enabled: context.props.shouldScaleBackground === true,\n nested: context.props.nested === true,\n open: context.isOpen,\n }),\n ({\n element,\n open,\n enabled,\n color,\n direction,\n nested,\n }): undefined | (() => void) => {\n if (!element || !open || !enabled || nested) {\n return undefined;\n }\n\n const doc = element.ownerDocument;\n\n const wrapper = doc.querySelector<HTMLElement>(\n \"[data-vaul-drawer-wrapper], [vaul-drawer-wrapper]\"\n );\n\n const view = doc.defaultView;\n\n if (!wrapper || !view) {\n return undefined;\n }\n\n background = wrapper;\n initialScale = (view.innerWidth - WINDOW_TOP_OFFSET) / view.innerWidth;\n vertical = isVertical(direction);\n\n const restoreBody = color\n ? assignStyle(doc.body, { background: \"black\" })\n : undefined;\n\n const restoreWrapper = assignStyle(wrapper, {\n \"border-radius\": `${BORDER_RADIUS}px`,\n overflow: \"hidden\",\n transform: `scale(${initialScale}) ${vertical ? \"translate3d(0, 14px, 0)\" : \"translate3d(14px, 0, 0)\"}`,\n \"transform-origin\": vertical ? \"top\" : \"left\",\n \"transition-duration\": `${TRANSITIONS.DURATION}s`,\n \"transition-property\": \"transform, border-radius\",\n \"transition-timing-function\": `cubic-bezier(${TRANSITIONS.EASE.join(\",\")})`,\n });\n\n return () => {\n background = null;\n restoreWrapper();\n restoreBody?.();\n };\n },\n { ssrSource: \"client\" }\n );\n createEffect(\n () => ({\n dragging: context.isDragging,\n element: context.content,\n open: context.isOpen,\n progress: context.dragProgress,\n }),\n ({ progress, dragging, open }) => {\n if (!background || !open) {\n return;\n }\n\n const scale = initialScale + progress * (1 - initialScale);\n const displacement = 14 * (1 - progress);\n background.style.transitionDuration = dragging\n ? \"0s\"\n : `${TRANSITIONS.DURATION}s`;\n background.style.borderRadius = `${BORDER_RADIUS * (1 - progress)}px`;\n background.style.transform = `scale(${scale}) ${vertical ? `translate3d(0, ${displacement}px, 0)` : `translate3d(${displacement}px, 0, 0)`}`;\n },\n { ssrSource: \"client\" }\n );\n}\n","/*\n * Derived from Vaul (https://github.com/emilkowalski/vaul): src/use-snap-points.ts.\n * Copyright (c) 2023 Emil Kowalski\n * Modified for Solid Aria: pure snap geometry and selection, bounded sequential swipes, and container dimensions.\n * MIT licensed. See LICENSE, VAUL-LICENSE, and NOTICE.txt in the package root.\n */\n\nimport { VELOCITY_THRESHOLD } from \"./constants\";\nimport { clamp, directionSign } from \"./helpers\";\nimport type { DrawerDirection, SnapPoint } from \"./types\";\n\nexport function getSnapPointOffsets(\n points: readonly SnapPoint[],\n dimension: number,\n direction: DrawerDirection\n): number[] {\n return points.map((point) => {\n const visible =\n typeof point === \"number\"\n ? point * dimension\n : Number(point.replace(/px$/u, \"\"));\n\n return (dimension - visible) * directionSign(direction);\n });\n}\n\nexport function getOverlayOpacity(\n offsets: readonly number[],\n offset: number,\n fadeFromIndex: number,\n dimension: number\n): number {\n const faded = Math.abs(offsets[fadeFromIndex] ?? 0);\n\n const clear =\n fadeFromIndex === 0\n ? dimension\n : Math.abs(offsets[fadeFromIndex - 1] ?? faded);\n\n if (clear === faded) {\n return offset <= faded ? 1 : 0;\n }\n\n return clamp((clear - offset) / (clear - faded));\n}\n\nexport function selectSnapPoint(options: {\n offsets: readonly number[];\n activeIndex: number;\n /** Positive distance moves toward the closed edge. */\n distance: number;\n velocity: number;\n dimension: number;\n dismissible: boolean;\n sequential: boolean;\n}): number | \"close\" {\n const {\n offsets,\n activeIndex,\n distance,\n velocity,\n dimension,\n dismissible,\n sequential,\n } = options;\n\n const [first] = offsets;\n\n if (first === undefined) {\n return activeIndex;\n }\n\n const active = Math.abs(offsets[activeIndex] ?? first);\n const position = active + distance;\n\n if (!sequential && velocity > 2) {\n if (distance <= 0) {\n return offsets.length - 1;\n }\n\n return dismissible ? \"close\" : 0;\n }\n\n if (velocity > VELOCITY_THRESHOLD && Math.abs(distance) < dimension * 0.4) {\n if (distance > 0 && activeIndex === 0 && dismissible) {\n return \"close\";\n }\n\n return clamp(activeIndex + (distance > 0 ? -1 : 1), 0, offsets.length - 1);\n }\n\n const remaining = dimension - Math.abs(first);\n\n if (\n dismissible &&\n distance > 0 &&\n position > Math.abs(first) + remaining / 2\n ) {\n return \"close\";\n }\n\n let closest = 0;\n let difference = Infinity;\n\n for (const [index, offset] of offsets.entries()) {\n if (sequential && Math.abs(index - activeIndex) > 1) {\n continue;\n }\n\n const nextDifference = Math.abs(Math.abs(offset) - position);\n\n if (nextDifference < difference) {\n difference = nextDifference;\n closest = index;\n }\n }\n\n return closest;\n}\n","/*\n * Derived from Vaul (https://github.com/emilkowalski/vaul): src/index.tsx.\n * Copyright (c) 2023 Emil Kowalski\n * Modified for Solid Aria: native Solid 2 controlled state, presence, pointer gestures, measured snap-point entry, nested transforms, and lifecycle.\n * MIT licensed. See LICENSE, VAUL-LICENSE, and NOTICE.txt in the package root.\n */\n\nimport {\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n onSettled,\n untrack,\n} from \"solid-js\";\n\nimport {\n CLOSE_THRESHOLD,\n DRAG_CLASS,\n NESTED_DISPLACEMENT,\n SCROLL_LOCK_TIMEOUT,\n TRANSITIONS,\n VELOCITY_THRESHOLD,\n} from \"./constants\";\nimport type { DrawerContextValue } from \"./context\";\nimport {\n getOverlayOpacity,\n getSnapPointOffsets,\n selectSnapPoint,\n} from \"./create-snap-points\";\nimport {\n canScroll,\n clamp,\n dampenValue,\n directionSign,\n isVertical,\n translate,\n} from \"./helpers\";\nimport type { DialogProps, SnapPoint } from \"./types\";\n\nconst transition = `${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(\",\")})`;\n\ninterface Gesture {\n x: number;\n y: number;\n startedAt: number;\n dimension: number;\n startOffset: number;\n distance: number;\n allowed: boolean;\n fromHandle: boolean;\n pointerId: number;\n target: HTMLElement;\n}\n\nexport function createDrawer(\n props: DialogProps,\n parent?: DrawerContextValue\n): DrawerContextValue {\n const [internalOpen, setInternalOpen] = createSignal(\n untrack(() => props.defaultOpen ?? false)\n );\n\n const isOpen = createMemo(() => props.open ?? internalOpen());\n const [present, setPresent] = createSignal(untrack(isOpen));\n\n const [animate, setAnimate] = createSignal(\n untrack(() => props.defaultOpen !== true)\n );\n\n const [internalSnap, setInternalSnap] = createSignal<SnapPoint | null>(\n untrack(() => props.snapPoints?.[0] ?? null)\n );\n\n const activeSnap = createMemo(() =>\n props.activeSnapPoint === undefined ? internalSnap() : props.activeSnapPoint\n );\n\n const [content, setContent] = createSignal<HTMLDivElement | null>(null, {\n ownedWrite: true,\n });\n\n const [overlay, setOverlay] = createSignal<HTMLDivElement | null>(null, {\n ownedWrite: true,\n });\n\n const [trigger, setTrigger] = createSignal<HTMLButtonElement | null>(null, {\n ownedWrite: true,\n });\n\n const [dimension, setDimension] = createSignal(0);\n const [dragging, setDragging] = createSignal(false);\n const [dragProgress, setDragProgress] = createSignal(0);\n const [childOpen, setChildOpen] = createSignal(false);\n const [childProgress, setChildProgress] = createSignal(0);\n const direction = () => props.direction ?? \"bottom\";\n const points = () => props.snapPoints ?? [];\n\n const offsets = createMemo(() =>\n getSnapPointOffsets(points(), dimension(), direction())\n );\n\n const activeIndex = createMemo(() =>\n Math.max(0, points().indexOf(activeSnap() ?? points()[0] ?? 0))\n );\n\n const offset = () => offsets()[activeIndex()] ?? 0;\n\n const fadeFromIndex = () =>\n props.fadeFromIndex ?? Math.max(0, points().length - 1);\n\n const id = createUniqueId();\n let gesture: Gesture | null = null;\n let lastScrollTime = -Infinity;\n let openedAt = -Infinity;\n\n const onScroll = () => {\n lastScrollTime = Date.now();\n };\n\n function setOpen(open: boolean): void {\n if (open === isOpen()) {\n return;\n }\n\n if (props.open === undefined) {\n setInternalOpen(open);\n }\n\n props.onOpenChange?.(open);\n }\n\n function setActiveSnapPoint(point: SnapPoint | null): void {\n if (point === activeSnap()) {\n return;\n }\n\n if (props.activeSnapPoint === undefined) {\n setInternalSnap(point);\n }\n\n props.setActiveSnapPoint?.(point);\n }\n\n function resetPosition(): void {\n const element = content();\n\n if (!element) {\n return;\n }\n\n element.classList.remove(DRAG_CLASS);\n element.style.transition = `transform ${transition}`;\n element.style.transform = translate(offset(), direction());\n const backdrop = overlay();\n\n if (backdrop) {\n backdrop.style.transition = `opacity ${transition}`;\n backdrop.style.opacity = points().length\n ? `${getOverlayOpacity(offsets(), Math.abs(offset()), fadeFromIndex(), dimension())}`\n : \"1\";\n }\n }\n\n function cancelDrag(): void {\n if (!gesture) {\n return;\n }\n\n if (gesture.target.hasPointerCapture?.(gesture.pointerId)) {\n gesture.target.releasePointerCapture(gesture.pointerId);\n }\n\n gesture = null;\n setDragging(false);\n setDragProgress(0);\n untrack(resetPosition);\n parent?.setChildProgress(0);\n }\n\n function close(): void {\n cancelDrag();\n\n if (props.dismissible !== false) {\n setOpen(false);\n }\n }\n\n createEffect(\n isOpen,\n (open, previous): undefined | (() => void) => {\n if (open) {\n openedAt = Date.now();\n setPresent(true);\n } else {\n cancelDrag();\n\n if (previous === true) {\n props.onClose?.();\n }\n }\n\n parent?.setChildOpen(open);\n\n if (previous === undefined && !open) {\n return undefined;\n }\n\n const view = untrack(content)?.ownerDocument.defaultView;\n\n const duration =\n view?.matchMedia(\"(prefers-reduced-motion: reduce)\").matches === true\n ? 0\n : TRANSITIONS.DURATION * 1000;\n\n const timer = setTimeout(() => {\n if (!open) {\n setPresent(false);\n setActiveSnapPoint(points()[0] ?? null);\n }\n\n if (previous !== undefined) {\n props.onAnimationEnd?.(open);\n }\n }, duration);\n\n return () => {\n clearTimeout(timer);\n };\n },\n { ssrSource: \"client\" }\n );\n\n createEffect(\n () => ({\n container: props.container,\n direction: direction(),\n element: content(),\n }),\n ({\n element,\n container,\n direction: currentDirection,\n }): undefined | (() => void) => {\n if (!element) {\n return undefined;\n }\n\n const view = element.ownerDocument.defaultView;\n\n if (!view) {\n return undefined;\n }\n\n const measure = (): void => {\n const rect = container?.getBoundingClientRect();\n setDimension(\n isVertical(currentDirection)\n ? (rect?.height ?? view.innerHeight)\n : (rect?.width ?? view.innerWidth)\n );\n };\n\n measure();\n view.addEventListener(\"resize\", measure);\n\n const observer =\n typeof ResizeObserver === \"undefined\"\n ? undefined\n : new ResizeObserver(measure);\n\n if (container) {\n observer?.observe(container);\n }\n\n element.addEventListener(\"scroll\", onScroll, true);\n\n return () => {\n view.removeEventListener(\"resize\", measure);\n observer?.disconnect();\n element.removeEventListener(\"scroll\", onScroll, true);\n cancelDrag();\n };\n },\n { ssrSource: \"client\" }\n );\n\n createEffect(\n () => ({\n animate: animate(),\n backdrop: overlay(),\n child: childOpen(),\n dimension: dimension(),\n direction: direction(),\n element: content(),\n hasSnapPoints: points().length > 0,\n offset: offset(),\n opacity: points().length\n ? getOverlayOpacity(\n offsets(),\n Math.abs(offset()),\n fadeFromIndex(),\n dimension()\n )\n : 1,\n open: isOpen(),\n progress: childProgress(),\n }),\n ({\n animate: shouldAnimate,\n element,\n backdrop,\n dimension: currentDimension,\n hasSnapPoints,\n open,\n offset: currentOffset,\n child,\n progress,\n direction: currentDirection,\n opacity,\n }) => {\n if (!element || (hasSnapPoints && currentDimension === 0)) {\n return;\n }\n\n const sign = directionSign(currentDirection);\n const view = element.ownerDocument.defaultView;\n\n const size = isVertical(currentDirection)\n ? view?.innerHeight\n : view?.innerWidth;\n\n const scale = child\n ? 1 - (NESTED_DISPLACEMENT / Math.max(1, size ?? 1)) * (1 - progress)\n : 1;\n\n const displacement = child\n ? -NESTED_DISPLACEMENT * (1 - progress) * sign\n : 0;\n\n if (hasSnapPoints && shouldAnimate && element.style.transform === \"\") {\n // Commit the closed position before transitioning to the measured snap point.\n element.getBoundingClientRect();\n }\n\n element.style.transition = shouldAnimate\n ? `transform ${transition}`\n : \"none\";\n element.style.transform = `${translate(open ? currentOffset + displacement : sign * (size ?? currentDimension), currentDirection)} scale(${scale})`;\n\n if (backdrop) {\n backdrop.style.transition = shouldAnimate\n ? `opacity ${transition}`\n : \"none\";\n backdrop.style.opacity = open ? `${opacity}` : \"0\";\n }\n },\n { ssrSource: \"client\" }\n );\n\n onSettled(() => {\n const frame = requestAnimationFrame(() => {\n setAnimate(true);\n });\n\n return () => {\n cancelAnimationFrame(frame);\n parent?.setChildOpen(false);\n };\n });\n\n function press(event: PointerEvent, fromHandle = false): void {\n const element = content();\n const { target } = event;\n\n if (\n !element ||\n !isOpen() ||\n childOpen() ||\n event.defaultPrevented ||\n event.button > 0\n ) {\n return;\n }\n\n if (\n !(target instanceof HTMLElement) ||\n target.closest(\"[data-vaul-drawer]\") !== element\n ) {\n return;\n }\n\n if (\n target.closest(\"[data-vaul-no-drag],select,option\") ||\n (props.handleOnly === true && !fromHandle)\n ) {\n return;\n }\n\n if (props.dismissible === false && !points().length) {\n return;\n }\n\n const rect = element.getBoundingClientRect();\n gesture = {\n allowed: false,\n dimension: isVertical(direction()) ? rect.height : rect.width,\n distance: 0,\n fromHandle,\n pointerId: event.pointerId,\n startOffset: Math.abs(offset()),\n startedAt: Date.now(),\n target,\n x: event.clientX,\n y: event.clientY,\n };\n }\n\n function canDrag(target: HTMLElement, distance: number): boolean {\n if (!gesture || target.closest(\"[data-vaul-no-drag],select,option\")) {\n return false;\n }\n\n if (gesture.fromHandle) {\n return true;\n }\n\n if ((target.ownerDocument.getSelection()?.toString().length ?? 0) > 0) {\n return false;\n }\n\n if (Date.now() - openedAt < TRANSITIONS.DURATION * 1000) {\n return false;\n }\n\n if (\n Date.now() - lastScrollTime <\n (props.scrollLockTimeout ?? SCROLL_LOCK_TIMEOUT)\n ) {\n return false;\n }\n\n const lastOffset = Math.abs(offsets().at(-1) ?? 0);\n\n if (distance < 0 && gesture.startOffset > lastOffset) {\n return true;\n }\n\n const element = content();\n\n return (\n element !== null && !canScroll(target, element, direction(), distance)\n );\n }\n\n function claimGesture(\n event: PointerEvent,\n current: Gesture,\n axis: number,\n cross: number,\n distance: number\n ): boolean {\n if (current.allowed) {\n return true;\n }\n\n const threshold = event.pointerType === \"touch\" ? 10 : 2;\n\n if (Math.abs(axis) < threshold && Math.abs(cross) < threshold) {\n return false;\n }\n\n if (Math.abs(cross) > Math.abs(axis)) {\n gesture = null;\n\n return false;\n }\n\n if (!canDrag(current.target, distance)) {\n return false;\n }\n\n current.allowed = true;\n current.target.setPointerCapture?.(event.pointerId);\n setDragging(true);\n\n return true;\n }\n\n function drag(event: PointerEvent): void {\n const current = gesture;\n const element = content();\n\n if (!current || !element || current.pointerId !== event.pointerId) {\n return;\n }\n\n const dx = event.clientX - current.x;\n const dy = event.clientY - current.y;\n const vertical = isVertical(direction());\n const axis = vertical ? dy : dx;\n const cross = vertical ? dx : dy;\n const distance = axis * directionSign(direction());\n\n if (!claimGesture(event, current, axis, cross, distance)) {\n return;\n }\n\n event.preventDefault();\n const minimum = Math.abs(offsets().at(-1) ?? 0);\n let position = current.startOffset + distance;\n\n if (position < minimum) {\n position = minimum - dampenValue(minimum - position);\n }\n\n if (props.dismissible === false) {\n position = Math.min(position, Math.abs(offsets()[0] ?? 0));\n }\n\n current.distance = position - current.startOffset;\n element.classList.add(DRAG_CLASS);\n element.style.transition = \"none\";\n element.style.transform = translate(\n position * directionSign(direction()),\n direction()\n );\n\n const percentage = clamp(\n Math.max(0, distance) /\n Math.max(1, current.dimension - current.startOffset)\n );\n\n const backdrop = overlay();\n\n if (backdrop) {\n backdrop.style.transition = \"none\";\n backdrop.style.opacity = points().length\n ? `${getOverlayOpacity(offsets(), position, fadeFromIndex(), dimension())}`\n : `${1 - percentage}`;\n }\n\n setDragProgress(percentage);\n props.onDrag?.(event, percentage);\n parent?.setChildProgress(percentage);\n }\n\n function release(event: PointerEvent): void {\n const current = gesture;\n\n if (!current || event.pointerId !== current.pointerId) {\n return;\n }\n\n const velocity =\n Math.abs(current.distance) / Math.max(1, Date.now() - current.startedAt);\n\n let next: number | \"close\" = activeIndex();\n\n if (current.allowed && points().length) {\n next = selectSnapPoint({\n activeIndex: activeIndex(),\n dimension: dimension(),\n dismissible: props.dismissible !== false,\n distance: current.distance,\n offsets: offsets(),\n sequential: props.snapToSequentialPoint ?? false,\n velocity,\n });\n } else if (\n current.allowed &&\n current.distance > 0 &&\n props.dismissible !== false &&\n (velocity > VELOCITY_THRESHOLD ||\n current.distance >=\n current.dimension * (props.closeThreshold ?? CLOSE_THRESHOLD))\n ) {\n next = \"close\";\n }\n\n cancelDrag();\n\n if (!current.allowed) {\n return;\n }\n\n if (next === \"close\") {\n close();\n } else if (points().length) {\n setActiveSnapPoint(points()[next] ?? null);\n }\n\n props.onRelease?.(event, next !== \"close\");\n }\n\n return {\n get activeSnapPoint() {\n return activeSnap();\n },\n get activeSnapPointIndex() {\n return activeIndex();\n },\n cancelDrag,\n get childOpen() {\n return childOpen();\n },\n close,\n get content() {\n return content();\n },\n contentId: `vaul-${id}`,\n descriptionId: `vaul-${id}-description`,\n get direction() {\n return direction();\n },\n get dismissible() {\n return props.dismissible ?? true;\n },\n drag,\n get dragProgress() {\n return dragProgress();\n },\n get isDragging() {\n return dragging();\n },\n get isOpen() {\n return isOpen();\n },\n get modal() {\n return props.modal ?? true;\n },\n get overlay() {\n return overlay();\n },\n get present() {\n return present();\n },\n press,\n props,\n release,\n setActiveSnapPoint,\n setChildOpen(open) {\n setChildOpen(open);\n setChildProgress(0);\n },\n setChildProgress(progress) {\n setChildProgress(progress);\n },\n setContent(element) {\n setContent(element);\n },\n setOpen,\n setOverlay(element) {\n setOverlay(element);\n },\n setTrigger(element) {\n setTrigger(element);\n },\n get shouldAnimate() {\n return animate();\n },\n get shouldFade() {\n return !points().length || activeIndex() >= fadeFromIndex();\n },\n get snapPointsOffset() {\n return offsets();\n },\n titleId: `vaul-${id}-title`,\n get trigger() {\n return trigger();\n },\n };\n}\n","import { ariaHideOutside } from \"@solid2-aria/core/overlays/aria-hide-outside\";\nimport { createPreventScroll } from \"@solid2-aria/core/overlays/create-prevent-scroll\";\nimport { createEffect, untrack } from \"solid-js\";\n\nimport type { DrawerContextValue } from \"./context\";\nimport type {\n ContentProps,\n FocusOutsideEvent,\n PointerDownOutsideEvent,\n} from \"./types\";\n\nconst layers = new WeakMap<Document, HTMLDivElement[]>();\n\nexport function createLayer(\n context: DrawerContextValue,\n props: ContentProps\n): void {\n createPreventScroll({\n get isDisabled() {\n return (\n !context.isOpen ||\n !context.content ||\n !context.modal ||\n context.props.noBodyStyles === true ||\n (!context.overlay && context.props.disablePreventScroll !== true)\n );\n },\n });\n\n createEffect(\n () => ({\n element: context.content,\n modal: context.modal,\n open: context.isOpen,\n overlay: context.overlay,\n }),\n ({ element, overlay, open, modal }): undefined | (() => void) => {\n if (!element || !open || !modal) {\n return undefined;\n }\n\n return ariaHideOutside(overlay ? [element, overlay] : [element], {\n shouldUseInert: true,\n });\n },\n { ssrSource: \"client\" }\n );\n\n createEffect(\n () => ({ element: context.content, open: context.isOpen }),\n ({ element, open }): undefined | (() => void) => {\n if (!element || !open) {\n return undefined;\n }\n\n const doc = element.ownerDocument;\n const stack = layers.get(doc) ?? [];\n layers.set(doc, stack);\n stack.push(element);\n const previous = doc.activeElement;\n let interactedOutside = false;\n const autoFocus = new Event(\"openAutoFocus\", { cancelable: true });\n props.onOpenAutoFocus?.(autoFocus);\n\n if (!autoFocus.defaultPrevented && context.props.autoFocus === true) {\n const first = element.querySelector<HTMLElement>(\n \"[autofocus],button:not([disabled]),[href],input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex='0']\"\n );\n\n (first ?? element).focus({ preventScroll: true });\n }\n\n const isTop = () => stack.at(-1) === element;\n\n const isOutside = (event: Event) =>\n !event.composedPath().includes(element);\n\n function pointerDown(event: PointerEvent): void {\n if (!isTop() || !isOutside(event)) {\n return;\n }\n\n const outside: PointerDownOutsideEvent = new CustomEvent(\n \"pointerDownOutside\",\n {\n cancelable: true,\n detail: { originalEvent: event },\n }\n );\n\n props.onPointerDownOutside?.(outside);\n props.onInteractOutside?.(outside);\n\n if (\n outside.defaultPrevented ||\n !context.modal ||\n event.button > 0 ||\n event.ctrlKey\n ) {\n return;\n }\n\n interactedOutside = !context.modal;\n context.close();\n }\n\n function focusIn(event: FocusEvent): void {\n if (!isTop() || !isOutside(event)) {\n return;\n }\n\n const outside: FocusOutsideEvent = new CustomEvent(\"focusOutside\", {\n cancelable: true,\n detail: { originalEvent: event },\n });\n\n props.onFocusOutside?.(outside);\n props.onInteractOutside?.(outside);\n\n if (!context.modal) {\n interactedOutside = true;\n }\n }\n\n function keyDown(event: KeyboardEvent): void {\n if (event.key !== \"Escape\" || !isTop() || event.defaultPrevented) {\n return;\n }\n\n props.onEscapeKeyDown?.(event);\n\n if (event.defaultPrevented) {\n return;\n }\n\n event.preventDefault();\n context.close();\n }\n\n doc.addEventListener(\"pointerdown\", pointerDown);\n doc.addEventListener(\"focusin\", focusIn);\n doc.addEventListener(\"keydown\", keyDown);\n\n const touchMove = (event: TouchEvent) => {\n if (element.classList.contains(\"vaul-dragging\") && event.cancelable) {\n event.preventDefault();\n }\n };\n\n element.addEventListener(\"touchmove\", touchMove, { passive: false });\n\n return () => {\n const index = stack.indexOf(element);\n const wasTop = isTop();\n\n if (index !== -1) {\n stack.splice(index, 1);\n }\n\n if (!stack.length) {\n layers.delete(doc);\n }\n\n doc.removeEventListener(\"pointerdown\", pointerDown);\n doc.removeEventListener(\"focusin\", focusIn);\n doc.removeEventListener(\"keydown\", keyDown);\n element.removeEventListener(\"touchmove\", touchMove);\n\n const closeAutoFocus = new Event(\"closeAutoFocus\", {\n cancelable: true,\n });\n\n props.onCloseAutoFocus?.(closeAutoFocus);\n\n if (closeAutoFocus.defaultPrevented || interactedOutside || !wasTop) {\n return;\n }\n\n const target = untrack(() => context.trigger) ?? previous;\n queueMicrotask(() => {\n if (target instanceof HTMLElement && target.isConnected) {\n target.focus({ preventScroll: true });\n }\n });\n };\n },\n { ssrSource: \"client\" }\n );\n}\n","/*\n * Derived from Vaul (https://github.com/emilkowalski/vaul): src/use-position-fixed.ts and src/index.tsx.\n * Copyright (c) 2023 Emil Kowalski\n * Modified for Solid Aria: Solid 2 lifecycle, per-drawer style ownership, viewport resizing, and route-aware restoration.\n * MIT licensed. See LICENSE, VAUL-LICENSE, and NOTICE.txt in the package root.\n */\n\nimport { createEffect } from \"solid-js\";\n\nimport { WINDOW_TOP_OFFSET } from \"./constants\";\nimport type { DrawerContextValue } from \"./context\";\nimport { assignStyle, isSafari } from \"./helpers\";\n\nexport function createPosition(context: DrawerContextValue): void {\n createEffect(\n () => ({\n element: context.content,\n modal: context.modal,\n nested: context.props.nested === true,\n noBodyStyles: context.props.noBodyStyles === true,\n open: context.isOpen,\n preventScrollRestoration: context.props.preventScrollRestoration === true,\n }),\n ({\n element,\n open,\n modal,\n noBodyStyles,\n nested,\n preventScrollRestoration,\n }): undefined | (() => void) => {\n if (!element || !open || !modal || noBodyStyles || nested) {\n return undefined;\n }\n\n const doc = element.ownerDocument;\n const view = doc.defaultView;\n\n if (\n !view ||\n !isSafari(view) ||\n view.matchMedia(\"(display-mode: standalone)\").matches\n ) {\n return undefined;\n }\n\n const { scrollX, scrollY } = view;\n const url = view.location.href;\n\n const restore = assignStyle(doc.body, {\n height: \"auto\",\n left: `${-scrollX}px`,\n position: \"fixed\",\n right: \"0\",\n top: `${-scrollY}px`,\n });\n\n return () => {\n restore();\n\n if (!preventScrollRestoration || url === view.location.href) {\n view.scrollTo(scrollX, scrollY);\n }\n };\n },\n { ssrSource: \"client\" }\n );\n\n createEffect(\n () => ({\n direction: context.direction,\n element: context.content,\n fixed: context.props.fixed === true,\n open: context.isOpen,\n reposition: context.props.repositionInputs !== false,\n }),\n ({\n element,\n open,\n reposition,\n fixed,\n direction,\n }): undefined | (() => void) => {\n if (!element || !open || !reposition || direction !== \"bottom\") {\n return undefined;\n }\n\n const doc = element.ownerDocument;\n const view = doc.defaultView;\n const viewport = view?.visualViewport;\n\n if (!view || !viewport) {\n return undefined;\n }\n\n const { height } = element.style;\n const { bottom } = element.style;\n let keyboardOpen = false;\n const initialHeight = element.getBoundingClientRect().height;\n\n const resize = (): void => {\n const focused = doc.activeElement;\n\n if (\n !keyboardOpen &&\n (!(focused instanceof HTMLElement) ||\n !element.contains(focused) ||\n !focused.matches(\"input,textarea,[contenteditable]\"))\n ) {\n return;\n }\n\n const diff = Math.max(\n 0,\n view.innerHeight - viewport.height - viewport.offsetTop\n );\n\n keyboardOpen = diff > 60;\n\n if (!keyboardOpen) {\n element.style.height = height;\n element.style.bottom = bottom;\n\n return;\n }\n\n const rect = element.getBoundingClientRect();\n\n const available = Math.max(\n 0,\n viewport.height - Math.max(WINDOW_TOP_OFFSET, rect.top)\n );\n\n element.style.height = `${fixed ? Math.max(0, initialHeight - diff) : available}px`;\n element.style.bottom = `${diff}px`;\n\n if (focused instanceof HTMLElement) {\n focused.scrollIntoView({ block: \"nearest\" });\n }\n };\n\n viewport.addEventListener(\"resize\", resize);\n viewport.addEventListener(\"scroll\", resize);\n\n return () => {\n viewport.removeEventListener(\"resize\", resize);\n viewport.removeEventListener(\"scroll\", resize);\n element.style.height = height;\n element.style.bottom = bottom;\n };\n },\n { ssrSource: \"client\" }\n );\n}\n","/*\n * Derived from Vaul (https://github.com/emilkowalski/vaul): src/index.tsx.\n * Copyright (c) 2023 Emil Kowalski\n * Modified for Solid Aria: Solid 2 components, contexts, callback refs, portals, presence, and native DOM event composition.\n * MIT licensed. See LICENSE, VAUL-LICENSE, and NOTICE.txt in the package root.\n */\n\nimport { FocusScope } from \"@solid2-aria/core/focus/focus-scope\";\nimport { Portal as SolidPortal } from \"@solidjs/web\";\nimport type { JSX } from \"@solidjs/web\";\nimport {\n createSignal,\n merge,\n omit,\n onSettled,\n Show,\n useContext,\n} from \"solid-js\";\n\nimport { DrawerContext, PortalContext } from \"./context\";\nimport { createBackground } from \"./create-background\";\nimport { createDrawer } from \"./create-drawer\";\nimport { createLayer } from \"./create-layer\";\nimport { createPosition } from \"./create-position\";\nimport type {\n CloseProps,\n ContentProps,\n DescriptionProps,\n DialogProps,\n HandleProps,\n OverlayProps,\n PortalProps,\n TitleProps,\n TriggerProps,\n} from \"./types\";\n\nexport function Root(props: DialogProps): JSX.Element {\n const context = createDrawer(props);\n createBackground(context);\n createPosition(context);\n\n return <DrawerContext value={context}>{props.children}</DrawerContext>;\n}\n\nexport function NestedRoot(props: DialogProps): JSX.Element {\n const parent = useContext(DrawerContext);\n const context = createDrawer(merge(props, { nested: true }), parent);\n createPosition(context);\n\n return <DrawerContext value={context}>{props.children}</DrawerContext>;\n}\n\nexport function Portal(props: PortalProps): JSX.Element {\n const context = useContext(DrawerContext);\n const [mounted, setMounted] = createSignal(false);\n onSettled(() => {\n setMounted(true);\n });\n\n return (\n <Show when={mounted() && (context.present || props.forceMount === true)}>\n <SolidPortal\n mount={props.container ?? context.props.container ?? document.body}\n >\n <PortalContext value={props.forceMount ?? false}>\n {props.children}\n </PortalContext>\n </SolidPortal>\n </Show>\n );\n}\n\nexport function Trigger(props: TriggerProps): JSX.Element {\n const context = useContext(DrawerContext);\n\n const attributes = merge(omit(props, \"render\", \"ref\", \"onClick\"), {\n \"aria-controls\": context.contentId,\n get \"aria-expanded\"(): \"true\" | \"false\" {\n return context.isOpen ? \"true\" : \"false\";\n },\n \"aria-haspopup\": \"dialog\" as const,\n get \"data-state\"() {\n return context.isOpen ? \"open\" : \"closed\";\n },\n onClick(\n event: Parameters<JSX.EventHandler<HTMLButtonElement, MouseEvent>>[0]\n ) {\n callHandler(props.onClick, event);\n\n if (!event.defaultPrevented) {\n context.setOpen(!context.isOpen);\n }\n },\n get ref() {\n return [\n props.ref,\n (element: HTMLButtonElement) => {\n context.setTrigger(element);\n },\n ];\n },\n get type() {\n return props.type ?? \"button\";\n },\n });\n\n return (\n <Show when={props.render} keyed fallback={<button {...attributes} />}>\n {(render) => render(attributes)}\n </Show>\n );\n}\n\nexport function Close(props: CloseProps): JSX.Element {\n const context = useContext(DrawerContext);\n\n const attributes = merge(omit(props, \"render\", \"onClick\"), {\n onClick(\n event: Parameters<JSX.EventHandler<HTMLButtonElement, MouseEvent>>[0]\n ) {\n callHandler(props.onClick, event);\n\n if (!event.defaultPrevented) {\n context.close();\n }\n },\n get type() {\n return props.type ?? \"button\";\n },\n });\n\n return (\n <Show when={props.render} keyed fallback={<button {...attributes} />}>\n {(render) => render(attributes)}\n </Show>\n );\n}\n\nexport function Overlay(props: OverlayProps): JSX.Element {\n const context = useContext(DrawerContext);\n const forceMount = useContext(PortalContext);\n\n return (\n <Show\n when={\n context.modal &&\n (context.present || props.forceMount === true || forceMount)\n }\n >\n <OverlayElement {...props} />\n </Show>\n );\n}\n\nfunction OverlayElement(props: OverlayProps): JSX.Element {\n const context = useContext(DrawerContext);\n const rest = omit(props, \"forceMount\", \"ref\");\n onSettled(() => () => {\n context.setOverlay(null);\n });\n\n return (\n <div\n {...rest}\n ref={[\n props.ref,\n (element) => {\n context.setOverlay(element);\n },\n ]}\n data-vaul-overlay=\"\"\n data-state={context.isOpen ? \"open\" : \"closed\"}\n data-vaul-snap-points={\n (context.props.snapPoints?.length ?? 0) > 0 ? \"true\" : \"false\"\n }\n data-vaul-snap-points-overlay={context.shouldFade ? \"true\" : \"false\"}\n data-vaul-animate={context.shouldAnimate ? \"true\" : \"false\"}\n />\n );\n}\n\nexport function Content(props: ContentProps): JSX.Element {\n const context = useContext(DrawerContext);\n const forceMount = useContext(PortalContext);\n\n return (\n <Show when={context.present || props.forceMount === true || forceMount}>\n <ContentElement {...props} />\n </Show>\n );\n}\n\nfunction ContentElement(props: ContentProps): JSX.Element {\n const context = useContext(DrawerContext);\n\n const rest = omit(\n props,\n \"forceMount\",\n \"ref\",\n \"onOpenAutoFocus\",\n \"onCloseAutoFocus\",\n \"onEscapeKeyDown\",\n \"onPointerDownOutside\",\n \"onFocusOutside\",\n \"onInteractOutside\",\n \"onPointerDown\",\n \"onPointerMove\",\n \"onPointerUp\",\n \"onPointerCancel\",\n \"onLostPointerCapture\"\n );\n\n createLayer(context, props);\n onSettled(() => () => {\n context.setContent(null);\n });\n\n return (\n <FocusScope contain={context.isOpen && context.modal && !context.childOpen}>\n <div\n id={context.contentId}\n role=\"dialog\"\n aria-modal={context.modal ? \"true\" : undefined}\n aria-labelledby={context.titleId}\n aria-describedby={context.descriptionId}\n tabindex={-1}\n {...rest}\n ref={[\n props.ref,\n (element) => {\n context.setContent(element);\n },\n ]}\n data-state={context.isOpen ? \"open\" : \"closed\"}\n data-vaul-drawer=\"\"\n data-vaul-drawer-direction={context.direction}\n data-vaul-custom-container={context.props.container ? \"true\" : \"false\"}\n data-vaul-snap-points={\n (context.props.snapPoints?.length ?? 0) > 0 ? \"true\" : \"false\"\n }\n data-vaul-delayed-snap-points={\n context.snapPointsOffset.length > 0 ? \"true\" : \"false\"\n }\n data-vaul-handle-only={\n context.props.handleOnly === true ? \"true\" : \"false\"\n }\n data-vaul-animate={context.shouldAnimate ? \"true\" : \"false\"}\n onPointerDown={(event) => {\n callHandler(props.onPointerDown, event);\n context.press(event);\n }}\n onPointerMove={(event) => {\n callHandler(props.onPointerMove, event);\n\n if (!event.defaultPrevented) {\n context.drag(event);\n }\n }}\n onPointerUp={(event) => {\n callHandler(props.onPointerUp, event);\n context.release(event);\n }}\n onPointerCancel={(event) => {\n callHandler(props.onPointerCancel, event);\n context.cancelDrag();\n }}\n onLostPointerCapture={(event) => {\n callHandler(props.onLostPointerCapture, event);\n context.cancelDrag();\n }}\n />\n </FocusScope>\n );\n}\n\nexport function Title(props: TitleProps): JSX.Element {\n const context = useContext(DrawerContext);\n\n return <h2 id={context.titleId} {...props} />;\n}\n\nexport function Description(props: DescriptionProps): JSX.Element {\n const context = useContext(DrawerContext);\n\n return <p id={context.descriptionId} {...props} />;\n}\n\nexport function Handle(props: HandleProps): JSX.Element {\n const context = useContext(DrawerContext);\n\n const rest = omit(\n props,\n \"preventCycle\",\n \"children\",\n \"onClick\",\n \"onPointerDown\",\n \"onPointerMove\",\n \"onPointerCancel\"\n );\n\n let pressTime = 0;\n let pressPosition = { x: 0, y: 0 };\n let moved = false;\n let lastClick = -Infinity;\n\n function cycle(): void {\n if (\n props.preventCycle === true ||\n moved ||\n Date.now() - pressTime > 250 ||\n Date.now() - lastClick < 120\n ) {\n return;\n }\n\n lastClick = Date.now();\n const points = context.props.snapPoints;\n\n if (!points || points.length === 0) {\n context.close();\n\n return;\n }\n\n const next = points[context.activeSnapPointIndex + 1];\n\n if (next !== undefined) {\n context.setActiveSnapPoint(next);\n } else if (context.dismissible) {\n context.close();\n } else {\n context.setActiveSnapPoint(points[0] ?? null);\n }\n }\n\n return (\n <div\n {...rest}\n data-vaul-handle=\"\"\n aria-hidden=\"true\"\n data-vaul-drawer-visible={context.isOpen ? \"true\" : \"false\"}\n onClick={(event) => {\n callHandler(props.onClick, event);\n\n if (!event.defaultPrevented) {\n cycle();\n }\n }}\n onPointerDown={(event) => {\n callHandler(props.onPointerDown, event);\n\n if (event.defaultPrevented) {\n return;\n }\n\n pressTime = Date.now();\n pressPosition = { x: event.clientX, y: event.clientY };\n moved = false;\n context.press(event, true);\n event.stopPropagation();\n }}\n onPointerMove={(event) => {\n callHandler(props.onPointerMove, event);\n\n if (\n Math.abs(event.clientX - pressPosition.x) > 2 ||\n Math.abs(event.clientY - pressPosition.y) > 2\n ) {\n moved = true;\n }\n }}\n onPointerCancel={(event) => {\n callHandler(props.onPointerCancel, event);\n moved = true;\n context.cancelDrag();\n }}\n >\n <span data-vaul-handle-hitarea=\"\" aria-hidden=\"true\">\n {props.children}\n </span>\n </div>\n );\n}\n\nfunction callHandler<T, E extends Event>(\n handler: JSX.EventHandlerUnion<T, E> | undefined,\n event: Parameters<JSX.EventHandler<T, E>>[0]\n): void {\n if (typeof handler === \"function\") {\n handler(event);\n } else if (handler) {\n handler[0](handler[1], event);\n }\n}\n","import {\n Close,\n Content,\n Description,\n Handle,\n NestedRoot,\n Overlay,\n Portal,\n Root,\n Title,\n Trigger,\n} from \"./drawer\";\n\nexport {\n Close,\n Content,\n Description,\n Handle,\n NestedRoot,\n Overlay,\n Portal,\n Root,\n Title,\n Trigger,\n} from \"./drawer\";\n\nexport type {\n CloseProps,\n ContentProps,\n DescriptionProps,\n DialogProps,\n DrawerDirection,\n DrawerProps,\n FocusOutsideEvent,\n HandleProps,\n InteractOutsideEvent,\n OverlayProps,\n PointerDownOutsideEvent,\n PortalProps,\n SnapPoint,\n TitleProps,\n TriggerProps,\n WithFadeFromProps,\n WithoutFadeFromProps,\n} from \"./types\";\n\nexport const Drawer = {\n Close,\n Content,\n Description,\n Handle,\n NestedRoot,\n Overlay,\n Portal,\n Root,\n Title,\n Trigger,\n};\n"],"mappings":"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"}