@dnd-kit/dom 0.1.16 → 0.1.17
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 +5 -5
- package/utilities.cjs +12 -4
- package/utilities.cjs.map +1 -1
- package/utilities.js +12 -4
- package/utilities.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dnd-kit/dom",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.17",
|
|
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.
|
|
78
|
-
"@dnd-kit/collision": "^0.1.
|
|
79
|
-
"@dnd-kit/geometry": "^0.1.
|
|
80
|
-
"@dnd-kit/state": "^0.1.
|
|
77
|
+
"@dnd-kit/abstract": "^0.1.17",
|
|
78
|
+
"@dnd-kit/collision": "^0.1.17",
|
|
79
|
+
"@dnd-kit/geometry": "^0.1.17",
|
|
80
|
+
"@dnd-kit/state": "^0.1.17",
|
|
81
81
|
"tslib": "^2.6.2"
|
|
82
82
|
},
|
|
83
83
|
"devDependencies": {
|
package/utilities.cjs
CHANGED
|
@@ -601,15 +601,23 @@ function supportsPopover(element) {
|
|
|
601
601
|
|
|
602
602
|
// src/utilities/popover/showPopover.ts
|
|
603
603
|
function showPopover(element) {
|
|
604
|
-
|
|
605
|
-
element.
|
|
604
|
+
try {
|
|
605
|
+
if (supportsPopover(element) && element.isConnected && element.hasAttribute("popover") && // This selector can throw an error in browsers that don't support it
|
|
606
|
+
!element.matches(":popover-open")) {
|
|
607
|
+
element.showPopover();
|
|
608
|
+
}
|
|
609
|
+
} catch (error) {
|
|
606
610
|
}
|
|
607
611
|
}
|
|
608
612
|
|
|
609
613
|
// src/utilities/popover/hidePopover.ts
|
|
610
614
|
function hidePopover(element) {
|
|
611
|
-
|
|
612
|
-
element.
|
|
615
|
+
try {
|
|
616
|
+
if (supportsPopover(element) && element.isConnected && element.hasAttribute("popover") && // This selector can throw an error in browsers that don't support it
|
|
617
|
+
element.matches(":popover-open")) {
|
|
618
|
+
element.hidePopover();
|
|
619
|
+
}
|
|
620
|
+
} catch (error) {
|
|
613
621
|
}
|
|
614
622
|
}
|
|
615
623
|
|
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/bounding-rectangle/isOverflowVisible.ts","src/utilities/bounding-rectangle/getVisibleBoundingRectangle.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/frame/getFrameElement.ts","src/utilities/frame/getFrameElements.ts","src/utilities/scheduling/timeout.ts","src/utilities/scheduling/throttle.ts","src/utilities/bounding-rectangle/isRectEqual.ts","src/utilities/bounding-rectangle/isVisible.ts","src/utilities/observers/ResizeNotifier.ts","src/utilities/observers/PositionObserver.ts","src/utilities/observers/FrameObserver.ts","src/utilities/popover/supportsPopover.ts","src/utilities/popover/showPopover.ts","src/utilities/popover/hidePopover.ts","src/utilities/scroll/documentScrollingElement.ts","src/utilities/scroll/getScrollPosition.ts","src/utilities/scroll/canScroll.ts","src/utilities/scheduling/scheduler.ts","src/utilities/styles/getComputedStyles.ts","src/utilities/scroll/isFixed.ts","src/utilities/scroll/isScrollable.ts","src/utilities/scroll/getScrollableAncestors.ts","src/utilities/frame/getFrameTransform.ts","src/utilities/transform/parseScale.ts","src/utilities/transform/parseTranslate.ts","src/utilities/transform/parseTransform.ts","src/utilities/scroll/detectScrollIntent.ts","src/utilities/scroll/scrollIntoViewIfNeeded.ts","src/utilities/transform/applyTransform.ts","src/utilities/transform/inverseTransform.ts","src/utilities/transform/animateTransform.ts","src/utilities/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/type-guards/isTextInput.ts","src/utilities/misc/generateUniqueId.ts"],"names":["document","target","Rectangle","cached","callback","listeners","_disconnected","window","scheduler","ScrollDirection","threshold","animations","keyframe","translate","clear"],"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","/*\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","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 getFrameElement(el: Element | undefined) {\n const refWindow = el?.ownerDocument.defaultView;\n\n if (refWindow && refWindow.self !== refWindow.parent) {\n return refWindow.frameElement;\n }\n}\n","import {getFrameElement} from './getFrameElement.ts';\n\nexport function getFrameElements(el: Element | undefined) {\n const frames = new Set<Element>();\n let frame = getFrameElement(el);\n\n while (frame) {\n frames.add(frame);\n frame = getFrameElement(frame);\n }\n\n return frames;\n}\n","export function timeout(callback: () => void, duration: number): () => void {\n const id = setTimeout(callback, duration);\n\n return () => clearTimeout(id);\n}\n","import {timeout} from './timeout.ts';\n\nexport function throttle<T extends (...args: any[]) => any>(\n func: T,\n limit: number\n): (...args: Parameters<T>) => void {\n const time = () => performance.now();\n let cancel: () => void | undefined;\n let lastRan: number;\n\n return function (this: any, ...args: Parameters<T>) {\n const context = this;\n if (!lastRan) {\n func.apply(context, args);\n lastRan = time();\n } else {\n cancel?.();\n cancel = timeout(\n () => {\n func.apply(context, args);\n lastRan = time();\n },\n limit - (time() - lastRan)\n );\n }\n };\n}\n","import type {BoundingRectangle} from '@dnd-kit/geometry';\n\nexport function isRectEqual(\n a: BoundingRectangle | undefined,\n b: BoundingRectangle | undefined\n) {\n if (a === b) return true;\n if (!a || !b) return false;\n\n return (\n a.top == b.top &&\n a.left == b.left &&\n a.right == b.right &&\n a.bottom == b.bottom\n );\n}\n","import {getVisibleBoundingRectangle} from './getVisibleBoundingRectangle.ts';\n\nexport function isVisible(\n element: Element,\n boundingClientRect = element.getBoundingClientRect()\n): boolean {\n const {width, height} = getVisibleBoundingRectangle(\n element,\n boundingClientRect\n );\n\n return width > 0 && height > 0;\n}\n","import {canUseDOM} from '../execution-context/canUseDOM.ts';\n\nconst Observer = canUseDOM\n ? ResizeObserver\n : class MockResizeObserver implements ResizeObserver {\n observe() {}\n unobserve() {}\n disconnect() {}\n };\n\nexport class ResizeNotifier extends Observer {\n #initialized = false;\n\n constructor(callback: ResizeObserverCallback) {\n super((entries) => {\n if (!this.#initialized) {\n this.#initialized = true;\n return;\n }\n callback(entries, this);\n });\n }\n}\n","import {BoundingRectangle, Rectangle} from '@dnd-kit/geometry';\n\nimport {throttle} from '../scheduling/throttle.ts';\n\nimport {isRectEqual} from '../bounding-rectangle/isRectEqual.ts';\nimport {isVisible} from '../bounding-rectangle/isVisible.ts';\nimport {getVisibleBoundingRectangle} from '../bounding-rectangle/getVisibleBoundingRectangle.ts';\n\nimport {ResizeNotifier} from './ResizeNotifier.ts';\n\nexport type PositionObserverCallback = (\n boundingClientRect: BoundingRectangle | null\n) => void;\n\nconst threshold = Array.from({length: 100}, (_, index) => index / 100);\nexport const THROTTLE_INTERVAL = 75;\n\nexport class PositionObserver {\n constructor(\n public element: Element,\n public callback: PositionObserverCallback,\n options: {debug?: boolean; skipInitial?: boolean} = {\n debug: false,\n skipInitial: false,\n }\n ) {\n this.boundingClientRect = element.getBoundingClientRect();\n this.#visible = isVisible(element, this.boundingClientRect);\n\n let initial = true;\n this.callback = (boundingClientRect) => {\n if (initial) {\n initial = false;\n if (options.skipInitial) return;\n }\n\n callback(boundingClientRect);\n };\n\n const root = element.ownerDocument;\n\n if (options?.debug) {\n this.#debug = document.createElement('div');\n this.#debug.style.background = 'rgba(0,0,0,0.15)';\n this.#debug.style.position = 'fixed';\n this.#debug.style.pointerEvents = 'none';\n root.body.appendChild(this.#debug);\n }\n\n this.#visibilityObserver = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n const entry = entries[entries.length - 1];\n const {boundingClientRect, isIntersecting: visible} = entry;\n const {width, height} = boundingClientRect;\n const previousVisible = this.#visible;\n\n this.#visible = visible;\n\n if (!width && !height) return;\n\n if (previousVisible && !visible) {\n this.#positionObserver?.disconnect();\n this.callback(null);\n this.#resizeObserver?.disconnect();\n this.#resizeObserver = undefined;\n\n if (this.#debug) this.#debug.style.visibility = 'hidden';\n } else {\n this.#observePosition();\n }\n\n if (visible && !this.#resizeObserver) {\n this.#resizeObserver = new ResizeNotifier(this.#observePosition);\n this.#resizeObserver.observe(element);\n }\n },\n {\n threshold,\n root,\n }\n );\n\n if (this.#visible && !options.skipInitial) {\n this.callback(this.boundingClientRect);\n }\n\n this.#visibilityObserver.observe(element);\n }\n\n public boundingClientRect: DOMRectReadOnly;\n\n public disconnect = () => {\n this.#disconnected = true;\n this.#resizeObserver?.disconnect();\n this.#positionObserver?.disconnect();\n this.#visibilityObserver.disconnect();\n this.#debug?.remove();\n };\n\n #visible = true;\n #previousBoundingClientRect: DOMRectReadOnly | undefined;\n #resizeObserver: ResizeNotifier | undefined;\n #positionObserver: IntersectionObserver | undefined;\n #visibilityObserver: IntersectionObserver;\n #debug: HTMLElement | undefined;\n #disconnected = false;\n\n #observePosition = throttle(() => {\n const {element} = this;\n\n this.#positionObserver?.disconnect();\n\n if (this.#disconnected || !this.#visible || !element.isConnected) {\n return;\n }\n\n const root = element.ownerDocument ?? document;\n const {innerHeight, innerWidth} = root.defaultView ?? window;\n const clientRect = element.getBoundingClientRect();\n const visibleRect = getVisibleBoundingRectangle(element, clientRect);\n const {top, left, bottom, right} = visibleRect;\n const insetTop = -Math.floor(top);\n const insetLeft = -Math.floor(left);\n const insetRight = -Math.floor(innerWidth - right);\n const insetBottom = -Math.floor(innerHeight - bottom);\n const rootMargin = `${insetTop}px ${insetRight}px ${insetBottom}px ${insetLeft}px`;\n\n this.boundingClientRect = clientRect;\n this.#positionObserver = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n const [entry] = entries;\n const {intersectionRect} = entry;\n /*\n * The intersection ratio returned by the intersection observer entry\n * represents the ratio of the intersectionRect to the boundingClientRect,\n * which is not what we want. We want the ratio of the intersectionRect\n * to the rootBounds (visible rect).\n */\n const intersectionRatio =\n entry.intersectionRatio !== 1\n ? entry.intersectionRatio\n : Rectangle.intersectionRatio(\n intersectionRect,\n getVisibleBoundingRectangle(element)\n );\n\n if (intersectionRatio !== 1) {\n this.#observePosition();\n }\n },\n {\n threshold,\n rootMargin,\n root,\n }\n );\n\n this.#positionObserver.observe(element);\n this.#notify();\n }, THROTTLE_INTERVAL);\n\n #notify() {\n if (this.#disconnected) return;\n\n this.#updateDebug();\n\n if (isRectEqual(this.boundingClientRect, this.#previousBoundingClientRect))\n return;\n\n this.callback(this.boundingClientRect);\n this.#previousBoundingClientRect = this.boundingClientRect;\n }\n\n #updateDebug() {\n if (this.#debug) {\n const {top, left, width, height} = getVisibleBoundingRectangle(\n this.element\n );\n\n this.#debug.style.overflow = 'hidden';\n this.#debug.style.visibility = 'visible';\n this.#debug.style.top = `${Math.floor(top)}px`;\n this.#debug.style.left = `${Math.floor(left)}px`;\n this.#debug.style.width = `${Math.floor(width)}px`;\n this.#debug.style.height = `${Math.floor(height)}px`;\n }\n }\n}\n","import {getFrameElements} from '../frame/getFrameElements.ts';\nimport {throttle} from '../scheduling/throttle.ts';\nimport {\n PositionObserver,\n THROTTLE_INTERVAL,\n type PositionObserverCallback,\n} from './PositionObserver.ts';\n\nconst framePositionObservers = new WeakMap<\n Element,\n {\n disconnect: () => void;\n callbacks: Set<PositionObserverCallback>;\n }\n>();\n\nconst scrollListeners = new WeakMap<\n Document,\n {\n disconnect: () => void;\n listeners: Set<EventListener>;\n }\n>();\n\nfunction addFrameListener(frame: Element, callback: PositionObserverCallback) {\n // Check if already observed globally\n let cached = framePositionObservers.get(frame);\n\n if (!cached) {\n const observer = new PositionObserver(\n frame,\n (boundingClientRect) => {\n const cached = framePositionObservers.get(frame);\n if (!cached) return;\n\n cached.callbacks.forEach((callback) => callback(boundingClientRect));\n },\n {skipInitial: true}\n );\n\n cached = {disconnect: observer.disconnect, callbacks: new Set()};\n }\n\n cached.callbacks.add(callback);\n framePositionObservers.set(frame, cached);\n\n return () => {\n cached.callbacks.delete(callback);\n\n if (cached.callbacks.size === 0) {\n framePositionObservers.delete(frame);\n cached.disconnect();\n }\n };\n}\n\nfunction observeParentFrames(\n frames: Set<Element>,\n callback: PositionObserverCallback\n) {\n const cleanup = new Set<() => void>();\n\n for (const frame of frames) {\n const remove = addFrameListener(frame, callback);\n cleanup.add(remove);\n }\n\n return () => cleanup.forEach((remove) => remove());\n}\n\nfunction addScrollListener(element: Element, callback: EventListener) {\n const doc = element.ownerDocument;\n\n if (!scrollListeners.has(doc)) {\n const controller = new AbortController();\n const listeners = new Set<EventListener>();\n\n document.addEventListener(\n 'scroll',\n (event) => listeners.forEach((listener) => listener(event)),\n {\n capture: true,\n passive: true,\n signal: controller.signal,\n }\n );\n\n scrollListeners.set(doc, {disconnect: () => controller.abort(), listeners});\n }\n\n const {listeners, disconnect} = scrollListeners.get(doc) ?? {};\n\n if (!listeners || !disconnect) return () => {};\n\n listeners.add(callback);\n\n return () => {\n listeners.delete(callback);\n\n if (listeners.size === 0) {\n disconnect();\n scrollListeners.delete(doc);\n }\n };\n}\n\nexport class FrameObserver {\n #elementObserver: PositionObserver;\n #disconnected = false;\n #frames: Set<Element>;\n\n constructor(\n element: Element,\n private callback: PositionObserverCallback,\n options?: {debug?: boolean}\n ) {\n const frames = getFrameElements(element);\n const unobserveParentFrames = observeParentFrames(frames, callback);\n const removeScrollListener = addScrollListener(element, this.#handleScroll);\n\n this.#frames = frames;\n this.#elementObserver = new PositionObserver(element, callback, options);\n this.disconnect = () => {\n if (this.#disconnected) return;\n this.#disconnected = true;\n\n unobserveParentFrames();\n removeScrollListener();\n this.#elementObserver.disconnect();\n };\n }\n\n disconnect: () => void;\n\n #handleScroll = throttle((event: Event) => {\n if (this.#disconnected) return;\n if (!event.target) return;\n if (\n 'contains' in event.target &&\n typeof event.target.contains === 'function'\n ) {\n for (const frame of this.#frames) {\n if (event.target.contains(frame)) {\n this.callback(this.#elementObserver.boundingClientRect);\n break;\n }\n }\n }\n }, THROTTLE_INTERVAL);\n}\n","export function supportsPopover(element: Element): element is Element & {\n showPopover(): void;\n hidePopover(): void;\n} {\n return (\n 'showPopover' in element &&\n 'hidePopover' in element &&\n typeof element.showPopover === 'function' &&\n typeof element.hidePopover === 'function'\n );\n}\n","import {supportsPopover} from './supportsPopover.ts';\n\nexport function showPopover(element: Element) {\n if (\n supportsPopover(element) &&\n element.isConnected &&\n element.hasAttribute('popover') &&\n !element.matches(':popover-open')\n ) {\n element.showPopover();\n }\n}\n","import {supportsPopover} from './supportsPopover.ts';\n\nexport function hidePopover(element: Element) {\n if (\n supportsPopover(element) &&\n element.isConnected &&\n element.hasAttribute('popover') &&\n element.matches(':popover-open')\n ) {\n element.hidePopover();\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","type Callback = () => void;\n\nexport class Scheduler<T extends (callback: Callback) => any> {\n constructor(private scheduler: T) {}\n\n private pending: boolean = false;\n private tasks: Set<() => void> = new Set();\n private resolvers: Set<() => void> = new Set();\n\n public schedule(task: () => void): Promise<void> {\n this.tasks.add(task);\n\n if (!this.pending) {\n this.pending = true;\n this.scheduler(this.flush);\n }\n\n return new Promise<void>((resolve) => this.resolvers.add(resolve));\n }\n\n public flush = () => {\n const {tasks, resolvers} = this;\n\n this.pending = false;\n this.tasks = new Set();\n this.resolvers = new Set();\n\n for (const task of tasks) {\n task();\n }\n\n for (const resolve of resolvers) {\n resolve();\n }\n };\n}\n\nexport const scheduler = new Scheduler((callback) => {\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(callback);\n } else {\n callback();\n }\n});\n","import {getWindow} from '../execution-context/getWindow.ts';\nimport {Scheduler} from '../scheduling/scheduler.ts';\n\nconst scheduler = new Scheduler((callback) => setTimeout(callback, 50));\nconst cachedStyles = new Map<Element, CSSStyleDeclaration>();\nconst clear = cachedStyles.clear.bind(cachedStyles);\n\n/**\n * Get the computed styles for an element.\n * @param element - The element to get the computed styles for.\n * @param cached - Whether to cache the computed styles.\n * @returns The computed styles for the element.\n */\nexport function getComputedStyles(\n element: Element,\n cached = false\n): CSSStyleDeclaration {\n if (!cached) return computeStyles(element);\n\n let styles = cachedStyles.get(element);\n\n if (styles) return styles;\n\n styles = computeStyles(element);\n cachedStyles.set(element, styles);\n scheduler.schedule(clear);\n\n return styles;\n}\n\nfunction computeStyles(element: Element): CSSStyleDeclaration {\n return getWindow(element).getComputedStyle(element);\n}\n","import {getComputedStyles} from '../styles/getComputedStyles.ts';\n\nexport function isFixed(\n node: Element,\n computedStyle: CSSStyleDeclaration = getComputedStyles(node, true)\n): boolean {\n return (\n computedStyle.position === 'fixed' || computedStyle.position === 'sticky'\n );\n}\n","import {getComputedStyles} from '../styles/getComputedStyles.ts';\n\nexport function isScrollable(\n element: HTMLElement,\n computedStyle: CSSStyleDeclaration = getComputedStyles(element, true)\n): boolean {\n const overflowRegex = /(auto|scroll|overlay)/;\n const properties = ['overflow', 'overflowX', 'overflowY'];\n\n return properties.some((property) => {\n const value = computedStyle[property as keyof CSSStyleDeclaration];\n\n return typeof value === 'string' ? overflowRegex.test(value) : false;\n });\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\nimport {isDocument} from '../type-guards/isDocument.ts';\nimport {isHTMLElement} from '../type-guards/isHTMLElement.ts';\nimport {isSVGElement} from '../type-guards/isSVGElement.ts';\nimport {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {isFixed} from './isFixed.ts';\nimport {isScrollable} from './isScrollable.ts';\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, true);\n\n if (excludeElement && node === element) {\n // no-op\n } else if (isScrollable(node, computedStyle)) {\n scrollParents.add(node);\n }\n\n if (isFixed(node, computedStyle)) {\n const {scrollingElement} = node.ownerDocument;\n\n if (scrollingElement) scrollParents.add(scrollingElement);\n\n return scrollParents;\n }\n\n return findScrollableAncestors(node.parentNode);\n }\n\n if (!element) {\n return scrollParents;\n }\n\n return findScrollableAncestors(element);\n}\n\nexport function getFirstScrollableAncestor(node: Node | null): Element | null {\n const [firstScrollableAncestor] = getScrollableAncestors(node, {limit: 1});\n\n return firstScrollableAncestor ?? null;\n}\n","import {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {isHTMLElement} from '../type-guards/isHTMLElement.ts';\nimport type {Transform} from '../transform/index.ts';\n\nimport {getFrameElement} from './getFrameElement.ts';\nimport {getBoundingRectangle} from '../bounding-rectangle/getBoundingRectangle.ts';\n\nexport function getFrameTransform(\n el: Element | undefined,\n boundary: Element | null = window.frameElement\n): Transform {\n const transform: Transform = {\n x: 0,\n y: 0,\n scaleX: 1,\n scaleY: 1,\n };\n\n if (!el) return transform;\n\n let frame = getFrameElement(el);\n\n while (frame) {\n if (frame === boundary) {\n return transform;\n }\n\n const rect = getBoundingRectangle(frame);\n const {x: scaleX, y: scaleY} = getScale(frame, rect);\n\n transform.x = transform.x + rect.left;\n transform.y = transform.y + rect.top;\n transform.scaleX = transform.scaleX * scaleX;\n transform.scaleY = transform.scaleY * scaleY;\n\n frame = getFrameElement(frame);\n }\n\n return transform;\n}\n\nfunction getScale(\n element: Element,\n boundingRectangle = getBoundingRectangle(element)\n) {\n const width = Math.round(boundingRectangle.width);\n const height = Math.round(boundingRectangle.height);\n\n if (isHTMLElement(element)) {\n return {\n x: width / element.offsetWidth,\n y: height / element.offsetHeight,\n };\n }\n\n const styles = getComputedStyles(element, true);\n\n return {\n x: (parseFloat(styles.width) || width) / width,\n y: (parseFloat(styles.height) || height) / height,\n };\n}\n","export function parseScale(scale: string) {\n if (scale === '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, true);\n const parsedTransform = parseTransform(computedStyles);\n const isXAxisInverted =\n parsedTransform !== null ? parsedTransform?.scaleX < 0 : false;\n const isYAxisInverted =\n parsedTransform !== null ? parsedTransform?.scaleY < 0 : false;\n const scrollContainerRect = new Rectangle(\n rect.left * frameTransform.scaleX + frameTransform.x,\n rect.top * frameTransform.scaleY + frameTransform.y,\n rect.width * frameTransform.scaleX,\n rect.height * frameTransform.scaleY\n );\n const direction: Record<Axis, ScrollDirection> = {\n x: ScrollDirection.Idle,\n y: ScrollDirection.Idle,\n };\n const speed = {\n x: 0,\n y: 0,\n };\n const threshold = {\n height: scrollContainerRect.height * thresholdPercentage.y,\n width: scrollContainerRect.width * thresholdPercentage.x,\n };\n\n if (\n (!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, true),\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","import type {BoundingRectangle} from '@dnd-kit/geometry';\n\nimport {type Transform} from './parseTransform.ts';\n\nexport function applyTransform(\n rect: BoundingRectangle,\n parsedTransform: Transform,\n transformOrigin: string\n): BoundingRectangle {\n const {scaleX, scaleY, x: translateX, y: translateY} = parsedTransform;\n const x = rect.left + translateX + (1 - scaleX) * parseFloat(transformOrigin);\n const y =\n rect.top +\n translateY +\n (1 - scaleY) *\n parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n const w = scaleX ? rect.width * scaleX : rect.width;\n const h = scaleY ? rect.height * scaleY : rect.height;\n\n return {\n width: w,\n height: h,\n top: y,\n right: x + w,\n bottom: y + h,\n left: x,\n };\n}\n","import type {BoundingRectangle} from '@dnd-kit/geometry';\n\nimport {type Transform} from './parseTransform.ts';\n\nexport function inverseTransform(\n rect: BoundingRectangle,\n parsedTransform: Transform,\n transformOrigin: string\n): BoundingRectangle {\n const {scaleX, scaleY, x: translateX, y: translateY} = parsedTransform;\n const x = rect.left - translateX - (1 - scaleX) * parseFloat(transformOrigin);\n const y =\n rect.top -\n translateY -\n (1 - scaleY) *\n parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n const w = scaleX ? rect.width / scaleX : rect.width;\n const h = scaleY ? rect.height / scaleY : rect.height;\n\n return {\n width: w,\n height: h,\n top: y,\n right: x + w,\n bottom: y + h,\n left: x,\n };\n}\n","interface Arguments {\n element: Element;\n keyframes: PropertyIndexedKeyframes | Keyframe[];\n options: KeyframeAnimationOptions;\n}\n\nexport function animateTransform({element, keyframes, options}: Arguments) {\n return element.animate(keyframes, options).finished;\n}\n","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 {applyTransform} from '../transform/applyTransform.ts';\nimport {inverseTransform} from '../transform/inverseTransform.ts';\nimport {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {parseTransform, type Transform} from '../transform/index.ts';\nimport {getBoundingRectangle} from '../bounding-rectangle/getBoundingRectangle.ts';\nimport {getFrameTransform} from '../frame/getFrameTransform.ts';\nimport {isKeyframeEffect} from '../type-guards/isKeyframeEffect.ts';\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, computedStyles);\n\n if (parsedTransform) {\n updated = inverseTransform(\n boundingRectangle,\n parsedTransform,\n computedStyles.transformOrigin\n );\n\n if (ignoreTransforms || projectedTransform) {\n top = updated.top;\n left = updated.left;\n width = updated.width;\n height = updated.height;\n }\n }\n\n const intrinsic = {\n width: updated?.width ?? width,\n height: updated?.height ?? height,\n };\n\n if (projectedTransform && !ignoreTransforms && updated) {\n const projected = applyTransform(\n updated,\n projectedTransform,\n computedStyles.transformOrigin\n );\n\n top = projected.top;\n left = projected.left;\n width = projected.width;\n height = projected.height;\n scale.x = projectedTransform.scaleX;\n scale.y = projectedTransform.scaleY;\n }\n\n if (frameTransform) {\n if (!ignoreTransforms) {\n left *= frameTransform.scaleX;\n width *= frameTransform.scaleX;\n top *= frameTransform.scaleY;\n height *= frameTransform.scaleY;\n }\n\n left += frameTransform.x;\n top += frameTransform.y;\n }\n\n super(left, top, width, height);\n\n this.scale = scale;\n this.intrinsicWidth = intrinsic.width;\n this.intrinsicHeight = intrinsic.height;\n }\n\n public intrinsicWidth: number;\n public intrinsicHeight: number;\n}\n\n/*\n * Get the projected transform of an element based on its final keyframe\n */\nfunction getProjectedTransform(\n element: Element,\n computedStyles: CSSStyleDeclaration\n): Transform | null {\n // Always get the latest animations on the element itself\n const animations = element.getAnimations();\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:\n typeof transform === 'string' && transform\n ? transform\n : computedStyles.transform,\n translate:\n typeof translate === 'string' && translate\n ? translate\n : computedStyles.translate,\n scale:\n typeof scale === 'string' && scale ? scale : computedStyles.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","import {isElement} from './isElement.js';\n\nexport function isTextInput(target: EventTarget | null) {\n if (!isElement(target)) return false;\n\n const {tagName} = target;\n\n return (\n tagName === 'INPUT' || tagName === 'TEXTAREA' || isContentEditable(target)\n );\n}\n\nfunction isContentEditable(element: Element) {\n return (\n element.hasAttribute('contenteditable') &&\n element.getAttribute('contenteditable') !== 'false'\n );\n}\n","const ids: Record<string, number> = {};\n\nexport function generateUniqueId(prefix: string) {\n const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n ids[prefix] = id;\n\n return `${prefix}-${id}`;\n}\n"]}
|
|
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/bounding-rectangle/isOverflowVisible.ts","src/utilities/bounding-rectangle/getVisibleBoundingRectangle.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/frame/getFrameElement.ts","src/utilities/frame/getFrameElements.ts","src/utilities/scheduling/timeout.ts","src/utilities/scheduling/throttle.ts","src/utilities/bounding-rectangle/isRectEqual.ts","src/utilities/bounding-rectangle/isVisible.ts","src/utilities/observers/ResizeNotifier.ts","src/utilities/observers/PositionObserver.ts","src/utilities/observers/FrameObserver.ts","src/utilities/popover/supportsPopover.ts","src/utilities/popover/showPopover.ts","src/utilities/popover/hidePopover.ts","src/utilities/scroll/documentScrollingElement.ts","src/utilities/scroll/getScrollPosition.ts","src/utilities/scroll/canScroll.ts","src/utilities/scheduling/scheduler.ts","src/utilities/styles/getComputedStyles.ts","src/utilities/scroll/isFixed.ts","src/utilities/scroll/isScrollable.ts","src/utilities/scroll/getScrollableAncestors.ts","src/utilities/frame/getFrameTransform.ts","src/utilities/transform/parseScale.ts","src/utilities/transform/parseTranslate.ts","src/utilities/transform/parseTransform.ts","src/utilities/scroll/detectScrollIntent.ts","src/utilities/scroll/scrollIntoViewIfNeeded.ts","src/utilities/transform/applyTransform.ts","src/utilities/transform/inverseTransform.ts","src/utilities/transform/animateTransform.ts","src/utilities/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/type-guards/isTextInput.ts","src/utilities/misc/generateUniqueId.ts"],"names":["document","target","Rectangle","cached","callback","listeners","_disconnected","window","scheduler","ScrollDirection","threshold","animations","keyframe","translate","clear"],"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","/*\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","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 getFrameElement(el: Element | undefined) {\n const refWindow = el?.ownerDocument.defaultView;\n\n if (refWindow && refWindow.self !== refWindow.parent) {\n return refWindow.frameElement;\n }\n}\n","import {getFrameElement} from './getFrameElement.ts';\n\nexport function getFrameElements(el: Element | undefined) {\n const frames = new Set<Element>();\n let frame = getFrameElement(el);\n\n while (frame) {\n frames.add(frame);\n frame = getFrameElement(frame);\n }\n\n return frames;\n}\n","export function timeout(callback: () => void, duration: number): () => void {\n const id = setTimeout(callback, duration);\n\n return () => clearTimeout(id);\n}\n","import {timeout} from './timeout.ts';\n\nexport function throttle<T extends (...args: any[]) => any>(\n func: T,\n limit: number\n): (...args: Parameters<T>) => void {\n const time = () => performance.now();\n let cancel: () => void | undefined;\n let lastRan: number;\n\n return function (this: any, ...args: Parameters<T>) {\n const context = this;\n if (!lastRan) {\n func.apply(context, args);\n lastRan = time();\n } else {\n cancel?.();\n cancel = timeout(\n () => {\n func.apply(context, args);\n lastRan = time();\n },\n limit - (time() - lastRan)\n );\n }\n };\n}\n","import type {BoundingRectangle} from '@dnd-kit/geometry';\n\nexport function isRectEqual(\n a: BoundingRectangle | undefined,\n b: BoundingRectangle | undefined\n) {\n if (a === b) return true;\n if (!a || !b) return false;\n\n return (\n a.top == b.top &&\n a.left == b.left &&\n a.right == b.right &&\n a.bottom == b.bottom\n );\n}\n","import {getVisibleBoundingRectangle} from './getVisibleBoundingRectangle.ts';\n\nexport function isVisible(\n element: Element,\n boundingClientRect = element.getBoundingClientRect()\n): boolean {\n const {width, height} = getVisibleBoundingRectangle(\n element,\n boundingClientRect\n );\n\n return width > 0 && height > 0;\n}\n","import {canUseDOM} from '../execution-context/canUseDOM.ts';\n\nconst Observer = canUseDOM\n ? ResizeObserver\n : class MockResizeObserver implements ResizeObserver {\n observe() {}\n unobserve() {}\n disconnect() {}\n };\n\nexport class ResizeNotifier extends Observer {\n #initialized = false;\n\n constructor(callback: ResizeObserverCallback) {\n super((entries) => {\n if (!this.#initialized) {\n this.#initialized = true;\n return;\n }\n callback(entries, this);\n });\n }\n}\n","import {BoundingRectangle, Rectangle} from '@dnd-kit/geometry';\n\nimport {throttle} from '../scheduling/throttle.ts';\n\nimport {isRectEqual} from '../bounding-rectangle/isRectEqual.ts';\nimport {isVisible} from '../bounding-rectangle/isVisible.ts';\nimport {getVisibleBoundingRectangle} from '../bounding-rectangle/getVisibleBoundingRectangle.ts';\n\nimport {ResizeNotifier} from './ResizeNotifier.ts';\n\nexport type PositionObserverCallback = (\n boundingClientRect: BoundingRectangle | null\n) => void;\n\nconst threshold = Array.from({length: 100}, (_, index) => index / 100);\nexport const THROTTLE_INTERVAL = 75;\n\nexport class PositionObserver {\n constructor(\n public element: Element,\n public callback: PositionObserverCallback,\n options: {debug?: boolean; skipInitial?: boolean} = {\n debug: false,\n skipInitial: false,\n }\n ) {\n this.boundingClientRect = element.getBoundingClientRect();\n this.#visible = isVisible(element, this.boundingClientRect);\n\n let initial = true;\n this.callback = (boundingClientRect) => {\n if (initial) {\n initial = false;\n if (options.skipInitial) return;\n }\n\n callback(boundingClientRect);\n };\n\n const root = element.ownerDocument;\n\n if (options?.debug) {\n this.#debug = document.createElement('div');\n this.#debug.style.background = 'rgba(0,0,0,0.15)';\n this.#debug.style.position = 'fixed';\n this.#debug.style.pointerEvents = 'none';\n root.body.appendChild(this.#debug);\n }\n\n this.#visibilityObserver = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n const entry = entries[entries.length - 1];\n const {boundingClientRect, isIntersecting: visible} = entry;\n const {width, height} = boundingClientRect;\n const previousVisible = this.#visible;\n\n this.#visible = visible;\n\n if (!width && !height) return;\n\n if (previousVisible && !visible) {\n this.#positionObserver?.disconnect();\n this.callback(null);\n this.#resizeObserver?.disconnect();\n this.#resizeObserver = undefined;\n\n if (this.#debug) this.#debug.style.visibility = 'hidden';\n } else {\n this.#observePosition();\n }\n\n if (visible && !this.#resizeObserver) {\n this.#resizeObserver = new ResizeNotifier(this.#observePosition);\n this.#resizeObserver.observe(element);\n }\n },\n {\n threshold,\n root,\n }\n );\n\n if (this.#visible && !options.skipInitial) {\n this.callback(this.boundingClientRect);\n }\n\n this.#visibilityObserver.observe(element);\n }\n\n public boundingClientRect: DOMRectReadOnly;\n\n public disconnect = () => {\n this.#disconnected = true;\n this.#resizeObserver?.disconnect();\n this.#positionObserver?.disconnect();\n this.#visibilityObserver.disconnect();\n this.#debug?.remove();\n };\n\n #visible = true;\n #previousBoundingClientRect: DOMRectReadOnly | undefined;\n #resizeObserver: ResizeNotifier | undefined;\n #positionObserver: IntersectionObserver | undefined;\n #visibilityObserver: IntersectionObserver;\n #debug: HTMLElement | undefined;\n #disconnected = false;\n\n #observePosition = throttle(() => {\n const {element} = this;\n\n this.#positionObserver?.disconnect();\n\n if (this.#disconnected || !this.#visible || !element.isConnected) {\n return;\n }\n\n const root = element.ownerDocument ?? document;\n const {innerHeight, innerWidth} = root.defaultView ?? window;\n const clientRect = element.getBoundingClientRect();\n const visibleRect = getVisibleBoundingRectangle(element, clientRect);\n const {top, left, bottom, right} = visibleRect;\n const insetTop = -Math.floor(top);\n const insetLeft = -Math.floor(left);\n const insetRight = -Math.floor(innerWidth - right);\n const insetBottom = -Math.floor(innerHeight - bottom);\n const rootMargin = `${insetTop}px ${insetRight}px ${insetBottom}px ${insetLeft}px`;\n\n this.boundingClientRect = clientRect;\n this.#positionObserver = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n const [entry] = entries;\n const {intersectionRect} = entry;\n /*\n * The intersection ratio returned by the intersection observer entry\n * represents the ratio of the intersectionRect to the boundingClientRect,\n * which is not what we want. We want the ratio of the intersectionRect\n * to the rootBounds (visible rect).\n */\n const intersectionRatio =\n entry.intersectionRatio !== 1\n ? entry.intersectionRatio\n : Rectangle.intersectionRatio(\n intersectionRect,\n getVisibleBoundingRectangle(element)\n );\n\n if (intersectionRatio !== 1) {\n this.#observePosition();\n }\n },\n {\n threshold,\n rootMargin,\n root,\n }\n );\n\n this.#positionObserver.observe(element);\n this.#notify();\n }, THROTTLE_INTERVAL);\n\n #notify() {\n if (this.#disconnected) return;\n\n this.#updateDebug();\n\n if (isRectEqual(this.boundingClientRect, this.#previousBoundingClientRect))\n return;\n\n this.callback(this.boundingClientRect);\n this.#previousBoundingClientRect = this.boundingClientRect;\n }\n\n #updateDebug() {\n if (this.#debug) {\n const {top, left, width, height} = getVisibleBoundingRectangle(\n this.element\n );\n\n this.#debug.style.overflow = 'hidden';\n this.#debug.style.visibility = 'visible';\n this.#debug.style.top = `${Math.floor(top)}px`;\n this.#debug.style.left = `${Math.floor(left)}px`;\n this.#debug.style.width = `${Math.floor(width)}px`;\n this.#debug.style.height = `${Math.floor(height)}px`;\n }\n }\n}\n","import {getFrameElements} from '../frame/getFrameElements.ts';\nimport {throttle} from '../scheduling/throttle.ts';\nimport {\n PositionObserver,\n THROTTLE_INTERVAL,\n type PositionObserverCallback,\n} from './PositionObserver.ts';\n\nconst framePositionObservers = new WeakMap<\n Element,\n {\n disconnect: () => void;\n callbacks: Set<PositionObserverCallback>;\n }\n>();\n\nconst scrollListeners = new WeakMap<\n Document,\n {\n disconnect: () => void;\n listeners: Set<EventListener>;\n }\n>();\n\nfunction addFrameListener(frame: Element, callback: PositionObserverCallback) {\n // Check if already observed globally\n let cached = framePositionObservers.get(frame);\n\n if (!cached) {\n const observer = new PositionObserver(\n frame,\n (boundingClientRect) => {\n const cached = framePositionObservers.get(frame);\n if (!cached) return;\n\n cached.callbacks.forEach((callback) => callback(boundingClientRect));\n },\n {skipInitial: true}\n );\n\n cached = {disconnect: observer.disconnect, callbacks: new Set()};\n }\n\n cached.callbacks.add(callback);\n framePositionObservers.set(frame, cached);\n\n return () => {\n cached.callbacks.delete(callback);\n\n if (cached.callbacks.size === 0) {\n framePositionObservers.delete(frame);\n cached.disconnect();\n }\n };\n}\n\nfunction observeParentFrames(\n frames: Set<Element>,\n callback: PositionObserverCallback\n) {\n const cleanup = new Set<() => void>();\n\n for (const frame of frames) {\n const remove = addFrameListener(frame, callback);\n cleanup.add(remove);\n }\n\n return () => cleanup.forEach((remove) => remove());\n}\n\nfunction addScrollListener(element: Element, callback: EventListener) {\n const doc = element.ownerDocument;\n\n if (!scrollListeners.has(doc)) {\n const controller = new AbortController();\n const listeners = new Set<EventListener>();\n\n document.addEventListener(\n 'scroll',\n (event) => listeners.forEach((listener) => listener(event)),\n {\n capture: true,\n passive: true,\n signal: controller.signal,\n }\n );\n\n scrollListeners.set(doc, {disconnect: () => controller.abort(), listeners});\n }\n\n const {listeners, disconnect} = scrollListeners.get(doc) ?? {};\n\n if (!listeners || !disconnect) return () => {};\n\n listeners.add(callback);\n\n return () => {\n listeners.delete(callback);\n\n if (listeners.size === 0) {\n disconnect();\n scrollListeners.delete(doc);\n }\n };\n}\n\nexport class FrameObserver {\n #elementObserver: PositionObserver;\n #disconnected = false;\n #frames: Set<Element>;\n\n constructor(\n element: Element,\n private callback: PositionObserverCallback,\n options?: {debug?: boolean}\n ) {\n const frames = getFrameElements(element);\n const unobserveParentFrames = observeParentFrames(frames, callback);\n const removeScrollListener = addScrollListener(element, this.#handleScroll);\n\n this.#frames = frames;\n this.#elementObserver = new PositionObserver(element, callback, options);\n this.disconnect = () => {\n if (this.#disconnected) return;\n this.#disconnected = true;\n\n unobserveParentFrames();\n removeScrollListener();\n this.#elementObserver.disconnect();\n };\n }\n\n disconnect: () => void;\n\n #handleScroll = throttle((event: Event) => {\n if (this.#disconnected) return;\n if (!event.target) return;\n if (\n 'contains' in event.target &&\n typeof event.target.contains === 'function'\n ) {\n for (const frame of this.#frames) {\n if (event.target.contains(frame)) {\n this.callback(this.#elementObserver.boundingClientRect);\n break;\n }\n }\n }\n }, THROTTLE_INTERVAL);\n}\n","export function supportsPopover(element: Element): element is Element & {\n showPopover(): void;\n hidePopover(): void;\n} {\n return (\n 'showPopover' in element &&\n 'hidePopover' in element &&\n typeof element.showPopover === 'function' &&\n typeof element.hidePopover === 'function'\n );\n}\n","import {supportsPopover} from './supportsPopover.ts';\n\nexport function showPopover(element: Element) {\n try {\n if (\n supportsPopover(element) &&\n element.isConnected &&\n element.hasAttribute('popover') &&\n // This selector can throw an error in browsers that don't support it\n !element.matches(':popover-open')\n ) {\n element.showPopover();\n }\n } catch (error) {\n // no-op\n }\n}\n","import {supportsPopover} from './supportsPopover.ts';\n\nexport function hidePopover(element: Element) {\n try {\n if (\n supportsPopover(element) &&\n element.isConnected &&\n element.hasAttribute('popover') &&\n // This selector can throw an error in browsers that don't support it\n element.matches(':popover-open')\n ) {\n element.hidePopover();\n }\n } catch (error) {\n // no-op\n }\n}\n","import {canUseDOM} from '../execution-context/canUseDOM.ts';\nimport {getDocument} from '../execution-context/getDocument.ts';\n\nexport function isDocumentScrollingElement(element: Element | null) {\n if (!canUseDOM || !element) {\n return false;\n }\n\n return element === getDocument(element).scrollingElement;\n}\n","import {getBoundingRectangle} from '../bounding-rectangle/getBoundingRectangle.ts';\nimport {getViewportBoundingRectangle} from '../bounding-rectangle/getViewportBoundingRectangle.ts';\nimport {getWindow} from '../execution-context/getWindow.ts';\nimport {isDocumentScrollingElement} from './documentScrollingElement.ts';\n\nexport function getScrollPosition(scrollableElement: Element) {\n const window = getWindow(scrollableElement);\n const rect = isDocumentScrollingElement(scrollableElement)\n ? getViewportBoundingRectangle(scrollableElement)\n : getBoundingRectangle(scrollableElement);\n\n const 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","type Callback = () => void;\n\nexport class Scheduler<T extends (callback: Callback) => any> {\n constructor(private scheduler: T) {}\n\n private pending: boolean = false;\n private tasks: Set<() => void> = new Set();\n private resolvers: Set<() => void> = new Set();\n\n public schedule(task: () => void): Promise<void> {\n this.tasks.add(task);\n\n if (!this.pending) {\n this.pending = true;\n this.scheduler(this.flush);\n }\n\n return new Promise<void>((resolve) => this.resolvers.add(resolve));\n }\n\n public flush = () => {\n const {tasks, resolvers} = this;\n\n this.pending = false;\n this.tasks = new Set();\n this.resolvers = new Set();\n\n for (const task of tasks) {\n task();\n }\n\n for (const resolve of resolvers) {\n resolve();\n }\n };\n}\n\nexport const scheduler = new Scheduler((callback) => {\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(callback);\n } else {\n callback();\n }\n});\n","import {getWindow} from '../execution-context/getWindow.ts';\nimport {Scheduler} from '../scheduling/scheduler.ts';\n\nconst scheduler = new Scheduler((callback) => setTimeout(callback, 50));\nconst cachedStyles = new Map<Element, CSSStyleDeclaration>();\nconst clear = cachedStyles.clear.bind(cachedStyles);\n\n/**\n * Get the computed styles for an element.\n * @param element - The element to get the computed styles for.\n * @param cached - Whether to cache the computed styles.\n * @returns The computed styles for the element.\n */\nexport function getComputedStyles(\n element: Element,\n cached = false\n): CSSStyleDeclaration {\n if (!cached) return computeStyles(element);\n\n let styles = cachedStyles.get(element);\n\n if (styles) return styles;\n\n styles = computeStyles(element);\n cachedStyles.set(element, styles);\n scheduler.schedule(clear);\n\n return styles;\n}\n\nfunction computeStyles(element: Element): CSSStyleDeclaration {\n return getWindow(element).getComputedStyle(element);\n}\n","import {getComputedStyles} from '../styles/getComputedStyles.ts';\n\nexport function isFixed(\n node: Element,\n computedStyle: CSSStyleDeclaration = getComputedStyles(node, true)\n): boolean {\n return (\n computedStyle.position === 'fixed' || computedStyle.position === 'sticky'\n );\n}\n","import {getComputedStyles} from '../styles/getComputedStyles.ts';\n\nexport function isScrollable(\n element: HTMLElement,\n computedStyle: CSSStyleDeclaration = getComputedStyles(element, true)\n): boolean {\n const overflowRegex = /(auto|scroll|overlay)/;\n const properties = ['overflow', 'overflowX', 'overflowY'];\n\n return properties.some((property) => {\n const value = computedStyle[property as keyof CSSStyleDeclaration];\n\n return typeof value === 'string' ? overflowRegex.test(value) : false;\n });\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\nimport {isDocument} from '../type-guards/isDocument.ts';\nimport {isHTMLElement} from '../type-guards/isHTMLElement.ts';\nimport {isSVGElement} from '../type-guards/isSVGElement.ts';\nimport {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {isFixed} from './isFixed.ts';\nimport {isScrollable} from './isScrollable.ts';\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, true);\n\n if (excludeElement && node === element) {\n // no-op\n } else if (isScrollable(node, computedStyle)) {\n scrollParents.add(node);\n }\n\n if (isFixed(node, computedStyle)) {\n const {scrollingElement} = node.ownerDocument;\n\n if (scrollingElement) scrollParents.add(scrollingElement);\n\n return scrollParents;\n }\n\n return findScrollableAncestors(node.parentNode);\n }\n\n if (!element) {\n return scrollParents;\n }\n\n return findScrollableAncestors(element);\n}\n\nexport function getFirstScrollableAncestor(node: Node | null): Element | null {\n const [firstScrollableAncestor] = getScrollableAncestors(node, {limit: 1});\n\n return firstScrollableAncestor ?? null;\n}\n","import {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {isHTMLElement} from '../type-guards/isHTMLElement.ts';\nimport type {Transform} from '../transform/index.ts';\n\nimport {getFrameElement} from './getFrameElement.ts';\nimport {getBoundingRectangle} from '../bounding-rectangle/getBoundingRectangle.ts';\n\nexport function getFrameTransform(\n el: Element | undefined,\n boundary: Element | null = window.frameElement\n): Transform {\n const transform: Transform = {\n x: 0,\n y: 0,\n scaleX: 1,\n scaleY: 1,\n };\n\n if (!el) return transform;\n\n let frame = getFrameElement(el);\n\n while (frame) {\n if (frame === boundary) {\n return transform;\n }\n\n const rect = getBoundingRectangle(frame);\n const {x: scaleX, y: scaleY} = getScale(frame, rect);\n\n transform.x = transform.x + rect.left;\n transform.y = transform.y + rect.top;\n transform.scaleX = transform.scaleX * scaleX;\n transform.scaleY = transform.scaleY * scaleY;\n\n frame = getFrameElement(frame);\n }\n\n return transform;\n}\n\nfunction getScale(\n element: Element,\n boundingRectangle = getBoundingRectangle(element)\n) {\n const width = Math.round(boundingRectangle.width);\n const height = Math.round(boundingRectangle.height);\n\n if (isHTMLElement(element)) {\n return {\n x: width / element.offsetWidth,\n y: height / element.offsetHeight,\n };\n }\n\n const styles = getComputedStyles(element, true);\n\n return {\n x: (parseFloat(styles.width) || width) / width,\n y: (parseFloat(styles.height) || height) / height,\n };\n}\n","export function parseScale(scale: string) {\n if (scale === '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, true);\n const parsedTransform = parseTransform(computedStyles);\n const isXAxisInverted =\n parsedTransform !== null ? parsedTransform?.scaleX < 0 : false;\n const isYAxisInverted =\n parsedTransform !== null ? parsedTransform?.scaleY < 0 : false;\n const scrollContainerRect = new Rectangle(\n rect.left * frameTransform.scaleX + frameTransform.x,\n rect.top * frameTransform.scaleY + frameTransform.y,\n rect.width * frameTransform.scaleX,\n rect.height * frameTransform.scaleY\n );\n const direction: Record<Axis, ScrollDirection> = {\n x: ScrollDirection.Idle,\n y: ScrollDirection.Idle,\n };\n const speed = {\n x: 0,\n y: 0,\n };\n const threshold = {\n height: scrollContainerRect.height * thresholdPercentage.y,\n width: scrollContainerRect.width * thresholdPercentage.x,\n };\n\n if (\n (!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, true),\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","import type {BoundingRectangle} from '@dnd-kit/geometry';\n\nimport {type Transform} from './parseTransform.ts';\n\nexport function applyTransform(\n rect: BoundingRectangle,\n parsedTransform: Transform,\n transformOrigin: string\n): BoundingRectangle {\n const {scaleX, scaleY, x: translateX, y: translateY} = parsedTransform;\n const x = rect.left + translateX + (1 - scaleX) * parseFloat(transformOrigin);\n const y =\n rect.top +\n translateY +\n (1 - scaleY) *\n parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n const w = scaleX ? rect.width * scaleX : rect.width;\n const h = scaleY ? rect.height * scaleY : rect.height;\n\n return {\n width: w,\n height: h,\n top: y,\n right: x + w,\n bottom: y + h,\n left: x,\n };\n}\n","import type {BoundingRectangle} from '@dnd-kit/geometry';\n\nimport {type Transform} from './parseTransform.ts';\n\nexport function inverseTransform(\n rect: BoundingRectangle,\n parsedTransform: Transform,\n transformOrigin: string\n): BoundingRectangle {\n const {scaleX, scaleY, x: translateX, y: translateY} = parsedTransform;\n const x = rect.left - translateX - (1 - scaleX) * parseFloat(transformOrigin);\n const y =\n rect.top -\n translateY -\n (1 - scaleY) *\n parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n const w = scaleX ? rect.width / scaleX : rect.width;\n const h = scaleY ? rect.height / scaleY : rect.height;\n\n return {\n width: w,\n height: h,\n top: y,\n right: x + w,\n bottom: y + h,\n left: x,\n };\n}\n","interface Arguments {\n element: Element;\n keyframes: PropertyIndexedKeyframes | Keyframe[];\n options: KeyframeAnimationOptions;\n}\n\nexport function animateTransform({element, keyframes, options}: Arguments) {\n return element.animate(keyframes, options).finished;\n}\n","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 {applyTransform} from '../transform/applyTransform.ts';\nimport {inverseTransform} from '../transform/inverseTransform.ts';\nimport {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {parseTransform, type Transform} from '../transform/index.ts';\nimport {getBoundingRectangle} from '../bounding-rectangle/getBoundingRectangle.ts';\nimport {getFrameTransform} from '../frame/getFrameTransform.ts';\nimport {isKeyframeEffect} from '../type-guards/isKeyframeEffect.ts';\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, computedStyles);\n\n if (parsedTransform) {\n updated = inverseTransform(\n boundingRectangle,\n parsedTransform,\n computedStyles.transformOrigin\n );\n\n if (ignoreTransforms || projectedTransform) {\n top = updated.top;\n left = updated.left;\n width = updated.width;\n height = updated.height;\n }\n }\n\n const intrinsic = {\n width: updated?.width ?? width,\n height: updated?.height ?? height,\n };\n\n if (projectedTransform && !ignoreTransforms && updated) {\n const projected = applyTransform(\n updated,\n projectedTransform,\n computedStyles.transformOrigin\n );\n\n top = projected.top;\n left = projected.left;\n width = projected.width;\n height = projected.height;\n scale.x = projectedTransform.scaleX;\n scale.y = projectedTransform.scaleY;\n }\n\n if (frameTransform) {\n if (!ignoreTransforms) {\n left *= frameTransform.scaleX;\n width *= frameTransform.scaleX;\n top *= frameTransform.scaleY;\n height *= frameTransform.scaleY;\n }\n\n left += frameTransform.x;\n top += frameTransform.y;\n }\n\n super(left, top, width, height);\n\n this.scale = scale;\n this.intrinsicWidth = intrinsic.width;\n this.intrinsicHeight = intrinsic.height;\n }\n\n public intrinsicWidth: number;\n public intrinsicHeight: number;\n}\n\n/*\n * Get the projected transform of an element based on its final keyframe\n */\nfunction getProjectedTransform(\n element: Element,\n computedStyles: CSSStyleDeclaration\n): Transform | null {\n // Always get the latest animations on the element itself\n const animations = element.getAnimations();\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:\n typeof transform === 'string' && transform\n ? transform\n : computedStyles.transform,\n translate:\n typeof translate === 'string' && translate\n ? translate\n : computedStyles.translate,\n scale:\n typeof scale === 'string' && scale ? scale : computedStyles.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","import {isElement} from './isElement.js';\n\nexport function isTextInput(target: EventTarget | null) {\n if (!isElement(target)) return false;\n\n const {tagName} = target;\n\n return (\n tagName === 'INPUT' || tagName === 'TEXTAREA' || isContentEditable(target)\n );\n}\n\nfunction isContentEditable(element: Element) {\n return (\n element.hasAttribute('contenteditable') &&\n element.getAttribute('contenteditable') !== 'false'\n );\n}\n","const ids: Record<string, number> = {};\n\nexport function generateUniqueId(prefix: string) {\n const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n ids[prefix] = id;\n\n return `${prefix}-${id}`;\n}\n"]}
|
package/utilities.js
CHANGED
|
@@ -599,15 +599,23 @@ function supportsPopover(element) {
|
|
|
599
599
|
|
|
600
600
|
// src/utilities/popover/showPopover.ts
|
|
601
601
|
function showPopover(element) {
|
|
602
|
-
|
|
603
|
-
element.
|
|
602
|
+
try {
|
|
603
|
+
if (supportsPopover(element) && element.isConnected && element.hasAttribute("popover") && // This selector can throw an error in browsers that don't support it
|
|
604
|
+
!element.matches(":popover-open")) {
|
|
605
|
+
element.showPopover();
|
|
606
|
+
}
|
|
607
|
+
} catch (error) {
|
|
604
608
|
}
|
|
605
609
|
}
|
|
606
610
|
|
|
607
611
|
// src/utilities/popover/hidePopover.ts
|
|
608
612
|
function hidePopover(element) {
|
|
609
|
-
|
|
610
|
-
element.
|
|
613
|
+
try {
|
|
614
|
+
if (supportsPopover(element) && element.isConnected && element.hasAttribute("popover") && // This selector can throw an error in browsers that don't support it
|
|
615
|
+
element.matches(":popover-open")) {
|
|
616
|
+
element.hidePopover();
|
|
617
|
+
}
|
|
618
|
+
} catch (error) {
|
|
611
619
|
}
|
|
612
620
|
}
|
|
613
621
|
|
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/bounding-rectangle/isOverflowVisible.ts","src/utilities/bounding-rectangle/getVisibleBoundingRectangle.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/frame/getFrameElement.ts","src/utilities/frame/getFrameElements.ts","src/utilities/scheduling/timeout.ts","src/utilities/scheduling/throttle.ts","src/utilities/bounding-rectangle/isRectEqual.ts","src/utilities/bounding-rectangle/isVisible.ts","src/utilities/observers/ResizeNotifier.ts","src/utilities/observers/PositionObserver.ts","src/utilities/observers/FrameObserver.ts","src/utilities/popover/supportsPopover.ts","src/utilities/popover/showPopover.ts","src/utilities/popover/hidePopover.ts","src/utilities/scroll/documentScrollingElement.ts","src/utilities/scroll/getScrollPosition.ts","src/utilities/scroll/canScroll.ts","src/utilities/scheduling/scheduler.ts","src/utilities/styles/getComputedStyles.ts","src/utilities/scroll/isFixed.ts","src/utilities/scroll/isScrollable.ts","src/utilities/scroll/getScrollableAncestors.ts","src/utilities/frame/getFrameTransform.ts","src/utilities/transform/parseScale.ts","src/utilities/transform/parseTranslate.ts","src/utilities/transform/parseTransform.ts","src/utilities/scroll/detectScrollIntent.ts","src/utilities/scroll/scrollIntoViewIfNeeded.ts","src/utilities/transform/applyTransform.ts","src/utilities/transform/inverseTransform.ts","src/utilities/transform/animateTransform.ts","src/utilities/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/type-guards/isTextInput.ts","src/utilities/misc/generateUniqueId.ts"],"names":["document","target","cached","callback","listeners","_disconnected","window","scheduler","ScrollDirection","Rectangle","threshold","animations","keyframe","translate","clear"],"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","/*\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","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 getFrameElement(el: Element | undefined) {\n const refWindow = el?.ownerDocument.defaultView;\n\n if (refWindow && refWindow.self !== refWindow.parent) {\n return refWindow.frameElement;\n }\n}\n","import {getFrameElement} from './getFrameElement.ts';\n\nexport function getFrameElements(el: Element | undefined) {\n const frames = new Set<Element>();\n let frame = getFrameElement(el);\n\n while (frame) {\n frames.add(frame);\n frame = getFrameElement(frame);\n }\n\n return frames;\n}\n","export function timeout(callback: () => void, duration: number): () => void {\n const id = setTimeout(callback, duration);\n\n return () => clearTimeout(id);\n}\n","import {timeout} from './timeout.ts';\n\nexport function throttle<T extends (...args: any[]) => any>(\n func: T,\n limit: number\n): (...args: Parameters<T>) => void {\n const time = () => performance.now();\n let cancel: () => void | undefined;\n let lastRan: number;\n\n return function (this: any, ...args: Parameters<T>) {\n const context = this;\n if (!lastRan) {\n func.apply(context, args);\n lastRan = time();\n } else {\n cancel?.();\n cancel = timeout(\n () => {\n func.apply(context, args);\n lastRan = time();\n },\n limit - (time() - lastRan)\n );\n }\n };\n}\n","import type {BoundingRectangle} from '@dnd-kit/geometry';\n\nexport function isRectEqual(\n a: BoundingRectangle | undefined,\n b: BoundingRectangle | undefined\n) {\n if (a === b) return true;\n if (!a || !b) return false;\n\n return (\n a.top == b.top &&\n a.left == b.left &&\n a.right == b.right &&\n a.bottom == b.bottom\n );\n}\n","import {getVisibleBoundingRectangle} from './getVisibleBoundingRectangle.ts';\n\nexport function isVisible(\n element: Element,\n boundingClientRect = element.getBoundingClientRect()\n): boolean {\n const {width, height} = getVisibleBoundingRectangle(\n element,\n boundingClientRect\n );\n\n return width > 0 && height > 0;\n}\n","import {canUseDOM} from '../execution-context/canUseDOM.ts';\n\nconst Observer = canUseDOM\n ? ResizeObserver\n : class MockResizeObserver implements ResizeObserver {\n observe() {}\n unobserve() {}\n disconnect() {}\n };\n\nexport class ResizeNotifier extends Observer {\n #initialized = false;\n\n constructor(callback: ResizeObserverCallback) {\n super((entries) => {\n if (!this.#initialized) {\n this.#initialized = true;\n return;\n }\n callback(entries, this);\n });\n }\n}\n","import {BoundingRectangle, Rectangle} from '@dnd-kit/geometry';\n\nimport {throttle} from '../scheduling/throttle.ts';\n\nimport {isRectEqual} from '../bounding-rectangle/isRectEqual.ts';\nimport {isVisible} from '../bounding-rectangle/isVisible.ts';\nimport {getVisibleBoundingRectangle} from '../bounding-rectangle/getVisibleBoundingRectangle.ts';\n\nimport {ResizeNotifier} from './ResizeNotifier.ts';\n\nexport type PositionObserverCallback = (\n boundingClientRect: BoundingRectangle | null\n) => void;\n\nconst threshold = Array.from({length: 100}, (_, index) => index / 100);\nexport const THROTTLE_INTERVAL = 75;\n\nexport class PositionObserver {\n constructor(\n public element: Element,\n public callback: PositionObserverCallback,\n options: {debug?: boolean; skipInitial?: boolean} = {\n debug: false,\n skipInitial: false,\n }\n ) {\n this.boundingClientRect = element.getBoundingClientRect();\n this.#visible = isVisible(element, this.boundingClientRect);\n\n let initial = true;\n this.callback = (boundingClientRect) => {\n if (initial) {\n initial = false;\n if (options.skipInitial) return;\n }\n\n callback(boundingClientRect);\n };\n\n const root = element.ownerDocument;\n\n if (options?.debug) {\n this.#debug = document.createElement('div');\n this.#debug.style.background = 'rgba(0,0,0,0.15)';\n this.#debug.style.position = 'fixed';\n this.#debug.style.pointerEvents = 'none';\n root.body.appendChild(this.#debug);\n }\n\n this.#visibilityObserver = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n const entry = entries[entries.length - 1];\n const {boundingClientRect, isIntersecting: visible} = entry;\n const {width, height} = boundingClientRect;\n const previousVisible = this.#visible;\n\n this.#visible = visible;\n\n if (!width && !height) return;\n\n if (previousVisible && !visible) {\n this.#positionObserver?.disconnect();\n this.callback(null);\n this.#resizeObserver?.disconnect();\n this.#resizeObserver = undefined;\n\n if (this.#debug) this.#debug.style.visibility = 'hidden';\n } else {\n this.#observePosition();\n }\n\n if (visible && !this.#resizeObserver) {\n this.#resizeObserver = new ResizeNotifier(this.#observePosition);\n this.#resizeObserver.observe(element);\n }\n },\n {\n threshold,\n root,\n }\n );\n\n if (this.#visible && !options.skipInitial) {\n this.callback(this.boundingClientRect);\n }\n\n this.#visibilityObserver.observe(element);\n }\n\n public boundingClientRect: DOMRectReadOnly;\n\n public disconnect = () => {\n this.#disconnected = true;\n this.#resizeObserver?.disconnect();\n this.#positionObserver?.disconnect();\n this.#visibilityObserver.disconnect();\n this.#debug?.remove();\n };\n\n #visible = true;\n #previousBoundingClientRect: DOMRectReadOnly | undefined;\n #resizeObserver: ResizeNotifier | undefined;\n #positionObserver: IntersectionObserver | undefined;\n #visibilityObserver: IntersectionObserver;\n #debug: HTMLElement | undefined;\n #disconnected = false;\n\n #observePosition = throttle(() => {\n const {element} = this;\n\n this.#positionObserver?.disconnect();\n\n if (this.#disconnected || !this.#visible || !element.isConnected) {\n return;\n }\n\n const root = element.ownerDocument ?? document;\n const {innerHeight, innerWidth} = root.defaultView ?? window;\n const clientRect = element.getBoundingClientRect();\n const visibleRect = getVisibleBoundingRectangle(element, clientRect);\n const {top, left, bottom, right} = visibleRect;\n const insetTop = -Math.floor(top);\n const insetLeft = -Math.floor(left);\n const insetRight = -Math.floor(innerWidth - right);\n const insetBottom = -Math.floor(innerHeight - bottom);\n const rootMargin = `${insetTop}px ${insetRight}px ${insetBottom}px ${insetLeft}px`;\n\n this.boundingClientRect = clientRect;\n this.#positionObserver = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n const [entry] = entries;\n const {intersectionRect} = entry;\n /*\n * The intersection ratio returned by the intersection observer entry\n * represents the ratio of the intersectionRect to the boundingClientRect,\n * which is not what we want. We want the ratio of the intersectionRect\n * to the rootBounds (visible rect).\n */\n const intersectionRatio =\n entry.intersectionRatio !== 1\n ? entry.intersectionRatio\n : Rectangle.intersectionRatio(\n intersectionRect,\n getVisibleBoundingRectangle(element)\n );\n\n if (intersectionRatio !== 1) {\n this.#observePosition();\n }\n },\n {\n threshold,\n rootMargin,\n root,\n }\n );\n\n this.#positionObserver.observe(element);\n this.#notify();\n }, THROTTLE_INTERVAL);\n\n #notify() {\n if (this.#disconnected) return;\n\n this.#updateDebug();\n\n if (isRectEqual(this.boundingClientRect, this.#previousBoundingClientRect))\n return;\n\n this.callback(this.boundingClientRect);\n this.#previousBoundingClientRect = this.boundingClientRect;\n }\n\n #updateDebug() {\n if (this.#debug) {\n const {top, left, width, height} = getVisibleBoundingRectangle(\n this.element\n );\n\n this.#debug.style.overflow = 'hidden';\n this.#debug.style.visibility = 'visible';\n this.#debug.style.top = `${Math.floor(top)}px`;\n this.#debug.style.left = `${Math.floor(left)}px`;\n this.#debug.style.width = `${Math.floor(width)}px`;\n this.#debug.style.height = `${Math.floor(height)}px`;\n }\n }\n}\n","import {getFrameElements} from '../frame/getFrameElements.ts';\nimport {throttle} from '../scheduling/throttle.ts';\nimport {\n PositionObserver,\n THROTTLE_INTERVAL,\n type PositionObserverCallback,\n} from './PositionObserver.ts';\n\nconst framePositionObservers = new WeakMap<\n Element,\n {\n disconnect: () => void;\n callbacks: Set<PositionObserverCallback>;\n }\n>();\n\nconst scrollListeners = new WeakMap<\n Document,\n {\n disconnect: () => void;\n listeners: Set<EventListener>;\n }\n>();\n\nfunction addFrameListener(frame: Element, callback: PositionObserverCallback) {\n // Check if already observed globally\n let cached = framePositionObservers.get(frame);\n\n if (!cached) {\n const observer = new PositionObserver(\n frame,\n (boundingClientRect) => {\n const cached = framePositionObservers.get(frame);\n if (!cached) return;\n\n cached.callbacks.forEach((callback) => callback(boundingClientRect));\n },\n {skipInitial: true}\n );\n\n cached = {disconnect: observer.disconnect, callbacks: new Set()};\n }\n\n cached.callbacks.add(callback);\n framePositionObservers.set(frame, cached);\n\n return () => {\n cached.callbacks.delete(callback);\n\n if (cached.callbacks.size === 0) {\n framePositionObservers.delete(frame);\n cached.disconnect();\n }\n };\n}\n\nfunction observeParentFrames(\n frames: Set<Element>,\n callback: PositionObserverCallback\n) {\n const cleanup = new Set<() => void>();\n\n for (const frame of frames) {\n const remove = addFrameListener(frame, callback);\n cleanup.add(remove);\n }\n\n return () => cleanup.forEach((remove) => remove());\n}\n\nfunction addScrollListener(element: Element, callback: EventListener) {\n const doc = element.ownerDocument;\n\n if (!scrollListeners.has(doc)) {\n const controller = new AbortController();\n const listeners = new Set<EventListener>();\n\n document.addEventListener(\n 'scroll',\n (event) => listeners.forEach((listener) => listener(event)),\n {\n capture: true,\n passive: true,\n signal: controller.signal,\n }\n );\n\n scrollListeners.set(doc, {disconnect: () => controller.abort(), listeners});\n }\n\n const {listeners, disconnect} = scrollListeners.get(doc) ?? {};\n\n if (!listeners || !disconnect) return () => {};\n\n listeners.add(callback);\n\n return () => {\n listeners.delete(callback);\n\n if (listeners.size === 0) {\n disconnect();\n scrollListeners.delete(doc);\n }\n };\n}\n\nexport class FrameObserver {\n #elementObserver: PositionObserver;\n #disconnected = false;\n #frames: Set<Element>;\n\n constructor(\n element: Element,\n private callback: PositionObserverCallback,\n options?: {debug?: boolean}\n ) {\n const frames = getFrameElements(element);\n const unobserveParentFrames = observeParentFrames(frames, callback);\n const removeScrollListener = addScrollListener(element, this.#handleScroll);\n\n this.#frames = frames;\n this.#elementObserver = new PositionObserver(element, callback, options);\n this.disconnect = () => {\n if (this.#disconnected) return;\n this.#disconnected = true;\n\n unobserveParentFrames();\n removeScrollListener();\n this.#elementObserver.disconnect();\n };\n }\n\n disconnect: () => void;\n\n #handleScroll = throttle((event: Event) => {\n if (this.#disconnected) return;\n if (!event.target) return;\n if (\n 'contains' in event.target &&\n typeof event.target.contains === 'function'\n ) {\n for (const frame of this.#frames) {\n if (event.target.contains(frame)) {\n this.callback(this.#elementObserver.boundingClientRect);\n break;\n }\n }\n }\n }, THROTTLE_INTERVAL);\n}\n","export function supportsPopover(element: Element): element is Element & {\n showPopover(): void;\n hidePopover(): void;\n} {\n return (\n 'showPopover' in element &&\n 'hidePopover' in element &&\n typeof element.showPopover === 'function' &&\n typeof element.hidePopover === 'function'\n );\n}\n","import {supportsPopover} from './supportsPopover.ts';\n\nexport function showPopover(element: Element) {\n if (\n supportsPopover(element) &&\n element.isConnected &&\n element.hasAttribute('popover') &&\n !element.matches(':popover-open')\n ) {\n element.showPopover();\n }\n}\n","import {supportsPopover} from './supportsPopover.ts';\n\nexport function hidePopover(element: Element) {\n if (\n supportsPopover(element) &&\n element.isConnected &&\n element.hasAttribute('popover') &&\n element.matches(':popover-open')\n ) {\n element.hidePopover();\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","type Callback = () => void;\n\nexport class Scheduler<T extends (callback: Callback) => any> {\n constructor(private scheduler: T) {}\n\n private pending: boolean = false;\n private tasks: Set<() => void> = new Set();\n private resolvers: Set<() => void> = new Set();\n\n public schedule(task: () => void): Promise<void> {\n this.tasks.add(task);\n\n if (!this.pending) {\n this.pending = true;\n this.scheduler(this.flush);\n }\n\n return new Promise<void>((resolve) => this.resolvers.add(resolve));\n }\n\n public flush = () => {\n const {tasks, resolvers} = this;\n\n this.pending = false;\n this.tasks = new Set();\n this.resolvers = new Set();\n\n for (const task of tasks) {\n task();\n }\n\n for (const resolve of resolvers) {\n resolve();\n }\n };\n}\n\nexport const scheduler = new Scheduler((callback) => {\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(callback);\n } else {\n callback();\n }\n});\n","import {getWindow} from '../execution-context/getWindow.ts';\nimport {Scheduler} from '../scheduling/scheduler.ts';\n\nconst scheduler = new Scheduler((callback) => setTimeout(callback, 50));\nconst cachedStyles = new Map<Element, CSSStyleDeclaration>();\nconst clear = cachedStyles.clear.bind(cachedStyles);\n\n/**\n * Get the computed styles for an element.\n * @param element - The element to get the computed styles for.\n * @param cached - Whether to cache the computed styles.\n * @returns The computed styles for the element.\n */\nexport function getComputedStyles(\n element: Element,\n cached = false\n): CSSStyleDeclaration {\n if (!cached) return computeStyles(element);\n\n let styles = cachedStyles.get(element);\n\n if (styles) return styles;\n\n styles = computeStyles(element);\n cachedStyles.set(element, styles);\n scheduler.schedule(clear);\n\n return styles;\n}\n\nfunction computeStyles(element: Element): CSSStyleDeclaration {\n return getWindow(element).getComputedStyle(element);\n}\n","import {getComputedStyles} from '../styles/getComputedStyles.ts';\n\nexport function isFixed(\n node: Element,\n computedStyle: CSSStyleDeclaration = getComputedStyles(node, true)\n): boolean {\n return (\n computedStyle.position === 'fixed' || computedStyle.position === 'sticky'\n );\n}\n","import {getComputedStyles} from '../styles/getComputedStyles.ts';\n\nexport function isScrollable(\n element: HTMLElement,\n computedStyle: CSSStyleDeclaration = getComputedStyles(element, true)\n): boolean {\n const overflowRegex = /(auto|scroll|overlay)/;\n const properties = ['overflow', 'overflowX', 'overflowY'];\n\n return properties.some((property) => {\n const value = computedStyle[property as keyof CSSStyleDeclaration];\n\n return typeof value === 'string' ? overflowRegex.test(value) : false;\n });\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\nimport {isDocument} from '../type-guards/isDocument.ts';\nimport {isHTMLElement} from '../type-guards/isHTMLElement.ts';\nimport {isSVGElement} from '../type-guards/isSVGElement.ts';\nimport {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {isFixed} from './isFixed.ts';\nimport {isScrollable} from './isScrollable.ts';\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, true);\n\n if (excludeElement && node === element) {\n // no-op\n } else if (isScrollable(node, computedStyle)) {\n scrollParents.add(node);\n }\n\n if (isFixed(node, computedStyle)) {\n const {scrollingElement} = node.ownerDocument;\n\n if (scrollingElement) scrollParents.add(scrollingElement);\n\n return scrollParents;\n }\n\n return findScrollableAncestors(node.parentNode);\n }\n\n if (!element) {\n return scrollParents;\n }\n\n return findScrollableAncestors(element);\n}\n\nexport function getFirstScrollableAncestor(node: Node | null): Element | null {\n const [firstScrollableAncestor] = getScrollableAncestors(node, {limit: 1});\n\n return firstScrollableAncestor ?? null;\n}\n","import {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {isHTMLElement} from '../type-guards/isHTMLElement.ts';\nimport type {Transform} from '../transform/index.ts';\n\nimport {getFrameElement} from './getFrameElement.ts';\nimport {getBoundingRectangle} from '../bounding-rectangle/getBoundingRectangle.ts';\n\nexport function getFrameTransform(\n el: Element | undefined,\n boundary: Element | null = window.frameElement\n): Transform {\n const transform: Transform = {\n x: 0,\n y: 0,\n scaleX: 1,\n scaleY: 1,\n };\n\n if (!el) return transform;\n\n let frame = getFrameElement(el);\n\n while (frame) {\n if (frame === boundary) {\n return transform;\n }\n\n const rect = getBoundingRectangle(frame);\n const {x: scaleX, y: scaleY} = getScale(frame, rect);\n\n transform.x = transform.x + rect.left;\n transform.y = transform.y + rect.top;\n transform.scaleX = transform.scaleX * scaleX;\n transform.scaleY = transform.scaleY * scaleY;\n\n frame = getFrameElement(frame);\n }\n\n return transform;\n}\n\nfunction getScale(\n element: Element,\n boundingRectangle = getBoundingRectangle(element)\n) {\n const width = Math.round(boundingRectangle.width);\n const height = Math.round(boundingRectangle.height);\n\n if (isHTMLElement(element)) {\n return {\n x: width / element.offsetWidth,\n y: height / element.offsetHeight,\n };\n }\n\n const styles = getComputedStyles(element, true);\n\n return {\n x: (parseFloat(styles.width) || width) / width,\n y: (parseFloat(styles.height) || height) / height,\n };\n}\n","export function parseScale(scale: string) {\n if (scale === '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, true);\n const parsedTransform = parseTransform(computedStyles);\n const isXAxisInverted =\n parsedTransform !== null ? parsedTransform?.scaleX < 0 : false;\n const isYAxisInverted =\n parsedTransform !== null ? parsedTransform?.scaleY < 0 : false;\n const scrollContainerRect = new Rectangle(\n rect.left * frameTransform.scaleX + frameTransform.x,\n rect.top * frameTransform.scaleY + frameTransform.y,\n rect.width * frameTransform.scaleX,\n rect.height * frameTransform.scaleY\n );\n const direction: Record<Axis, ScrollDirection> = {\n x: ScrollDirection.Idle,\n y: ScrollDirection.Idle,\n };\n const speed = {\n x: 0,\n y: 0,\n };\n const threshold = {\n height: scrollContainerRect.height * thresholdPercentage.y,\n width: scrollContainerRect.width * thresholdPercentage.x,\n };\n\n if (\n (!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, true),\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","import type {BoundingRectangle} from '@dnd-kit/geometry';\n\nimport {type Transform} from './parseTransform.ts';\n\nexport function applyTransform(\n rect: BoundingRectangle,\n parsedTransform: Transform,\n transformOrigin: string\n): BoundingRectangle {\n const {scaleX, scaleY, x: translateX, y: translateY} = parsedTransform;\n const x = rect.left + translateX + (1 - scaleX) * parseFloat(transformOrigin);\n const y =\n rect.top +\n translateY +\n (1 - scaleY) *\n parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n const w = scaleX ? rect.width * scaleX : rect.width;\n const h = scaleY ? rect.height * scaleY : rect.height;\n\n return {\n width: w,\n height: h,\n top: y,\n right: x + w,\n bottom: y + h,\n left: x,\n };\n}\n","import type {BoundingRectangle} from '@dnd-kit/geometry';\n\nimport {type Transform} from './parseTransform.ts';\n\nexport function inverseTransform(\n rect: BoundingRectangle,\n parsedTransform: Transform,\n transformOrigin: string\n): BoundingRectangle {\n const {scaleX, scaleY, x: translateX, y: translateY} = parsedTransform;\n const x = rect.left - translateX - (1 - scaleX) * parseFloat(transformOrigin);\n const y =\n rect.top -\n translateY -\n (1 - scaleY) *\n parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n const w = scaleX ? rect.width / scaleX : rect.width;\n const h = scaleY ? rect.height / scaleY : rect.height;\n\n return {\n width: w,\n height: h,\n top: y,\n right: x + w,\n bottom: y + h,\n left: x,\n };\n}\n","interface Arguments {\n element: Element;\n keyframes: PropertyIndexedKeyframes | Keyframe[];\n options: KeyframeAnimationOptions;\n}\n\nexport function animateTransform({element, keyframes, options}: Arguments) {\n return element.animate(keyframes, options).finished;\n}\n","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 {applyTransform} from '../transform/applyTransform.ts';\nimport {inverseTransform} from '../transform/inverseTransform.ts';\nimport {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {parseTransform, type Transform} from '../transform/index.ts';\nimport {getBoundingRectangle} from '../bounding-rectangle/getBoundingRectangle.ts';\nimport {getFrameTransform} from '../frame/getFrameTransform.ts';\nimport {isKeyframeEffect} from '../type-guards/isKeyframeEffect.ts';\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, computedStyles);\n\n if (parsedTransform) {\n updated = inverseTransform(\n boundingRectangle,\n parsedTransform,\n computedStyles.transformOrigin\n );\n\n if (ignoreTransforms || projectedTransform) {\n top = updated.top;\n left = updated.left;\n width = updated.width;\n height = updated.height;\n }\n }\n\n const intrinsic = {\n width: updated?.width ?? width,\n height: updated?.height ?? height,\n };\n\n if (projectedTransform && !ignoreTransforms && updated) {\n const projected = applyTransform(\n updated,\n projectedTransform,\n computedStyles.transformOrigin\n );\n\n top = projected.top;\n left = projected.left;\n width = projected.width;\n height = projected.height;\n scale.x = projectedTransform.scaleX;\n scale.y = projectedTransform.scaleY;\n }\n\n if (frameTransform) {\n if (!ignoreTransforms) {\n left *= frameTransform.scaleX;\n width *= frameTransform.scaleX;\n top *= frameTransform.scaleY;\n height *= frameTransform.scaleY;\n }\n\n left += frameTransform.x;\n top += frameTransform.y;\n }\n\n super(left, top, width, height);\n\n this.scale = scale;\n this.intrinsicWidth = intrinsic.width;\n this.intrinsicHeight = intrinsic.height;\n }\n\n public intrinsicWidth: number;\n public intrinsicHeight: number;\n}\n\n/*\n * Get the projected transform of an element based on its final keyframe\n */\nfunction getProjectedTransform(\n element: Element,\n computedStyles: CSSStyleDeclaration\n): Transform | null {\n // Always get the latest animations on the element itself\n const animations = element.getAnimations();\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:\n typeof transform === 'string' && transform\n ? transform\n : computedStyles.transform,\n translate:\n typeof translate === 'string' && translate\n ? translate\n : computedStyles.translate,\n scale:\n typeof scale === 'string' && scale ? scale : computedStyles.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","import {isElement} from './isElement.js';\n\nexport function isTextInput(target: EventTarget | null) {\n if (!isElement(target)) return false;\n\n const {tagName} = target;\n\n return (\n tagName === 'INPUT' || tagName === 'TEXTAREA' || isContentEditable(target)\n );\n}\n\nfunction isContentEditable(element: Element) {\n return (\n element.hasAttribute('contenteditable') &&\n element.getAttribute('contenteditable') !== 'false'\n );\n}\n","const ids: Record<string, number> = {};\n\nexport function generateUniqueId(prefix: string) {\n const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n ids[prefix] = id;\n\n return `${prefix}-${id}`;\n}\n"]}
|
|
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/bounding-rectangle/isOverflowVisible.ts","src/utilities/bounding-rectangle/getVisibleBoundingRectangle.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/frame/getFrameElement.ts","src/utilities/frame/getFrameElements.ts","src/utilities/scheduling/timeout.ts","src/utilities/scheduling/throttle.ts","src/utilities/bounding-rectangle/isRectEqual.ts","src/utilities/bounding-rectangle/isVisible.ts","src/utilities/observers/ResizeNotifier.ts","src/utilities/observers/PositionObserver.ts","src/utilities/observers/FrameObserver.ts","src/utilities/popover/supportsPopover.ts","src/utilities/popover/showPopover.ts","src/utilities/popover/hidePopover.ts","src/utilities/scroll/documentScrollingElement.ts","src/utilities/scroll/getScrollPosition.ts","src/utilities/scroll/canScroll.ts","src/utilities/scheduling/scheduler.ts","src/utilities/styles/getComputedStyles.ts","src/utilities/scroll/isFixed.ts","src/utilities/scroll/isScrollable.ts","src/utilities/scroll/getScrollableAncestors.ts","src/utilities/frame/getFrameTransform.ts","src/utilities/transform/parseScale.ts","src/utilities/transform/parseTranslate.ts","src/utilities/transform/parseTransform.ts","src/utilities/scroll/detectScrollIntent.ts","src/utilities/scroll/scrollIntoViewIfNeeded.ts","src/utilities/transform/applyTransform.ts","src/utilities/transform/inverseTransform.ts","src/utilities/transform/animateTransform.ts","src/utilities/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/type-guards/isTextInput.ts","src/utilities/misc/generateUniqueId.ts"],"names":["document","target","cached","callback","listeners","_disconnected","window","scheduler","ScrollDirection","Rectangle","threshold","animations","keyframe","translate","clear"],"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","/*\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","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 getFrameElement(el: Element | undefined) {\n const refWindow = el?.ownerDocument.defaultView;\n\n if (refWindow && refWindow.self !== refWindow.parent) {\n return refWindow.frameElement;\n }\n}\n","import {getFrameElement} from './getFrameElement.ts';\n\nexport function getFrameElements(el: Element | undefined) {\n const frames = new Set<Element>();\n let frame = getFrameElement(el);\n\n while (frame) {\n frames.add(frame);\n frame = getFrameElement(frame);\n }\n\n return frames;\n}\n","export function timeout(callback: () => void, duration: number): () => void {\n const id = setTimeout(callback, duration);\n\n return () => clearTimeout(id);\n}\n","import {timeout} from './timeout.ts';\n\nexport function throttle<T extends (...args: any[]) => any>(\n func: T,\n limit: number\n): (...args: Parameters<T>) => void {\n const time = () => performance.now();\n let cancel: () => void | undefined;\n let lastRan: number;\n\n return function (this: any, ...args: Parameters<T>) {\n const context = this;\n if (!lastRan) {\n func.apply(context, args);\n lastRan = time();\n } else {\n cancel?.();\n cancel = timeout(\n () => {\n func.apply(context, args);\n lastRan = time();\n },\n limit - (time() - lastRan)\n );\n }\n };\n}\n","import type {BoundingRectangle} from '@dnd-kit/geometry';\n\nexport function isRectEqual(\n a: BoundingRectangle | undefined,\n b: BoundingRectangle | undefined\n) {\n if (a === b) return true;\n if (!a || !b) return false;\n\n return (\n a.top == b.top &&\n a.left == b.left &&\n a.right == b.right &&\n a.bottom == b.bottom\n );\n}\n","import {getVisibleBoundingRectangle} from './getVisibleBoundingRectangle.ts';\n\nexport function isVisible(\n element: Element,\n boundingClientRect = element.getBoundingClientRect()\n): boolean {\n const {width, height} = getVisibleBoundingRectangle(\n element,\n boundingClientRect\n );\n\n return width > 0 && height > 0;\n}\n","import {canUseDOM} from '../execution-context/canUseDOM.ts';\n\nconst Observer = canUseDOM\n ? ResizeObserver\n : class MockResizeObserver implements ResizeObserver {\n observe() {}\n unobserve() {}\n disconnect() {}\n };\n\nexport class ResizeNotifier extends Observer {\n #initialized = false;\n\n constructor(callback: ResizeObserverCallback) {\n super((entries) => {\n if (!this.#initialized) {\n this.#initialized = true;\n return;\n }\n callback(entries, this);\n });\n }\n}\n","import {BoundingRectangle, Rectangle} from '@dnd-kit/geometry';\n\nimport {throttle} from '../scheduling/throttle.ts';\n\nimport {isRectEqual} from '../bounding-rectangle/isRectEqual.ts';\nimport {isVisible} from '../bounding-rectangle/isVisible.ts';\nimport {getVisibleBoundingRectangle} from '../bounding-rectangle/getVisibleBoundingRectangle.ts';\n\nimport {ResizeNotifier} from './ResizeNotifier.ts';\n\nexport type PositionObserverCallback = (\n boundingClientRect: BoundingRectangle | null\n) => void;\n\nconst threshold = Array.from({length: 100}, (_, index) => index / 100);\nexport const THROTTLE_INTERVAL = 75;\n\nexport class PositionObserver {\n constructor(\n public element: Element,\n public callback: PositionObserverCallback,\n options: {debug?: boolean; skipInitial?: boolean} = {\n debug: false,\n skipInitial: false,\n }\n ) {\n this.boundingClientRect = element.getBoundingClientRect();\n this.#visible = isVisible(element, this.boundingClientRect);\n\n let initial = true;\n this.callback = (boundingClientRect) => {\n if (initial) {\n initial = false;\n if (options.skipInitial) return;\n }\n\n callback(boundingClientRect);\n };\n\n const root = element.ownerDocument;\n\n if (options?.debug) {\n this.#debug = document.createElement('div');\n this.#debug.style.background = 'rgba(0,0,0,0.15)';\n this.#debug.style.position = 'fixed';\n this.#debug.style.pointerEvents = 'none';\n root.body.appendChild(this.#debug);\n }\n\n this.#visibilityObserver = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n const entry = entries[entries.length - 1];\n const {boundingClientRect, isIntersecting: visible} = entry;\n const {width, height} = boundingClientRect;\n const previousVisible = this.#visible;\n\n this.#visible = visible;\n\n if (!width && !height) return;\n\n if (previousVisible && !visible) {\n this.#positionObserver?.disconnect();\n this.callback(null);\n this.#resizeObserver?.disconnect();\n this.#resizeObserver = undefined;\n\n if (this.#debug) this.#debug.style.visibility = 'hidden';\n } else {\n this.#observePosition();\n }\n\n if (visible && !this.#resizeObserver) {\n this.#resizeObserver = new ResizeNotifier(this.#observePosition);\n this.#resizeObserver.observe(element);\n }\n },\n {\n threshold,\n root,\n }\n );\n\n if (this.#visible && !options.skipInitial) {\n this.callback(this.boundingClientRect);\n }\n\n this.#visibilityObserver.observe(element);\n }\n\n public boundingClientRect: DOMRectReadOnly;\n\n public disconnect = () => {\n this.#disconnected = true;\n this.#resizeObserver?.disconnect();\n this.#positionObserver?.disconnect();\n this.#visibilityObserver.disconnect();\n this.#debug?.remove();\n };\n\n #visible = true;\n #previousBoundingClientRect: DOMRectReadOnly | undefined;\n #resizeObserver: ResizeNotifier | undefined;\n #positionObserver: IntersectionObserver | undefined;\n #visibilityObserver: IntersectionObserver;\n #debug: HTMLElement | undefined;\n #disconnected = false;\n\n #observePosition = throttle(() => {\n const {element} = this;\n\n this.#positionObserver?.disconnect();\n\n if (this.#disconnected || !this.#visible || !element.isConnected) {\n return;\n }\n\n const root = element.ownerDocument ?? document;\n const {innerHeight, innerWidth} = root.defaultView ?? window;\n const clientRect = element.getBoundingClientRect();\n const visibleRect = getVisibleBoundingRectangle(element, clientRect);\n const {top, left, bottom, right} = visibleRect;\n const insetTop = -Math.floor(top);\n const insetLeft = -Math.floor(left);\n const insetRight = -Math.floor(innerWidth - right);\n const insetBottom = -Math.floor(innerHeight - bottom);\n const rootMargin = `${insetTop}px ${insetRight}px ${insetBottom}px ${insetLeft}px`;\n\n this.boundingClientRect = clientRect;\n this.#positionObserver = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n const [entry] = entries;\n const {intersectionRect} = entry;\n /*\n * The intersection ratio returned by the intersection observer entry\n * represents the ratio of the intersectionRect to the boundingClientRect,\n * which is not what we want. We want the ratio of the intersectionRect\n * to the rootBounds (visible rect).\n */\n const intersectionRatio =\n entry.intersectionRatio !== 1\n ? entry.intersectionRatio\n : Rectangle.intersectionRatio(\n intersectionRect,\n getVisibleBoundingRectangle(element)\n );\n\n if (intersectionRatio !== 1) {\n this.#observePosition();\n }\n },\n {\n threshold,\n rootMargin,\n root,\n }\n );\n\n this.#positionObserver.observe(element);\n this.#notify();\n }, THROTTLE_INTERVAL);\n\n #notify() {\n if (this.#disconnected) return;\n\n this.#updateDebug();\n\n if (isRectEqual(this.boundingClientRect, this.#previousBoundingClientRect))\n return;\n\n this.callback(this.boundingClientRect);\n this.#previousBoundingClientRect = this.boundingClientRect;\n }\n\n #updateDebug() {\n if (this.#debug) {\n const {top, left, width, height} = getVisibleBoundingRectangle(\n this.element\n );\n\n this.#debug.style.overflow = 'hidden';\n this.#debug.style.visibility = 'visible';\n this.#debug.style.top = `${Math.floor(top)}px`;\n this.#debug.style.left = `${Math.floor(left)}px`;\n this.#debug.style.width = `${Math.floor(width)}px`;\n this.#debug.style.height = `${Math.floor(height)}px`;\n }\n }\n}\n","import {getFrameElements} from '../frame/getFrameElements.ts';\nimport {throttle} from '../scheduling/throttle.ts';\nimport {\n PositionObserver,\n THROTTLE_INTERVAL,\n type PositionObserverCallback,\n} from './PositionObserver.ts';\n\nconst framePositionObservers = new WeakMap<\n Element,\n {\n disconnect: () => void;\n callbacks: Set<PositionObserverCallback>;\n }\n>();\n\nconst scrollListeners = new WeakMap<\n Document,\n {\n disconnect: () => void;\n listeners: Set<EventListener>;\n }\n>();\n\nfunction addFrameListener(frame: Element, callback: PositionObserverCallback) {\n // Check if already observed globally\n let cached = framePositionObservers.get(frame);\n\n if (!cached) {\n const observer = new PositionObserver(\n frame,\n (boundingClientRect) => {\n const cached = framePositionObservers.get(frame);\n if (!cached) return;\n\n cached.callbacks.forEach((callback) => callback(boundingClientRect));\n },\n {skipInitial: true}\n );\n\n cached = {disconnect: observer.disconnect, callbacks: new Set()};\n }\n\n cached.callbacks.add(callback);\n framePositionObservers.set(frame, cached);\n\n return () => {\n cached.callbacks.delete(callback);\n\n if (cached.callbacks.size === 0) {\n framePositionObservers.delete(frame);\n cached.disconnect();\n }\n };\n}\n\nfunction observeParentFrames(\n frames: Set<Element>,\n callback: PositionObserverCallback\n) {\n const cleanup = new Set<() => void>();\n\n for (const frame of frames) {\n const remove = addFrameListener(frame, callback);\n cleanup.add(remove);\n }\n\n return () => cleanup.forEach((remove) => remove());\n}\n\nfunction addScrollListener(element: Element, callback: EventListener) {\n const doc = element.ownerDocument;\n\n if (!scrollListeners.has(doc)) {\n const controller = new AbortController();\n const listeners = new Set<EventListener>();\n\n document.addEventListener(\n 'scroll',\n (event) => listeners.forEach((listener) => listener(event)),\n {\n capture: true,\n passive: true,\n signal: controller.signal,\n }\n );\n\n scrollListeners.set(doc, {disconnect: () => controller.abort(), listeners});\n }\n\n const {listeners, disconnect} = scrollListeners.get(doc) ?? {};\n\n if (!listeners || !disconnect) return () => {};\n\n listeners.add(callback);\n\n return () => {\n listeners.delete(callback);\n\n if (listeners.size === 0) {\n disconnect();\n scrollListeners.delete(doc);\n }\n };\n}\n\nexport class FrameObserver {\n #elementObserver: PositionObserver;\n #disconnected = false;\n #frames: Set<Element>;\n\n constructor(\n element: Element,\n private callback: PositionObserverCallback,\n options?: {debug?: boolean}\n ) {\n const frames = getFrameElements(element);\n const unobserveParentFrames = observeParentFrames(frames, callback);\n const removeScrollListener = addScrollListener(element, this.#handleScroll);\n\n this.#frames = frames;\n this.#elementObserver = new PositionObserver(element, callback, options);\n this.disconnect = () => {\n if (this.#disconnected) return;\n this.#disconnected = true;\n\n unobserveParentFrames();\n removeScrollListener();\n this.#elementObserver.disconnect();\n };\n }\n\n disconnect: () => void;\n\n #handleScroll = throttle((event: Event) => {\n if (this.#disconnected) return;\n if (!event.target) return;\n if (\n 'contains' in event.target &&\n typeof event.target.contains === 'function'\n ) {\n for (const frame of this.#frames) {\n if (event.target.contains(frame)) {\n this.callback(this.#elementObserver.boundingClientRect);\n break;\n }\n }\n }\n }, THROTTLE_INTERVAL);\n}\n","export function supportsPopover(element: Element): element is Element & {\n showPopover(): void;\n hidePopover(): void;\n} {\n return (\n 'showPopover' in element &&\n 'hidePopover' in element &&\n typeof element.showPopover === 'function' &&\n typeof element.hidePopover === 'function'\n );\n}\n","import {supportsPopover} from './supportsPopover.ts';\n\nexport function showPopover(element: Element) {\n try {\n if (\n supportsPopover(element) &&\n element.isConnected &&\n element.hasAttribute('popover') &&\n // This selector can throw an error in browsers that don't support it\n !element.matches(':popover-open')\n ) {\n element.showPopover();\n }\n } catch (error) {\n // no-op\n }\n}\n","import {supportsPopover} from './supportsPopover.ts';\n\nexport function hidePopover(element: Element) {\n try {\n if (\n supportsPopover(element) &&\n element.isConnected &&\n element.hasAttribute('popover') &&\n // This selector can throw an error in browsers that don't support it\n element.matches(':popover-open')\n ) {\n element.hidePopover();\n }\n } catch (error) {\n // no-op\n }\n}\n","import {canUseDOM} from '../execution-context/canUseDOM.ts';\nimport {getDocument} from '../execution-context/getDocument.ts';\n\nexport function isDocumentScrollingElement(element: Element | null) {\n if (!canUseDOM || !element) {\n return false;\n }\n\n return element === getDocument(element).scrollingElement;\n}\n","import {getBoundingRectangle} from '../bounding-rectangle/getBoundingRectangle.ts';\nimport {getViewportBoundingRectangle} from '../bounding-rectangle/getViewportBoundingRectangle.ts';\nimport {getWindow} from '../execution-context/getWindow.ts';\nimport {isDocumentScrollingElement} from './documentScrollingElement.ts';\n\nexport function getScrollPosition(scrollableElement: Element) {\n const window = getWindow(scrollableElement);\n const rect = isDocumentScrollingElement(scrollableElement)\n ? getViewportBoundingRectangle(scrollableElement)\n : getBoundingRectangle(scrollableElement);\n\n const 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","type Callback = () => void;\n\nexport class Scheduler<T extends (callback: Callback) => any> {\n constructor(private scheduler: T) {}\n\n private pending: boolean = false;\n private tasks: Set<() => void> = new Set();\n private resolvers: Set<() => void> = new Set();\n\n public schedule(task: () => void): Promise<void> {\n this.tasks.add(task);\n\n if (!this.pending) {\n this.pending = true;\n this.scheduler(this.flush);\n }\n\n return new Promise<void>((resolve) => this.resolvers.add(resolve));\n }\n\n public flush = () => {\n const {tasks, resolvers} = this;\n\n this.pending = false;\n this.tasks = new Set();\n this.resolvers = new Set();\n\n for (const task of tasks) {\n task();\n }\n\n for (const resolve of resolvers) {\n resolve();\n }\n };\n}\n\nexport const scheduler = new Scheduler((callback) => {\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(callback);\n } else {\n callback();\n }\n});\n","import {getWindow} from '../execution-context/getWindow.ts';\nimport {Scheduler} from '../scheduling/scheduler.ts';\n\nconst scheduler = new Scheduler((callback) => setTimeout(callback, 50));\nconst cachedStyles = new Map<Element, CSSStyleDeclaration>();\nconst clear = cachedStyles.clear.bind(cachedStyles);\n\n/**\n * Get the computed styles for an element.\n * @param element - The element to get the computed styles for.\n * @param cached - Whether to cache the computed styles.\n * @returns The computed styles for the element.\n */\nexport function getComputedStyles(\n element: Element,\n cached = false\n): CSSStyleDeclaration {\n if (!cached) return computeStyles(element);\n\n let styles = cachedStyles.get(element);\n\n if (styles) return styles;\n\n styles = computeStyles(element);\n cachedStyles.set(element, styles);\n scheduler.schedule(clear);\n\n return styles;\n}\n\nfunction computeStyles(element: Element): CSSStyleDeclaration {\n return getWindow(element).getComputedStyle(element);\n}\n","import {getComputedStyles} from '../styles/getComputedStyles.ts';\n\nexport function isFixed(\n node: Element,\n computedStyle: CSSStyleDeclaration = getComputedStyles(node, true)\n): boolean {\n return (\n computedStyle.position === 'fixed' || computedStyle.position === 'sticky'\n );\n}\n","import {getComputedStyles} from '../styles/getComputedStyles.ts';\n\nexport function isScrollable(\n element: HTMLElement,\n computedStyle: CSSStyleDeclaration = getComputedStyles(element, true)\n): boolean {\n const overflowRegex = /(auto|scroll|overlay)/;\n const properties = ['overflow', 'overflowX', 'overflowY'];\n\n return properties.some((property) => {\n const value = computedStyle[property as keyof CSSStyleDeclaration];\n\n return typeof value === 'string' ? overflowRegex.test(value) : false;\n });\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\nimport {isDocument} from '../type-guards/isDocument.ts';\nimport {isHTMLElement} from '../type-guards/isHTMLElement.ts';\nimport {isSVGElement} from '../type-guards/isSVGElement.ts';\nimport {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {isFixed} from './isFixed.ts';\nimport {isScrollable} from './isScrollable.ts';\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, true);\n\n if (excludeElement && node === element) {\n // no-op\n } else if (isScrollable(node, computedStyle)) {\n scrollParents.add(node);\n }\n\n if (isFixed(node, computedStyle)) {\n const {scrollingElement} = node.ownerDocument;\n\n if (scrollingElement) scrollParents.add(scrollingElement);\n\n return scrollParents;\n }\n\n return findScrollableAncestors(node.parentNode);\n }\n\n if (!element) {\n return scrollParents;\n }\n\n return findScrollableAncestors(element);\n}\n\nexport function getFirstScrollableAncestor(node: Node | null): Element | null {\n const [firstScrollableAncestor] = getScrollableAncestors(node, {limit: 1});\n\n return firstScrollableAncestor ?? null;\n}\n","import {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {isHTMLElement} from '../type-guards/isHTMLElement.ts';\nimport type {Transform} from '../transform/index.ts';\n\nimport {getFrameElement} from './getFrameElement.ts';\nimport {getBoundingRectangle} from '../bounding-rectangle/getBoundingRectangle.ts';\n\nexport function getFrameTransform(\n el: Element | undefined,\n boundary: Element | null = window.frameElement\n): Transform {\n const transform: Transform = {\n x: 0,\n y: 0,\n scaleX: 1,\n scaleY: 1,\n };\n\n if (!el) return transform;\n\n let frame = getFrameElement(el);\n\n while (frame) {\n if (frame === boundary) {\n return transform;\n }\n\n const rect = getBoundingRectangle(frame);\n const {x: scaleX, y: scaleY} = getScale(frame, rect);\n\n transform.x = transform.x + rect.left;\n transform.y = transform.y + rect.top;\n transform.scaleX = transform.scaleX * scaleX;\n transform.scaleY = transform.scaleY * scaleY;\n\n frame = getFrameElement(frame);\n }\n\n return transform;\n}\n\nfunction getScale(\n element: Element,\n boundingRectangle = getBoundingRectangle(element)\n) {\n const width = Math.round(boundingRectangle.width);\n const height = Math.round(boundingRectangle.height);\n\n if (isHTMLElement(element)) {\n return {\n x: width / element.offsetWidth,\n y: height / element.offsetHeight,\n };\n }\n\n const styles = getComputedStyles(element, true);\n\n return {\n x: (parseFloat(styles.width) || width) / width,\n y: (parseFloat(styles.height) || height) / height,\n };\n}\n","export function parseScale(scale: string) {\n if (scale === '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, true);\n const parsedTransform = parseTransform(computedStyles);\n const isXAxisInverted =\n parsedTransform !== null ? parsedTransform?.scaleX < 0 : false;\n const isYAxisInverted =\n parsedTransform !== null ? parsedTransform?.scaleY < 0 : false;\n const scrollContainerRect = new Rectangle(\n rect.left * frameTransform.scaleX + frameTransform.x,\n rect.top * frameTransform.scaleY + frameTransform.y,\n rect.width * frameTransform.scaleX,\n rect.height * frameTransform.scaleY\n );\n const direction: Record<Axis, ScrollDirection> = {\n x: ScrollDirection.Idle,\n y: ScrollDirection.Idle,\n };\n const speed = {\n x: 0,\n y: 0,\n };\n const threshold = {\n height: scrollContainerRect.height * thresholdPercentage.y,\n width: scrollContainerRect.width * thresholdPercentage.x,\n };\n\n if (\n (!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, true),\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","import type {BoundingRectangle} from '@dnd-kit/geometry';\n\nimport {type Transform} from './parseTransform.ts';\n\nexport function applyTransform(\n rect: BoundingRectangle,\n parsedTransform: Transform,\n transformOrigin: string\n): BoundingRectangle {\n const {scaleX, scaleY, x: translateX, y: translateY} = parsedTransform;\n const x = rect.left + translateX + (1 - scaleX) * parseFloat(transformOrigin);\n const y =\n rect.top +\n translateY +\n (1 - scaleY) *\n parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n const w = scaleX ? rect.width * scaleX : rect.width;\n const h = scaleY ? rect.height * scaleY : rect.height;\n\n return {\n width: w,\n height: h,\n top: y,\n right: x + w,\n bottom: y + h,\n left: x,\n };\n}\n","import type {BoundingRectangle} from '@dnd-kit/geometry';\n\nimport {type Transform} from './parseTransform.ts';\n\nexport function inverseTransform(\n rect: BoundingRectangle,\n parsedTransform: Transform,\n transformOrigin: string\n): BoundingRectangle {\n const {scaleX, scaleY, x: translateX, y: translateY} = parsedTransform;\n const x = rect.left - translateX - (1 - scaleX) * parseFloat(transformOrigin);\n const y =\n rect.top -\n translateY -\n (1 - scaleY) *\n parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n const w = scaleX ? rect.width / scaleX : rect.width;\n const h = scaleY ? rect.height / scaleY : rect.height;\n\n return {\n width: w,\n height: h,\n top: y,\n right: x + w,\n bottom: y + h,\n left: x,\n };\n}\n","interface Arguments {\n element: Element;\n keyframes: PropertyIndexedKeyframes | Keyframe[];\n options: KeyframeAnimationOptions;\n}\n\nexport function animateTransform({element, keyframes, options}: Arguments) {\n return element.animate(keyframes, options).finished;\n}\n","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 {applyTransform} from '../transform/applyTransform.ts';\nimport {inverseTransform} from '../transform/inverseTransform.ts';\nimport {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {parseTransform, type Transform} from '../transform/index.ts';\nimport {getBoundingRectangle} from '../bounding-rectangle/getBoundingRectangle.ts';\nimport {getFrameTransform} from '../frame/getFrameTransform.ts';\nimport {isKeyframeEffect} from '../type-guards/isKeyframeEffect.ts';\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, computedStyles);\n\n if (parsedTransform) {\n updated = inverseTransform(\n boundingRectangle,\n parsedTransform,\n computedStyles.transformOrigin\n );\n\n if (ignoreTransforms || projectedTransform) {\n top = updated.top;\n left = updated.left;\n width = updated.width;\n height = updated.height;\n }\n }\n\n const intrinsic = {\n width: updated?.width ?? width,\n height: updated?.height ?? height,\n };\n\n if (projectedTransform && !ignoreTransforms && updated) {\n const projected = applyTransform(\n updated,\n projectedTransform,\n computedStyles.transformOrigin\n );\n\n top = projected.top;\n left = projected.left;\n width = projected.width;\n height = projected.height;\n scale.x = projectedTransform.scaleX;\n scale.y = projectedTransform.scaleY;\n }\n\n if (frameTransform) {\n if (!ignoreTransforms) {\n left *= frameTransform.scaleX;\n width *= frameTransform.scaleX;\n top *= frameTransform.scaleY;\n height *= frameTransform.scaleY;\n }\n\n left += frameTransform.x;\n top += frameTransform.y;\n }\n\n super(left, top, width, height);\n\n this.scale = scale;\n this.intrinsicWidth = intrinsic.width;\n this.intrinsicHeight = intrinsic.height;\n }\n\n public intrinsicWidth: number;\n public intrinsicHeight: number;\n}\n\n/*\n * Get the projected transform of an element based on its final keyframe\n */\nfunction getProjectedTransform(\n element: Element,\n computedStyles: CSSStyleDeclaration\n): Transform | null {\n // Always get the latest animations on the element itself\n const animations = element.getAnimations();\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:\n typeof transform === 'string' && transform\n ? transform\n : computedStyles.transform,\n translate:\n typeof translate === 'string' && translate\n ? translate\n : computedStyles.translate,\n scale:\n typeof scale === 'string' && scale ? scale : computedStyles.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","import {isElement} from './isElement.js';\n\nexport function isTextInput(target: EventTarget | null) {\n if (!isElement(target)) return false;\n\n const {tagName} = target;\n\n return (\n tagName === 'INPUT' || tagName === 'TEXTAREA' || isContentEditable(target)\n );\n}\n\nfunction isContentEditable(element: Element) {\n return (\n element.hasAttribute('contenteditable') &&\n element.getAttribute('contenteditable') !== 'false'\n );\n}\n","const ids: Record<string, number> = {};\n\nexport function generateUniqueId(prefix: string) {\n const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n ids[prefix] = id;\n\n return `${prefix}-${id}`;\n}\n"]}
|