{"version":3,"sources":["src/utilities/type-guards/isKeyframeEffect.ts","src/utilities/animations/getFinalKeyframe.ts","src/utilities/bounding-rectangle/getBoundingRectangle.ts","src/utilities/type-guards/isWindow.ts","src/utilities/type-guards/isNode.ts","src/utilities/execution-context/getWindow.ts","src/utilities/type-guards/isDocument.ts","src/utilities/type-guards/isHTMLElement.ts","src/utilities/type-guards/isSVGElement.ts","src/utilities/execution-context/getDocument.ts","src/utilities/bounding-rectangle/getViewportBoundingRectangle.ts","src/utilities/bounding-rectangle/isOverflowVisible.ts","src/utilities/bounding-rectangle/getVisibleBoundingRectangle.ts","src/utilities/coordinates/getEventCoordinates.ts","src/utilities/execution-context/canUseDOM.ts","src/utilities/execution-context/getDocuments.ts","src/utilities/execution-context/isSafari.ts","src/utilities/execution-context/getFixedPositionOffset.ts","src/utilities/type-guards/isShadowRoot.ts","src/utilities/execution-context/getRoot.ts","src/utilities/execution-context/prefersReducedMotion.ts","src/utilities/element/cloneElement.ts","src/utilities/element/getElementFromPoint.ts","src/utilities/element/proxiedElements.ts","src/utilities/element/isInteractiveElement.ts","src/utilities/event-listeners/Listeners.ts","src/utilities/frame/getFrameElement.ts","src/utilities/frame/getFrameElements.ts","src/utilities/scheduling/timeout.ts","src/utilities/scheduling/throttle.ts","src/utilities/bounding-rectangle/isRectEqual.ts","src/utilities/bounding-rectangle/isVisible.ts","src/utilities/observers/ResizeNotifier.ts","src/utilities/observers/PositionObserver.ts","src/utilities/observers/FrameObserver.ts","src/utilities/popover/supportsPopover.ts","src/utilities/popover/showPopover.ts","src/utilities/popover/hidePopover.ts","src/utilities/scroll/documentScrollingElement.ts","src/utilities/scroll/getScrollPosition.ts","src/utilities/scroll/canScroll.ts","src/utilities/scheduling/scheduler.ts","src/utilities/styles/getComputedStyles.ts","src/utilities/scroll/isFixed.ts","src/utilities/scroll/isScrollable.ts","src/utilities/scroll/getScrollableAncestors.ts","src/utilities/frame/getFrameTransform.ts","src/utilities/transform/parseScale.ts","src/utilities/transform/parseTranslate.ts","src/utilities/transform/parseTransform.ts","src/utilities/scroll/detectScrollIntent.ts","src/utilities/scroll/scrollIntoViewIfNeeded.ts","src/utilities/transform/applyTransform.ts","src/utilities/transform/inverseTransform.ts","src/utilities/transform/animateTransform.ts","src/utilities/transform/computeTranslate.ts","src/utilities/animations/forceFinishAnimations.ts","src/utilities/shapes/DOMRectangle.ts","src/utilities/type-guards/supportsStyle.ts","src/utilities/styles/Styles.ts","src/utilities/type-guards/isElement.ts","src/utilities/type-guards/isKeyboardEvent.ts","src/utilities/type-guards/isPointerEvent.ts","src/utilities/type-guards/supportsViewTransition.ts","src/utilities/type-guards/isTextInput.ts","src/utilities/misc/generateUniqueId.ts"],"names":["animations","Document","window","target","Rectangle","cached","callback","listeners","_disconnected","scheduler","ScrollDirection","threshold","keyframe","translate","clear","document"],"mappings":"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","file":"utilities.cjs","sourcesContent":["export function isKeyframeEffect(\n  effect: AnimationEffect | null | undefined\n): effect is KeyframeEffect {\n  if (!effect) return false;\n\n  if (effect instanceof KeyframeEffect) return true;\n\n  return 'getKeyframes' in effect && typeof effect.getKeyframes === 'function';\n}\n","import {isKeyframeEffect} from '../type-guards/isKeyframeEffect.ts';\n\nexport function getFinalKeyframe(\n  element: Element,\n  match: (keyframe: Keyframe) => boolean\n): [Keyframe, Animation] | null {\n  const animations = element.getAnimations();\n  let result: [Keyframe, Animation] | null = null;\n\n  for (const animation of animations) {\n    if (animation.playState !== 'running') continue;\n    const {effect} = animation;\n    const keyframes = isKeyframeEffect(effect) ? effect.getKeyframes() : [];\n    const matchedKeyframes = keyframes.filter(match);\n\n    if (matchedKeyframes.length > 0) {\n      result = [matchedKeyframes[matchedKeyframes.length - 1], animation];\n    }\n  }\n\n  return result;\n}\n","import {BoundingRectangle} from '@dnd-kit/geometry';\n\nexport function getBoundingRectangle(element: Element): BoundingRectangle {\n  const {width, height, top, left, bottom, right} =\n    element.getBoundingClientRect();\n\n  return {width, height, top, left, bottom, right};\n}\n","export function isWindow(element: Object): element is typeof window {\n  const elementString = Object.prototype.toString.call(element);\n  return (\n    elementString === '[object Window]' ||\n    // In Electron context the Window object serializes to [object global]\n    elementString === '[object global]'\n  );\n}\n","export function isNode(node: Object): node is Node {\n  return 'nodeType' in node;\n}\n","import {isWindow} from '../type-guards/isWindow.ts';\nimport {isNode} from '../type-guards/isNode.ts';\n\nexport function getWindow(\n  target: Event['target'] | null | undefined\n): typeof window {\n  if (!target) {\n    return window;\n  }\n\n  if (isWindow(target)) {\n    return target;\n  }\n\n  if (!isNode(target)) {\n    return window;\n  }\n\n  if ('defaultView' in target) {\n    return (target.defaultView as typeof window | null) ?? window;\n  }\n\n  return target.ownerDocument?.defaultView ?? window;\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\n\nexport function isDocument(node: Node): node is Document {\n  const {Document} = getWindow(node);\n\n  return (\n    node instanceof Document ||\n    ('nodeType' in node && node.nodeType === Node.DOCUMENT_NODE)\n  );\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\n\nimport {isWindow} from './isWindow.ts';\n\nexport function isHTMLElement(\n  node: Node | Window | null | undefined\n): node is HTMLElement {\n  if (!node || isWindow(node)) return false;\n\n  return (\n    node instanceof getWindow(node).HTMLElement ||\n    ('namespaceURI' in node &&\n      typeof node.namespaceURI === 'string' &&\n      node.namespaceURI.endsWith('html'))\n  );\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\n\nexport function isSVGElement(node: Node): node is SVGElement {\n  return (\n    node instanceof getWindow(node).SVGElement ||\n    ('namespaceURI' in node &&\n      typeof node.namespaceURI === 'string' &&\n      node.namespaceURI.endsWith('svg'))\n  );\n}\n","import {isDocument} from '../type-guards/isDocument.ts';\nimport {isHTMLElement} from '../type-guards/isHTMLElement.ts';\nimport {isNode} from '../type-guards/isNode.ts';\nimport {isSVGElement} from '../type-guards/isSVGElement.ts';\nimport {isWindow} from '../type-guards/isWindow.ts';\n\nexport function getDocument(target: Event['target'] | undefined): Document {\n  if (!target) {\n    return document;\n  }\n\n  if (isWindow(target)) {\n    return target.document;\n  }\n\n  if (!isNode(target)) {\n    return document;\n  }\n\n  if (isDocument(target)) {\n    return target;\n  }\n\n  if (isHTMLElement(target) || isSVGElement(target)) {\n    return target.ownerDocument;\n  }\n\n  return document;\n}\n","import type {BoundingRectangle} from '@dnd-kit/geometry';\n\nimport {getDocument} from '../execution-context/getDocument.ts';\nimport {getWindow} from '../execution-context/getWindow.ts';\n\n/**\n * Returns the bounding rectangle of the viewport.\n *\n * When the visual viewport is available, uses its dimensions and offset\n * to account for pinch-to-zoom. The returned rectangle is in layout viewport\n * coordinates, consistent with `clientX`/`clientY` and `getBoundingClientRect()`.\n *\n * @param element\n * @returns BoundingRectangle\n */\nexport function getViewportBoundingRectangle(\n  element: Element\n): BoundingRectangle {\n  const {documentElement} = getDocument(element);\n  const vv = getWindow(element).visualViewport;\n  const width = vv?.width ?? documentElement.clientWidth;\n  const height = vv?.height ?? documentElement.clientHeight;\n  const top = vv?.offsetTop ?? 0;\n  const left = vv?.offsetLeft ?? 0;\n\n  return {\n    top,\n    left,\n    right: left + width,\n    bottom: top + height,\n    width,\n    height,\n  };\n}\n","/*\n * Check if an element has visible overflow.\n * @param element\n * @param style\n * @returns boolean\n */\nexport function isOverflowVisible(\n  element: Element,\n  style?: CSSStyleDeclaration\n) {\n  if (isDetailsElement(element) && element.open === false) {\n    return false;\n  }\n\n  const {overflow, overflowX, overflowY} = style ?? getComputedStyle(element);\n\n  return (\n    overflow === 'visible' && overflowX === 'visible' && overflowY === 'visible'\n  );\n}\n\nfunction isDetailsElement(element: Element): element is HTMLDetailsElement {\n  return element.tagName === 'DETAILS';\n}\n","import type {BoundingRectangle} from '@dnd-kit/geometry';\n\nimport {isOverflowVisible} from './isOverflowVisible.ts';\n\n/*\n * Get the currently visible bounding rectangle of an element\n * @param element\n * @param boundingClientRect\n * @returns Rect\n */\nexport function getVisibleBoundingRectangle(\n  element: Element,\n  boundingClientRect = element.getBoundingClientRect(),\n  margin = 0\n): BoundingRectangle {\n  // Get the initial bounding client rect of the element\n  let rect: BoundingRectangle = boundingClientRect;\n  const {ownerDocument} = element;\n  const ownerWindow = ownerDocument.defaultView ?? window;\n\n  // Traverse up the DOM tree to clip the rect based on ancestors' bounding rects\n  let ancestor: HTMLElement | null = element.parentElement;\n\n  while (ancestor && ancestor !== ownerDocument.documentElement) {\n    if (!isOverflowVisible(ancestor)) {\n      const ancestorRect = ancestor.getBoundingClientRect();\n\n      const marginTop = margin * (ancestorRect.bottom - ancestorRect.top);\n      const marginRight = margin * (ancestorRect.right - ancestorRect.left);\n      const marginBottom = margin * (ancestorRect.bottom - ancestorRect.top);\n      const marginLeft = margin * (ancestorRect.right - ancestorRect.left);\n\n      // Clip the rect based on the ancestor's bounding rect\n      rect = {\n        top: Math.max(rect.top, ancestorRect.top - marginTop),\n        right: Math.min(rect.right, ancestorRect.right + marginRight),\n        bottom: Math.min(rect.bottom, ancestorRect.bottom + marginBottom),\n        left: Math.max(rect.left, ancestorRect.left - marginLeft),\n        width: 0, // Will be calculated next\n        height: 0, // Will be calculated next\n      };\n\n      // Calculate the width and height after clipping\n      rect.width = rect.right - rect.left;\n      rect.height = rect.bottom - rect.top;\n    }\n\n    // Move to the next ancestor\n    ancestor = ancestor.parentElement;\n  }\n\n  // Clip the rect based on the visual viewport (accounts for pinch-to-zoom)\n  const vv = ownerWindow.visualViewport;\n  const viewportTop = vv?.offsetTop ?? 0;\n  const viewportLeft = vv?.offsetLeft ?? 0;\n  const viewportWidth = vv?.width ?? ownerWindow.innerWidth;\n  const viewportHeight = vv?.height ?? ownerWindow.innerHeight;\n  const viewportMarginY = margin * viewportHeight;\n  const viewportMarginX = margin * viewportWidth;\n\n  rect = {\n    top: Math.max(rect.top, viewportTop - viewportMarginY),\n    right: Math.min(\n      rect.right,\n      viewportLeft + viewportWidth + viewportMarginX\n    ),\n    bottom: Math.min(\n      rect.bottom,\n      viewportTop + viewportHeight + viewportMarginY\n    ),\n    left: Math.max(rect.left, viewportLeft - viewportMarginX),\n    width: 0, // Will be calculated next\n    height: 0, // Will be calculated next\n  };\n\n  // Calculate the width and height after clipping\n  rect.width = rect.right - rect.left;\n  rect.height = rect.bottom - rect.top;\n\n  if (rect.width < 0) {\n    rect.width = 0;\n  }\n\n  if (rect.height < 0) {\n    rect.height = 0;\n  }\n\n  return rect;\n}\n","import {type Coordinates} from '@dnd-kit/geometry';\n\nexport function getEventCoordinates(event: PointerEvent): Coordinates {\n  return {\n    x: event.clientX,\n    y: event.clientY,\n  };\n}\n","// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\nexport const canUseDOM =\n  typeof window !== 'undefined' &&\n  typeof window.document !== 'undefined' &&\n  typeof window.document.createElement !== 'undefined';\n","/**\n * Recursively finds all same-origin Document objects:\n * - the current document\n * - any same-origin parent documents\n * - any same-origin child documents (iframes, frames)\n *\n * @param rootDoc - The starting document (defaults to current document)\n * @param seen - Internal set to prevent duplicate traversal\n * @returns An array of all discovered same-origin Document objects\n */\nexport function getDocuments(\n  rootDoc: Document = document,\n  seen: Set<Document> = new Set()\n): Document[] {\n  if (seen.has(rootDoc)) return [];\n  seen.add(rootDoc);\n\n  const docs: Document[] = [rootDoc];\n\n  // --- Traverse same-origin child documents ---\n  for (const frame of Array.from<HTMLIFrameElement | HTMLFrameElement>(\n    rootDoc.querySelectorAll('iframe, frame')\n  )) {\n    try {\n      const childDoc = frame.contentDocument;\n      if (childDoc && !seen.has(childDoc)) {\n        docs.push(...getDocuments(childDoc, seen));\n      }\n    } catch {\n      // Ignore cross-origin frames\n    }\n  }\n\n  // --- Traverse same-origin parent documents ---\n  try {\n    const win = rootDoc.defaultView;\n    if (win && win !== window.top) {\n      const parentWin = win.parent;\n      if (parentWin && parentWin.document && parentWin.document !== rootDoc) {\n        docs.push(...getDocuments(parentWin.document, seen));\n      }\n    }\n  } catch {\n    // Ignore cross-origin parent access\n  }\n\n  return docs;\n}\n","export function isSafari() {\n  return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n}\n","import {isSafari} from './isSafari.ts';\n\n/**\n * In Safari, `position: fixed` elements are anchored to the visual viewport\n * during pinch-to-zoom, rather than the layout viewport. Returns the offset\n * needed to compensate for this behavior.\n */\nexport function getFixedPositionOffset(): {x: number; y: number} {\n  const vv = isSafari() ? window.visualViewport : null;\n\n  return {\n    x: vv?.offsetLeft ?? 0,\n    y: vv?.offsetTop ?? 0,\n  };\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\nimport {isNode} from './isNode.ts';\n\nexport function isShadowRoot(target: EventTarget | null): target is ShadowRoot {\n  if (!target || !isNode(target)) return false;\n  return target instanceof getWindow(target).ShadowRoot;\n}\n","import { isNode } from '../type-guards/isNode.ts';\nimport { isShadowRoot } from '../type-guards/isShadowRoot.ts';\nimport { getDocument } from './getDocument.ts';\n\nexport function getRoot(target: Event['target'] | undefined): Document | ShadowRoot {\n\n\tif (target && isNode(target)) {\n\t\tlet root = target.getRootNode();\n\t\tif (isShadowRoot(root)) {\n\t\t\treturn root as ShadowRoot;\n\t\t}\n\t\telse if (root instanceof Document) {\n\t\t\treturn root as Document;\n\t\t}\n\t}\n\treturn getDocument(target);\n}","export function prefersReducedMotion(window: Window): boolean {\n  return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n","export function cloneElement(element: Element): Element {\n  const selector = 'input, textarea, select, canvas, [contenteditable]';\n  const clonedElement = element.cloneNode(true) as HTMLElement;\n  const fields = Array.from(element.querySelectorAll(selector));\n  const clonedFields = Array.from(clonedElement.querySelectorAll(selector));\n\n  clonedFields.forEach((field, index) => {\n    const originalField = fields[index];\n\n    if (isField(field) && isField(originalField)) {\n      if (field.type !== 'file') {\n        field.value = originalField.value;\n      }\n\n      // Fixes an issue with original radio buttons losing their value once the\n      // clone is inserted in the DOM, as radio button `name` attributes must be unique\n      if (field.type === 'radio' && field.name) {\n        field.name = `Cloned__${field.name}`;\n      }\n    }\n\n    if (\n      isCanvasElement(field) &&\n      isCanvasElement(originalField) &&\n      originalField.width > 0 &&\n      originalField.height > 0\n    ) {\n      const destCtx = field.getContext('2d');\n      destCtx?.drawImage(originalField, 0, 0);\n    }\n  });\n\n  return clonedElement;\n}\n\nfunction isField(\n  element: Element\n): element is HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement {\n  return 'value' in element;\n}\n\nfunction isCanvasElement(element: Element): element is HTMLCanvasElement {\n  return element.tagName === 'CANVAS';\n}\n","import type {Coordinates} from '@dnd-kit/geometry';\n\nexport function getElementFromPoint(\n  root: Document | ShadowRoot,\n  {x, y}: Coordinates\n): Element | null {\n  const element = root.elementFromPoint(x, y); //supported by both document and shadowRoot.\n\n  if (isIFrameElement(element)) {\n    const {contentDocument} = element;\n\n    if (contentDocument) {\n      const {left, top} = element.getBoundingClientRect();\n\n      return getElementFromPoint(contentDocument, {\n        x: x - left,\n        y: y - top,\n      });\n    }\n  }\n\n  return element;\n}\n\nfunction isIFrameElement(\n  element: Element | null\n): element is HTMLIFrameElement {\n  return element?.tagName === 'IFRAME';\n}\n","export const ProxiedElements = new WeakMap<Element, Element>();\n","export function isInteractiveElement(element: Element): boolean {\n  return Boolean(getInteractiveElement(element));\n}\n\nexport function getInteractiveElement(element: Element): Element | null {\n  return element.closest(`\n    input:not([disabled]),\n    select:not([disabled]),\n    textarea:not([disabled]),\n    button:not([disabled]),\n    a[href],\n    [contenteditable]:not([contenteditable=\"false\"])\n  `);\n}\n","export interface EventListenerDescriptor {\n  type: string;\n  listener(event: Event): void;\n  options?: AddEventListenerOptions;\n}\n\ntype EventListenerInput = EventListenerDescriptor[] | EventListenerDescriptor;\n\ntype EventListenerEntry = [EventTarget, EventListenerDescriptor];\n\nexport class Listeners {\n  private entries: Set<EventListenerEntry> = new Set();\n\n  constructor() {}\n\n  public bind(target: EventTarget | EventTarget[], input: EventListenerInput) {\n    const eventTargets = Array.isArray(target) ? target : [target];\n    const listeners = Array.isArray(input) ? input : [input];\n    const entries: EventListenerEntry[] = [];\n\n    for (const target of eventTargets) {\n      for (const descriptor of listeners) {\n        const {type, listener, options} = descriptor;\n        const entry: EventListenerEntry = [target, descriptor];\n\n        target.addEventListener(type, listener, options);\n        this.entries.add(entry);\n        entries.push(entry);\n      }\n    }\n\n    const allEntries = this.entries;\n\n    return function cleanup() {\n      for (const entry of entries) {\n        const [target, {type, listener, options}] = entry;\n        target.removeEventListener(type, listener, options);\n        allEntries.delete(entry);\n      }\n    };\n  }\n\n  public clear = () => {\n    for (const entry of this.entries) {\n      const [target, {type, listener, options}] = entry;\n\n      target.removeEventListener(type, listener, options);\n    }\n\n    this.entries.clear();\n  };\n}\n","export function getFrameElement(el: Element | undefined) {\n  const refWindow = el?.ownerDocument.defaultView;\n\n  if (refWindow && refWindow.self !== refWindow.parent) {\n    return refWindow.frameElement;\n  }\n}\n","import {getFrameElement} from './getFrameElement.ts';\n\nexport function getFrameElements(el: Element | undefined) {\n  const frames = new Set<Element>();\n  let frame = getFrameElement(el);\n\n  while (frame) {\n    frames.add(frame);\n    frame = getFrameElement(frame);\n  }\n\n  return frames;\n}\n","export function timeout(callback: () => void, duration: number): () => void {\n  const id = setTimeout(callback, duration);\n\n  return () => clearTimeout(id);\n}\n","import {timeout} from './timeout.ts';\n\nexport function throttle<T extends (...args: any[]) => any>(\n  func: T,\n  limit: number\n): (...args: Parameters<T>) => void {\n  const time = () => performance.now();\n  let cancel: () => void | undefined;\n  let lastRan: number;\n\n  return function (this: any, ...args: Parameters<T>) {\n    const context = this;\n    if (!lastRan) {\n      func.apply(context, args);\n      lastRan = time();\n    } else {\n      cancel?.();\n      cancel = timeout(\n        () => {\n          func.apply(context, args);\n          lastRan = time();\n        },\n        limit - (time() - lastRan)\n      );\n    }\n  };\n}\n","import type {BoundingRectangle} from '@dnd-kit/geometry';\n\nexport function isRectEqual(\n  a: BoundingRectangle | undefined,\n  b: BoundingRectangle | undefined\n) {\n  if (a === b) return true;\n  if (!a || !b) return false;\n\n  return (\n    a.top == b.top &&\n    a.left == b.left &&\n    a.right == b.right &&\n    a.bottom == b.bottom\n  );\n}\n","import {getVisibleBoundingRectangle} from './getVisibleBoundingRectangle.ts';\n\nexport function isVisible(\n  element: Element,\n  boundingClientRect = element.getBoundingClientRect()\n): boolean {\n  const {width, height} = getVisibleBoundingRectangle(\n    element,\n    boundingClientRect\n  );\n\n  return width > 0 && height > 0;\n}\n","import {canUseDOM} from '../execution-context/canUseDOM.ts';\n\nconst Observer = canUseDOM\n  ? ResizeObserver\n  : class MockResizeObserver implements ResizeObserver {\n      observe() {}\n      unobserve() {}\n      disconnect() {}\n    };\n\nexport class ResizeNotifier extends Observer {\n  #initialized = false;\n\n  constructor(callback: ResizeObserverCallback) {\n    super((entries) => {\n      if (!this.#initialized) {\n        this.#initialized = true;\n        return;\n      }\n      callback(entries, this);\n    });\n  }\n}\n","import {BoundingRectangle, Rectangle} from '@dnd-kit/geometry';\n\nimport {throttle} from '../scheduling/throttle.ts';\n\nimport {isRectEqual} from '../bounding-rectangle/isRectEqual.ts';\nimport {isVisible} from '../bounding-rectangle/isVisible.ts';\nimport {getVisibleBoundingRectangle} from '../bounding-rectangle/getVisibleBoundingRectangle.ts';\n\nimport {ResizeNotifier} from './ResizeNotifier.ts';\n\nexport type PositionObserverCallback = (\n  boundingClientRect: BoundingRectangle | null\n) => void;\n\nconst threshold = Array.from({length: 100}, (_, index) => index / 100);\nexport const THROTTLE_INTERVAL = 75;\n\nexport class PositionObserver {\n  constructor(\n    public element: Element,\n    public callback: PositionObserverCallback,\n    options: {debug?: boolean; skipInitial?: boolean} = {\n      debug: false,\n      skipInitial: false,\n    }\n  ) {\n    this.boundingClientRect = element.getBoundingClientRect();\n    this.#visible = isVisible(element, this.boundingClientRect);\n\n    let initial = true;\n    this.callback = (boundingClientRect) => {\n      if (initial) {\n        initial = false;\n        if (options.skipInitial) return;\n      }\n\n      callback(boundingClientRect);\n    };\n\n    const root = element.ownerDocument;\n\n    if (options?.debug) {\n      this.#debug = document.createElement('div');\n      this.#debug.style.background = 'rgba(0,0,0,0.15)';\n      this.#debug.style.position = 'fixed';\n      this.#debug.style.pointerEvents = 'none';\n      root.body.appendChild(this.#debug);\n    }\n\n    this.#visibilityObserver = new IntersectionObserver(\n      (entries: IntersectionObserverEntry[]) => {\n        const entry = entries[entries.length - 1];\n        const {boundingClientRect, isIntersecting: visible} = entry;\n        const {width, height} = boundingClientRect;\n        const previousVisible = this.#visible;\n\n        this.#visible = visible;\n\n        if (!width && !height) return;\n\n        if (previousVisible && !visible) {\n          this.#positionObserver?.disconnect();\n          this.callback(null);\n          this.#resizeObserver?.disconnect();\n          this.#resizeObserver = undefined;\n\n          if (this.#debug) this.#debug.style.visibility = 'hidden';\n        } else {\n          this.#observePosition();\n        }\n\n        if (visible && !this.#resizeObserver) {\n          this.#resizeObserver = new ResizeNotifier(this.#observePosition);\n          this.#resizeObserver.observe(element);\n        }\n      },\n      {\n        threshold,\n        root,\n      }\n    );\n\n    if (this.#visible && !options.skipInitial) {\n      this.callback(this.boundingClientRect);\n    }\n\n    this.#visibilityObserver.observe(element);\n  }\n\n  public boundingClientRect: DOMRectReadOnly;\n\n  public disconnect = () => {\n    this.#disconnected = true;\n    this.#resizeObserver?.disconnect();\n    this.#positionObserver?.disconnect();\n    this.#visibilityObserver.disconnect();\n    this.#debug?.remove();\n  };\n\n  #visible = true;\n  #previousBoundingClientRect: DOMRectReadOnly | undefined;\n  #resizeObserver: ResizeNotifier | undefined;\n  #positionObserver: IntersectionObserver | undefined;\n  #visibilityObserver: IntersectionObserver;\n  #debug: HTMLElement | undefined;\n  #disconnected = false;\n\n  #observePosition = throttle(() => {\n    const {element} = this;\n\n    this.#positionObserver?.disconnect();\n\n    if (this.#disconnected || !this.#visible || !element.isConnected) {\n      return;\n    }\n\n    const root = element.ownerDocument ?? document;\n    const {innerHeight, innerWidth} = root.defaultView ?? window;\n    const clientRect = element.getBoundingClientRect();\n    const visibleRect = getVisibleBoundingRectangle(element, clientRect);\n    const {top, left, bottom, right} = visibleRect;\n    const insetTop = -Math.floor(top);\n    const insetLeft = -Math.floor(left);\n    const insetRight = -Math.floor(innerWidth - right);\n    const insetBottom = -Math.floor(innerHeight - bottom);\n    const rootMargin = `${insetTop}px ${insetRight}px ${insetBottom}px ${insetLeft}px`;\n\n    this.boundingClientRect = clientRect;\n    this.#positionObserver = new IntersectionObserver(\n      (entries: IntersectionObserverEntry[]) => {\n        const [entry] = entries;\n        const {intersectionRect} = entry;\n        /*\n         * The intersection ratio returned by the intersection observer entry\n         * represents the ratio of the intersectionRect to the boundingClientRect,\n         * which is not what we want. We want the ratio of the intersectionRect\n         * to the rootBounds (visible rect).\n         */\n        const intersectionRatio =\n          entry.intersectionRatio !== 1\n            ? entry.intersectionRatio\n            : Rectangle.intersectionRatio(\n                intersectionRect,\n                getVisibleBoundingRectangle(element)\n              );\n\n        if (intersectionRatio !== 1) {\n          this.#observePosition();\n        }\n      },\n      {\n        threshold,\n        rootMargin,\n        root,\n      }\n    );\n\n    this.#positionObserver.observe(element);\n    this.#notify();\n  }, THROTTLE_INTERVAL);\n\n  #notify() {\n    if (this.#disconnected) return;\n\n    this.#updateDebug();\n\n    if (isRectEqual(this.boundingClientRect, this.#previousBoundingClientRect))\n      return;\n\n    this.callback(this.boundingClientRect);\n    this.#previousBoundingClientRect = this.boundingClientRect;\n  }\n\n  #updateDebug() {\n    if (this.#debug) {\n      const {top, left, width, height} = getVisibleBoundingRectangle(\n        this.element\n      );\n\n      this.#debug.style.overflow = 'hidden';\n      this.#debug.style.visibility = 'visible';\n      this.#debug.style.top = `${Math.floor(top)}px`;\n      this.#debug.style.left = `${Math.floor(left)}px`;\n      this.#debug.style.width = `${Math.floor(width)}px`;\n      this.#debug.style.height = `${Math.floor(height)}px`;\n    }\n  }\n}\n","import {getFrameElements} from '../frame/getFrameElements.ts';\nimport {throttle} from '../scheduling/throttle.ts';\nimport {\n  PositionObserver,\n  THROTTLE_INTERVAL,\n  type PositionObserverCallback,\n} from './PositionObserver.ts';\n\nconst framePositionObservers = new WeakMap<\n  Element,\n  {\n    disconnect: () => void;\n    callbacks: Set<PositionObserverCallback>;\n  }\n>();\n\nconst scrollListeners = new WeakMap<\n  Document,\n  {\n    disconnect: () => void;\n    listeners: Set<EventListener>;\n  }\n>();\n\nfunction addFrameListener(frame: Element, callback: PositionObserverCallback) {\n  // Check if already observed globally\n  let cached = framePositionObservers.get(frame);\n\n  if (!cached) {\n    const observer = new PositionObserver(\n      frame,\n      (boundingClientRect) => {\n        const cached = framePositionObservers.get(frame);\n        if (!cached) return;\n\n        cached.callbacks.forEach((callback) => callback(boundingClientRect));\n      },\n      {skipInitial: true}\n    );\n\n    cached = {disconnect: observer.disconnect, callbacks: new Set()};\n  }\n\n  cached.callbacks.add(callback);\n  framePositionObservers.set(frame, cached);\n\n  return () => {\n    cached.callbacks.delete(callback);\n\n    if (cached.callbacks.size === 0) {\n      framePositionObservers.delete(frame);\n      cached.disconnect();\n    }\n  };\n}\n\nfunction observeParentFrames(\n  frames: Set<Element>,\n  callback: PositionObserverCallback\n) {\n  const cleanup = new Set<() => void>();\n\n  for (const frame of frames) {\n    const remove = addFrameListener(frame, callback);\n    cleanup.add(remove);\n  }\n\n  return () => cleanup.forEach((remove) => remove());\n}\n\nfunction addScrollListener(element: Element, callback: EventListener) {\n  const doc = element.ownerDocument;\n\n  if (!scrollListeners.has(doc)) {\n    const controller = new AbortController();\n    const listeners = new Set<EventListener>();\n\n    document.addEventListener(\n      'scroll',\n      (event) => listeners.forEach((listener) => listener(event)),\n      {\n        capture: true,\n        passive: true,\n        signal: controller.signal,\n      }\n    );\n\n    scrollListeners.set(doc, {disconnect: () => controller.abort(), listeners});\n  }\n\n  const {listeners, disconnect} = scrollListeners.get(doc) ?? {};\n\n  if (!listeners || !disconnect) return () => {};\n\n  listeners.add(callback);\n\n  return () => {\n    listeners.delete(callback);\n\n    if (listeners.size === 0) {\n      disconnect();\n      scrollListeners.delete(doc);\n    }\n  };\n}\n\nexport class FrameObserver {\n  #elementObserver: PositionObserver;\n  #disconnected = false;\n  #frames: Set<Element>;\n\n  constructor(\n    element: Element,\n    private callback: PositionObserverCallback,\n    options?: {debug?: boolean}\n  ) {\n    const frames = getFrameElements(element);\n    const unobserveParentFrames = observeParentFrames(frames, callback);\n    const removeScrollListener = addScrollListener(element, this.#handleScroll);\n\n    this.#frames = frames;\n    this.#elementObserver = new PositionObserver(element, callback, options);\n    this.disconnect = () => {\n      if (this.#disconnected) return;\n      this.#disconnected = true;\n\n      unobserveParentFrames();\n      removeScrollListener();\n      this.#elementObserver.disconnect();\n    };\n  }\n\n  disconnect: () => void;\n\n  #handleScroll = throttle((event: Event) => {\n    if (this.#disconnected) return;\n    if (!event.target) return;\n    if (\n      'contains' in event.target &&\n      typeof event.target.contains === 'function'\n    ) {\n      for (const frame of this.#frames) {\n        if (event.target.contains(frame)) {\n          this.callback(this.#elementObserver.boundingClientRect);\n          break;\n        }\n      }\n    }\n  }, THROTTLE_INTERVAL);\n}\n","export function supportsPopover(element: Element): element is Element & {\n  showPopover(): void;\n  hidePopover(): void;\n} {\n  return (\n    'showPopover' in element &&\n    'hidePopover' in element &&\n    typeof element.showPopover === 'function' &&\n    typeof element.hidePopover === 'function'\n  );\n}\n","import {supportsPopover} from './supportsPopover.ts';\n\nexport function showPopover(element: Element) {\n  try {\n    if (\n      supportsPopover(element) &&\n      element.isConnected &&\n      element.hasAttribute('popover') &&\n      // This selector can throw an error in browsers that don't support it\n      !element.matches(':popover-open')\n    ) {\n      element.showPopover();\n    }\n  } catch (error) {\n    // no-op\n  }\n}\n","import {supportsPopover} from './supportsPopover.ts';\n\nexport function hidePopover(element: Element) {\n  try {\n    if (\n      supportsPopover(element) &&\n      element.isConnected &&\n      element.hasAttribute('popover') &&\n      // This selector can throw an error in browsers that don't support it\n      element.matches(':popover-open')\n    ) {\n      element.hidePopover();\n    }\n  } catch (error) {\n    // no-op\n  }\n}\n","import {canUseDOM} from '../execution-context/canUseDOM.ts';\nimport {getDocument} from '../execution-context/getDocument.ts';\n\nexport function isDocumentScrollingElement(element: Element | null) {\n  if (!canUseDOM || !element) {\n    return false;\n  }\n\n  return element === getDocument(element).scrollingElement;\n}\n","import {getBoundingRectangle} from '../bounding-rectangle/getBoundingRectangle.ts';\nimport {getViewportBoundingRectangle} from '../bounding-rectangle/getViewportBoundingRectangle.ts';\nimport {getWindow} from '../execution-context/getWindow.ts';\nimport {isDocumentScrollingElement} from './documentScrollingElement.ts';\n\nexport function getScrollPosition(scrollableElement: Element) {\n  const window = getWindow(scrollableElement);\n  const rect = isDocumentScrollingElement(scrollableElement)\n    ? getViewportBoundingRectangle(scrollableElement)\n    : getBoundingRectangle(scrollableElement);\n\n  const vv = window.visualViewport;\n  const dimensions = isDocumentScrollingElement(scrollableElement)\n    ? {\n        height: vv?.height ?? window.innerHeight,\n        width: vv?.width ?? window.innerWidth,\n      }\n    : {\n        height: scrollableElement.clientHeight,\n        width: scrollableElement.clientWidth,\n      };\n  const position = {\n    current: {\n      x: scrollableElement.scrollLeft,\n      y: scrollableElement.scrollTop,\n    },\n    max: {\n      x: scrollableElement.scrollWidth - dimensions.width,\n      y: scrollableElement.scrollHeight - dimensions.height,\n    },\n  };\n\n  const isTop = position.current.y <= 0;\n  const isLeft = position.current.x <= 0;\n  const isBottom = position.current.y >= position.max.y;\n  const isRight = position.current.x >= position.max.x;\n\n  return {\n    rect,\n    position,\n    isTop,\n    isLeft,\n    isBottom,\n    isRight,\n  };\n}\n","import type {Coordinates} from '@dnd-kit/geometry';\n\nimport {getScrollPosition} from './getScrollPosition.ts';\n\nexport function canScroll(scrollableElement: Element, by?: Coordinates) {\n  const {isTop, isBottom, isLeft, isRight, position} =\n    getScrollPosition(scrollableElement);\n\n  const {x, y} = by ?? {x: 0, y: 0};\n\n  const top = !isTop && position.current.y + y > 0;\n  const bottom = !isBottom && position.current.y + y < position.max.y;\n  const left = !isLeft && position.current.x + x > 0;\n  const right = !isRight && position.current.x + x < position.max.x;\n\n  return {\n    top,\n    bottom,\n    left,\n    right,\n    x: left || right,\n    y: top || bottom,\n  };\n}\n","type Callback = () => void;\n\nexport class Scheduler<T extends (callback: Callback) => any> {\n  constructor(private scheduler: T) {}\n\n  private pending: boolean = false;\n  private tasks: Set<() => void> = new Set();\n  private resolvers: Set<() => void> = new Set();\n\n  public schedule(task: () => void): Promise<void> {\n    this.tasks.add(task);\n\n    if (!this.pending) {\n      this.pending = true;\n      this.scheduler(this.flush);\n    }\n\n    return new Promise<void>((resolve) => this.resolvers.add(resolve));\n  }\n\n  public flush = () => {\n    const {tasks, resolvers} = this;\n\n    this.pending = false;\n    this.tasks = new Set();\n    this.resolvers = new Set();\n\n    for (const task of tasks) {\n      task();\n    }\n\n    for (const resolve of resolvers) {\n      resolve();\n    }\n  };\n}\n\nexport const scheduler = new Scheduler((callback) => {\n  if (typeof requestAnimationFrame === 'function') {\n    requestAnimationFrame(callback);\n  } else {\n    callback();\n  }\n});\n","import {getWindow} from '../execution-context/getWindow.ts';\nimport {Scheduler} from '../scheduling/scheduler.ts';\n\nconst scheduler = new Scheduler((callback) => setTimeout(callback, 50));\nconst cachedStyles = new Map<Element, CSSStyleDeclaration>();\nconst clear = cachedStyles.clear.bind(cachedStyles);\n\n/**\n * Get the computed styles for an element.\n * @param element - The element to get the computed styles for.\n * @param cached - Whether to cache the computed styles.\n * @returns The computed styles for the element.\n */\nexport function getComputedStyles(\n  element: Element,\n  cached = false\n): CSSStyleDeclaration {\n  if (!cached) return computeStyles(element);\n\n  let styles = cachedStyles.get(element);\n\n  if (styles) return styles;\n\n  styles = computeStyles(element);\n  cachedStyles.set(element, styles);\n  scheduler.schedule(clear);\n\n  return styles;\n}\n\nfunction computeStyles(element: Element): CSSStyleDeclaration {\n  return getWindow(element).getComputedStyle(element);\n}\n","import {getComputedStyles} from '../styles/getComputedStyles.ts';\n\nexport function isFixed(\n  node: Element,\n  computedStyle: CSSStyleDeclaration = getComputedStyles(node, true)\n): boolean {\n  return (\n    computedStyle.position === 'fixed' || computedStyle.position === 'sticky'\n  );\n}\n","import {getComputedStyles} from '../styles/getComputedStyles.ts';\n\nexport function isScrollable(\n  element: HTMLElement,\n  computedStyle: CSSStyleDeclaration = getComputedStyles(element, true)\n): boolean {\n  const overflowRegex = /(auto|scroll|overlay)/;\n  const properties = ['overflow', 'overflowX', 'overflowY'];\n\n  return properties.some((property) => {\n    const value = computedStyle[property as keyof CSSStyleDeclaration];\n\n    return typeof value === 'string' ? overflowRegex.test(value) : false;\n  });\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\nimport {isDocument} from '../type-guards/isDocument.ts';\nimport {isHTMLElement} from '../type-guards/isHTMLElement.ts';\nimport {isSVGElement} from '../type-guards/isSVGElement.ts';\nimport {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {isFixed} from './isFixed.ts';\nimport {isScrollable} from './isScrollable.ts';\nimport { isShadowRoot } from '../type-guards/isShadowRoot.ts';\n\ninterface Options {\n  limit?: number;\n  excludeElement?: boolean;\n  escapeShadowDOM?: boolean; // if false, stop at shadowRoot; otherwise keep finding upwards outside shadow host\n}\n\nconst defaultOptions: Options = {\n  excludeElement: true,\n  escapeShadowDOM: true,\n};\n\nexport function getScrollableAncestors(\n  element: Node | null,\n  options: Options = defaultOptions\n): Set<Element> {\n  const {limit, excludeElement, escapeShadowDOM} = options;\n  const scrollParents = new Set<Element>();\n\n  function findScrollableAncestors(node: Node | null): Set<Element> {\n    if (limit != null && scrollParents.size >= limit) {\n      return scrollParents;\n    }\n\n    if (!node) {\n      return scrollParents;\n    }\n\n    if (\n      isDocument(node) &&\n      node.scrollingElement != null &&\n      !scrollParents.has(node.scrollingElement)\n    ) {\n      scrollParents.add(node.scrollingElement);\n\n      return scrollParents;\n    }\n\n    if (escapeShadowDOM && isShadowRoot(node)){\n      return findScrollableAncestors(node.host);\n    }\n\n    if (!isHTMLElement(node)) {\n      if (isSVGElement(node)) {\n        return findScrollableAncestors(node.parentElement);\n      }\n\n      return scrollParents;\n    }\n\n    if (scrollParents.has(node)) {\n      return scrollParents;\n    }\n\n    const computedStyle = getComputedStyles(node, true);\n\n    if (excludeElement && node === element) {\n      // no-op\n    } else if (isScrollable(node, computedStyle)) {\n      scrollParents.add(node);\n    }\n\n    if (isFixed(node, computedStyle)) {\n      const {scrollingElement} = node.ownerDocument;\n\n      if (scrollingElement) scrollParents.add(scrollingElement);\n\n      return scrollParents;\n    }\n\n    return findScrollableAncestors(node.parentNode);\n  }\n\n  if (!element) {\n    return scrollParents;\n  }\n\n  return findScrollableAncestors(element);\n}\n\nexport function getFirstScrollableAncestor(node: Node | null): Element | null {\n  const [firstScrollableAncestor] = getScrollableAncestors(node, {limit: 1});\n\n  return firstScrollableAncestor ?? null;\n}\n","import {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {isHTMLElement} from '../type-guards/isHTMLElement.ts';\nimport type {Transform} from '../transform/index.ts';\n\nimport {getFrameElement} from './getFrameElement.ts';\nimport {getBoundingRectangle} from '../bounding-rectangle/getBoundingRectangle.ts';\n\nexport function getFrameTransform(\n  el: Element | undefined,\n  boundary: Element | null = window.frameElement\n): Transform {\n  const transform: Transform = {\n    x: 0,\n    y: 0,\n    scaleX: 1,\n    scaleY: 1,\n  };\n\n  if (!el) return transform;\n\n  let frame = getFrameElement(el);\n\n  while (frame) {\n    if (frame === boundary) {\n      return transform;\n    }\n\n    const rect = getBoundingRectangle(frame);\n    const {x: scaleX, y: scaleY} = getScale(frame, rect);\n\n    transform.x = transform.x + rect.left;\n    transform.y = transform.y + rect.top;\n    transform.scaleX = transform.scaleX * scaleX;\n    transform.scaleY = transform.scaleY * scaleY;\n\n    frame = getFrameElement(frame);\n  }\n\n  return transform;\n}\n\nfunction getScale(\n  element: Element,\n  boundingRectangle = getBoundingRectangle(element)\n) {\n  const width = Math.round(boundingRectangle.width);\n  const height = Math.round(boundingRectangle.height);\n\n  if (isHTMLElement(element)) {\n    return {\n      x: width / element.offsetWidth,\n      y: height / element.offsetHeight,\n    };\n  }\n\n  const styles = getComputedStyles(element, true);\n\n  return {\n    x: (parseFloat(styles.width) || width) / width,\n    y: (parseFloat(styles.height) || height) / height,\n  };\n}\n","export function parseScale(scale?: string) {\n  if (!scale || scale === 'none') {\n    return null;\n  }\n\n  const values = scale.split(' ');\n  const x = parseFloat(values[0]);\n  const y = parseFloat(values[1]);\n\n  if (isNaN(x) && isNaN(y)) {\n    return null;\n  }\n\n  return {\n    x: isNaN(x) ? y : x,\n    y: isNaN(y) ? x : y,\n  };\n}\n","export function parseTranslate(translate?: string) {\n  if (!translate || translate === 'none') {\n    return null;\n  }\n\n  const [x, y, z = '0'] = translate.split(' ');\n  const output = {x: parseFloat(x), y: parseFloat(y), z: parseInt(z, 10)};\n\n  if (isNaN(output.x) && isNaN(output.y)) {\n    return null;\n  }\n\n  return {\n    x: isNaN(output.x) ? 0 : output.x,\n    y: isNaN(output.y) ? 0 : output.y,\n    z: isNaN(output.z) ? 0 : output.z,\n  };\n}\n","import type {Coordinates} from '@dnd-kit/geometry';\n\nimport {parseScale} from './parseScale.ts';\nimport {parseTranslate} from './parseTranslate.ts';\n\nexport interface Transform extends Coordinates {\n  z?: number;\n  scaleX: number;\n  scaleY: number;\n}\n\nexport function parseTransform(computedStyles: {\n  scale?: string;\n  transform: string;\n  translate?: string;\n}): Transform | null {\n  const {scale, transform, translate} = computedStyles;\n  const parsedScale = parseScale(scale);\n  const parsedTranslate = parseTranslate(translate);\n  const parsedMatrix = parseTransformMatrix(transform);\n\n  if (!parsedMatrix && !parsedScale && !parsedTranslate) {\n    return null;\n  }\n\n  const normalizedScale = {\n    x: parsedScale?.x ?? 1,\n    y: parsedScale?.y ?? 1,\n  };\n\n  const normalizedTranslate = {\n    x: parsedTranslate?.x ?? 0,\n    y: parsedTranslate?.y ?? 0,\n  };\n\n  const normalizedMatrix = {\n    x: parsedMatrix?.x ?? 0,\n    y: parsedMatrix?.y ?? 0,\n    scaleX: parsedMatrix?.scaleX ?? 1,\n    scaleY: parsedMatrix?.scaleY ?? 1,\n  };\n\n  return {\n    x: normalizedTranslate.x + normalizedMatrix.x,\n    y: normalizedTranslate.y + normalizedMatrix.y,\n    z: parsedTranslate?.z ?? 0,\n    scaleX: normalizedScale.x * normalizedMatrix.scaleX,\n    scaleY: normalizedScale.y * normalizedMatrix.scaleY,\n  };\n}\n\nfunction parseTransformMatrix(transform: string) {\n  if (transform.startsWith('matrix3d(')) {\n    const transformArray = transform.slice(9, -1).split(/, /);\n\n    return {\n      x: +transformArray[12],\n      y: +transformArray[13],\n      scaleX: +transformArray[0],\n      scaleY: +transformArray[5],\n    };\n  } else if (transform.startsWith('matrix(')) {\n    const transformArray = transform.slice(7, -1).split(/, /);\n\n    return {\n      x: +transformArray[4],\n      y: +transformArray[5],\n      scaleX: +transformArray[0],\n      scaleY: +transformArray[3],\n    };\n  }\n\n  return null;\n}\n","import {Rectangle, type Axis, type Coordinates} from '@dnd-kit/geometry';\n\nimport {getScrollPosition} from './getScrollPosition.ts';\nimport {getFrameTransform} from '../frame/getFrameTransform.ts';\nimport {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {parseTransform} from '../transform/parseTransform.ts';\n\nexport enum ScrollDirection {\n  Idle = 0,\n  Forward = 1,\n  Reverse = -1,\n}\n\nconst defaultThreshold: Record<Axis, number> = {\n  x: 0.2,\n  y: 0.2,\n};\n\nconst defaultTolerance: Record<Axis, number> = {\n  x: 10,\n  y: 10,\n};\n\ninterface ScrollIntent {\n  x: ScrollDirection;\n  y: ScrollDirection;\n}\n\nexport function detectScrollIntent(\n  scrollableElement: Element,\n  coordinates: Coordinates,\n  intent?: ScrollIntent,\n  acceleration = 25,\n  thresholdPercentage = defaultThreshold,\n  tolerance = defaultTolerance\n) {\n  const {x, y} = coordinates;\n  const {rect, isTop, isBottom, isLeft, isRight} =\n    getScrollPosition(scrollableElement);\n  const frameTransform = getFrameTransform(scrollableElement);\n  const computedStyles = getComputedStyles(scrollableElement, true);\n  const parsedTransform = parseTransform(computedStyles);\n  const isXAxisInverted =\n    parsedTransform !== null ? parsedTransform?.scaleX < 0 : false;\n  const isYAxisInverted =\n    parsedTransform !== null ? parsedTransform?.scaleY < 0 : false;\n  const scrollContainerRect = new Rectangle(\n    rect.left * frameTransform.scaleX + frameTransform.x,\n    rect.top * frameTransform.scaleY + frameTransform.y,\n    rect.width * frameTransform.scaleX,\n    rect.height * frameTransform.scaleY\n  );\n  const direction: Record<Axis, ScrollDirection> = {\n    x: ScrollDirection.Idle,\n    y: ScrollDirection.Idle,\n  };\n  const speed = {\n    x: 0,\n    y: 0,\n  };\n  const threshold = {\n    height: scrollContainerRect.height * thresholdPercentage.y,\n    width: scrollContainerRect.width * thresholdPercentage.x,\n  };\n\n  if (\n    threshold.height > 0 &&\n    (!isTop || (isYAxisInverted && !isBottom)) &&\n    y <= scrollContainerRect.top + threshold.height &&\n    intent?.y !== ScrollDirection.Forward &&\n    x >= scrollContainerRect.left - tolerance.x &&\n    x <= scrollContainerRect.right + tolerance.x\n  ) {\n    // Scroll Up (or Down if inverted)\n    direction.y = isYAxisInverted\n      ? ScrollDirection.Forward\n      : ScrollDirection.Reverse;\n    speed.y =\n      acceleration *\n      Math.abs(\n        (scrollContainerRect.top + threshold.height - y) / threshold.height\n      );\n  } else if (\n    threshold.height > 0 &&\n    (!isBottom || (isYAxisInverted && !isTop)) &&\n    y >= scrollContainerRect.bottom - threshold.height &&\n    intent?.y !== ScrollDirection.Reverse &&\n    x >= scrollContainerRect.left - tolerance.x &&\n    x <= scrollContainerRect.right + tolerance.x\n  ) {\n    // Scroll Down (or Up if inverted)\n    direction.y = isYAxisInverted\n      ? ScrollDirection.Reverse\n      : ScrollDirection.Forward;\n    speed.y =\n      acceleration *\n      Math.abs(\n        (scrollContainerRect.bottom - threshold.height - y) / threshold.height\n      );\n  }\n\n  if (\n    threshold.width > 0 &&\n    (!isRight || (isXAxisInverted && !isLeft)) &&\n    x >= scrollContainerRect.right - threshold.width &&\n    intent?.x !== ScrollDirection.Reverse &&\n    y >= scrollContainerRect.top - tolerance.y &&\n    y <= scrollContainerRect.bottom + tolerance.y\n  ) {\n    // Scroll Right (or Left if inverted)\n    direction.x = isXAxisInverted\n      ? ScrollDirection.Reverse\n      : ScrollDirection.Forward;\n    speed.x =\n      acceleration *\n      Math.abs(\n        (scrollContainerRect.right - threshold.width - x) / threshold.width\n      );\n  } else if (\n    threshold.width > 0 &&\n    (!isLeft || (isXAxisInverted && !isRight)) &&\n    x <= scrollContainerRect.left + threshold.width &&\n    intent?.x !== ScrollDirection.Forward &&\n    y >= scrollContainerRect.top - tolerance.y &&\n    y <= scrollContainerRect.bottom + tolerance.y\n  ) {\n    // Scroll Left (or Right if inverted)\n    direction.x = isXAxisInverted\n      ? ScrollDirection.Forward\n      : ScrollDirection.Reverse;\n    speed.x =\n      acceleration *\n      Math.abs(\n        (scrollContainerRect.left + threshold.width - x) / threshold.width\n      );\n  }\n\n  return {\n    direction,\n    speed,\n  };\n}\n","import {isHTMLElement} from '../type-guards/isHTMLElement.ts';\nimport {getScrollableAncestors} from './getScrollableAncestors.ts';\n\ntype ScrollPosition = 'center' | 'nearest' | 'none';\n\ninterface ScrollIntoViewOptions {\n  block?: ScrollPosition;\n  inline?: ScrollPosition;\n}\n\nexport function scrollIntoViewIfNeeded(\n  el: Element,\n  {block = 'nearest', inline = 'nearest'}: ScrollIntoViewOptions = {}\n) {\n  if (!isHTMLElement(el)) {\n    return;\n  }\n\n  const scrollableAncestors = getScrollableAncestors(el);\n  const processedAncestors: HTMLElement[] = [];\n\n  for (const ancestor of scrollableAncestors) {\n    if (!isHTMLElement(ancestor)) {\n      continue;\n    }\n\n    const {top, left} = getOffsetRelativeTo(el, ancestor);\n\n    // For outer scrollable containers, adjust for the scroll positions\n    // of intermediate (already-processed) scrollable containers so that\n    // we compute where the element *visually* appears rather than where\n    // it sits in the layout.\n    let adjustedTop = top;\n    let adjustedLeft = left;\n\n    for (const inner of processedAncestors) {\n      adjustedTop -= inner.scrollTop;\n      adjustedLeft -= inner.scrollLeft;\n    }\n\n    if (block !== 'none') {\n      const overTop = adjustedTop < ancestor.scrollTop;\n      const overBottom =\n        adjustedTop + el.offsetHeight >\n        ancestor.scrollTop + ancestor.clientHeight;\n\n      if (overTop !== overBottom) {\n        if (block === 'center') {\n          ancestor.scrollTop =\n            adjustedTop - ancestor.clientHeight / 2 + el.offsetHeight / 2;\n        } else if (overTop) {\n          ancestor.scrollTop = adjustedTop;\n        } else {\n          ancestor.scrollTop =\n            adjustedTop + el.offsetHeight - ancestor.clientHeight;\n        }\n      }\n    }\n\n    if (inline !== 'none') {\n      const overLeft = adjustedLeft < ancestor.scrollLeft;\n      const overRight =\n        adjustedLeft + el.offsetWidth >\n        ancestor.scrollLeft + ancestor.clientWidth;\n\n      if (overLeft !== overRight) {\n        if (inline === 'center') {\n          ancestor.scrollLeft =\n            adjustedLeft - ancestor.clientWidth / 2 + el.offsetWidth / 2;\n        } else if (overLeft) {\n          ancestor.scrollLeft = adjustedLeft;\n        } else {\n          ancestor.scrollLeft =\n            adjustedLeft + el.offsetWidth - ancestor.clientWidth;\n        }\n      }\n    }\n\n    processedAncestors.push(ancestor);\n  }\n}\n\n/**\n * Computes the absolute layout offset of an element's border-box\n * by walking the offsetParent chain. The result is independent of\n * any scroll positions.\n *\n * Note: SVG elements are not currently supported. If an SVG element\n * is encountered in the offsetParent chain, the walk stops early.\n */\nfunction getDocumentOffset(element: HTMLElement): {top: number; left: number} {\n  let top = 0;\n  let left = 0;\n  let current: HTMLElement | null = element;\n\n  while (current) {\n    top += current.offsetTop;\n    left += current.offsetLeft;\n\n    const offsetParent: Element | null = current.offsetParent;\n\n    if (!isHTMLElement(offsetParent)) {\n      break;\n    }\n\n    // clientTop/clientLeft are the border widths of the offsetParent.\n    // Add them to bridge from the offsetParent's padding edge (where\n    // offsetTop is measured from) to its border-box edge so the next\n    // iteration's offsetTop accumulates correctly.\n    top += offsetParent.clientTop;\n    left += offsetParent.clientLeft;\n\n    current = offsetParent;\n  }\n\n  return {top, left};\n}\n\n/**\n * Returns the element's border-box position relative to the ancestor's\n * padding edge (content area), which is the coordinate space that\n * scrollTop / scrollLeft operate in.\n */\nfunction getOffsetRelativeTo(\n  element: HTMLElement,\n  ancestor: HTMLElement\n): {top: number; left: number} {\n  const elOffset = getDocumentOffset(element);\n  const ancestorOffset = getDocumentOffset(ancestor);\n\n  return {\n    top: elOffset.top - ancestorOffset.top - ancestor.clientTop,\n    left: elOffset.left - ancestorOffset.left - ancestor.clientLeft,\n  };\n}\n","import type {BoundingRectangle} from '@dnd-kit/geometry';\n\nimport {type Transform} from './parseTransform.ts';\n\nexport function applyTransform(\n  rect: BoundingRectangle,\n  parsedTransform: Transform,\n  transformOrigin: string\n): BoundingRectangle {\n  const {scaleX, scaleY, x: translateX, y: translateY} = parsedTransform;\n  const x = rect.left + translateX + (1 - scaleX) * parseFloat(transformOrigin);\n  const y =\n    rect.top +\n    translateY +\n    (1 - scaleY) *\n      parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n  const w = scaleX ? rect.width * scaleX : rect.width;\n  const h = scaleY ? rect.height * scaleY : rect.height;\n\n  return {\n    width: w,\n    height: h,\n    top: y,\n    right: x + w,\n    bottom: y + h,\n    left: x,\n  };\n}\n","import type {BoundingRectangle} from '@dnd-kit/geometry';\n\nimport {type Transform} from './parseTransform.ts';\n\nexport function inverseTransform(\n  rect: BoundingRectangle,\n  parsedTransform: Transform,\n  transformOrigin: string\n): BoundingRectangle {\n  const {scaleX, scaleY, x: translateX, y: translateY} = parsedTransform;\n  const x = rect.left - translateX - (1 - scaleX) * parseFloat(transformOrigin);\n  const y =\n    rect.top -\n    translateY -\n    (1 - scaleY) *\n      parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n  const w = scaleX ? rect.width / scaleX : rect.width;\n  const h = scaleY ? rect.height / scaleY : rect.height;\n\n  return {\n    width: w,\n    height: h,\n    top: y,\n    right: x + w,\n    bottom: y + h,\n    left: x,\n  };\n}\n","interface Arguments {\n  element: Element;\n  keyframes: PropertyIndexedKeyframes | Keyframe[];\n  options: KeyframeAnimationOptions;\n}\n\nexport function animateTransform({element, keyframes, options}: Arguments) {\n  return element.animate(keyframes, options).finished;\n}\n","import {getFinalKeyframe} from '../animations/getFinalKeyframe.ts';\nimport {getComputedStyles} from '../styles/getComputedStyles.ts';\n\nimport {parseTranslate} from './parseTranslate.ts';\n\nexport function computeTranslate(\n  element: Element,\n  translate = getComputedStyles(element).translate,\n  projected = true\n): {\n  x: number;\n  y: number;\n  z: number;\n} {\n  if (projected) {\n    const keyframe = getFinalKeyframe(\n      element,\n      (keyframe) => 'translate' in keyframe\n    );\n\n    if (keyframe) {\n      const {translate = ''} = keyframe[0];\n\n      if (typeof translate === 'string') {\n        const finalTranslate = parseTranslate(translate);\n\n        if (finalTranslate) {\n          return finalTranslate;\n        }\n      }\n    }\n  }\n\n  if (translate) {\n    const finalTranslate = parseTranslate(translate);\n\n    if (finalTranslate) {\n      return finalTranslate;\n    }\n  }\n\n  return {x: 0, y: 0, z: 0};\n}\n","import {Scheduler} from '../scheduling/scheduler.ts';\nimport {isKeyframeEffect} from '../type-guards/isKeyframeEffect.ts';\n\nconst scheduler = new Scheduler((callback) => setTimeout(callback, 0));\nconst animations = new Map<Document | Element, Animation[]>();\nconst clear = animations.clear.bind(animations);\n\nfunction getDocumentAnimations(element: Element): Animation[] {\n  const document = element.ownerDocument;\n  let documentAnimations = animations.get(document);\n\n  if (documentAnimations) return documentAnimations;\n\n  documentAnimations = document.getAnimations();\n  animations.set(document, documentAnimations);\n  scheduler.schedule(clear);\n\n  const elementAnimations = documentAnimations.filter(\n    (animation) =>\n      isKeyframeEffect(animation.effect) && animation.effect.target === element\n  );\n\n  animations.set(element, elementAnimations);\n\n  return documentAnimations;\n}\n\n/*\n * Force animations on ancestors of the element into their end state\n * and return a function to reset them back to their current state.\n *\n * This is useful as it allows us to immediately calculate the final position\n * of an element without having to wait for the animations to finish.\n */\nexport function forceFinishAnimations(\n  element: Element,\n  options: {\n    properties: string[];\n    isValidTarget?: (target: Element) => boolean;\n  }\n): (() => void) | undefined {\n  const animations = getDocumentAnimations(element)\n    .filter((animation) => {\n      if (isKeyframeEffect(animation.effect)) {\n        const {target} = animation.effect;\n        const isValidTarget =\n          (target && options.isValidTarget?.(target)) ?? true;\n\n        if (isValidTarget) {\n          return animation.effect.getKeyframes().some((keyframe) => {\n            for (const property of options.properties) {\n              if (keyframe[property]) return true;\n            }\n          });\n        }\n      }\n    })\n    .map((animation) => {\n      const {effect, currentTime} = animation;\n      const duration = effect?.getComputedTiming().duration;\n\n      if (animation.pending || animation.playState === 'finished') return;\n\n      if (\n        typeof duration == 'number' &&\n        typeof currentTime == 'number' &&\n        currentTime < duration\n      ) {\n        animation.currentTime = duration;\n\n        return () => {\n          animation.currentTime = currentTime;\n        };\n      }\n    });\n\n  if (animations.length > 0) {\n    return () => animations.forEach((reset) => reset?.());\n  }\n}\n","import {Rectangle, type BoundingRectangle} from '@dnd-kit/geometry';\n\nimport {applyTransform} from '../transform/applyTransform.ts';\nimport {inverseTransform} from '../transform/inverseTransform.ts';\nimport {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {parseTransform, type Transform} from '../transform/index.ts';\nimport {getBoundingRectangle} from '../bounding-rectangle/getBoundingRectangle.ts';\nimport {getFrameTransform} from '../frame/getFrameTransform.ts';\nimport {isKeyframeEffect} from '../type-guards/isKeyframeEffect.ts';\nimport {forceFinishAnimations} from '../animations/forceFinishAnimations.ts';\nimport {isSafari} from '../execution-context/isSafari.ts';\n\nexport interface DOMRectangleOptions {\n  getBoundingClientRect?: (element: Element) => BoundingRectangle;\n  /* Whether to ignore transforms when calculating the rectangle */\n  ignoreTransforms?: boolean;\n  frameTransform?: Transform | null;\n}\n\nexport class DOMRectangle extends Rectangle {\n  constructor(element: Element, options: DOMRectangleOptions = {}) {\n    const {\n      frameTransform = getFrameTransform(element),\n      ignoreTransforms,\n      getBoundingClientRect = getBoundingRectangle,\n    } = options;\n    const resetAnimations = forceFinishAnimations(element, {\n      properties: ['transform', 'translate', 'scale', 'width', 'height'],\n      isValidTarget: (target) =>\n        (target !== element || isSafari()) && target.contains(element),\n    });\n    const boundingRectangle = getBoundingClientRect(element);\n    let {top, left, width, height} = boundingRectangle;\n    let updated: BoundingRectangle | undefined;\n\n    const computedStyles = getComputedStyles(element);\n    const parsedTransform = parseTransform(computedStyles);\n\n    const scale = {\n      x: parsedTransform?.scaleX ?? 1,\n      y: parsedTransform?.scaleY ?? 1,\n    };\n\n    const projectedTransform = getProjectedTransform(element, computedStyles);\n\n    resetAnimations?.();\n\n    if (parsedTransform) {\n      updated = inverseTransform(\n        boundingRectangle,\n        parsedTransform,\n        computedStyles.transformOrigin\n      );\n\n      if (ignoreTransforms || projectedTransform) {\n        top = updated.top;\n        left = updated.left;\n        width = updated.width;\n        height = updated.height;\n      }\n    }\n\n    const intrinsic = {\n      width: updated?.width ?? width,\n      height: updated?.height ?? height,\n    };\n\n    if (projectedTransform && !ignoreTransforms && updated) {\n      const projected = applyTransform(\n        updated,\n        projectedTransform,\n        computedStyles.transformOrigin\n      );\n\n      top = projected.top;\n      left = projected.left;\n      width = projected.width;\n      height = projected.height;\n      scale.x = projectedTransform.scaleX;\n      scale.y = projectedTransform.scaleY;\n    }\n\n    if (frameTransform) {\n      if (!ignoreTransforms) {\n        left *= frameTransform.scaleX;\n        width *= frameTransform.scaleX;\n        top *= frameTransform.scaleY;\n        height *= frameTransform.scaleY;\n      }\n\n      left += frameTransform.x;\n      top += frameTransform.y;\n    }\n\n    super(left, top, width, height);\n\n    this.scale = scale;\n    this.intrinsicWidth = intrinsic.width;\n    this.intrinsicHeight = intrinsic.height;\n  }\n\n  public intrinsicWidth: number;\n  public intrinsicHeight: number;\n}\n\n/*\n * Get the projected transform of an element based on the final keyframes\n * of its running animations.\n *\n * Uses last-wins-per-property semantics: for each CSS property (transform,\n * translate, scale), the value from the highest composite-order animation\n * wins. This correctly handles overlapping animations with the default\n * `composite: 'replace'` mode.\n *\n * `element.getAnimations()` returns animations sorted by composite order\n * (oldest first), so iterating forward and overwriting gives us the\n * effective final value for each property.\n *\n * @see https://drafts.csswg.org/web-animations-1/#dom-animatable-getanimations\n * @see https://drafts.csswg.org/css-animations-2/#animation-composite-order\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/animation-composition\n */\nfunction getProjectedTransform(\n  element: Element,\n  computedStyles: CSSStyleDeclaration\n): Transform | null {\n  const animations = element.getAnimations();\n\n  if (!animations.length) return null;\n\n  let latestTransform: string | undefined;\n  let latestTranslate: string | undefined;\n  let latestScale: string | undefined;\n  let hasAnimatedProperty = false;\n\n  for (const animation of animations) {\n    if (animation.playState !== 'running') continue;\n\n    const keyframes = isKeyframeEffect(animation.effect)\n      ? animation.effect.getKeyframes()\n      : [];\n    const keyframe = keyframes[keyframes.length - 1];\n\n    if (!keyframe) continue;\n\n    const {transform, translate, scale} = keyframe;\n\n    if (typeof transform === 'string' && transform) {\n      latestTransform = transform;\n      hasAnimatedProperty = true;\n    }\n\n    if (typeof translate === 'string' && translate) {\n      latestTranslate = translate;\n      hasAnimatedProperty = true;\n    }\n\n    if (typeof scale === 'string' && scale) {\n      latestScale = scale;\n      hasAnimatedProperty = true;\n    }\n  }\n\n  if (!hasAnimatedProperty) return null;\n\n  return parseTransform({\n    transform: latestTransform ?? computedStyles.transform,\n    translate: latestTranslate ?? computedStyles.translate,\n    scale: latestScale ?? computedStyles.scale,\n  });\n}\n","export function supportsStyle(\n  element: Element\n): element is Element & {style: CSSStyleDeclaration} {\n  return (\n    'style' in element &&\n    typeof element.style === 'object' &&\n    element.style !== null &&\n    'setProperty' in element.style &&\n    'removeProperty' in element.style &&\n    typeof element.style.setProperty === 'function' &&\n    typeof element.style.removeProperty === 'function'\n  );\n}\n","import {supportsStyle} from '../type-guards/supportsStyle.ts';\n\ntype ExtractStringProperties<T> = {\n  [K in keyof T]?: T[K] extends string ? string : never;\n};\n\nexport type StyleDeclaration = ExtractStringProperties<CSSStyleDeclaration> & {\n  viewTransitionName?: string;\n};\n\nexport class Styles {\n  private initial = new Map<string, string>();\n\n  constructor(private element: Element) {}\n\n  public set(properties: Record<string, string | number>, prefix = '') {\n    const {element} = this;\n\n    if (!supportsStyle(element)) {\n      return;\n    }\n\n    for (const [key, value] of Object.entries(properties)) {\n      const property = `${prefix}${key}`;\n\n      if (!this.initial.has(property)) {\n        this.initial.set(property, element.style.getPropertyValue(property));\n      }\n\n      element.style.setProperty(\n        property,\n        typeof value === 'string' ? value : `${value}px`\n      );\n    }\n  }\n\n  public remove(properties: string[], prefix = '') {\n    const {element} = this;\n\n    if (!supportsStyle(element)) {\n      return;\n    }\n\n    for (const key of properties) {\n      const property = `${prefix}${key}`;\n\n      element.style.removeProperty(property);\n    }\n  }\n\n  public reset() {\n    const {element} = this;\n\n    if (!supportsStyle(element)) {\n      return;\n    }\n\n    for (const [key, value] of this.initial) {\n      element.style.setProperty(key, value);\n    }\n\n    if (element.getAttribute('style') === '') {\n      element.removeAttribute('style');\n    }\n  }\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\nimport {isNode} from './isNode.ts';\n\nexport function isElement(target: EventTarget | null): target is Element {\n  if (!target) return false;\n\n  return (\n    target instanceof getWindow(target).Element ||\n    (isNode(target) && target.nodeType === Node.ELEMENT_NODE)\n  );\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\n\nexport function isKeyboardEvent(\n  event: Event | null | undefined\n): event is KeyboardEvent {\n  if (!event) return false;\n\n  const {KeyboardEvent} = getWindow(event.target);\n\n  return event instanceof KeyboardEvent;\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\n\nexport function isPointerEvent(\n  event: Event | null | undefined\n): event is PointerEvent {\n  if (!event) return false;\n\n  const {PointerEvent} = getWindow(event.target);\n\n  return event instanceof PointerEvent;\n}\n","interface ViewTransition {\n  ready: Promise<void>;\n  updateCallbackDone: Promise<void>;\n  finished: Promise<void>;\n  skipTransition(): void;\n}\n\nexport function supportsViewTransition(\n  document: Document\n): document is Document & {\n  startViewTransition(updateCallback: () => void): ViewTransition;\n} {\n  return 'startViewTransition' in document;\n}\n","import {isElement} from './isElement.js';\n\nexport function isTextInput(target: EventTarget | null) {\n  if (!isElement(target)) return false;\n\n  const {tagName} = target;\n\n  return (\n    tagName === 'INPUT' || tagName === 'TEXTAREA' || isContentEditable(target)\n  );\n}\n\nfunction isContentEditable(element: Element) {\n  return (\n    element.hasAttribute('contenteditable') &&\n    element.getAttribute('contenteditable') !== 'false'\n  );\n}\n","const ids: Record<string, number> = {};\n\nexport function generateUniqueId(prefix: string) {\n  const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n  ids[prefix] = id;\n\n  return `${prefix}-${id}`;\n}\n"]}