@dnd-kit/dom 0.1.6 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dnd-kit/dom",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "type": "module",
5
5
  "main": "./index.cjs",
6
6
  "module": "./index.js",
@@ -74,10 +74,10 @@
74
74
  "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
75
75
  },
76
76
  "dependencies": {
77
- "@dnd-kit/abstract": "^0.1.6",
78
- "@dnd-kit/collision": "^0.1.6",
79
- "@dnd-kit/geometry": "^0.1.6",
80
- "@dnd-kit/state": "^0.1.6",
77
+ "@dnd-kit/abstract": "^0.1.7",
78
+ "@dnd-kit/collision": "^0.1.7",
79
+ "@dnd-kit/geometry": "^0.1.7",
80
+ "@dnd-kit/state": "^0.1.7",
81
81
  "tslib": "^2.6.2"
82
82
  },
83
83
  "devDependencies": {
package/utilities.cjs CHANGED
@@ -770,12 +770,12 @@ function detectScrollIntent(scrollableElement, coordinates, intent, acceleration
770
770
  );
771
771
  }
772
772
  if ((!isRight || isXAxisInverted && !isLeft) && x >= scrollContainerRect.right - threshold2.width && (intent == null ? void 0 : intent.x) !== -1 /* Reverse */ && y >= scrollContainerRect.top - tolerance.y && y <= scrollContainerRect.bottom + tolerance.y) {
773
- direction.x = isXAxisInverted ? 1 /* Forward */ : -1 /* Reverse */;
773
+ direction.x = isXAxisInverted ? -1 /* Reverse */ : 1 /* Forward */;
774
774
  speed.x = acceleration * Math.abs(
775
775
  (scrollContainerRect.right - threshold2.width - x) / threshold2.width
776
776
  );
777
777
  } else if ((!isLeft || isXAxisInverted && !isRight) && x <= scrollContainerRect.left + threshold2.width && (intent == null ? void 0 : intent.x) !== 1 /* Forward */ && y >= scrollContainerRect.top - tolerance.y && y <= scrollContainerRect.bottom + tolerance.y) {
778
- direction.x = isXAxisInverted ? -1 /* Reverse */ : 1 /* Forward */;
778
+ direction.x = isXAxisInverted ? 1 /* Forward */ : -1 /* Reverse */;
779
779
  speed.x = acceleration * Math.abs(
780
780
  (scrollContainerRect.left + threshold2.width - x) / threshold2.width
781
781
  );
package/utilities.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["src/utilities/bounding-rectangle/getBoundingRectangle.ts","src/utilities/execution-context/canUseDOM.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/scheduling/timeout.ts","src/utilities/scheduling/throttle.ts","src/utilities/bounding-rectangle/isRectEqual.ts","src/utilities/bounding-rectangle/isOverflowVisible.ts","src/utilities/bounding-rectangle/getVisibleBoundingRectangle.ts","src/utilities/bounding-rectangle/isVisible.ts","src/utilities/bounding-rectangle/PositionObserver.ts","src/utilities/execution-context/isSafari.ts","src/utilities/element/cloneElement.ts","src/utilities/element/getElementFromPoint.ts","src/utilities/element/proxiedElements.ts","src/utilities/event-listeners/Listeners.ts","src/utilities/popover/supportsPopover.ts","src/utilities/popover/showPopover.ts","src/utilities/scroll/documentScrollingElement.ts","src/utilities/scroll/getScrollPosition.ts","src/utilities/scroll/canScroll.ts","src/utilities/styles/getComputedStyles.ts","src/utilities/scroll/isFixed.ts","src/utilities/scroll/isScrollable.ts","src/utilities/scroll/getScrollableAncestors.ts","src/utilities/frame/getFrameElement.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/scheduling/scheduler.ts","src/utilities/transform/inverseTransform.ts","src/utilities/transform/animateTransform.ts","src/utilities/type-guards/isKeyframeEffect.ts","src/utilities/transform/computeTranslate.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/misc/generateUniqueId.ts"],"names":["Rectangle","document","target","window","ScrollDirection","threshold","scheduler","animations","keyframe","translate"],"mappings":"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","file":"utilities.cjs","sourcesContent":["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","// 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","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/index.ts';\n\n/**\n * Returns the bounding rectangle of the viewport\n * @param element\n * @returns BoundingRectangle\n */\nexport function getViewportBoundingRectangle(\n element: Element\n): BoundingRectangle {\n const {documentElement} = getDocument(element);\n const width = documentElement.clientWidth;\n const height = documentElement.clientHeight;\n\n return {\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n width,\n height,\n };\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","/*\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 viewport (window)\n const viewportWidth = ownerWindow.innerWidth;\n const viewportHeight = ownerWindow.innerHeight;\n const viewportMarginY = margin * viewportHeight;\n const viewportMarginX = margin * viewportWidth;\n\n rect = {\n top: Math.max(rect.top, 0 - viewportMarginY),\n right: Math.min(rect.right, viewportWidth + viewportMarginX),\n bottom: Math.min(rect.bottom, viewportHeight + viewportMarginY),\n left: Math.max(rect.left, 0 - 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 {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 {BoundingRectangle, Rectangle} from '@dnd-kit/geometry';\n\nimport {throttle} from '../scheduling/throttle.ts';\n\nimport {isRectEqual} from './isRectEqual.ts';\nimport {isVisible} from './isVisible.ts';\nimport {getVisibleBoundingRectangle} from './getVisibleBoundingRectangle.ts';\n\ntype PositionObserverCallback = (\n boundingClientRect: BoundingRectangle | null\n) => void;\n\nconst threshold = Array.from({length: 100}, (_, index) => index / 100);\nconst THROTTLE_INTERVAL = 75;\n\nexport class PositionObserver {\n constructor(\n private element: Element,\n callback: PositionObserverCallback,\n options: {debug?: boolean} = {debug: false}\n ) {\n this.#callback = callback;\n this.boundingClientRect = element.getBoundingClientRect();\n this.#visible = isVisible(element, this.boundingClientRect);\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 ResizeObserver(this.#observePosition);\n this.#resizeObserver.observe(element);\n }\n },\n {\n threshold,\n root,\n }\n );\n\n if (this.#visible) {\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 #callback: PositionObserverCallback;\n #visible = true;\n #previousBoundingClientRect: DOMRectReadOnly | undefined;\n #resizeObserver: ResizeObserver | 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 = Rectangle.intersectionRatio(\n intersectionRect,\n visibleRect\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","export function isSafari() {\n return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\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 document: Document,\n {x, y}: Coordinates\n): Element | null {\n const element = document.elementFromPoint(x, y);\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 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, input: EventListenerInput) {\n const listeners = Array.isArray(input) ? input : [input];\n const entries: EventListenerEntry[] = [];\n\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 return function cleanup() {\n for (const [target, {type, listener, options}] of entries) {\n target.removeEventListener(type, listener, options);\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 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 if (\n supportsPopover(element) &&\n element.isConnected &&\n element.hasAttribute('popover')\n ) {\n element.showPopover();\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 dimensions = isDocumentScrollingElement(scrollableElement)\n ? {\n height: window.innerHeight,\n 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","import {getWindow} from '../execution-context/getWindow.ts';\n\nexport function getComputedStyles(element: Element) {\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)\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)\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';\n\ninterface Options {\n limit?: number;\n excludeElement?: boolean;\n}\n\nconst defaultOptions: Options = {\n excludeElement: true,\n};\n\nexport function getScrollableAncestors(\n element: Node | null,\n options: Options = defaultOptions\n): Set<Element> {\n const {limit, excludeElement} = 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 (!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);\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","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 return 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';\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 = frame.getBoundingClientRect();\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 = element.getBoundingClientRect()\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);\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 === '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 === '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);\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 (!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 (!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 (!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.Forward\n : ScrollDirection.Reverse;\n speed.x =\n acceleration *\n Math.abs(\n (scrollContainerRect.right - threshold.width - x) / threshold.width\n );\n } else if (\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.Reverse\n : ScrollDirection.Forward;\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 {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {isHTMLElement} from '../type-guards/isHTMLElement.ts';\nimport {getFirstScrollableAncestor} from './getScrollableAncestors.ts';\n\nfunction supportsScrollIntoViewIfNeeded(\n element: Element\n): element is Element & {\n scrollIntoViewIfNeeded: (centerIfNeeded?: boolean) => void;\n} {\n return (\n 'scrollIntoViewIfNeeded' in element &&\n typeof element.scrollIntoViewIfNeeded === 'function'\n );\n}\n\nexport function scrollIntoViewIfNeeded(el: Element, centerIfNeeded = false) {\n if (supportsScrollIntoViewIfNeeded(el)) {\n el.scrollIntoViewIfNeeded(centerIfNeeded);\n return;\n }\n\n if (!isHTMLElement(el)) {\n return el.scrollIntoView();\n }\n\n var parent = getFirstScrollableAncestor(el);\n\n if (!isHTMLElement(parent)) {\n return;\n }\n\n const parentComputedStyle = getComputedStyles(parent),\n parentBorderTopWidth = parseInt(\n parentComputedStyle.getPropertyValue('border-top-width')\n ),\n parentBorderLeftWidth = parseInt(\n parentComputedStyle.getPropertyValue('border-left-width')\n ),\n overTop = el.offsetTop - parent.offsetTop < parent.scrollTop,\n overBottom =\n el.offsetTop - parent.offsetTop + el.clientHeight - parentBorderTopWidth >\n parent.scrollTop + parent.clientHeight,\n overLeft = el.offsetLeft - parent.offsetLeft < parent.scrollLeft,\n overRight =\n el.offsetLeft -\n parent.offsetLeft +\n el.clientWidth -\n parentBorderLeftWidth >\n parent.scrollLeft + parent.clientWidth,\n alignWithTop = overTop && !overBottom;\n\n if ((overTop || overBottom) && centerIfNeeded) {\n parent.scrollTop =\n el.offsetTop -\n parent.offsetTop -\n parent.clientHeight / 2 -\n parentBorderTopWidth +\n el.clientHeight / 2;\n }\n\n if ((overLeft || overRight) && centerIfNeeded) {\n parent.scrollLeft =\n el.offsetLeft -\n parent.offsetLeft -\n parent.clientWidth / 2 -\n parentBorderLeftWidth +\n el.clientWidth / 2;\n }\n\n if ((overTop || overBottom || overLeft || overRight) && !centerIfNeeded) {\n el.scrollIntoView(alignWithTop);\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 requestAnimationFrame(callback)\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","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 {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {isKeyframeEffect} from '../type-guards/isKeyframeEffect.ts';\n\nimport {parseTranslate} from './parseTranslate.ts';\n\nfunction getFinalKeyframe(\n element: Element,\n match: (keyframe: Keyframe) => boolean\n): Keyframe | null {\n const animations = element.getAnimations();\n\n if (animations.length > 0) {\n for (const animation of animations) {\n const {effect} = animation;\n const keyframes = isKeyframeEffect(effect) ? effect.getKeyframes() : [];\n const matchedKeyframes = keyframes.filter(match);\n\n if (matchedKeyframes.length > 0) {\n return matchedKeyframes[matchedKeyframes.length - 1];\n }\n }\n }\n\n return null;\n}\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;\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 {Rectangle, type BoundingRectangle} from '@dnd-kit/geometry';\n\nimport {Scheduler} from '../scheduling/scheduler.ts';\nimport {isSafari} from '../execution-context/isSafari.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';\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 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 resetAnimations?.();\n\n const projectedTransform = getProjectedTransform(element);\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) {\n top = top + projectedTransform.y;\n left = left + projectedTransform.x;\n width = width * projectedTransform.scaleX;\n height = height * projectedTransform.scaleY;\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 its final keyframe\n */\nfunction getProjectedTransform(element: Element): Transform | null {\n const animations = getAnimations(element);\n let projectedTransform: Transform | null = null;\n\n if (!animations.length) return null;\n\n for (const animation of animations) {\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 (transform || translate || scale) {\n const parsedTransform = parseTransform({\n transform: typeof transform === 'string' ? transform : '',\n translate: typeof translate === 'string' ? translate : '',\n scale: typeof scale === 'string' ? scale : '',\n });\n\n if (parsedTransform) {\n projectedTransform = projectedTransform\n ? {\n x: projectedTransform.x + parsedTransform.x,\n y: projectedTransform.y + parsedTransform.y,\n z: projectedTransform.z ?? parsedTransform.z,\n scaleX: projectedTransform.scaleX * parsedTransform.scaleX,\n scaleY: projectedTransform.scaleY * parsedTransform.scaleY,\n }\n : parsedTransform;\n }\n }\n }\n\n return projectedTransform;\n}\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\nfunction getAnimations(target: Element | Document): Animation[] {\n const cachedAnimations = animations.get(target);\n\n if (cachedAnimations) return cachedAnimations;\n\n return target.getAnimations();\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 */\nfunction forceFinishAnimations(element: Element): (() => void) | undefined {\n const animations = getDocumentAnimations(element)\n .filter((animation) => {\n if (isKeyframeEffect(animation.effect)) {\n const {target} = animation.effect;\n const isValidTarget = target && (isSafari() || target !== element);\n\n if (isValidTarget && target.contains(element)) {\n return animation.effect.getKeyframes().some((keyframe) => {\n const {transform, translate, scale, width, height} = keyframe;\n\n return transform || translate || scale || width || height;\n });\n }\n }\n })\n .map((animation) => {\n const {effect, currentTime} = animation;\n const duration = effect?.getComputedTiming().duration;\n\n if (animation.pending) 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","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","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"]}
1
+ {"version":3,"sources":["src/utilities/bounding-rectangle/getBoundingRectangle.ts","src/utilities/execution-context/canUseDOM.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/scheduling/timeout.ts","src/utilities/scheduling/throttle.ts","src/utilities/bounding-rectangle/isRectEqual.ts","src/utilities/bounding-rectangle/isOverflowVisible.ts","src/utilities/bounding-rectangle/getVisibleBoundingRectangle.ts","src/utilities/bounding-rectangle/isVisible.ts","src/utilities/bounding-rectangle/PositionObserver.ts","src/utilities/execution-context/isSafari.ts","src/utilities/element/cloneElement.ts","src/utilities/element/getElementFromPoint.ts","src/utilities/element/proxiedElements.ts","src/utilities/event-listeners/Listeners.ts","src/utilities/popover/supportsPopover.ts","src/utilities/popover/showPopover.ts","src/utilities/scroll/documentScrollingElement.ts","src/utilities/scroll/getScrollPosition.ts","src/utilities/scroll/canScroll.ts","src/utilities/styles/getComputedStyles.ts","src/utilities/scroll/isFixed.ts","src/utilities/scroll/isScrollable.ts","src/utilities/scroll/getScrollableAncestors.ts","src/utilities/frame/getFrameElement.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/scheduling/scheduler.ts","src/utilities/transform/inverseTransform.ts","src/utilities/transform/animateTransform.ts","src/utilities/type-guards/isKeyframeEffect.ts","src/utilities/transform/computeTranslate.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/misc/generateUniqueId.ts"],"names":["Rectangle","document","target","window","ScrollDirection","threshold","scheduler","animations","keyframe","translate"],"mappings":"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","file":"utilities.cjs","sourcesContent":["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","// 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","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/index.ts';\n\n/**\n * Returns the bounding rectangle of the viewport\n * @param element\n * @returns BoundingRectangle\n */\nexport function getViewportBoundingRectangle(\n element: Element\n): BoundingRectangle {\n const {documentElement} = getDocument(element);\n const width = documentElement.clientWidth;\n const height = documentElement.clientHeight;\n\n return {\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n width,\n height,\n };\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","/*\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 viewport (window)\n const viewportWidth = ownerWindow.innerWidth;\n const viewportHeight = ownerWindow.innerHeight;\n const viewportMarginY = margin * viewportHeight;\n const viewportMarginX = margin * viewportWidth;\n\n rect = {\n top: Math.max(rect.top, 0 - viewportMarginY),\n right: Math.min(rect.right, viewportWidth + viewportMarginX),\n bottom: Math.min(rect.bottom, viewportHeight + viewportMarginY),\n left: Math.max(rect.left, 0 - 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 {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 {BoundingRectangle, Rectangle} from '@dnd-kit/geometry';\n\nimport {throttle} from '../scheduling/throttle.ts';\n\nimport {isRectEqual} from './isRectEqual.ts';\nimport {isVisible} from './isVisible.ts';\nimport {getVisibleBoundingRectangle} from './getVisibleBoundingRectangle.ts';\n\ntype PositionObserverCallback = (\n boundingClientRect: BoundingRectangle | null\n) => void;\n\nconst threshold = Array.from({length: 100}, (_, index) => index / 100);\nconst THROTTLE_INTERVAL = 75;\n\nexport class PositionObserver {\n constructor(\n private element: Element,\n callback: PositionObserverCallback,\n options: {debug?: boolean} = {debug: false}\n ) {\n this.#callback = callback;\n this.boundingClientRect = element.getBoundingClientRect();\n this.#visible = isVisible(element, this.boundingClientRect);\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 ResizeObserver(this.#observePosition);\n this.#resizeObserver.observe(element);\n }\n },\n {\n threshold,\n root,\n }\n );\n\n if (this.#visible) {\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 #callback: PositionObserverCallback;\n #visible = true;\n #previousBoundingClientRect: DOMRectReadOnly | undefined;\n #resizeObserver: ResizeObserver | 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 = Rectangle.intersectionRatio(\n intersectionRect,\n visibleRect\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","export function isSafari() {\n return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\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 document: Document,\n {x, y}: Coordinates\n): Element | null {\n const element = document.elementFromPoint(x, y);\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 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, input: EventListenerInput) {\n const listeners = Array.isArray(input) ? input : [input];\n const entries: EventListenerEntry[] = [];\n\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 return function cleanup() {\n for (const [target, {type, listener, options}] of entries) {\n target.removeEventListener(type, listener, options);\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 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 if (\n supportsPopover(element) &&\n element.isConnected &&\n element.hasAttribute('popover')\n ) {\n element.showPopover();\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 dimensions = isDocumentScrollingElement(scrollableElement)\n ? {\n height: window.innerHeight,\n 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","import {getWindow} from '../execution-context/getWindow.ts';\n\nexport function getComputedStyles(element: Element) {\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)\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)\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';\n\ninterface Options {\n limit?: number;\n excludeElement?: boolean;\n}\n\nconst defaultOptions: Options = {\n excludeElement: true,\n};\n\nexport function getScrollableAncestors(\n element: Node | null,\n options: Options = defaultOptions\n): Set<Element> {\n const {limit, excludeElement} = 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 (!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);\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","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 return 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';\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 = frame.getBoundingClientRect();\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 = element.getBoundingClientRect()\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);\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 === '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 === '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);\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 (!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 (!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 (!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 (!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 {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {isHTMLElement} from '../type-guards/isHTMLElement.ts';\nimport {getFirstScrollableAncestor} from './getScrollableAncestors.ts';\n\nfunction supportsScrollIntoViewIfNeeded(\n element: Element\n): element is Element & {\n scrollIntoViewIfNeeded: (centerIfNeeded?: boolean) => void;\n} {\n return (\n 'scrollIntoViewIfNeeded' in element &&\n typeof element.scrollIntoViewIfNeeded === 'function'\n );\n}\n\nexport function scrollIntoViewIfNeeded(el: Element, centerIfNeeded = false) {\n if (supportsScrollIntoViewIfNeeded(el)) {\n el.scrollIntoViewIfNeeded(centerIfNeeded);\n return;\n }\n\n if (!isHTMLElement(el)) {\n return el.scrollIntoView();\n }\n\n var parent = getFirstScrollableAncestor(el);\n\n if (!isHTMLElement(parent)) {\n return;\n }\n\n const parentComputedStyle = getComputedStyles(parent),\n parentBorderTopWidth = parseInt(\n parentComputedStyle.getPropertyValue('border-top-width')\n ),\n parentBorderLeftWidth = parseInt(\n parentComputedStyle.getPropertyValue('border-left-width')\n ),\n overTop = el.offsetTop - parent.offsetTop < parent.scrollTop,\n overBottom =\n el.offsetTop - parent.offsetTop + el.clientHeight - parentBorderTopWidth >\n parent.scrollTop + parent.clientHeight,\n overLeft = el.offsetLeft - parent.offsetLeft < parent.scrollLeft,\n overRight =\n el.offsetLeft -\n parent.offsetLeft +\n el.clientWidth -\n parentBorderLeftWidth >\n parent.scrollLeft + parent.clientWidth,\n alignWithTop = overTop && !overBottom;\n\n if ((overTop || overBottom) && centerIfNeeded) {\n parent.scrollTop =\n el.offsetTop -\n parent.offsetTop -\n parent.clientHeight / 2 -\n parentBorderTopWidth +\n el.clientHeight / 2;\n }\n\n if ((overLeft || overRight) && centerIfNeeded) {\n parent.scrollLeft =\n el.offsetLeft -\n parent.offsetLeft -\n parent.clientWidth / 2 -\n parentBorderLeftWidth +\n el.clientWidth / 2;\n }\n\n if ((overTop || overBottom || overLeft || overRight) && !centerIfNeeded) {\n el.scrollIntoView(alignWithTop);\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 requestAnimationFrame(callback)\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","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 {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {isKeyframeEffect} from '../type-guards/isKeyframeEffect.ts';\n\nimport {parseTranslate} from './parseTranslate.ts';\n\nfunction getFinalKeyframe(\n element: Element,\n match: (keyframe: Keyframe) => boolean\n): Keyframe | null {\n const animations = element.getAnimations();\n\n if (animations.length > 0) {\n for (const animation of animations) {\n const {effect} = animation;\n const keyframes = isKeyframeEffect(effect) ? effect.getKeyframes() : [];\n const matchedKeyframes = keyframes.filter(match);\n\n if (matchedKeyframes.length > 0) {\n return matchedKeyframes[matchedKeyframes.length - 1];\n }\n }\n }\n\n return null;\n}\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;\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 {Rectangle, type BoundingRectangle} from '@dnd-kit/geometry';\n\nimport {Scheduler} from '../scheduling/scheduler.ts';\nimport {isSafari} from '../execution-context/isSafari.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';\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 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 resetAnimations?.();\n\n const projectedTransform = getProjectedTransform(element);\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) {\n top = top + projectedTransform.y;\n left = left + projectedTransform.x;\n width = width * projectedTransform.scaleX;\n height = height * projectedTransform.scaleY;\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 its final keyframe\n */\nfunction getProjectedTransform(element: Element): Transform | null {\n const animations = getAnimations(element);\n let projectedTransform: Transform | null = null;\n\n if (!animations.length) return null;\n\n for (const animation of animations) {\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 (transform || translate || scale) {\n const parsedTransform = parseTransform({\n transform: typeof transform === 'string' ? transform : '',\n translate: typeof translate === 'string' ? translate : '',\n scale: typeof scale === 'string' ? scale : '',\n });\n\n if (parsedTransform) {\n projectedTransform = projectedTransform\n ? {\n x: projectedTransform.x + parsedTransform.x,\n y: projectedTransform.y + parsedTransform.y,\n z: projectedTransform.z ?? parsedTransform.z,\n scaleX: projectedTransform.scaleX * parsedTransform.scaleX,\n scaleY: projectedTransform.scaleY * parsedTransform.scaleY,\n }\n : parsedTransform;\n }\n }\n }\n\n return projectedTransform;\n}\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\nfunction getAnimations(target: Element | Document): Animation[] {\n const cachedAnimations = animations.get(target);\n\n if (cachedAnimations) return cachedAnimations;\n\n return target.getAnimations();\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 */\nfunction forceFinishAnimations(element: Element): (() => void) | undefined {\n const animations = getDocumentAnimations(element)\n .filter((animation) => {\n if (isKeyframeEffect(animation.effect)) {\n const {target} = animation.effect;\n const isValidTarget = target && (isSafari() || target !== element);\n\n if (isValidTarget && target.contains(element)) {\n return animation.effect.getKeyframes().some((keyframe) => {\n const {transform, translate, scale, width, height} = keyframe;\n\n return transform || translate || scale || width || height;\n });\n }\n }\n })\n .map((animation) => {\n const {effect, currentTime} = animation;\n const duration = effect?.getComputedTiming().duration;\n\n if (animation.pending) 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","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","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"]}
package/utilities.js CHANGED
@@ -768,12 +768,12 @@ function detectScrollIntent(scrollableElement, coordinates, intent, acceleration
768
768
  );
769
769
  }
770
770
  if ((!isRight || isXAxisInverted && !isLeft) && x >= scrollContainerRect.right - threshold2.width && (intent == null ? void 0 : intent.x) !== -1 /* Reverse */ && y >= scrollContainerRect.top - tolerance.y && y <= scrollContainerRect.bottom + tolerance.y) {
771
- direction.x = isXAxisInverted ? 1 /* Forward */ : -1 /* Reverse */;
771
+ direction.x = isXAxisInverted ? -1 /* Reverse */ : 1 /* Forward */;
772
772
  speed.x = acceleration * Math.abs(
773
773
  (scrollContainerRect.right - threshold2.width - x) / threshold2.width
774
774
  );
775
775
  } else if ((!isLeft || isXAxisInverted && !isRight) && x <= scrollContainerRect.left + threshold2.width && (intent == null ? void 0 : intent.x) !== 1 /* Forward */ && y >= scrollContainerRect.top - tolerance.y && y <= scrollContainerRect.bottom + tolerance.y) {
776
- direction.x = isXAxisInverted ? -1 /* Reverse */ : 1 /* Forward */;
776
+ direction.x = isXAxisInverted ? 1 /* Forward */ : -1 /* Reverse */;
777
777
  speed.x = acceleration * Math.abs(
778
778
  (scrollContainerRect.left + threshold2.width - x) / threshold2.width
779
779
  );
package/utilities.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["src/utilities/bounding-rectangle/getBoundingRectangle.ts","src/utilities/execution-context/canUseDOM.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/scheduling/timeout.ts","src/utilities/scheduling/throttle.ts","src/utilities/bounding-rectangle/isRectEqual.ts","src/utilities/bounding-rectangle/isOverflowVisible.ts","src/utilities/bounding-rectangle/getVisibleBoundingRectangle.ts","src/utilities/bounding-rectangle/isVisible.ts","src/utilities/bounding-rectangle/PositionObserver.ts","src/utilities/execution-context/isSafari.ts","src/utilities/element/cloneElement.ts","src/utilities/element/getElementFromPoint.ts","src/utilities/element/proxiedElements.ts","src/utilities/event-listeners/Listeners.ts","src/utilities/popover/supportsPopover.ts","src/utilities/popover/showPopover.ts","src/utilities/scroll/documentScrollingElement.ts","src/utilities/scroll/getScrollPosition.ts","src/utilities/scroll/canScroll.ts","src/utilities/styles/getComputedStyles.ts","src/utilities/scroll/isFixed.ts","src/utilities/scroll/isScrollable.ts","src/utilities/scroll/getScrollableAncestors.ts","src/utilities/frame/getFrameElement.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/scheduling/scheduler.ts","src/utilities/transform/inverseTransform.ts","src/utilities/transform/animateTransform.ts","src/utilities/type-guards/isKeyframeEffect.ts","src/utilities/transform/computeTranslate.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/misc/generateUniqueId.ts"],"names":["document","target","window","ScrollDirection","Rectangle","threshold","scheduler","animations","keyframe","translate"],"mappings":"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","file":"utilities.js","sourcesContent":["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","// 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","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/index.ts';\n\n/**\n * Returns the bounding rectangle of the viewport\n * @param element\n * @returns BoundingRectangle\n */\nexport function getViewportBoundingRectangle(\n element: Element\n): BoundingRectangle {\n const {documentElement} = getDocument(element);\n const width = documentElement.clientWidth;\n const height = documentElement.clientHeight;\n\n return {\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n width,\n height,\n };\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","/*\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 viewport (window)\n const viewportWidth = ownerWindow.innerWidth;\n const viewportHeight = ownerWindow.innerHeight;\n const viewportMarginY = margin * viewportHeight;\n const viewportMarginX = margin * viewportWidth;\n\n rect = {\n top: Math.max(rect.top, 0 - viewportMarginY),\n right: Math.min(rect.right, viewportWidth + viewportMarginX),\n bottom: Math.min(rect.bottom, viewportHeight + viewportMarginY),\n left: Math.max(rect.left, 0 - 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 {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 {BoundingRectangle, Rectangle} from '@dnd-kit/geometry';\n\nimport {throttle} from '../scheduling/throttle.ts';\n\nimport {isRectEqual} from './isRectEqual.ts';\nimport {isVisible} from './isVisible.ts';\nimport {getVisibleBoundingRectangle} from './getVisibleBoundingRectangle.ts';\n\ntype PositionObserverCallback = (\n boundingClientRect: BoundingRectangle | null\n) => void;\n\nconst threshold = Array.from({length: 100}, (_, index) => index / 100);\nconst THROTTLE_INTERVAL = 75;\n\nexport class PositionObserver {\n constructor(\n private element: Element,\n callback: PositionObserverCallback,\n options: {debug?: boolean} = {debug: false}\n ) {\n this.#callback = callback;\n this.boundingClientRect = element.getBoundingClientRect();\n this.#visible = isVisible(element, this.boundingClientRect);\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 ResizeObserver(this.#observePosition);\n this.#resizeObserver.observe(element);\n }\n },\n {\n threshold,\n root,\n }\n );\n\n if (this.#visible) {\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 #callback: PositionObserverCallback;\n #visible = true;\n #previousBoundingClientRect: DOMRectReadOnly | undefined;\n #resizeObserver: ResizeObserver | 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 = Rectangle.intersectionRatio(\n intersectionRect,\n visibleRect\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","export function isSafari() {\n return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\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 document: Document,\n {x, y}: Coordinates\n): Element | null {\n const element = document.elementFromPoint(x, y);\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 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, input: EventListenerInput) {\n const listeners = Array.isArray(input) ? input : [input];\n const entries: EventListenerEntry[] = [];\n\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 return function cleanup() {\n for (const [target, {type, listener, options}] of entries) {\n target.removeEventListener(type, listener, options);\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 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 if (\n supportsPopover(element) &&\n element.isConnected &&\n element.hasAttribute('popover')\n ) {\n element.showPopover();\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 dimensions = isDocumentScrollingElement(scrollableElement)\n ? {\n height: window.innerHeight,\n 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","import {getWindow} from '../execution-context/getWindow.ts';\n\nexport function getComputedStyles(element: Element) {\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)\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)\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';\n\ninterface Options {\n limit?: number;\n excludeElement?: boolean;\n}\n\nconst defaultOptions: Options = {\n excludeElement: true,\n};\n\nexport function getScrollableAncestors(\n element: Node | null,\n options: Options = defaultOptions\n): Set<Element> {\n const {limit, excludeElement} = 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 (!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);\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","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 return 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';\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 = frame.getBoundingClientRect();\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 = element.getBoundingClientRect()\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);\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 === '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 === '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);\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 (!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 (!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 (!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.Forward\n : ScrollDirection.Reverse;\n speed.x =\n acceleration *\n Math.abs(\n (scrollContainerRect.right - threshold.width - x) / threshold.width\n );\n } else if (\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.Reverse\n : ScrollDirection.Forward;\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 {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {isHTMLElement} from '../type-guards/isHTMLElement.ts';\nimport {getFirstScrollableAncestor} from './getScrollableAncestors.ts';\n\nfunction supportsScrollIntoViewIfNeeded(\n element: Element\n): element is Element & {\n scrollIntoViewIfNeeded: (centerIfNeeded?: boolean) => void;\n} {\n return (\n 'scrollIntoViewIfNeeded' in element &&\n typeof element.scrollIntoViewIfNeeded === 'function'\n );\n}\n\nexport function scrollIntoViewIfNeeded(el: Element, centerIfNeeded = false) {\n if (supportsScrollIntoViewIfNeeded(el)) {\n el.scrollIntoViewIfNeeded(centerIfNeeded);\n return;\n }\n\n if (!isHTMLElement(el)) {\n return el.scrollIntoView();\n }\n\n var parent = getFirstScrollableAncestor(el);\n\n if (!isHTMLElement(parent)) {\n return;\n }\n\n const parentComputedStyle = getComputedStyles(parent),\n parentBorderTopWidth = parseInt(\n parentComputedStyle.getPropertyValue('border-top-width')\n ),\n parentBorderLeftWidth = parseInt(\n parentComputedStyle.getPropertyValue('border-left-width')\n ),\n overTop = el.offsetTop - parent.offsetTop < parent.scrollTop,\n overBottom =\n el.offsetTop - parent.offsetTop + el.clientHeight - parentBorderTopWidth >\n parent.scrollTop + parent.clientHeight,\n overLeft = el.offsetLeft - parent.offsetLeft < parent.scrollLeft,\n overRight =\n el.offsetLeft -\n parent.offsetLeft +\n el.clientWidth -\n parentBorderLeftWidth >\n parent.scrollLeft + parent.clientWidth,\n alignWithTop = overTop && !overBottom;\n\n if ((overTop || overBottom) && centerIfNeeded) {\n parent.scrollTop =\n el.offsetTop -\n parent.offsetTop -\n parent.clientHeight / 2 -\n parentBorderTopWidth +\n el.clientHeight / 2;\n }\n\n if ((overLeft || overRight) && centerIfNeeded) {\n parent.scrollLeft =\n el.offsetLeft -\n parent.offsetLeft -\n parent.clientWidth / 2 -\n parentBorderLeftWidth +\n el.clientWidth / 2;\n }\n\n if ((overTop || overBottom || overLeft || overRight) && !centerIfNeeded) {\n el.scrollIntoView(alignWithTop);\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 requestAnimationFrame(callback)\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","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 {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {isKeyframeEffect} from '../type-guards/isKeyframeEffect.ts';\n\nimport {parseTranslate} from './parseTranslate.ts';\n\nfunction getFinalKeyframe(\n element: Element,\n match: (keyframe: Keyframe) => boolean\n): Keyframe | null {\n const animations = element.getAnimations();\n\n if (animations.length > 0) {\n for (const animation of animations) {\n const {effect} = animation;\n const keyframes = isKeyframeEffect(effect) ? effect.getKeyframes() : [];\n const matchedKeyframes = keyframes.filter(match);\n\n if (matchedKeyframes.length > 0) {\n return matchedKeyframes[matchedKeyframes.length - 1];\n }\n }\n }\n\n return null;\n}\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;\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 {Rectangle, type BoundingRectangle} from '@dnd-kit/geometry';\n\nimport {Scheduler} from '../scheduling/scheduler.ts';\nimport {isSafari} from '../execution-context/isSafari.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';\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 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 resetAnimations?.();\n\n const projectedTransform = getProjectedTransform(element);\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) {\n top = top + projectedTransform.y;\n left = left + projectedTransform.x;\n width = width * projectedTransform.scaleX;\n height = height * projectedTransform.scaleY;\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 its final keyframe\n */\nfunction getProjectedTransform(element: Element): Transform | null {\n const animations = getAnimations(element);\n let projectedTransform: Transform | null = null;\n\n if (!animations.length) return null;\n\n for (const animation of animations) {\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 (transform || translate || scale) {\n const parsedTransform = parseTransform({\n transform: typeof transform === 'string' ? transform : '',\n translate: typeof translate === 'string' ? translate : '',\n scale: typeof scale === 'string' ? scale : '',\n });\n\n if (parsedTransform) {\n projectedTransform = projectedTransform\n ? {\n x: projectedTransform.x + parsedTransform.x,\n y: projectedTransform.y + parsedTransform.y,\n z: projectedTransform.z ?? parsedTransform.z,\n scaleX: projectedTransform.scaleX * parsedTransform.scaleX,\n scaleY: projectedTransform.scaleY * parsedTransform.scaleY,\n }\n : parsedTransform;\n }\n }\n }\n\n return projectedTransform;\n}\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\nfunction getAnimations(target: Element | Document): Animation[] {\n const cachedAnimations = animations.get(target);\n\n if (cachedAnimations) return cachedAnimations;\n\n return target.getAnimations();\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 */\nfunction forceFinishAnimations(element: Element): (() => void) | undefined {\n const animations = getDocumentAnimations(element)\n .filter((animation) => {\n if (isKeyframeEffect(animation.effect)) {\n const {target} = animation.effect;\n const isValidTarget = target && (isSafari() || target !== element);\n\n if (isValidTarget && target.contains(element)) {\n return animation.effect.getKeyframes().some((keyframe) => {\n const {transform, translate, scale, width, height} = keyframe;\n\n return transform || translate || scale || width || height;\n });\n }\n }\n })\n .map((animation) => {\n const {effect, currentTime} = animation;\n const duration = effect?.getComputedTiming().duration;\n\n if (animation.pending) 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","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","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"]}
1
+ {"version":3,"sources":["src/utilities/bounding-rectangle/getBoundingRectangle.ts","src/utilities/execution-context/canUseDOM.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/scheduling/timeout.ts","src/utilities/scheduling/throttle.ts","src/utilities/bounding-rectangle/isRectEqual.ts","src/utilities/bounding-rectangle/isOverflowVisible.ts","src/utilities/bounding-rectangle/getVisibleBoundingRectangle.ts","src/utilities/bounding-rectangle/isVisible.ts","src/utilities/bounding-rectangle/PositionObserver.ts","src/utilities/execution-context/isSafari.ts","src/utilities/element/cloneElement.ts","src/utilities/element/getElementFromPoint.ts","src/utilities/element/proxiedElements.ts","src/utilities/event-listeners/Listeners.ts","src/utilities/popover/supportsPopover.ts","src/utilities/popover/showPopover.ts","src/utilities/scroll/documentScrollingElement.ts","src/utilities/scroll/getScrollPosition.ts","src/utilities/scroll/canScroll.ts","src/utilities/styles/getComputedStyles.ts","src/utilities/scroll/isFixed.ts","src/utilities/scroll/isScrollable.ts","src/utilities/scroll/getScrollableAncestors.ts","src/utilities/frame/getFrameElement.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/scheduling/scheduler.ts","src/utilities/transform/inverseTransform.ts","src/utilities/transform/animateTransform.ts","src/utilities/type-guards/isKeyframeEffect.ts","src/utilities/transform/computeTranslate.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/misc/generateUniqueId.ts"],"names":["document","target","window","ScrollDirection","Rectangle","threshold","scheduler","animations","keyframe","translate"],"mappings":"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","file":"utilities.js","sourcesContent":["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","// 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","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/index.ts';\n\n/**\n * Returns the bounding rectangle of the viewport\n * @param element\n * @returns BoundingRectangle\n */\nexport function getViewportBoundingRectangle(\n element: Element\n): BoundingRectangle {\n const {documentElement} = getDocument(element);\n const width = documentElement.clientWidth;\n const height = documentElement.clientHeight;\n\n return {\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n width,\n height,\n };\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","/*\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 viewport (window)\n const viewportWidth = ownerWindow.innerWidth;\n const viewportHeight = ownerWindow.innerHeight;\n const viewportMarginY = margin * viewportHeight;\n const viewportMarginX = margin * viewportWidth;\n\n rect = {\n top: Math.max(rect.top, 0 - viewportMarginY),\n right: Math.min(rect.right, viewportWidth + viewportMarginX),\n bottom: Math.min(rect.bottom, viewportHeight + viewportMarginY),\n left: Math.max(rect.left, 0 - 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 {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 {BoundingRectangle, Rectangle} from '@dnd-kit/geometry';\n\nimport {throttle} from '../scheduling/throttle.ts';\n\nimport {isRectEqual} from './isRectEqual.ts';\nimport {isVisible} from './isVisible.ts';\nimport {getVisibleBoundingRectangle} from './getVisibleBoundingRectangle.ts';\n\ntype PositionObserverCallback = (\n boundingClientRect: BoundingRectangle | null\n) => void;\n\nconst threshold = Array.from({length: 100}, (_, index) => index / 100);\nconst THROTTLE_INTERVAL = 75;\n\nexport class PositionObserver {\n constructor(\n private element: Element,\n callback: PositionObserverCallback,\n options: {debug?: boolean} = {debug: false}\n ) {\n this.#callback = callback;\n this.boundingClientRect = element.getBoundingClientRect();\n this.#visible = isVisible(element, this.boundingClientRect);\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 ResizeObserver(this.#observePosition);\n this.#resizeObserver.observe(element);\n }\n },\n {\n threshold,\n root,\n }\n );\n\n if (this.#visible) {\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 #callback: PositionObserverCallback;\n #visible = true;\n #previousBoundingClientRect: DOMRectReadOnly | undefined;\n #resizeObserver: ResizeObserver | 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 = Rectangle.intersectionRatio(\n intersectionRect,\n visibleRect\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","export function isSafari() {\n return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\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 document: Document,\n {x, y}: Coordinates\n): Element | null {\n const element = document.elementFromPoint(x, y);\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 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, input: EventListenerInput) {\n const listeners = Array.isArray(input) ? input : [input];\n const entries: EventListenerEntry[] = [];\n\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 return function cleanup() {\n for (const [target, {type, listener, options}] of entries) {\n target.removeEventListener(type, listener, options);\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 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 if (\n supportsPopover(element) &&\n element.isConnected &&\n element.hasAttribute('popover')\n ) {\n element.showPopover();\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 dimensions = isDocumentScrollingElement(scrollableElement)\n ? {\n height: window.innerHeight,\n 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","import {getWindow} from '../execution-context/getWindow.ts';\n\nexport function getComputedStyles(element: Element) {\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)\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)\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';\n\ninterface Options {\n limit?: number;\n excludeElement?: boolean;\n}\n\nconst defaultOptions: Options = {\n excludeElement: true,\n};\n\nexport function getScrollableAncestors(\n element: Node | null,\n options: Options = defaultOptions\n): Set<Element> {\n const {limit, excludeElement} = 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 (!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);\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","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 return 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';\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 = frame.getBoundingClientRect();\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 = element.getBoundingClientRect()\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);\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 === '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 === '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);\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 (!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 (!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 (!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 (!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 {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {isHTMLElement} from '../type-guards/isHTMLElement.ts';\nimport {getFirstScrollableAncestor} from './getScrollableAncestors.ts';\n\nfunction supportsScrollIntoViewIfNeeded(\n element: Element\n): element is Element & {\n scrollIntoViewIfNeeded: (centerIfNeeded?: boolean) => void;\n} {\n return (\n 'scrollIntoViewIfNeeded' in element &&\n typeof element.scrollIntoViewIfNeeded === 'function'\n );\n}\n\nexport function scrollIntoViewIfNeeded(el: Element, centerIfNeeded = false) {\n if (supportsScrollIntoViewIfNeeded(el)) {\n el.scrollIntoViewIfNeeded(centerIfNeeded);\n return;\n }\n\n if (!isHTMLElement(el)) {\n return el.scrollIntoView();\n }\n\n var parent = getFirstScrollableAncestor(el);\n\n if (!isHTMLElement(parent)) {\n return;\n }\n\n const parentComputedStyle = getComputedStyles(parent),\n parentBorderTopWidth = parseInt(\n parentComputedStyle.getPropertyValue('border-top-width')\n ),\n parentBorderLeftWidth = parseInt(\n parentComputedStyle.getPropertyValue('border-left-width')\n ),\n overTop = el.offsetTop - parent.offsetTop < parent.scrollTop,\n overBottom =\n el.offsetTop - parent.offsetTop + el.clientHeight - parentBorderTopWidth >\n parent.scrollTop + parent.clientHeight,\n overLeft = el.offsetLeft - parent.offsetLeft < parent.scrollLeft,\n overRight =\n el.offsetLeft -\n parent.offsetLeft +\n el.clientWidth -\n parentBorderLeftWidth >\n parent.scrollLeft + parent.clientWidth,\n alignWithTop = overTop && !overBottom;\n\n if ((overTop || overBottom) && centerIfNeeded) {\n parent.scrollTop =\n el.offsetTop -\n parent.offsetTop -\n parent.clientHeight / 2 -\n parentBorderTopWidth +\n el.clientHeight / 2;\n }\n\n if ((overLeft || overRight) && centerIfNeeded) {\n parent.scrollLeft =\n el.offsetLeft -\n parent.offsetLeft -\n parent.clientWidth / 2 -\n parentBorderLeftWidth +\n el.clientWidth / 2;\n }\n\n if ((overTop || overBottom || overLeft || overRight) && !centerIfNeeded) {\n el.scrollIntoView(alignWithTop);\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 requestAnimationFrame(callback)\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","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 {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {isKeyframeEffect} from '../type-guards/isKeyframeEffect.ts';\n\nimport {parseTranslate} from './parseTranslate.ts';\n\nfunction getFinalKeyframe(\n element: Element,\n match: (keyframe: Keyframe) => boolean\n): Keyframe | null {\n const animations = element.getAnimations();\n\n if (animations.length > 0) {\n for (const animation of animations) {\n const {effect} = animation;\n const keyframes = isKeyframeEffect(effect) ? effect.getKeyframes() : [];\n const matchedKeyframes = keyframes.filter(match);\n\n if (matchedKeyframes.length > 0) {\n return matchedKeyframes[matchedKeyframes.length - 1];\n }\n }\n }\n\n return null;\n}\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;\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 {Rectangle, type BoundingRectangle} from '@dnd-kit/geometry';\n\nimport {Scheduler} from '../scheduling/scheduler.ts';\nimport {isSafari} from '../execution-context/isSafari.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';\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 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 resetAnimations?.();\n\n const projectedTransform = getProjectedTransform(element);\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) {\n top = top + projectedTransform.y;\n left = left + projectedTransform.x;\n width = width * projectedTransform.scaleX;\n height = height * projectedTransform.scaleY;\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 its final keyframe\n */\nfunction getProjectedTransform(element: Element): Transform | null {\n const animations = getAnimations(element);\n let projectedTransform: Transform | null = null;\n\n if (!animations.length) return null;\n\n for (const animation of animations) {\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 (transform || translate || scale) {\n const parsedTransform = parseTransform({\n transform: typeof transform === 'string' ? transform : '',\n translate: typeof translate === 'string' ? translate : '',\n scale: typeof scale === 'string' ? scale : '',\n });\n\n if (parsedTransform) {\n projectedTransform = projectedTransform\n ? {\n x: projectedTransform.x + parsedTransform.x,\n y: projectedTransform.y + parsedTransform.y,\n z: projectedTransform.z ?? parsedTransform.z,\n scaleX: projectedTransform.scaleX * parsedTransform.scaleX,\n scaleY: projectedTransform.scaleY * parsedTransform.scaleY,\n }\n : parsedTransform;\n }\n }\n }\n\n return projectedTransform;\n}\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\nfunction getAnimations(target: Element | Document): Animation[] {\n const cachedAnimations = animations.get(target);\n\n if (cachedAnimations) return cachedAnimations;\n\n return target.getAnimations();\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 */\nfunction forceFinishAnimations(element: Element): (() => void) | undefined {\n const animations = getDocumentAnimations(element)\n .filter((animation) => {\n if (isKeyframeEffect(animation.effect)) {\n const {target} = animation.effect;\n const isValidTarget = target && (isSafari() || target !== element);\n\n if (isValidTarget && target.contains(element)) {\n return animation.effect.getKeyframes().some((keyframe) => {\n const {transform, translate, scale, width, height} = keyframe;\n\n return transform || translate || scale || width || height;\n });\n }\n }\n })\n .map((animation) => {\n const {effect, currentTime} = animation;\n const duration = effect?.getComputedTiming().duration;\n\n if (animation.pending) 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","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","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"]}