{"version":3,"names":["createSignal","contains","getTarget","ownerDocument","ownerWindow","getElementAtPoint","findScrollableTouchTarget","hasScrollableAncestor","clamp","DEFAULT_SWIPE_THRESHOLD","REVERSE_CANCEL_THRESHOLD","MIN_DRAG_THRESHOLD","MIN_VELOCITY_DURATION_MS","MIN_RELEASE_VELOCITY_DURATION_MS","MAX_RELEASE_VELOCITY_AGE_MS","DEFAULT_IGNORE_SELECTOR","getDisplacement","direction","deltaX","deltaY","getElementTransform","element","computedStyle","getComputedStyle","transform","translateX","translateY","scale","matrix","match","values","split","map","Number","parseFloat","length","a","b","Math","sqrt","x","y","getValidTimeStamp","timeStamp","isFinite","hasPrimaryMouseButton","buttons","safelyChangePointerCapture","pointerId","method","fn","call","error","name","useSwipeDismiss","options","directions","elementRef","movementCssVars","trackDrag","trackDragOption","ignoreSelectorWhenTouch","ignoreScrollableAncestors","swipeThresholdProp","swipeThreshold","ignoreSelector","primaryDirection","undefined","swipeThresholdDefault","max","allowLeft","includes","allowRight","allowUp","allowDown","hasHorizontal","hasVertical","scrollAxes","push","currentSwipeDirection","setCurrentSwipeDirection","ownedWrite","isSwiping","setIsSwipingSig","isRealSwipe","setIsRealSwipe","dragDismissed","setDragDismissed","dragOffsetX","setDragOffsetX","dragOffsetY","setDragOffsetY","initialTransformX","setInitialTransformX","initialTransformY","setInitialTransformY","initialTransformScale","setInitialTransformScale","lockedDirection","setLockedDirection","dragStartPos","dragOffsetRef","lastMovePos","initialTransformRef","intendedSwipeDirection","maxSwipeDisplacement","cancelledSwipe","swipeCancelBaseline","isFirstPointerMove","pendingSwipe","pendingSwipeStartPos","swipeFromScrollable","sawPrimaryButtonsOnMove","elementSize","width","height","swipeProgressValue","swipeThresholdRef","swipeStartTime","lastDragSample","lastDragVelocity","lastProgressDetails","isSwipingRef","setSwiping","nextSwiping","onSwipingChange","resolveSwipeThreshold","value","updateSwipeProgress","progress","details","nextProgress","progressChanged","detailsChanged","last","onProgress","recordDragSample","offset","time","durationMs","reset","getPrimaryPointerPosition","event","touch","touches","clientX","clientY","isTouchLikeEvent","pointerType","getTargetAtPoint","position","nativeEvent","doc","elementAtPoint","target","findGestureScrollableTouchTarget","root","startSwipeAtPosition","startOptions","touchLike","body","scrollableTarget","ignoreScrollableTarget","Boolean","isInteractiveElement","closest","ignoreAncestors","offsetWidth","offsetHeight","onSwipeStart","resetPendingSwipeState","clearPendingSwipeStartState","cancelSwipeInteraction","resolvedInitialTransform","onCancel","applyDirectionalDamping","exponent","abs","dampAxis","delta","allowNegative","allowPositive","newDeltaX","newDeltaY","canSwipeFromScrollEdgeOnPendingMove","scrollTarget","absDeltaX","absDeltaY","useVerticalAxis","maxScrollTop","scrollHeight","clientHeight","atTop","scrollTop","atBottom","movingDown","movingUp","canSwipeDown","canSwipeUp","useHorizontalAxis","maxScrollLeft","scrollWidth","clientWidth","atLeft","scrollLeft","atRight","movingRight","movingLeft","canSwipeRight","canSwipeLeft","handleStart","enabled","defaultPrevented","button","startPos","allowedToStart","canStart","handleMoveCore","movement","boundaryElement","currentTarget","preventDefault","moveTime","movementX","movementY","cancelDeltaY","cancelDeltaX","movementDistance","absX","absY","candidate","locked","isAllowed","currentDisplacement","dampedDelta","newOffsetX","newOffsetY","dragDeltaX","dragDeltaY","swipeDirectionDetails","progressDirection","size","progressDisplacement","handleMove","currentPos","hasPrimaryButton","lostPrimaryButtonDuringSwipe","pendingStartPos","ignoreScrollableOnStart","canSwipeFromEdge","started","previousPos","handleEnd","resolvedDragOffset","releaseDeltaX","releaseDeltaY","progressDetails","startTime","endTime","velocityDurationMs","velocityX","velocityY","releaseVelocityX","releaseVelocityY","lastSample","ageMs","sampleDurationMs","deltaFromLastSampleX","deltaFromLastSampleY","sampleVelocityX","sampleVelocityY","releaseDecision","onRelease","hasReleaseDecision","shouldClose","dismissDirection","onDismiss","getDragStyles","swiping","transition","getPointerProps","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","getTouchProps","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","swipeDirection"],"sources":["use-swipe-dismiss.ts"],"sourcesContent":["import type { JSX } from \"@solidjs/web\";\n/**\n * `useSwipeDismiss` — pointer + touch drag state machine for swipe-to-\n * dismiss gestures. Full port of Base UI React's\n * `packages/react/src/utils/useSwipeDismiss.ts` (~1000 LOC).\n *\n * Solid adaptations vs. the React source:\n *\n *  - `elementRef: RefObject<HTMLElement | null>` → `elementRef: () =>\n *    HTMLElement | null` (accessor). Callers pass a signal / accessor\n *    produced by the owning component.\n *  - `enabled: boolean` → `enabled: () => boolean` (accessor) per\n *    solidify.md P3 — lets consumers flip the hook on/off reactively\n *    without remounting.\n *  - `useState` for `isSwiping` / `dragOffset` / `initialTransform` /\n *    `lockedDirection` / `currentSwipeDirection` / `dragDismissed` →\n *    `createSignal` with `ownedWrite: true` (owned, written from event\n *    handlers).\n *  - `useStableCallback` → plain closures — Solid doesn't re-render and\n *    event handlers close over mutable state directly.\n *  - React's `React.PointerEvent` / `React.TouchEvent` are plain DOM\n *    events here. `event.nativeEvent` is rewritten to `event` itself;\n *    callers of `onDismiss` / `onRelease` / `onSwipeStart` receive the\n *    native DOM event directly.\n *  - Return shape matches React (`swiping` / `swipeDirection` / ... /\n *    `getPointerProps` / `getTouchProps` / `getDragStyles` / `reset`)\n *    except `swiping` / `swipeDirection` / `dragDismissed` are accessors\n *    (functions), not plain values.\n *\n * No comments annotate the React → Solid deltas at each call site; the\n * behavior is 1:1.\n */\n\nimport { createSignal } from \"solid-js\";\nimport { contains } from \"./dom/contains\";\nimport { getTarget } from \"./dom/get-target\";\nimport { ownerDocument } from \"./dom/owner-document\";\nimport { ownerWindow } from \"./dom/owner-window\";\nimport { getElementAtPoint } from \"./get-element-at-point\";\nimport {\n\tfindScrollableTouchTarget,\n\thasScrollableAncestor,\n\ttype ScrollAxis,\n} from \"./scrollable\";\nimport { clamp } from \"./slider-utils/clamp\";\n\nexport type SwipeDirection = \"up\" | \"down\" | \"left\" | \"right\";\n\ntype SwipeDismissNativeEvent = PointerEvent | TouchEvent;\ntype SwipeDismissStartEvent = PointerEvent | TouchEvent;\ntype SwipeDismissMoveEvent = PointerEvent | TouchEvent;\ntype SwipeDismissEndEvent = PointerEvent | TouchEvent;\n\ninterface SwipeProgressDetailsInternal {\n\tdeltaX: number;\n\tdeltaY: number;\n\tdirection: SwipeDirection | undefined;\n}\n\nconst DEFAULT_SWIPE_THRESHOLD = 40;\nconst REVERSE_CANCEL_THRESHOLD = 10;\nconst MIN_DRAG_THRESHOLD = 1;\nconst MIN_VELOCITY_DURATION_MS = 50;\nconst MIN_RELEASE_VELOCITY_DURATION_MS = 16;\nconst MAX_RELEASE_VELOCITY_AGE_MS = 80;\nconst DEFAULT_IGNORE_SELECTOR =\n\t'button,a,input,select,textarea,label,[role=\"button\"]';\n\n/**\n * Returns the signed displacement of `deltaX` / `deltaY` along the given\n * direction. A positive return value means motion toward the dismiss edge.\n */\nexport function getDisplacement(\n\tdirection: SwipeDirection,\n\tdeltaX: number,\n\tdeltaY: number,\n): number {\n\tswitch (direction) {\n\t\tcase \"up\":\n\t\t\treturn -deltaY;\n\t\tcase \"down\":\n\t\t\treturn deltaY;\n\t\tcase \"left\":\n\t\t\treturn -deltaX;\n\t\tcase \"right\":\n\t\t\treturn deltaX;\n\t\tdefault:\n\t\t\treturn 0;\n\t}\n}\n\n/**\n * Parses `transform` off the computed style, returning translation +\n * uniform-scale components. Mirrors React's implementation.\n */\nexport function getElementTransform(element: HTMLElement): {\n\tx: number;\n\ty: number;\n\tscale: number;\n} {\n\tconst computedStyle = ownerWindow(element).getComputedStyle(element);\n\tconst transform = computedStyle.transform;\n\tlet translateX = 0;\n\tlet translateY = 0;\n\tlet scale = 1;\n\n\tif (transform && transform !== \"none\") {\n\t\tconst matrix = transform.match(/matrix(?:3d)?\\(([^)]+)\\)/);\n\t\tif (matrix?.[1]) {\n\t\t\tconst values = matrix[1].split(\", \").map(Number.parseFloat);\n\t\t\tif (values.length === 6) {\n\t\t\t\ttranslateX = values[4] ?? 0;\n\t\t\t\ttranslateY = values[5] ?? 0;\n\t\t\t\tconst a = values[0] ?? 0;\n\t\t\t\tconst b = values[1] ?? 0;\n\t\t\t\tscale = Math.sqrt(a * a + b * b);\n\t\t\t} else if (values.length === 16) {\n\t\t\t\ttranslateX = values[12] ?? 0;\n\t\t\t\ttranslateY = values[13] ?? 0;\n\t\t\t\tscale = values[0] ?? 1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { x: translateX, y: translateY, scale };\n}\n\nfunction getValidTimeStamp(timeStamp: number): number | null {\n\treturn Number.isFinite(timeStamp) && timeStamp > 0 ? timeStamp : null;\n}\n\nfunction hasPrimaryMouseButton(buttons: number): boolean {\n\treturn buttons % 2 === 1;\n}\n\nfunction safelyChangePointerCapture(\n\telement: HTMLElement,\n\tpointerId: number,\n\tmethod: \"setPointerCapture\" | \"releasePointerCapture\",\n): void {\n\tconst fn = element[method];\n\tif (typeof fn !== \"function\") return;\n\ttry {\n\t\tfn.call(element, pointerId);\n\t} catch (error) {\n\t\tif (\n\t\t\terror &&\n\t\t\ttypeof error === \"object\" &&\n\t\t\t\"name\" in error &&\n\t\t\t(error as { name?: string }).name === \"NotFoundError\"\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nexport interface UseSwipeDismissDetails {\n\tnativeEvent: PointerEvent | TouchEvent;\n\tdirection: SwipeDirection | undefined;\n}\n\nexport type UseSwipeDismissProgressDetails = SwipeProgressDetailsInternal;\n\nexport interface UseSwipeDismissOptions {\n\t/** Reactive on/off flag. */\n\tenabled: () => boolean;\n\t/** Allowed dismissal directions. A single-entry array is the common case. */\n\tdirections: SwipeDirection[];\n\t/** Accessor returning the tracked element. */\n\telementRef: () => HTMLElement | null;\n\t/** CSS custom-property names used for the drag-movement style output. */\n\tmovementCssVars: { x: string; y: string };\n\tswipeThreshold?:\n\t\t| number\n\t\t| ((details: { element: HTMLElement; direction: SwipeDirection }) => number)\n\t\t| undefined;\n\tcanStart?:\n\t\t| ((\n\t\t\t\tposition: { x: number; y: number },\n\t\t\t\tdetails: UseSwipeDismissDetails,\n\t\t  ) => boolean)\n\t\t| undefined;\n\tignoreScrollableAncestors?: boolean | undefined;\n\tignoreSelectorWhenTouch?: boolean | undefined;\n\ttrackDrag?: boolean | undefined;\n\tonSwipeStart?: ((event: PointerEvent | TouchEvent) => void) | undefined;\n\tonProgress?:\n\t\t| ((progress: number, details?: UseSwipeDismissProgressDetails) => void)\n\t\t| undefined;\n\tonCancel?: ((event: PointerEvent | TouchEvent) => void) | undefined;\n\tonSwipingChange?: ((swiping: boolean) => void) | undefined;\n\tonRelease?:\n\t\t| ((details: {\n\t\t\t\tevent: PointerEvent | TouchEvent;\n\t\t\t\tdirection: SwipeDirection | undefined;\n\t\t\t\tdeltaX: number;\n\t\t\t\tdeltaY: number;\n\t\t\t\tvelocityX: number;\n\t\t\t\tvelocityY: number;\n\t\t\t\treleaseVelocityX: number;\n\t\t\t\treleaseVelocityY: number;\n\t\t  }) => boolean | undefined)\n\t\t| undefined;\n\tonDismiss?:\n\t\t| ((\n\t\t\t\tevent: PointerEvent | TouchEvent,\n\t\t\t\tdetails: { direction: SwipeDirection },\n\t\t  ) => void)\n\t\t| undefined;\n}\n\nexport interface UseSwipeDismissReturnValue {\n\tswiping: () => boolean;\n\tswipeDirection: () => SwipeDirection | undefined;\n\tdragDismissed: () => boolean;\n\tgetPointerProps: () => {\n\t\tonPointerDown?: ((event: PointerEvent) => void) | undefined;\n\t\tonPointerMove?: ((event: PointerEvent) => void) | undefined;\n\t\tonPointerUp?: ((event: PointerEvent) => void) | undefined;\n\t\tonPointerCancel?: ((event: PointerEvent) => void) | undefined;\n\t};\n\tgetTouchProps: () => {\n\t\tonTouchStart?: ((event: TouchEvent) => void) | undefined;\n\t\tonTouchMove?: ((event: TouchEvent) => void) | undefined;\n\t\tonTouchEnd?: ((event: TouchEvent) => void) | undefined;\n\t\tonTouchCancel?: ((event: TouchEvent) => void) | undefined;\n\t};\n\tgetDragStyles: () => JSX.CSSProperties;\n\treset: () => void;\n}\n\nexport function useSwipeDismiss(\n\toptions: UseSwipeDismissOptions,\n): UseSwipeDismissReturnValue {\n\tconst {\n\t\tdirections,\n\t\telementRef,\n\t\tmovementCssVars,\n\t\ttrackDrag: trackDragOption,\n\t} = options;\n\tconst trackDrag = trackDragOption ?? true;\n\tconst ignoreSelectorWhenTouch = options.ignoreSelectorWhenTouch ?? true;\n\tconst ignoreScrollableAncestors = options.ignoreScrollableAncestors ?? false;\n\tconst swipeThresholdProp = options.swipeThreshold;\n\n\tconst ignoreSelector = DEFAULT_IGNORE_SELECTOR;\n\tconst primaryDirection = directions.length === 1 ? directions[0] : undefined;\n\n\tconst swipeThresholdDefault = Math.max(\n\t\t0,\n\t\ttypeof swipeThresholdProp === \"number\"\n\t\t\t? swipeThresholdProp\n\t\t\t: DEFAULT_SWIPE_THRESHOLD,\n\t);\n\n\tconst allowLeft = directions.includes(\"left\");\n\tconst allowRight = directions.includes(\"right\");\n\tconst allowUp = directions.includes(\"up\");\n\tconst allowDown = directions.includes(\"down\");\n\tconst hasHorizontal = allowLeft || allowRight;\n\tconst hasVertical = allowUp || allowDown;\n\n\tconst scrollAxes: ScrollAxis[] = [];\n\tif (hasVertical) scrollAxes.push(\"vertical\");\n\tif (hasHorizontal) scrollAxes.push(\"horizontal\");\n\n\tconst [currentSwipeDirection, setCurrentSwipeDirection] = createSignal<\n\t\tSwipeDirection | undefined\n\t>(undefined, { ownedWrite: true });\n\tconst [isSwiping, setIsSwipingSig] = createSignal(false, {\n\t\townedWrite: true,\n\t});\n\tconst [isRealSwipe, setIsRealSwipe] = createSignal(false, {\n\t\townedWrite: true,\n\t});\n\tconst [dragDismissed, setDragDismissed] = createSignal(false, {\n\t\townedWrite: true,\n\t});\n\tconst [dragOffsetX, setDragOffsetX] = createSignal(0, { ownedWrite: true });\n\tconst [dragOffsetY, setDragOffsetY] = createSignal(0, { ownedWrite: true });\n\tconst [initialTransformX, setInitialTransformX] = createSignal(0, {\n\t\townedWrite: true,\n\t});\n\tconst [initialTransformY, setInitialTransformY] = createSignal(0, {\n\t\townedWrite: true,\n\t});\n\tconst [initialTransformScale, setInitialTransformScale] = createSignal(1, {\n\t\townedWrite: true,\n\t});\n\tconst [lockedDirection, setLockedDirection] = createSignal<\n\t\t\"horizontal\" | \"vertical\" | null\n\t>(null, { ownedWrite: true });\n\n\t// Mutable refs (not reactive — mirror React's `useRef`).\n\tlet dragStartPos = { x: 0, y: 0 };\n\tlet dragOffsetRef = { x: 0, y: 0 };\n\tlet lastMovePos: { x: number; y: number } | null = null;\n\tlet initialTransformRef = { x: 0, y: 0, scale: 1 };\n\tlet intendedSwipeDirection: SwipeDirection | undefined;\n\tlet maxSwipeDisplacement = 0;\n\tlet cancelledSwipe = false;\n\tlet swipeCancelBaseline = { x: 0, y: 0 };\n\tlet isFirstPointerMove = false;\n\tlet pendingSwipe = false;\n\tlet pendingSwipeStartPos: { x: number; y: number } | null = null;\n\tlet swipeFromScrollable = false;\n\tlet sawPrimaryButtonsOnMove = false;\n\tlet elementSize = { width: 0, height: 0 };\n\tlet swipeProgressValue = 0;\n\tlet swipeThresholdRef = swipeThresholdDefault;\n\tlet swipeStartTime: number | null = null;\n\tlet lastDragSample: { x: number; y: number; time: number } | null = null;\n\tlet lastDragVelocity = { x: 0, y: 0 };\n\tlet lastProgressDetails: SwipeProgressDetailsInternal | null = null;\n\tlet isSwipingRef = false;\n\n\tconst setSwiping = (nextSwiping: boolean): void => {\n\t\tif (isSwipingRef === nextSwiping) return;\n\t\tisSwipingRef = nextSwiping;\n\t\tsetIsSwipingSig(nextSwiping);\n\t\toptions.onSwipingChange?.(nextSwiping);\n\t};\n\n\tfunction resolveSwipeThreshold(direction: SwipeDirection | undefined): void {\n\t\tif (!direction) return;\n\t\tif (typeof swipeThresholdProp !== \"function\") {\n\t\t\tswipeThresholdRef = swipeThresholdDefault;\n\t\t\treturn;\n\t\t}\n\t\tconst element = elementRef();\n\t\tif (!element) return;\n\t\tconst value = swipeThresholdProp({ element, direction });\n\t\tswipeThresholdRef = Math.max(0, value);\n\t}\n\n\tconst updateSwipeProgress = (\n\t\tprogress: number,\n\t\tdetails?: SwipeProgressDetailsInternal,\n\t): void => {\n\t\tconst nextProgress = Number.isFinite(progress) ? clamp(progress, 0, 1) : 0;\n\t\tconst progressChanged = nextProgress !== swipeProgressValue;\n\t\tlet detailsChanged = false;\n\t\tif (details) {\n\t\t\tconst last = lastProgressDetails;\n\t\t\tdetailsChanged =\n\t\t\t\t!last ||\n\t\t\t\tlast.deltaX !== details.deltaX ||\n\t\t\t\tlast.deltaY !== details.deltaY ||\n\t\t\t\tlast.direction !== details.direction;\n\t\t}\n\t\tif (!progressChanged && !detailsChanged) return;\n\t\tswipeProgressValue = nextProgress;\n\t\tif (details) {\n\t\t\tlastProgressDetails = details;\n\t\t} else if (progressChanged) {\n\t\t\tlastProgressDetails = null;\n\t\t}\n\t\toptions.onProgress?.(nextProgress, details);\n\t};\n\n\tfunction recordDragSample(\n\t\toffset: { x: number; y: number },\n\t\ttimeStamp: number | null,\n\t): void {\n\t\tif (timeStamp === null) return;\n\t\tconst last = lastDragSample;\n\t\tif (last && timeStamp > last.time) {\n\t\t\tconst durationMs = Math.max(\n\t\t\t\ttimeStamp - last.time,\n\t\t\t\tMIN_RELEASE_VELOCITY_DURATION_MS,\n\t\t\t);\n\t\t\tlastDragVelocity = {\n\t\t\t\tx: (offset.x - last.x) / durationMs,\n\t\t\t\ty: (offset.y - last.y) / durationMs,\n\t\t\t};\n\t\t}\n\t\tlastDragSample = { x: offset.x, y: offset.y, time: timeStamp };\n\t}\n\n\tconst reset = (): void => {\n\t\tsetCurrentSwipeDirection(undefined);\n\t\tsetSwiping(false);\n\t\tsetIsRealSwipe(false);\n\t\tsetDragDismissed(false);\n\t\tsetDragOffsetX(0);\n\t\tsetDragOffsetY(0);\n\t\tsetInitialTransformX(0);\n\t\tsetInitialTransformY(0);\n\t\tsetInitialTransformScale(1);\n\t\tsetLockedDirection(null);\n\t\tupdateSwipeProgress(0);\n\n\t\tswipeThresholdRef = swipeThresholdDefault;\n\t\tdragStartPos = { x: 0, y: 0 };\n\t\tdragOffsetRef = { x: 0, y: 0 };\n\t\tinitialTransformRef = { x: 0, y: 0, scale: 1 };\n\t\tintendedSwipeDirection = undefined;\n\t\tmaxSwipeDisplacement = 0;\n\t\tcancelledSwipe = false;\n\t\tswipeCancelBaseline = { x: 0, y: 0 };\n\t\tisFirstPointerMove = false;\n\t\tlastMovePos = null;\n\t\tpendingSwipe = false;\n\t\tpendingSwipeStartPos = null;\n\t\tswipeFromScrollable = false;\n\t\tsawPrimaryButtonsOnMove = false;\n\t\telementSize = { width: 0, height: 0 };\n\t\tswipeStartTime = null;\n\t\tlastDragSample = null;\n\t\tlastDragVelocity = { x: 0, y: 0 };\n\t\tlastProgressDetails = null;\n\t};\n\n\tfunction getPrimaryPointerPosition(\n\t\tevent:\n\t\t\t| SwipeDismissStartEvent\n\t\t\t| SwipeDismissMoveEvent\n\t\t\t| SwipeDismissEndEvent,\n\t): { x: number; y: number } | null {\n\t\tif (\"touches\" in event) {\n\t\t\tconst touch = event.touches[0];\n\t\t\treturn touch ? { x: touch.clientX, y: touch.clientY } : null;\n\t\t}\n\t\treturn { x: event.clientX, y: event.clientY };\n\t}\n\n\tfunction isTouchLikeEvent(event: Event): boolean {\n\t\tif (\"touches\" in event) return true;\n\t\treturn (event as PointerEvent).pointerType === \"touch\";\n\t}\n\n\tfunction getTargetAtPoint(\n\t\tposition: { x: number; y: number },\n\t\tnativeEvent: Event,\n\t): HTMLElement | null {\n\t\tconst doc = ownerDocument(elementRef());\n\t\tconst elementAtPoint = getElementAtPoint(doc, position.x, position.y);\n\t\tconst target = elementAtPoint ?? getTarget(nativeEvent);\n\t\treturn target as HTMLElement | null;\n\t}\n\n\tfunction findGestureScrollableTouchTarget(\n\t\ttarget: EventTarget | null,\n\t\troot: HTMLElement,\n\t): HTMLElement | null {\n\t\tif (hasHorizontal && !hasVertical) {\n\t\t\treturn findScrollableTouchTarget(target, root, \"horizontal\");\n\t\t}\n\t\tif (hasVertical && !hasHorizontal) {\n\t\t\treturn findScrollableTouchTarget(target, root, \"vertical\");\n\t\t}\n\t\treturn (\n\t\t\tfindScrollableTouchTarget(target, root, \"vertical\") ??\n\t\t\tfindScrollableTouchTarget(target, root, \"horizontal\")\n\t\t);\n\t}\n\n\tfunction startSwipeAtPosition(\n\t\tevent: SwipeDismissStartEvent | SwipeDismissMoveEvent,\n\t\tposition: { x: number; y: number },\n\t\tstartOptions?: {\n\t\t\tignoreScrollableTarget?: boolean | undefined;\n\t\t\tignoreScrollableAncestors?: boolean | undefined;\n\t\t},\n\t): boolean {\n\t\tswipeFromScrollable = false;\n\t\tconst touchLike = isTouchLikeEvent(event);\n\t\tconst target = getTargetAtPoint(position, event);\n\n\t\tconst doc = ownerDocument(elementRef());\n\t\tconst body = doc.body;\n\n\t\tconst scrollableTarget =\n\t\t\ttouchLike && body ? findGestureScrollableTouchTarget(target, body) : null;\n\t\tconst ignoreScrollableTarget =\n\t\t\tstartOptions?.ignoreScrollableTarget ?? false;\n\t\tif (scrollableTarget && !ignoreScrollableTarget) return false;\n\t\tswipeFromScrollable = Boolean(scrollableTarget && ignoreScrollableTarget);\n\n\t\tconst isInteractiveElement = target\n\t\t\t? target.closest(ignoreSelector)\n\t\t\t: false;\n\t\tif (isInteractiveElement && (!touchLike || ignoreSelectorWhenTouch)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst element = elementRef();\n\t\tif (\n\t\t\tignoreScrollableAncestors &&\n\t\t\telement &&\n\t\t\ttarget &&\n\t\t\tscrollAxes.length > 0\n\t\t) {\n\t\t\tconst ignoreAncestors = startOptions?.ignoreScrollableAncestors ?? false;\n\t\t\tif (\n\t\t\t\t!ignoreAncestors &&\n\t\t\t\thasScrollableAncestor(target, element, scrollAxes)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tcancelledSwipe = false;\n\t\tintendedSwipeDirection = undefined;\n\t\tmaxSwipeDisplacement = 0;\n\n\t\tdragStartPos = position;\n\t\tswipeStartTime = getValidTimeStamp(event.timeStamp);\n\t\tswipeCancelBaseline = position;\n\t\tlastMovePos = position;\n\n\t\tif (element) {\n\t\t\telementSize = {\n\t\t\t\twidth: element.offsetWidth,\n\t\t\t\theight: element.offsetHeight,\n\t\t\t};\n\t\t\tresolveSwipeThreshold(primaryDirection);\n\t\t\tconst transform = getElementTransform(element);\n\t\t\tinitialTransformRef = transform;\n\t\t\tdragOffsetRef = { x: transform.x, y: transform.y };\n\t\t\tsetInitialTransformX(transform.x);\n\t\t\tsetInitialTransformY(transform.y);\n\t\t\tsetInitialTransformScale(transform.scale);\n\t\t\tsetDragOffsetX(transform.x);\n\t\t\tsetDragOffsetY(transform.y);\n\t\t\trecordDragSample({ x: transform.x, y: transform.y }, swipeStartTime);\n\n\t\t\tif (!(\"touches\" in event)) {\n\t\t\t\tsafelyChangePointerCapture(\n\t\t\t\t\telement,\n\t\t\t\t\t(event as PointerEvent).pointerId,\n\t\t\t\t\t\"setPointerCapture\",\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\toptions.onSwipeStart?.(event as SwipeDismissNativeEvent);\n\n\t\tsetSwiping(true);\n\t\tsetIsRealSwipe(false);\n\t\tsetLockedDirection(null);\n\t\tisFirstPointerMove = true;\n\t\tupdateSwipeProgress(0);\n\n\t\treturn true;\n\t}\n\n\tfunction resetPendingSwipeState(): void {\n\t\tclearPendingSwipeStartState();\n\t\tswipeFromScrollable = false;\n\t\tlastMovePos = null;\n\t}\n\n\tfunction clearPendingSwipeStartState(): void {\n\t\tpendingSwipe = false;\n\t\tpendingSwipeStartPos = null;\n\t}\n\n\tfunction cancelSwipeInteraction(event: PointerEvent): void {\n\t\tresetPendingSwipeState();\n\t\tif (!isSwipingRef) return;\n\t\tsetSwiping(false);\n\t\tsetIsRealSwipe(false);\n\t\tsetLockedDirection(null);\n\n\t\tconst resolvedInitialTransform = trackDrag\n\t\t\t? { x: initialTransformX(), y: initialTransformY() }\n\t\t\t: { x: initialTransformRef.x, y: initialTransformRef.y };\n\t\tdragOffsetRef = {\n\t\t\tx: resolvedInitialTransform.x,\n\t\t\ty: resolvedInitialTransform.y,\n\t\t};\n\t\tsetDragOffsetX(resolvedInitialTransform.x);\n\t\tsetDragOffsetY(resolvedInitialTransform.y);\n\t\tsetCurrentSwipeDirection(undefined);\n\t\tsawPrimaryButtonsOnMove = false;\n\n\t\tconst element = elementRef();\n\t\tif (element) {\n\t\t\tsafelyChangePointerCapture(\n\t\t\t\telement,\n\t\t\t\tevent.pointerId,\n\t\t\t\t\"releasePointerCapture\",\n\t\t\t);\n\t\t}\n\n\t\tupdateSwipeProgress(0, {\n\t\t\tdeltaX: 0,\n\t\t\tdeltaY: 0,\n\t\t\tdirection: undefined,\n\t\t});\n\n\t\toptions.onCancel?.(event);\n\t}\n\n\tfunction applyDirectionalDamping(\n\t\tdeltaX: number,\n\t\tdeltaY: number,\n\t): { x: number; y: number } {\n\t\tconst exponent = (value: number): number =>\n\t\t\tvalue >= 0 ? value ** 0.5 : -(Math.abs(value) ** 0.5);\n\t\tconst dampAxis = (\n\t\t\tdelta: number,\n\t\t\tallowNegative: boolean,\n\t\t\tallowPositive: boolean,\n\t\t): number => {\n\t\t\tif (!allowNegative && delta < 0) return exponent(delta);\n\t\t\tif (!allowPositive && delta > 0) return exponent(delta);\n\t\t\treturn delta;\n\t\t};\n\n\t\tconst newDeltaX = hasHorizontal\n\t\t\t? dampAxis(deltaX, allowLeft, allowRight)\n\t\t\t: exponent(deltaX);\n\t\tconst newDeltaY = hasVertical\n\t\t\t? dampAxis(deltaY, allowUp, allowDown)\n\t\t\t: exponent(deltaY);\n\n\t\treturn { x: newDeltaX, y: newDeltaY };\n\t}\n\n\tfunction canSwipeFromScrollEdgeOnPendingMove(\n\t\tscrollTarget: HTMLElement,\n\t\tdeltaX: number,\n\t\tdeltaY: number,\n\t): boolean | null {\n\t\tconst absDeltaX = Math.abs(deltaX);\n\t\tconst absDeltaY = Math.abs(deltaY);\n\t\tconst useVerticalAxis =\n\t\t\thasVertical && deltaY !== 0 && (!hasHorizontal || absDeltaY >= absDeltaX);\n\n\t\tif (useVerticalAxis) {\n\t\t\tconst maxScrollTop = Math.max(\n\t\t\t\t0,\n\t\t\t\tscrollTarget.scrollHeight - scrollTarget.clientHeight,\n\t\t\t);\n\t\t\tconst atTop = scrollTarget.scrollTop <= 0;\n\t\t\tconst atBottom = scrollTarget.scrollTop >= maxScrollTop;\n\t\t\tconst movingDown = deltaY > 0;\n\t\t\tconst movingUp = deltaY < 0;\n\t\t\tconst canSwipeDown = movingDown && atTop && allowDown;\n\t\t\tconst canSwipeUp = movingUp && atBottom && allowUp;\n\t\t\treturn canSwipeDown || canSwipeUp;\n\t\t}\n\n\t\tconst useHorizontalAxis =\n\t\t\thasHorizontal && deltaX !== 0 && (!hasVertical || absDeltaX > absDeltaY);\n\t\tif (useHorizontalAxis) {\n\t\t\tconst maxScrollLeft = Math.max(\n\t\t\t\t0,\n\t\t\t\tscrollTarget.scrollWidth - scrollTarget.clientWidth,\n\t\t\t);\n\t\t\tconst atLeft = scrollTarget.scrollLeft <= 0;\n\t\t\tconst atRight = scrollTarget.scrollLeft >= maxScrollLeft;\n\t\t\tconst movingRight = deltaX > 0;\n\t\t\tconst movingLeft = deltaX < 0;\n\t\t\tconst canSwipeRight = movingRight && atLeft && allowRight;\n\t\t\tconst canSwipeLeft = movingLeft && atRight && allowLeft;\n\t\t\treturn canSwipeRight || canSwipeLeft;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tconst handleStart = (event: SwipeDismissStartEvent): void => {\n\t\tif (!options.enabled()) return;\n\t\tif (event.defaultPrevented) return;\n\n\t\tif (!(\"touches\" in event) && (event as PointerEvent).button !== 0) return;\n\n\t\tconst startPos = getPrimaryPointerPosition(event);\n\t\tif (!startPos) return;\n\n\t\tpendingSwipe = true;\n\t\tpendingSwipeStartPos = startPos;\n\t\tswipeFromScrollable = false;\n\t\tsawPrimaryButtonsOnMove = false;\n\n\t\tconst allowedToStart = options.canStart\n\t\t\t? options.canStart(startPos, {\n\t\t\t\t\tnativeEvent: event as SwipeDismissNativeEvent,\n\t\t\t\t\tdirection: primaryDirection,\n\t\t\t\t})\n\t\t\t: true;\n\t\tif (!allowedToStart) return;\n\n\t\tif (startSwipeAtPosition(event, startPos)) {\n\t\t\tclearPendingSwipeStartState();\n\t\t}\n\t};\n\n\tfunction handleMoveCore(\n\t\tevent: SwipeDismissMoveEvent,\n\t\tposition: { x: number; y: number },\n\t\tmovement: { x: number; y: number },\n\t): void {\n\t\tif (!options.enabled() || !isSwipingRef) return;\n\n\t\tconst target = getTarget(event) as HTMLElement | null;\n\t\tif (isTouchLikeEvent(event) && !swipeFromScrollable) {\n\t\t\tconst boundaryElement = event.currentTarget as HTMLElement;\n\t\t\tif (findGestureScrollableTouchTarget(target, boundaryElement)) return;\n\t\t}\n\n\t\tif (!(\"touches\" in event)) {\n\t\t\t// Prevent text selection on Safari during a pointer drag.\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\tif (isFirstPointerMove) {\n\t\t\tdragStartPos = position;\n\t\t\tconst moveTime = getValidTimeStamp(event.timeStamp);\n\t\t\tif (moveTime !== null) swipeStartTime = moveTime;\n\t\t\tisFirstPointerMove = false;\n\t\t}\n\n\t\tconst clientX = position.x;\n\t\tconst clientY = position.y;\n\t\tconst movementX = movement.x;\n\t\tconst movementY = movement.y;\n\n\t\tif (\n\t\t\t(movementY < 0 && clientY > swipeCancelBaseline.y) ||\n\t\t\t(movementY > 0 && clientY < swipeCancelBaseline.y)\n\t\t) {\n\t\t\tswipeCancelBaseline = { x: swipeCancelBaseline.x, y: clientY };\n\t\t}\n\n\t\tif (\n\t\t\t(movementX < 0 && clientX > swipeCancelBaseline.x) ||\n\t\t\t(movementX > 0 && clientX < swipeCancelBaseline.x)\n\t\t) {\n\t\t\tswipeCancelBaseline = { x: clientX, y: swipeCancelBaseline.y };\n\t\t}\n\n\t\tconst deltaX = clientX - dragStartPos.x;\n\t\tconst deltaY = clientY - dragStartPos.y;\n\t\tconst cancelDeltaY = clientY - swipeCancelBaseline.y;\n\t\tconst cancelDeltaX = clientX - swipeCancelBaseline.x;\n\n\t\tif (!isRealSwipe()) {\n\t\t\tconst movementDistance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n\t\t\tif (movementDistance >= MIN_DRAG_THRESHOLD) {\n\t\t\t\tsetIsRealSwipe(true);\n\t\t\t\tif (lockedDirection() === null) {\n\t\t\t\t\tif (hasHorizontal && hasVertical) {\n\t\t\t\t\t\tconst absX = Math.abs(deltaX);\n\t\t\t\t\t\tconst absY = Math.abs(deltaY);\n\t\t\t\t\t\tsetLockedDirection(absX > absY ? \"horizontal\" : \"vertical\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet candidate: SwipeDirection | undefined;\n\t\tif (!intendedSwipeDirection) {\n\t\t\tconst locked = lockedDirection();\n\t\t\tif (locked === \"vertical\") {\n\t\t\t\tif (deltaY > 0) candidate = \"down\";\n\t\t\t\telse if (deltaY < 0) candidate = \"up\";\n\t\t\t} else if (locked === \"horizontal\") {\n\t\t\t\tif (deltaX > 0) candidate = \"right\";\n\t\t\t\telse if (deltaX < 0) candidate = \"left\";\n\t\t\t} else if (Math.abs(deltaX) >= Math.abs(deltaY)) {\n\t\t\t\tcandidate = deltaX > 0 ? \"right\" : \"left\";\n\t\t\t} else {\n\t\t\t\tcandidate = deltaY > 0 ? \"down\" : \"up\";\n\t\t\t}\n\n\t\t\tif (candidate) {\n\t\t\t\tconst isAllowed =\n\t\t\t\t\t(candidate === \"left\" && allowLeft) ||\n\t\t\t\t\t(candidate === \"right\" && allowRight) ||\n\t\t\t\t\t(candidate === \"up\" && allowUp) ||\n\t\t\t\t\t(candidate === \"down\" && allowDown);\n\t\t\t\tif (isAllowed) {\n\t\t\t\t\tintendedSwipeDirection = candidate;\n\t\t\t\t\tmaxSwipeDisplacement = getDisplacement(candidate, deltaX, deltaY);\n\t\t\t\t\tsetCurrentSwipeDirection(candidate);\n\t\t\t\t\tresolveSwipeThreshold(candidate);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconst direction = intendedSwipeDirection;\n\t\t\tconst currentDisplacement = getDisplacement(\n\t\t\t\tdirection,\n\t\t\t\tcancelDeltaX,\n\t\t\t\tcancelDeltaY,\n\t\t\t);\n\t\t\tif (currentDisplacement > swipeThresholdRef) {\n\t\t\t\tcancelledSwipe = false;\n\t\t\t\tsetCurrentSwipeDirection(direction);\n\t\t\t} else if (\n\t\t\t\t!(allowLeft && allowRight) &&\n\t\t\t\t!(allowUp && allowDown) &&\n\t\t\t\tmaxSwipeDisplacement - currentDisplacement >= REVERSE_CANCEL_THRESHOLD\n\t\t\t) {\n\t\t\t\tcancelledSwipe = true;\n\t\t\t}\n\t\t}\n\n\t\tconst dampedDelta = applyDirectionalDamping(deltaX, deltaY);\n\t\tlet newOffsetX = initialTransformRef.x;\n\t\tlet newOffsetY = initialTransformRef.y;\n\n\t\tconst locked = lockedDirection();\n\t\tif (locked === \"horizontal\") {\n\t\t\tif (hasHorizontal) newOffsetX += dampedDelta.x;\n\t\t} else if (locked === \"vertical\") {\n\t\t\tif (hasVertical) newOffsetY += dampedDelta.y;\n\t\t} else {\n\t\t\tif (hasHorizontal) newOffsetX += dampedDelta.x;\n\t\t\tif (hasVertical) newOffsetY += dampedDelta.y;\n\t\t}\n\n\t\tdragOffsetRef = { x: newOffsetX, y: newOffsetY };\n\t\tif (trackDrag) {\n\t\t\tsetDragOffsetX(newOffsetX);\n\t\t\tsetDragOffsetY(newOffsetY);\n\t\t}\n\t\trecordDragSample(\n\t\t\t{ x: newOffsetX, y: newOffsetY },\n\t\t\tgetValidTimeStamp(event.timeStamp),\n\t\t);\n\t\tconst dragDeltaX = newOffsetX - initialTransformRef.x;\n\t\tconst dragDeltaY = newOffsetY - initialTransformRef.y;\n\t\tconst swipeDirectionDetails = intendedSwipeDirection;\n\n\t\tconst progressDirection = primaryDirection ?? intendedSwipeDirection;\n\t\tif (!progressDirection) {\n\t\t\tupdateSwipeProgress(0, {\n\t\t\t\tdeltaX: dragDeltaX,\n\t\t\t\tdeltaY: dragDeltaY,\n\t\t\t\tdirection: swipeDirectionDetails,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst size =\n\t\t\tprogressDirection === \"left\" || progressDirection === \"right\"\n\t\t\t\t? elementSize.width\n\t\t\t\t: elementSize.height;\n\t\tconst scale = initialTransformRef.scale || 1;\n\t\tif (size <= 0 || scale <= 0) {\n\t\t\tupdateSwipeProgress(0, {\n\t\t\t\tdeltaX: dragDeltaX,\n\t\t\t\tdeltaY: dragDeltaY,\n\t\t\t\tdirection: swipeDirectionDetails,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst progressDisplacement = getDisplacement(\n\t\t\tprogressDirection,\n\t\t\tnewOffsetX - initialTransformRef.x,\n\t\t\tnewOffsetY - initialTransformRef.y,\n\t\t);\n\t\tif (progressDisplacement <= 0) {\n\t\t\tupdateSwipeProgress(0, {\n\t\t\t\tdeltaX: dragDeltaX,\n\t\t\t\tdeltaY: dragDeltaY,\n\t\t\t\tdirection: swipeDirectionDetails,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tupdateSwipeProgress(progressDisplacement / (size * scale), {\n\t\t\tdeltaX: dragDeltaX,\n\t\t\tdeltaY: dragDeltaY,\n\t\t\tdirection: swipeDirectionDetails,\n\t\t});\n\t}\n\n\tconst handleMove = (event: SwipeDismissMoveEvent): void => {\n\t\tconst currentPos = getPrimaryPointerPosition(event);\n\t\tif (!currentPos) return;\n\n\t\tif (!(\"touches\" in event)) {\n\t\t\tconst hasPrimaryButton = hasPrimaryMouseButton(\n\t\t\t\t(event as PointerEvent).buttons,\n\t\t\t);\n\t\t\tif (hasPrimaryButton) sawPrimaryButtonsOnMove = true;\n\n\t\t\tconst lostPrimaryButtonDuringSwipe =\n\t\t\t\t(event as PointerEvent).buttons === 0 && sawPrimaryButtonsOnMove;\n\t\t\tif (\n\t\t\t\t((event as PointerEvent).buttons !== 0 && !hasPrimaryButton) ||\n\t\t\t\tlostPrimaryButtonDuringSwipe\n\t\t\t) {\n\t\t\t\tcancelSwipeInteraction(event as PointerEvent);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (!isSwiping() && pendingSwipe) {\n\t\t\tif (!isTouchLikeEvent(event) && event.defaultPrevented) {\n\t\t\t\tresetPendingSwipeState();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst allowedToStart = options.canStart\n\t\t\t\t? options.canStart(currentPos, {\n\t\t\t\t\t\tnativeEvent: event as SwipeDismissNativeEvent,\n\t\t\t\t\t\tdirection: primaryDirection,\n\t\t\t\t\t})\n\t\t\t\t: true;\n\n\t\t\tif (allowedToStart) {\n\t\t\t\tconst pendingStartPos = pendingSwipeStartPos;\n\t\t\t\tlet ignoreScrollableOnStart = false;\n\t\t\t\tif (isTouchLikeEvent(event)) {\n\t\t\t\t\tconst element = elementRef();\n\t\t\t\t\tif (pendingStartPos && element) {\n\t\t\t\t\t\tconst target = getTargetAtPoint(currentPos, event);\n\t\t\t\t\t\tconst doc = ownerDocument(element);\n\t\t\t\t\t\tconst body = doc.body;\n\t\t\t\t\t\tconst scrollTarget = body\n\t\t\t\t\t\t\t? findGestureScrollableTouchTarget(target, body)\n\t\t\t\t\t\t\t: null;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tscrollTarget &&\n\t\t\t\t\t\t\t(contains(element, scrollTarget) ||\n\t\t\t\t\t\t\t\tcontains(scrollTarget, element))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst deltaX = currentPos.x - pendingStartPos.x;\n\t\t\t\t\t\t\tconst deltaY = currentPos.y - pendingStartPos.y;\n\t\t\t\t\t\t\tconst canSwipeFromEdge = canSwipeFromScrollEdgeOnPendingMove(\n\t\t\t\t\t\t\t\tscrollTarget,\n\t\t\t\t\t\t\t\tdeltaX,\n\t\t\t\t\t\t\t\tdeltaY,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (canSwipeFromEdge === false) return;\n\t\t\t\t\t\t\tif (canSwipeFromEdge === true) ignoreScrollableOnStart = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst started = startSwipeAtPosition(event, currentPos, {\n\t\t\t\t\tignoreScrollableTarget: ignoreScrollableOnStart,\n\t\t\t\t\tignoreScrollableAncestors: ignoreScrollableOnStart,\n\t\t\t\t});\n\t\t\t\tif (started) {\n\t\t\t\t\tif (pendingStartPos && ignoreScrollableOnStart) {\n\t\t\t\t\t\tclearPendingSwipeStartState();\n\t\t\t\t\t\tdragStartPos = pendingStartPos;\n\t\t\t\t\t\tswipeCancelBaseline = pendingStartPos;\n\t\t\t\t\t\tlastMovePos = pendingStartPos;\n\t\t\t\t\t\tisFirstPointerMove = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclearPendingSwipeStartState();\n\t\t\t\t\t\tswipeFromScrollable = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst previousPos = lastMovePos;\n\t\tconst movement =\n\t\t\tpreviousPos === null\n\t\t\t\t? { x: 0, y: 0 }\n\t\t\t\t: {\n\t\t\t\t\t\tx: currentPos.x - previousPos.x,\n\t\t\t\t\t\ty: currentPos.y - previousPos.y,\n\t\t\t\t\t};\n\n\t\tlastMovePos = currentPos;\n\t\thandleMoveCore(event, currentPos, movement);\n\t};\n\n\tconst handleEnd = (event: SwipeDismissEndEvent): void => {\n\t\tif (!options.enabled()) return;\n\n\t\tconst resolvedDragOffset = dragOffsetRef;\n\t\tconst resolvedInitialTransform = initialTransformRef;\n\t\tconst releaseDeltaX = resolvedDragOffset.x - resolvedInitialTransform.x;\n\t\tconst releaseDeltaY = resolvedDragOffset.y - resolvedInitialTransform.y;\n\t\tconst progressDetails: SwipeProgressDetailsInternal = {\n\t\t\tdeltaX: releaseDeltaX,\n\t\t\tdeltaY: releaseDeltaY,\n\t\t\tdirection: currentSwipeDirection() ?? intendedSwipeDirection,\n\t\t};\n\n\t\tif (!isSwipingRef) {\n\t\t\tresetPendingSwipeState();\n\t\t\tupdateSwipeProgress(0, progressDetails);\n\t\t\treturn;\n\t\t}\n\n\t\tsetSwiping(false);\n\t\tsetIsRealSwipe(false);\n\t\tsetLockedDirection(null);\n\t\tresetPendingSwipeState();\n\t\tsawPrimaryButtonsOnMove = false;\n\n\t\tconst element = elementRef();\n\t\tif (element) {\n\t\t\tif (!(\"touches\" in event)) {\n\t\t\t\tsafelyChangePointerCapture(\n\t\t\t\t\telement,\n\t\t\t\t\t(event as PointerEvent).pointerId,\n\t\t\t\t\t\"releasePointerCapture\",\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst deltaX = releaseDeltaX;\n\t\tconst deltaY = releaseDeltaY;\n\t\tconst startTime = swipeStartTime;\n\t\tconst endTime = getValidTimeStamp(event.timeStamp);\n\t\tconst durationMs =\n\t\t\tstartTime !== null && endTime !== null && endTime > startTime\n\t\t\t\t? endTime - startTime\n\t\t\t\t: 0;\n\t\tconst velocityDurationMs =\n\t\t\tdurationMs > 0 ? Math.max(durationMs, MIN_VELOCITY_DURATION_MS) : 0;\n\t\tconst velocityX = velocityDurationMs > 0 ? deltaX / velocityDurationMs : 0;\n\t\tconst velocityY = velocityDurationMs > 0 ? deltaY / velocityDurationMs : 0;\n\t\tlet releaseVelocityX = lastDragVelocity.x;\n\t\tlet releaseVelocityY = lastDragVelocity.y;\n\t\tconst lastSample = lastDragSample;\n\t\tif (lastSample && endTime !== null && endTime >= lastSample.time) {\n\t\t\tconst ageMs = endTime - lastSample.time;\n\t\t\tif (ageMs <= MAX_RELEASE_VELOCITY_AGE_MS) {\n\t\t\t\tconst sampleDurationMs = Math.max(\n\t\t\t\t\tageMs,\n\t\t\t\t\tMIN_RELEASE_VELOCITY_DURATION_MS,\n\t\t\t\t);\n\t\t\t\tconst deltaFromLastSampleX = resolvedDragOffset.x - lastSample.x;\n\t\t\t\tconst deltaFromLastSampleY = resolvedDragOffset.y - lastSample.y;\n\t\t\t\tconst sampleVelocityX = deltaFromLastSampleX / sampleDurationMs;\n\t\t\t\tconst sampleVelocityY = deltaFromLastSampleY / sampleDurationMs;\n\t\t\t\tif (sampleVelocityX !== 0) releaseVelocityX = sampleVelocityX;\n\t\t\t\tif (sampleVelocityY !== 0) releaseVelocityY = sampleVelocityY;\n\t\t\t} else {\n\t\t\t\treleaseVelocityX = 0;\n\t\t\t\treleaseVelocityY = 0;\n\t\t\t}\n\t\t}\n\n\t\tconst releaseDecision = options.onRelease?.({\n\t\t\tevent: event as SwipeDismissNativeEvent,\n\t\t\tdirection: currentSwipeDirection() ?? intendedSwipeDirection,\n\t\t\tdeltaX,\n\t\t\tdeltaY,\n\t\t\tvelocityX,\n\t\t\tvelocityY,\n\t\t\treleaseVelocityX,\n\t\t\treleaseVelocityY,\n\t\t});\n\t\tconst hasReleaseDecision = typeof releaseDecision === \"boolean\";\n\n\t\tif (cancelledSwipe && !hasReleaseDecision) {\n\t\t\tdragOffsetRef = {\n\t\t\t\tx: resolvedInitialTransform.x,\n\t\t\t\ty: resolvedInitialTransform.y,\n\t\t\t};\n\t\t\tsetDragOffsetX(resolvedInitialTransform.x);\n\t\t\tsetDragOffsetY(resolvedInitialTransform.y);\n\t\t\tsetCurrentSwipeDirection(undefined);\n\t\t\tupdateSwipeProgress(0, progressDetails);\n\t\t\treturn;\n\t\t}\n\n\t\tlet shouldClose = false;\n\t\tlet dismissDirection: SwipeDirection | undefined;\n\n\t\tif (hasReleaseDecision) {\n\t\t\tshouldClose = releaseDecision;\n\t\t\tdismissDirection =\n\t\t\t\tcurrentSwipeDirection() ?? intendedSwipeDirection ?? primaryDirection;\n\t\t} else {\n\t\t\tfor (const direction of directions) {\n\t\t\t\tswitch (direction) {\n\t\t\t\t\tcase \"right\":\n\t\t\t\t\t\tif (deltaX > swipeThresholdRef) {\n\t\t\t\t\t\t\tshouldClose = true;\n\t\t\t\t\t\t\tdismissDirection = \"right\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"left\":\n\t\t\t\t\t\tif (deltaX < -swipeThresholdRef) {\n\t\t\t\t\t\t\tshouldClose = true;\n\t\t\t\t\t\t\tdismissDirection = \"left\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"down\":\n\t\t\t\t\t\tif (deltaY > swipeThresholdRef) {\n\t\t\t\t\t\t\tshouldClose = true;\n\t\t\t\t\t\t\tdismissDirection = \"down\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"up\":\n\t\t\t\t\t\tif (deltaY < -swipeThresholdRef) {\n\t\t\t\t\t\t\tshouldClose = true;\n\t\t\t\t\t\t\tdismissDirection = \"up\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (shouldClose) break;\n\t\t\t}\n\t\t}\n\n\t\tif (shouldClose && dismissDirection) {\n\t\t\tsetCurrentSwipeDirection(dismissDirection);\n\t\t\tsetDragDismissed(true);\n\t\t\toptions.onDismiss?.(event as SwipeDismissNativeEvent, {\n\t\t\t\tdirection: dismissDirection,\n\t\t\t});\n\t\t} else {\n\t\t\tdragOffsetRef = {\n\t\t\t\tx: resolvedInitialTransform.x,\n\t\t\t\ty: resolvedInitialTransform.y,\n\t\t\t};\n\t\t\tsetDragOffsetX(resolvedInitialTransform.x);\n\t\t\tsetDragOffsetY(resolvedInitialTransform.y);\n\t\t\tsetCurrentSwipeDirection(undefined);\n\t\t\tupdateSwipeProgress(0, progressDetails);\n\t\t}\n\t};\n\n\tconst getDragStyles = (): JSX.CSSProperties => {\n\t\tconst resolvedDragOffset = trackDrag\n\t\t\t? { x: dragOffsetX(), y: dragOffsetY() }\n\t\t\t: { x: dragOffsetRef.x, y: dragOffsetRef.y };\n\t\tconst resolvedInitialTransform = trackDrag\n\t\t\t? {\n\t\t\t\t\tx: initialTransformX(),\n\t\t\t\t\ty: initialTransformY(),\n\t\t\t\t\tscale: initialTransformScale(),\n\t\t\t\t}\n\t\t\t: initialTransformRef;\n\t\tconst swiping = isSwiping();\n\n\t\tif (\n\t\t\t!swiping &&\n\t\t\tresolvedDragOffset.x === resolvedInitialTransform.x &&\n\t\t\tresolvedDragOffset.y === resolvedInitialTransform.y &&\n\t\t\t!dragDismissed()\n\t\t) {\n\t\t\treturn {\n\t\t\t\t[movementCssVars.x]: \"0px\",\n\t\t\t\t[movementCssVars.y]: \"0px\",\n\t\t\t} as JSX.CSSProperties;\n\t\t}\n\n\t\tconst deltaX = resolvedDragOffset.x - resolvedInitialTransform.x;\n\t\tconst deltaY = resolvedDragOffset.y - resolvedInitialTransform.y;\n\n\t\treturn {\n\t\t\ttransition: swiping ? \"none\" : undefined,\n\t\t\ttransform: swiping\n\t\t\t\t? `translateX(${resolvedDragOffset.x}px) translateY(${resolvedDragOffset.y}px) scale(${resolvedInitialTransform.scale})`\n\t\t\t\t: undefined,\n\t\t\t[movementCssVars.x]: `${deltaX}px`,\n\t\t\t[movementCssVars.y]: `${deltaY}px`,\n\t\t} as JSX.CSSProperties;\n\t};\n\n\tconst getPointerProps: UseSwipeDismissReturnValue[\"getPointerProps\"] = () => {\n\t\tif (!options.enabled()) return {};\n\t\treturn {\n\t\t\tonPointerDown: handleStart,\n\t\t\tonPointerMove: handleMove,\n\t\t\tonPointerUp: handleEnd,\n\t\t\tonPointerCancel: handleEnd,\n\t\t};\n\t};\n\n\tconst getTouchProps: UseSwipeDismissReturnValue[\"getTouchProps\"] = () => {\n\t\tif (!options.enabled()) return {};\n\t\treturn {\n\t\t\tonTouchStart: handleStart,\n\t\t\tonTouchMove: handleMove,\n\t\t\tonTouchEnd: handleEnd,\n\t\t\tonTouchCancel: handleEnd,\n\t\t};\n\t};\n\n\treturn {\n\t\tswiping: isSwiping,\n\t\tswipeDirection: currentSwipeDirection,\n\t\tdragDismissed,\n\t\tgetPointerProps,\n\t\tgetTouchProps,\n\t\tgetDragStyles,\n\t\treset,\n\t};\n}\n"],"mappings":"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","ignoreList":[]}