@dnd-kit/dom 0.0.2 → 0.0.3-beta-20240617115949
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/index.cjs +80 -61
- package/index.cjs.map +1 -1
- package/index.js +81 -62
- package/index.js.map +1 -1
- package/package.json +5 -5
- package/sortable.cjs +9 -6
- package/sortable.cjs.map +1 -1
- package/sortable.d.cts +2 -1
- package/sortable.d.ts +2 -1
- package/sortable.js +10 -7
- package/sortable.js.map +1 -1
- package/utilities.cjs +107 -37
- package/utilities.cjs.map +1 -1
- package/utilities.d.cts +20 -2
- package/utilities.d.ts +20 -2
- package/utilities.js +105 -38
- package/utilities.js.map +1 -1
package/utilities.js
CHANGED
|
@@ -242,15 +242,18 @@ function isSVGElement(node) {
|
|
|
242
242
|
return node instanceof getWindow(node).SVGElement;
|
|
243
243
|
}
|
|
244
244
|
|
|
245
|
+
// src/utilities/styles/getComputedStyles.ts
|
|
246
|
+
function getComputedStyles(element) {
|
|
247
|
+
return getWindow(element).getComputedStyle(element);
|
|
248
|
+
}
|
|
249
|
+
|
|
245
250
|
// src/utilities/scroll/isFixed.ts
|
|
246
|
-
function isFixed(node, computedStyle =
|
|
251
|
+
function isFixed(node, computedStyle = getComputedStyles(node)) {
|
|
247
252
|
return computedStyle.position === "fixed" || computedStyle.position === "sticky";
|
|
248
253
|
}
|
|
249
254
|
|
|
250
255
|
// src/utilities/scroll/isScrollable.ts
|
|
251
|
-
function isScrollable(element, computedStyle =
|
|
252
|
-
element
|
|
253
|
-
)) {
|
|
256
|
+
function isScrollable(element, computedStyle = getComputedStyles(element)) {
|
|
254
257
|
const overflowRegex = /(auto|scroll|overlay)/;
|
|
255
258
|
const properties = ["overflow", "overflowX", "overflowY"];
|
|
256
259
|
return properties.find((property) => {
|
|
@@ -286,8 +289,7 @@ function getScrollableAncestors(element, options = defaultOptions) {
|
|
|
286
289
|
if (scrollParents.has(node)) {
|
|
287
290
|
return scrollParents;
|
|
288
291
|
}
|
|
289
|
-
const
|
|
290
|
-
const computedStyle = getComputedStyle(node);
|
|
292
|
+
const computedStyle = getComputedStyles(node);
|
|
291
293
|
if (excludeElement && node === element) ; else if (isScrollable(node, computedStyle)) {
|
|
292
294
|
scrollParents.add(node);
|
|
293
295
|
}
|
|
@@ -388,7 +390,7 @@ function scrollIntoViewIfNeeded(el, centerIfNeeded = false) {
|
|
|
388
390
|
if (!(parent instanceof HTMLElement)) {
|
|
389
391
|
return;
|
|
390
392
|
}
|
|
391
|
-
const parentComputedStyle =
|
|
393
|
+
const parentComputedStyle = getComputedStyles(parent), parentBorderTopWidth = parseInt(
|
|
392
394
|
parentComputedStyle.getPropertyValue("border-top-width")
|
|
393
395
|
), parentBorderLeftWidth = parseInt(
|
|
394
396
|
parentComputedStyle.getPropertyValue("border-left-width")
|
|
@@ -498,7 +500,7 @@ function animateTransform({
|
|
|
498
500
|
onFinish
|
|
499
501
|
}) {
|
|
500
502
|
const styles = new Styles(element);
|
|
501
|
-
const { transitionProperty } =
|
|
503
|
+
const { transitionProperty } = getComputedStyles(element);
|
|
502
504
|
const properties = transitionProperty.split(", ");
|
|
503
505
|
styles.set({
|
|
504
506
|
"transition-property": properties.length ? properties.filter(
|
|
@@ -512,21 +514,18 @@ function animateTransform({
|
|
|
512
514
|
});
|
|
513
515
|
}
|
|
514
516
|
|
|
515
|
-
// src/utilities/
|
|
516
|
-
function
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
517
|
+
// src/utilities/keyframes/getFinalKeyframe.ts
|
|
518
|
+
function getFinalKeyframe(element) {
|
|
519
|
+
const animations = element.getAnimations();
|
|
520
|
+
if (animations.length > 0) {
|
|
521
|
+
const [animation] = animations;
|
|
522
|
+
const { effect } = animation;
|
|
523
|
+
const keyframes = effect instanceof KeyframeEffect ? effect.getKeyframes() : [];
|
|
524
|
+
if (keyframes.length > 0) {
|
|
525
|
+
return keyframes?.[keyframes.length - 1];
|
|
526
|
+
}
|
|
525
527
|
}
|
|
526
|
-
return
|
|
527
|
-
x: isNaN(x) ? y : x,
|
|
528
|
-
y: isNaN(y) ? x : y
|
|
529
|
-
};
|
|
528
|
+
return null;
|
|
530
529
|
}
|
|
531
530
|
|
|
532
531
|
// src/utilities/transform/parseTranslate.ts
|
|
@@ -546,29 +545,74 @@ function parseTranslate(translate) {
|
|
|
546
545
|
};
|
|
547
546
|
}
|
|
548
547
|
|
|
548
|
+
// src/utilities/transform/computeTranslate.ts
|
|
549
|
+
function computeTranslate(element) {
|
|
550
|
+
const keyframe = getFinalKeyframe(element);
|
|
551
|
+
if (keyframe) {
|
|
552
|
+
const { translate: translate2 = "" } = keyframe;
|
|
553
|
+
if (typeof translate2 === "string") {
|
|
554
|
+
const finalTranslate = parseTranslate(translate2);
|
|
555
|
+
if (finalTranslate) {
|
|
556
|
+
return finalTranslate;
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
const { translate } = getComputedStyles(element);
|
|
561
|
+
if (translate) {
|
|
562
|
+
const finalTranslate = parseTranslate(translate);
|
|
563
|
+
if (finalTranslate) {
|
|
564
|
+
return finalTranslate;
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
return { x: 0, y: 0, z: 0 };
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
// src/utilities/transform/parseScale.ts
|
|
571
|
+
function parseScale(scale) {
|
|
572
|
+
if (scale === "none") {
|
|
573
|
+
return null;
|
|
574
|
+
}
|
|
575
|
+
const values = scale.split(" ");
|
|
576
|
+
const x = parseFloat(values[0]);
|
|
577
|
+
const y = parseFloat(values[1]);
|
|
578
|
+
if (isNaN(x) && isNaN(y)) {
|
|
579
|
+
return null;
|
|
580
|
+
}
|
|
581
|
+
return {
|
|
582
|
+
x: isNaN(x) ? y : x,
|
|
583
|
+
y: isNaN(y) ? x : y
|
|
584
|
+
};
|
|
585
|
+
}
|
|
586
|
+
|
|
549
587
|
// src/utilities/transform/parseTransform.ts
|
|
550
588
|
function parseTransform(computedStyles) {
|
|
551
589
|
const { scale, transform, translate } = computedStyles;
|
|
552
590
|
const parsedScale = parseScale(scale);
|
|
553
591
|
const parsedTranslate = parseTranslate(translate);
|
|
554
|
-
if (parsedScale && parsedTranslate) {
|
|
555
|
-
return {
|
|
556
|
-
x: parsedTranslate.x,
|
|
557
|
-
y: parsedTranslate.y,
|
|
558
|
-
z: parsedTranslate.z,
|
|
559
|
-
scaleX: parsedScale.x,
|
|
560
|
-
scaleY: parsedScale.y
|
|
561
|
-
};
|
|
562
|
-
}
|
|
563
592
|
const parsedMatrix = parseTransformMatrix(transform);
|
|
564
593
|
if (!parsedMatrix && !parsedScale && !parsedTranslate) {
|
|
565
594
|
return null;
|
|
566
595
|
}
|
|
596
|
+
const normalizedScale = {
|
|
597
|
+
x: parsedScale?.x ?? 1,
|
|
598
|
+
y: parsedScale?.y ?? 1
|
|
599
|
+
};
|
|
600
|
+
const normalizedTranslate = {
|
|
601
|
+
x: parsedTranslate?.x ?? 0,
|
|
602
|
+
y: parsedTranslate?.y ?? 0
|
|
603
|
+
};
|
|
604
|
+
const normalizedMatrix = {
|
|
605
|
+
x: parsedMatrix?.x ?? 0,
|
|
606
|
+
y: parsedMatrix?.y ?? 0,
|
|
607
|
+
scaleX: parsedMatrix?.scaleX ?? 1,
|
|
608
|
+
scaleY: parsedMatrix?.scaleY ?? 1
|
|
609
|
+
};
|
|
567
610
|
return {
|
|
568
|
-
x:
|
|
569
|
-
y:
|
|
570
|
-
|
|
571
|
-
|
|
611
|
+
x: normalizedTranslate.x + normalizedMatrix.x,
|
|
612
|
+
y: normalizedTranslate.y + normalizedMatrix.y,
|
|
613
|
+
z: parsedTranslate?.z ?? 0,
|
|
614
|
+
scaleX: normalizedScale.x * normalizedMatrix.scaleX,
|
|
615
|
+
scaleY: normalizedScale.y * normalizedMatrix.scaleY
|
|
572
616
|
};
|
|
573
617
|
}
|
|
574
618
|
function parseTransformMatrix(transform) {
|
|
@@ -601,13 +645,14 @@ function stringifyTransform({ x, y, z, scaleX, scaleY }) {
|
|
|
601
645
|
var DOMRectangle = class extends Rectangle {
|
|
602
646
|
constructor(element, ignoreTransforms = false) {
|
|
603
647
|
let { top, left, right, bottom, width, height } = getBoundingRectangle(element);
|
|
604
|
-
const computedStyles =
|
|
648
|
+
const computedStyles = getComputedStyles(element);
|
|
605
649
|
const parsedTransform = parseTransform(computedStyles);
|
|
606
650
|
const scale = {
|
|
607
651
|
x: parsedTransform?.scaleX ?? 1,
|
|
608
652
|
y: parsedTransform?.scaleY ?? 1
|
|
609
653
|
};
|
|
610
|
-
|
|
654
|
+
const projectedTransform = getProjectedTransform(element);
|
|
655
|
+
if (parsedTransform && (ignoreTransforms || projectedTransform)) {
|
|
611
656
|
const updated = inverseTransform(
|
|
612
657
|
{ top, left, right, bottom, width, height },
|
|
613
658
|
parsedTransform,
|
|
@@ -618,10 +663,32 @@ var DOMRectangle = class extends Rectangle {
|
|
|
618
663
|
width = updated.width;
|
|
619
664
|
height = updated.height;
|
|
620
665
|
}
|
|
666
|
+
if (projectedTransform && !ignoreTransforms) {
|
|
667
|
+
top = top + projectedTransform.y;
|
|
668
|
+
left = left + projectedTransform.x;
|
|
669
|
+
width = width * projectedTransform.scaleX;
|
|
670
|
+
height = height * projectedTransform.scaleY;
|
|
671
|
+
scale.x = projectedTransform.scaleX;
|
|
672
|
+
scale.y = projectedTransform.scaleY;
|
|
673
|
+
}
|
|
621
674
|
super(left, top, width, height);
|
|
622
675
|
this.scale = scale;
|
|
623
676
|
}
|
|
624
677
|
};
|
|
678
|
+
function getProjectedTransform(element) {
|
|
679
|
+
const keyframe = getFinalKeyframe(element);
|
|
680
|
+
if (keyframe) {
|
|
681
|
+
const { transform = "", translate = "", scale = "" } = keyframe;
|
|
682
|
+
if (transform || translate || scale) {
|
|
683
|
+
return parseTransform({
|
|
684
|
+
transform: typeof transform === "string" ? transform : "",
|
|
685
|
+
translate: typeof translate === "string" ? translate : "",
|
|
686
|
+
scale: typeof scale === "string" ? scale : ""
|
|
687
|
+
});
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
return null;
|
|
691
|
+
}
|
|
625
692
|
|
|
626
693
|
// src/utilities/type-guards/isKeyboardEvent.ts
|
|
627
694
|
function isKeyboardEvent(event) {
|
|
@@ -633,6 +700,6 @@ function supportsViewTransition(document2) {
|
|
|
633
700
|
return "startViewTransition" in document2;
|
|
634
701
|
}
|
|
635
702
|
|
|
636
|
-
export { DOMRectangle, Listeners, Scheduler, ScrollDirection, Styles, animateTransform, canScroll, canUseDOM, cloneElement, createPlaceholder, detectScrollIntent, getBoundingRectangle, getDocument, getFirstScrollableAncestor, getScrollableAncestors, getViewportBoundingRectangle, getWindow, inverseTransform, isDocumentScrollingElement, isKeyboardEvent, parseTransform, scheduler, scrollIntoViewIfNeeded, showPopover, stringifyTransform, supportsPopover, supportsStyle, supportsViewTransition };
|
|
703
|
+
export { DOMRectangle, Listeners, Scheduler, ScrollDirection, Styles, animateTransform, canScroll, canUseDOM, cloneElement, computeTranslate, createPlaceholder, detectScrollIntent, getBoundingRectangle, getComputedStyles, getDocument, getFirstScrollableAncestor, getScrollableAncestors, getViewportBoundingRectangle, getWindow, inverseTransform, isDocumentScrollingElement, isKeyboardEvent, parseTransform, parseTranslate, scheduler, scrollIntoViewIfNeeded, showPopover, stringifyTransform, supportsPopover, supportsStyle, supportsViewTransition };
|
|
637
704
|
//# sourceMappingURL=out.js.map
|
|
638
705
|
//# sourceMappingURL=utilities.js.map
|
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/execution-context/getDocument.ts","src/utilities/bounding-rectangle/getViewportBoundingRectangle.ts","src/utilities/element/cloneElement.ts","src/utilities/type-guards/supportsStyle.ts","src/utilities/element/createPlaceholder.ts","src/utilities/event-listeners/Listeners.ts","src/utilities/popover/supportsPopover.ts","src/utilities/popover/showPopover.ts","src/utilities/scroll/documentScrollingElement.ts","src/utilities/scroll/getScrollPosition.ts","src/utilities/scroll/canScroll.ts","src/utilities/type-guards/isSVGElement.ts","src/utilities/scroll/isFixed.ts","src/utilities/scroll/isScrollable.ts","src/utilities/scroll/getScrollableAncestors.ts","src/utilities/scroll/detectScrollIntent.ts","src/utilities/scroll/scrollIntoViewIfNeeded.ts","src/utilities/scheduler/scheduler.ts","src/utilities/shapes/DOMRectangle.ts","src/utilities/transform/inverseTransform.ts","src/utilities/styles/Styles.ts","src/utilities/transform/animateTransform.ts","src/utilities/transform/parseScale.ts","src/utilities/transform/parseTranslate.ts","src/utilities/transform/parseTransform.ts","src/utilities/transform/stringifyTransform.ts","src/utilities/type-guards/isKeyboardEvent.ts","src/utilities/type-guards/supportsViewTransition.ts"],"names":["target","ScrollDirection","document"],"mappings":"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","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(target: Event['target']): 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 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 node instanceof Document;\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\n\nimport {isWindow} from './isWindow.ts';\n\nexport function isHTMLElement(node: Node | Window): node is HTMLElement {\n if (isWindow(node)) {\n return false;\n }\n\n return node instanceof getWindow(node).HTMLElement;\n}\n","import {isDocument} from '../type-guards/isDocument.ts';\nimport {isHTMLElement} from '../type-guards/isHTMLElement.ts';\nimport {isNode} from '../type-guards/isNode.ts';\nimport {isWindow} from '../type-guards/isWindow.ts';\n\nexport function getDocument(target: Event['target']): 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)) {\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\nexport function getViewportBoundingRectangle(\n element: Element\n): BoundingRectangle {\n const {documentElement} = getDocument(element);\n const width = documentElement.clientWidth;\n const height = documentElement.clientHeight;\n\n return {\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n width,\n height,\n };\n}\n","export function 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 field instanceof HTMLCanvasElement &&\n originalField instanceof HTMLCanvasElement &&\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","import {getWindow} from '../execution-context/getWindow.ts';\n\nexport function supportsStyle(\n element: Element\n): element is Element & {style: CSSStyleDeclaration} {\n return (\n 'style' in element &&\n element.style instanceof getWindow(element).CSSStyleDeclaration\n );\n}\n","import {cloneElement} from './cloneElement.ts';\nimport {supportsStyle} from '../type-guards/supportsStyle.ts';\n\nexport function createPlaceholder(\n element: Element,\n clone = false,\n attributes?: Record<string, string>\n): Element {\n const placeholder = cloneElement(element);\n\n if (supportsStyle(placeholder)) {\n if (!clone) {\n placeholder.style.setProperty('opacity', '0');\n }\n }\n\n placeholder.setAttribute('inert', 'true');\n placeholder.setAttribute('tab-index', '-1');\n placeholder.setAttribute('aria-hidden', 'true');\n\n if (attributes) {\n for (const [key, value] of Object.entries(attributes)) {\n placeholder.setAttribute(key, value);\n }\n }\n\n return placeholder;\n}\n","export interface EventListenerDescriptor {\n type: string;\n listener(event: Event): void;\n options?: AddEventListenerOptions;\n}\n\ntype EventListenerInput = EventListenerDescriptor[] | EventListenerDescriptor;\n\ntype EventListenerEntry = [EventTarget, EventListenerDescriptor];\n\nexport class Listeners {\n private entries: Set<EventListenerEntry> = new Set();\n\n constructor() {}\n\n public bind(target: EventTarget, input: EventListenerInput) {\n const listeners = Array.isArray(input) ? input : [input];\n const entries: EventListenerEntry[] = [];\n\n for (const descriptor of listeners) {\n const {type, listener, options} = descriptor;\n const entry: EventListenerEntry = [target, descriptor];\n\n target.addEventListener(type, listener, options);\n this.entries.add(entry);\n entries.push(entry);\n }\n\n return function cleanup() {\n for (const [target, {type, listener, options}] of entries) {\n target.removeEventListener(type, listener, options);\n }\n };\n }\n\n public clear = () => {\n for (const entry of this.entries) {\n const [target, {type, listener, options}] = entry;\n\n target.removeEventListener(type, listener, options);\n }\n\n this.entries.clear();\n };\n}\n","export function supportsPopover(element: Element): element is Element & {\n showPopover(): void;\n hidePopover(): void;\n} {\n return (\n 'showPopover' in element &&\n 'hidePopover' in element &&\n typeof element.showPopover === 'function' &&\n typeof element.hidePopover === 'function'\n );\n}\n","import {supportsPopover} from './supportsPopover.ts';\n\nexport function showPopover(element: Element) {\n if (\n supportsPopover(element) &&\n element.isConnected &&\n element.hasAttribute('popover')\n ) {\n element.showPopover();\n }\n}\n","import {canUseDOM} from '../execution-context/canUseDOM.ts';\nimport {getDocument} from '../execution-context/getDocument.ts';\n\nexport function isDocumentScrollingElement(element: Element | null) {\n if (!canUseDOM || !element) {\n return false;\n }\n\n return element === getDocument(element).scrollingElement;\n}\n","import {getBoundingRectangle} from '../bounding-rectangle/getBoundingRectangle.ts';\nimport {getViewportBoundingRectangle} from '../bounding-rectangle/getViewportBoundingRectangle.ts';\nimport {isDocumentScrollingElement} from './documentScrollingElement.ts';\n\nexport function getScrollPosition(scrollableElement: Element) {\n const rect = isDocumentScrollingElement(scrollableElement)\n ? getViewportBoundingRectangle(scrollableElement)\n : getBoundingRectangle(scrollableElement);\n\n const dimensions = isDocumentScrollingElement(scrollableElement)\n ? {\n height: window.innerHeight,\n width: window.innerWidth,\n }\n : {\n height: scrollableElement.clientHeight,\n width: scrollableElement.clientWidth,\n };\n const position = {\n current: {\n x: scrollableElement.scrollLeft,\n y: scrollableElement.scrollTop,\n },\n max: {\n x: scrollableElement.scrollWidth - dimensions.width,\n y: scrollableElement.scrollHeight - dimensions.height,\n },\n };\n\n const isTop = position.current.y <= 0;\n const isLeft = position.current.x <= 0;\n const isBottom = position.current.y >= position.max.y;\n const isRight = position.current.x >= position.max.x;\n\n return {\n rect,\n position,\n isTop,\n isLeft,\n isBottom,\n isRight,\n };\n}\n","import type {Coordinates} from '@dnd-kit/geometry';\n\nimport {getScrollPosition} from './getScrollPosition.ts';\n\nexport function canScroll(scrollableElement: Element, by?: Coordinates) {\n const {isTop, isBottom, isLeft, isRight, position} =\n getScrollPosition(scrollableElement);\n\n const {x, y} = by ?? {x: 0, y: 0};\n\n const top = !isTop && position.current.y + y > 0;\n const bottom = !isBottom && position.current.y + y < position.max.y;\n const left = !isLeft && position.current.x + x > 0;\n const right = !isRight && position.current.x + x < position.max.x;\n\n return {\n top,\n bottom,\n left,\n right,\n x: left || right,\n y: top || bottom,\n };\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\n\nexport function isSVGElement(node: Node): node is SVGElement {\n return node instanceof getWindow(node).SVGElement;\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\n\nexport function isFixed(\n node: Element,\n computedStyle: CSSStyleDeclaration = getWindow(node).getComputedStyle(node)\n): boolean {\n return (\n computedStyle.position === 'fixed' || computedStyle.position === 'sticky'\n );\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\n\nexport function isScrollable(\n element: HTMLElement,\n computedStyle: CSSStyleDeclaration = getWindow(element).getComputedStyle(\n element\n )\n): boolean {\n const overflowRegex = /(auto|scroll|overlay)/;\n const properties = ['overflow', 'overflowX', 'overflowY'];\n\n return (\n properties.find((property) => {\n const value = computedStyle[property as keyof CSSStyleDeclaration];\n\n return typeof value === 'string' ? overflowRegex.test(value) : false;\n }) != null\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 {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 {getComputedStyle} = getWindow(node);\n const computedStyle = getComputedStyle(node);\n\n if (excludeElement && node === element) {\n // no-op\n } else if (isScrollable(node, computedStyle)) {\n scrollParents.add(node);\n }\n\n if (isFixed(node, computedStyle)) {\n const {scrollingElement} = node.ownerDocument;\n\n if (scrollingElement) scrollParents.add(scrollingElement);\n\n return scrollParents;\n }\n\n return findScrollableAncestors(node.parentNode);\n }\n\n if (!element) {\n return scrollParents;\n }\n\n return findScrollableAncestors(element);\n}\n\nexport function getFirstScrollableAncestor(node: Node | null): Element | null {\n const [firstScrollableAncestor] = getScrollableAncestors(node, {limit: 1});\n\n return firstScrollableAncestor ?? null;\n}\n","import type {Axis, Coordinates} from '@dnd-kit/geometry';\n\nimport {getScrollPosition} from './getScrollPosition.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 {\n rect: scrollContainerRect,\n isTop,\n isBottom,\n isLeft,\n isRight,\n } = getScrollPosition(scrollableElement);\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 &&\n coordinates.y <= scrollContainerRect.top + threshold.height &&\n intent?.y !== ScrollDirection.Forward &&\n coordinates.x >= scrollContainerRect.left - tolerance.x &&\n coordinates.x <= scrollContainerRect.right + tolerance.x\n ) {\n // Scroll Up\n direction.y = ScrollDirection.Reverse;\n speed.y =\n acceleration *\n Math.abs(\n (scrollContainerRect.top + threshold.height - coordinates.y) /\n threshold.height\n );\n } else if (\n !isBottom &&\n coordinates.y >= scrollContainerRect.bottom - threshold.height &&\n intent?.y !== ScrollDirection.Reverse &&\n coordinates.x >= scrollContainerRect.left - tolerance.x &&\n coordinates.x <= scrollContainerRect.right + tolerance.x\n ) {\n // Scroll Down\n direction.y = ScrollDirection.Forward;\n speed.y =\n acceleration *\n Math.abs(\n (scrollContainerRect.bottom - threshold.height - coordinates.y) /\n threshold.height\n );\n }\n\n if (\n !isRight &&\n coordinates.x >= scrollContainerRect.right - threshold.width &&\n intent?.x !== ScrollDirection.Reverse &&\n coordinates.y >= scrollContainerRect.top - tolerance.y &&\n coordinates.y <= scrollContainerRect.bottom + tolerance.y\n ) {\n // Scroll Right\n direction.x = ScrollDirection.Forward;\n speed.x =\n acceleration *\n Math.abs(\n (scrollContainerRect.right - threshold.width - coordinates.x) /\n threshold.width\n );\n } else if (\n !isLeft &&\n coordinates.x <= scrollContainerRect.left + threshold.width &&\n intent?.x !== ScrollDirection.Forward &&\n coordinates.y >= scrollContainerRect.top - tolerance.y &&\n coordinates.y <= scrollContainerRect.bottom + tolerance.y\n ) {\n // Scroll Left\n direction.x = ScrollDirection.Reverse;\n speed.x =\n acceleration *\n Math.abs(\n (scrollContainerRect.left + threshold.width - coordinates.x) /\n threshold.width\n );\n }\n\n return {\n direction,\n speed,\n };\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\nimport {getScrollableAncestors} 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 (!(el instanceof HTMLElement)) {\n return el.scrollIntoView();\n }\n\n var [parent] = getScrollableAncestors(el, {limit: 1});\n\n if (!(parent instanceof HTMLElement)) {\n return;\n }\n\n const parentComputedStyle = getWindow(parent).getComputedStyle(parent, null),\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","export class Scheduler {\n private animationFrame: number | undefined;\n private tasks: Set<() => void> = new Set();\n\n public schedule(task: () => void) {\n this.tasks.add(task);\n\n if (!this.animationFrame) {\n this.animationFrame = requestAnimationFrame(this.flush);\n }\n }\n\n public flush = () => {\n const tasks = this.tasks;\n\n this.animationFrame = undefined;\n this.tasks = new Set();\n\n for (const task of tasks) {\n task();\n }\n };\n}\n\nexport const scheduler = new Scheduler();\n","import {Rectangle} from '@dnd-kit/geometry';\n\nimport {inverseTransform} from '../transform/inverseTransform.ts';\nimport {getBoundingRectangle} from '../bounding-rectangle/getBoundingRectangle.ts';\nimport {getWindow} from '../execution-context/getWindow.ts';\nimport {parseTransform, parseTranslate} from '../transform/index.ts';\n\nexport class DOMRectangle extends Rectangle {\n constructor(element: Element, ignoreTransforms = false) {\n let {top, left, right, bottom, width, height} =\n getBoundingRectangle(element);\n const computedStyles = getWindow(element).getComputedStyle(element);\n const parsedTransform = parseTransform(computedStyles);\n const scale = {\n x: parsedTransform?.scaleX ?? 1,\n y: parsedTransform?.scaleY ?? 1,\n };\n\n if (parsedTransform && ignoreTransforms) {\n const updated = inverseTransform(\n {top, left, right, bottom, width, height},\n parsedTransform,\n computedStyles.transformOrigin\n );\n\n top = updated.top;\n left = updated.left;\n width = updated.width;\n height = updated.height;\n }\n\n super(left, top, width, height);\n\n this.scale = scale;\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","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 {Styles} from '../styles/index.ts';\nimport {getWindow} from '../execution-context/index.ts';\n\ninterface Arguments {\n element: Element;\n keyframes: PropertyIndexedKeyframes | Keyframe[];\n options: KeyframeAnimationOptions;\n onReady?(): void;\n onFinish?(): void;\n}\nexport function animateTransform({\n element,\n keyframes,\n options,\n onReady,\n onFinish,\n}: Arguments) {\n const styles = new Styles(element);\n const {transitionProperty} = getWindow(element).getComputedStyle(element);\n\n const properties = transitionProperty.split(', ');\n\n styles.set({\n 'transition-property': properties.length\n ? properties\n .filter(\n (property) =>\n !property.includes('transform') && !property.includes('translate')\n )\n .join(', ')\n : 'none',\n });\n\n onReady?.();\n\n element.animate(keyframes, options).finished.then(() => {\n onFinish?.();\n styles.reset();\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(\n computedStyles: CSSStyleDeclaration\n): Transform | null {\n const {scale, transform, translate} = computedStyles;\n const parsedScale = parseScale(scale);\n const parsedTranslate = parseTranslate(translate);\n\n if (parsedScale && parsedTranslate) {\n return {\n x: parsedTranslate.x,\n y: parsedTranslate.y,\n z: parsedTranslate.z,\n scaleX: parsedScale.x,\n scaleY: parsedScale.y,\n };\n }\n\n const parsedMatrix = parseTransformMatrix(transform);\n\n if (!parsedMatrix && !parsedScale && !parsedTranslate) {\n return null;\n }\n\n return {\n x: parsedTranslate?.x ?? parsedMatrix?.x ?? 0,\n y: parsedTranslate?.y ?? parsedMatrix?.y ?? 0,\n scaleX: parsedScale?.x ?? parsedMatrix?.scaleX ?? 1,\n scaleY: parsedScale?.y ?? parsedMatrix?.scaleY ?? 1,\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 type {Transform} from './parseTransform.ts';\n\nexport function stringifyTransform({x, y, z, scaleX, scaleY}: Transform) {\n return `translate3d(${x}px, ${y}px, ${z ?? 0}) scale(${scaleX}, ${scaleY})`;\n}\n","export function isKeyboardEvent(\n event: Event | null | undefined\n): event is KeyboardEvent {\n return event instanceof KeyboardEvent;\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"]}
|
|
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/execution-context/getDocument.ts","src/utilities/bounding-rectangle/getViewportBoundingRectangle.ts","src/utilities/element/cloneElement.ts","src/utilities/type-guards/supportsStyle.ts","src/utilities/element/createPlaceholder.ts","src/utilities/event-listeners/Listeners.ts","src/utilities/popover/supportsPopover.ts","src/utilities/popover/showPopover.ts","src/utilities/scroll/documentScrollingElement.ts","src/utilities/scroll/getScrollPosition.ts","src/utilities/scroll/canScroll.ts","src/utilities/type-guards/isSVGElement.ts","src/utilities/styles/getComputedStyles.ts","src/utilities/scroll/isFixed.ts","src/utilities/scroll/isScrollable.ts","src/utilities/scroll/getScrollableAncestors.ts","src/utilities/scroll/detectScrollIntent.ts","src/utilities/scroll/scrollIntoViewIfNeeded.ts","src/utilities/scheduler/scheduler.ts","src/utilities/shapes/DOMRectangle.ts","src/utilities/transform/inverseTransform.ts","src/utilities/styles/Styles.ts","src/utilities/transform/animateTransform.ts","src/utilities/keyframes/getFinalKeyframe.ts","src/utilities/transform/parseTranslate.ts","src/utilities/transform/computeTranslate.ts","src/utilities/transform/parseScale.ts","src/utilities/transform/parseTransform.ts","src/utilities/transform/stringifyTransform.ts","src/utilities/type-guards/isKeyboardEvent.ts","src/utilities/type-guards/supportsViewTransition.ts"],"names":["target","ScrollDirection","translate","document"],"mappings":"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","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(target: Event['target']): 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 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 node instanceof Document;\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\n\nimport {isWindow} from './isWindow.ts';\n\nexport function isHTMLElement(node: Node | Window): node is HTMLElement {\n if (isWindow(node)) {\n return false;\n }\n\n return node instanceof getWindow(node).HTMLElement;\n}\n","import {isDocument} from '../type-guards/isDocument.ts';\nimport {isHTMLElement} from '../type-guards/isHTMLElement.ts';\nimport {isNode} from '../type-guards/isNode.ts';\nimport {isWindow} from '../type-guards/isWindow.ts';\n\nexport function getDocument(target: Event['target']): 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)) {\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\nexport function getViewportBoundingRectangle(\n element: Element\n): BoundingRectangle {\n const {documentElement} = getDocument(element);\n const width = documentElement.clientWidth;\n const height = documentElement.clientHeight;\n\n return {\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n width,\n height,\n };\n}\n","export function 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 field instanceof HTMLCanvasElement &&\n originalField instanceof HTMLCanvasElement &&\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","import {getWindow} from '../execution-context/getWindow.ts';\n\nexport function supportsStyle(\n element: Element\n): element is Element & {style: CSSStyleDeclaration} {\n return (\n 'style' in element &&\n element.style instanceof getWindow(element).CSSStyleDeclaration\n );\n}\n","import {cloneElement} from './cloneElement.ts';\nimport {supportsStyle} from '../type-guards/supportsStyle.ts';\n\nexport function createPlaceholder(\n element: Element,\n clone = false,\n attributes?: Record<string, string>\n): Element {\n const placeholder = cloneElement(element);\n\n if (supportsStyle(placeholder)) {\n if (!clone) {\n placeholder.style.setProperty('opacity', '0');\n }\n }\n\n placeholder.setAttribute('inert', 'true');\n placeholder.setAttribute('tab-index', '-1');\n placeholder.setAttribute('aria-hidden', 'true');\n\n if (attributes) {\n for (const [key, value] of Object.entries(attributes)) {\n placeholder.setAttribute(key, value);\n }\n }\n\n return placeholder;\n}\n","export interface EventListenerDescriptor {\n type: string;\n listener(event: Event): void;\n options?: AddEventListenerOptions;\n}\n\ntype EventListenerInput = EventListenerDescriptor[] | EventListenerDescriptor;\n\ntype EventListenerEntry = [EventTarget, EventListenerDescriptor];\n\nexport class Listeners {\n private entries: Set<EventListenerEntry> = new Set();\n\n constructor() {}\n\n public bind(target: EventTarget, input: EventListenerInput) {\n const listeners = Array.isArray(input) ? input : [input];\n const entries: EventListenerEntry[] = [];\n\n for (const descriptor of listeners) {\n const {type, listener, options} = descriptor;\n const entry: EventListenerEntry = [target, descriptor];\n\n target.addEventListener(type, listener, options);\n this.entries.add(entry);\n entries.push(entry);\n }\n\n return function cleanup() {\n for (const [target, {type, listener, options}] of entries) {\n target.removeEventListener(type, listener, options);\n }\n };\n }\n\n public clear = () => {\n for (const entry of this.entries) {\n const [target, {type, listener, options}] = entry;\n\n target.removeEventListener(type, listener, options);\n }\n\n this.entries.clear();\n };\n}\n","export function supportsPopover(element: Element): element is Element & {\n showPopover(): void;\n hidePopover(): void;\n} {\n return (\n 'showPopover' in element &&\n 'hidePopover' in element &&\n typeof element.showPopover === 'function' &&\n typeof element.hidePopover === 'function'\n );\n}\n","import {supportsPopover} from './supportsPopover.ts';\n\nexport function showPopover(element: Element) {\n if (\n supportsPopover(element) &&\n element.isConnected &&\n element.hasAttribute('popover')\n ) {\n element.showPopover();\n }\n}\n","import {canUseDOM} from '../execution-context/canUseDOM.ts';\nimport {getDocument} from '../execution-context/getDocument.ts';\n\nexport function isDocumentScrollingElement(element: Element | null) {\n if (!canUseDOM || !element) {\n return false;\n }\n\n return element === getDocument(element).scrollingElement;\n}\n","import {getBoundingRectangle} from '../bounding-rectangle/getBoundingRectangle.ts';\nimport {getViewportBoundingRectangle} from '../bounding-rectangle/getViewportBoundingRectangle.ts';\nimport {isDocumentScrollingElement} from './documentScrollingElement.ts';\n\nexport function getScrollPosition(scrollableElement: Element) {\n const rect = isDocumentScrollingElement(scrollableElement)\n ? getViewportBoundingRectangle(scrollableElement)\n : getBoundingRectangle(scrollableElement);\n\n const dimensions = isDocumentScrollingElement(scrollableElement)\n ? {\n height: window.innerHeight,\n width: window.innerWidth,\n }\n : {\n height: scrollableElement.clientHeight,\n width: scrollableElement.clientWidth,\n };\n const position = {\n current: {\n x: scrollableElement.scrollLeft,\n y: scrollableElement.scrollTop,\n },\n max: {\n x: scrollableElement.scrollWidth - dimensions.width,\n y: scrollableElement.scrollHeight - dimensions.height,\n },\n };\n\n const isTop = position.current.y <= 0;\n const isLeft = position.current.x <= 0;\n const isBottom = position.current.y >= position.max.y;\n const isRight = position.current.x >= position.max.x;\n\n return {\n rect,\n position,\n isTop,\n isLeft,\n isBottom,\n isRight,\n };\n}\n","import type {Coordinates} from '@dnd-kit/geometry';\n\nimport {getScrollPosition} from './getScrollPosition.ts';\n\nexport function canScroll(scrollableElement: Element, by?: Coordinates) {\n const {isTop, isBottom, isLeft, isRight, position} =\n getScrollPosition(scrollableElement);\n\n const {x, y} = by ?? {x: 0, y: 0};\n\n const top = !isTop && position.current.y + y > 0;\n const bottom = !isBottom && position.current.y + y < position.max.y;\n const left = !isLeft && position.current.x + x > 0;\n const right = !isRight && position.current.x + x < position.max.x;\n\n return {\n top,\n bottom,\n left,\n right,\n x: left || right,\n y: top || bottom,\n };\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\n\nexport function isSVGElement(node: Node): node is SVGElement {\n return node instanceof getWindow(node).SVGElement;\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\n\nexport function getComputedStyles(element: Element) {\n return getWindow(element).getComputedStyle(element);\n}\n","import {getComputedStyles} from '../styles/getComputedStyles.ts';\n\nexport function isFixed(\n node: Element,\n computedStyle: CSSStyleDeclaration = getComputedStyles(node)\n): boolean {\n return (\n computedStyle.position === 'fixed' || computedStyle.position === 'sticky'\n );\n}\n","import {getComputedStyles} from '../styles/getComputedStyles.ts';\n\nexport function isScrollable(\n element: HTMLElement,\n computedStyle: CSSStyleDeclaration = getComputedStyles(element)\n): boolean {\n const overflowRegex = /(auto|scroll|overlay)/;\n const properties = ['overflow', 'overflowX', 'overflowY'];\n\n return (\n properties.find((property) => {\n const value = computedStyle[property as keyof CSSStyleDeclaration];\n\n return typeof value === 'string' ? overflowRegex.test(value) : false;\n }) != null\n );\n}\n","import {getWindow} from '../execution-context/getWindow.ts';\nimport {isDocument} from '../type-guards/isDocument.ts';\nimport {isHTMLElement} from '../type-guards/isHTMLElement.ts';\nimport {isSVGElement} from '../type-guards/isSVGElement.ts';\nimport {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {isFixed} from './isFixed.ts';\nimport {isScrollable} from './isScrollable.ts';\n\ninterface Options {\n limit?: number;\n excludeElement?: boolean;\n}\n\nconst defaultOptions: Options = {\n excludeElement: true,\n};\n\nexport function getScrollableAncestors(\n element: Node | null,\n options: Options = defaultOptions\n): Set<Element> {\n const {limit, excludeElement} = options;\n const scrollParents = new Set<Element>();\n\n function findScrollableAncestors(node: Node | null): Set<Element> {\n if (limit != null && scrollParents.size >= limit) {\n return scrollParents;\n }\n\n if (!node) {\n return scrollParents;\n }\n\n if (\n isDocument(node) &&\n node.scrollingElement != null &&\n !scrollParents.has(node.scrollingElement)\n ) {\n scrollParents.add(node.scrollingElement);\n\n return scrollParents;\n }\n\n if (!isHTMLElement(node)) {\n if (isSVGElement(node)) {\n return findScrollableAncestors(node.parentElement);\n }\n\n return scrollParents;\n }\n\n if (scrollParents.has(node)) {\n return scrollParents;\n }\n\n const computedStyle = getComputedStyles(node);\n\n if (excludeElement && node === element) {\n // no-op\n } else if (isScrollable(node, computedStyle)) {\n scrollParents.add(node);\n }\n\n if (isFixed(node, computedStyle)) {\n const {scrollingElement} = node.ownerDocument;\n\n if (scrollingElement) scrollParents.add(scrollingElement);\n\n return scrollParents;\n }\n\n return findScrollableAncestors(node.parentNode);\n }\n\n if (!element) {\n return scrollParents;\n }\n\n return findScrollableAncestors(element);\n}\n\nexport function getFirstScrollableAncestor(node: Node | null): Element | null {\n const [firstScrollableAncestor] = getScrollableAncestors(node, {limit: 1});\n\n return firstScrollableAncestor ?? null;\n}\n","import type {Axis, Coordinates} from '@dnd-kit/geometry';\n\nimport {getScrollPosition} from './getScrollPosition.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 {\n rect: scrollContainerRect,\n isTop,\n isBottom,\n isLeft,\n isRight,\n } = getScrollPosition(scrollableElement);\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 &&\n coordinates.y <= scrollContainerRect.top + threshold.height &&\n intent?.y !== ScrollDirection.Forward &&\n coordinates.x >= scrollContainerRect.left - tolerance.x &&\n coordinates.x <= scrollContainerRect.right + tolerance.x\n ) {\n // Scroll Up\n direction.y = ScrollDirection.Reverse;\n speed.y =\n acceleration *\n Math.abs(\n (scrollContainerRect.top + threshold.height - coordinates.y) /\n threshold.height\n );\n } else if (\n !isBottom &&\n coordinates.y >= scrollContainerRect.bottom - threshold.height &&\n intent?.y !== ScrollDirection.Reverse &&\n coordinates.x >= scrollContainerRect.left - tolerance.x &&\n coordinates.x <= scrollContainerRect.right + tolerance.x\n ) {\n // Scroll Down\n direction.y = ScrollDirection.Forward;\n speed.y =\n acceleration *\n Math.abs(\n (scrollContainerRect.bottom - threshold.height - coordinates.y) /\n threshold.height\n );\n }\n\n if (\n !isRight &&\n coordinates.x >= scrollContainerRect.right - threshold.width &&\n intent?.x !== ScrollDirection.Reverse &&\n coordinates.y >= scrollContainerRect.top - tolerance.y &&\n coordinates.y <= scrollContainerRect.bottom + tolerance.y\n ) {\n // Scroll Right\n direction.x = ScrollDirection.Forward;\n speed.x =\n acceleration *\n Math.abs(\n (scrollContainerRect.right - threshold.width - coordinates.x) /\n threshold.width\n );\n } else if (\n !isLeft &&\n coordinates.x <= scrollContainerRect.left + threshold.width &&\n intent?.x !== ScrollDirection.Forward &&\n coordinates.y >= scrollContainerRect.top - tolerance.y &&\n coordinates.y <= scrollContainerRect.bottom + tolerance.y\n ) {\n // Scroll Left\n direction.x = ScrollDirection.Reverse;\n speed.x =\n acceleration *\n Math.abs(\n (scrollContainerRect.left + threshold.width - coordinates.x) /\n threshold.width\n );\n }\n\n return {\n direction,\n speed,\n };\n}\n","import {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {getScrollableAncestors} 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 (!(el instanceof HTMLElement)) {\n return el.scrollIntoView();\n }\n\n var [parent] = getScrollableAncestors(el, {limit: 1});\n\n if (!(parent instanceof HTMLElement)) {\n return;\n }\n\n const parentComputedStyle = getComputedStyles(parent),\n parentBorderTopWidth = parseInt(\n parentComputedStyle.getPropertyValue('border-top-width')\n ),\n parentBorderLeftWidth = parseInt(\n parentComputedStyle.getPropertyValue('border-left-width')\n ),\n overTop = el.offsetTop - parent.offsetTop < parent.scrollTop,\n overBottom =\n el.offsetTop - parent.offsetTop + el.clientHeight - parentBorderTopWidth >\n parent.scrollTop + parent.clientHeight,\n overLeft = el.offsetLeft - parent.offsetLeft < parent.scrollLeft,\n overRight =\n el.offsetLeft -\n parent.offsetLeft +\n el.clientWidth -\n parentBorderLeftWidth >\n parent.scrollLeft + parent.clientWidth,\n alignWithTop = overTop && !overBottom;\n\n if ((overTop || overBottom) && centerIfNeeded) {\n parent.scrollTop =\n el.offsetTop -\n parent.offsetTop -\n parent.clientHeight / 2 -\n parentBorderTopWidth +\n el.clientHeight / 2;\n }\n\n if ((overLeft || overRight) && centerIfNeeded) {\n parent.scrollLeft =\n el.offsetLeft -\n parent.offsetLeft -\n parent.clientWidth / 2 -\n parentBorderLeftWidth +\n el.clientWidth / 2;\n }\n\n if ((overTop || overBottom || overLeft || overRight) && !centerIfNeeded) {\n el.scrollIntoView(alignWithTop);\n }\n}\n","export class Scheduler {\n private animationFrame: number | undefined;\n private tasks: Set<() => void> = new Set();\n\n public schedule(task: () => void) {\n this.tasks.add(task);\n\n if (!this.animationFrame) {\n this.animationFrame = requestAnimationFrame(this.flush);\n }\n }\n\n public flush = () => {\n const tasks = this.tasks;\n\n this.animationFrame = undefined;\n this.tasks = new Set();\n\n for (const task of tasks) {\n task();\n }\n };\n}\n\nexport const scheduler = new Scheduler();\n","import {Rectangle} from '@dnd-kit/geometry';\n\nimport {inverseTransform} from '../transform/inverseTransform.ts';\nimport {getBoundingRectangle} from '../bounding-rectangle/getBoundingRectangle.ts';\nimport {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {parseTransform, type Transform} from '../transform/index.ts';\nimport {getFinalKeyframe} from '../keyframes/getFinalKeyframe.ts';\n\nexport class DOMRectangle extends Rectangle {\n constructor(element: Element, ignoreTransforms = false) {\n let {top, left, right, bottom, width, height} =\n getBoundingRectangle(element);\n const computedStyles = getComputedStyles(element);\n const parsedTransform = parseTransform(computedStyles);\n const scale = {\n x: parsedTransform?.scaleX ?? 1,\n y: parsedTransform?.scaleY ?? 1,\n };\n const projectedTransform = getProjectedTransform(element);\n\n if (parsedTransform && (ignoreTransforms || projectedTransform)) {\n const updated = inverseTransform(\n {top, left, right, bottom, width, height},\n parsedTransform,\n computedStyles.transformOrigin\n );\n\n top = updated.top;\n left = updated.left;\n width = updated.width;\n height = updated.height;\n }\n\n if (projectedTransform && !ignoreTransforms) {\n top = top + projectedTransform.y;\n left = left + projectedTransform.x;\n width = width * projectedTransform.scaleX;\n height = height * projectedTransform.scaleY;\n scale.x = projectedTransform.scaleX;\n scale.y = projectedTransform.scaleY;\n }\n\n super(left, top, width, height);\n\n this.scale = scale;\n }\n}\n\n/*\n * Get the projected transform of an element based on its final keyframe\n */\nfunction getProjectedTransform(element: Element): Transform | null {\n const keyframe = getFinalKeyframe(element);\n\n if (keyframe) {\n const {transform = '', translate = '', scale = ''} = keyframe;\n\n if (transform || translate || scale) {\n return parseTransform({\n transform: typeof transform === 'string' ? transform : '',\n translate: typeof translate === 'string' ? translate : '',\n scale: typeof scale === 'string' ? scale : '',\n });\n }\n }\n\n return null;\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","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 {Styles} from '../styles/index.ts';\nimport {getComputedStyles} from '../styles/getComputedStyles.ts';\n\ninterface Arguments {\n element: Element;\n keyframes: PropertyIndexedKeyframes | Keyframe[];\n options: KeyframeAnimationOptions;\n onReady?(): void;\n onFinish?(): void;\n}\nexport function animateTransform({\n element,\n keyframes,\n options,\n onReady,\n onFinish,\n}: Arguments) {\n const styles = new Styles(element);\n const {transitionProperty} = getComputedStyles(element);\n\n const properties = transitionProperty.split(', ');\n\n styles.set({\n 'transition-property': properties.length\n ? properties\n .filter(\n (property) =>\n !property.includes('transform') && !property.includes('translate')\n )\n .join(', ')\n : 'none',\n });\n\n onReady?.();\n\n element.animate(keyframes, options).finished.then(() => {\n onFinish?.();\n styles.reset();\n });\n}\n","export function getFinalKeyframe(element: Element): Keyframe | null {\n const animations = element.getAnimations();\n\n if (animations.length > 0) {\n const [animation] = animations;\n const {effect} = animation;\n const keyframes =\n effect instanceof KeyframeEffect ? effect.getKeyframes() : [];\n\n if (keyframes.length > 0) {\n return keyframes?.[keyframes.length - 1];\n }\n }\n\n return null;\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 {getFinalKeyframe} from '../keyframes/getFinalKeyframe.ts';\nimport {getComputedStyles} from '../styles/getComputedStyles.ts';\nimport {parseTranslate} from './parseTranslate.ts';\n\nexport function computeTranslate(element: Element): {\n x: number;\n y: number;\n z: number;\n} {\n const keyframe = getFinalKeyframe(element);\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 const {translate} = getComputedStyles(element);\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","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","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 type {Transform} from './parseTransform.ts';\n\nexport function stringifyTransform({x, y, z, scaleX, scaleY}: Transform) {\n return `translate3d(${x}px, ${y}px, ${z ?? 0}) scale(${scaleX}, ${scaleY})`;\n}\n","export function isKeyboardEvent(\n event: Event | null | undefined\n): event is KeyboardEvent {\n return event instanceof KeyboardEvent;\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"]}
|