@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/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 = getWindow(node).getComputedStyle(node)) {
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 = getWindow(element).getComputedStyle(
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 { getComputedStyle } = getWindow(node);
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 = getWindow(parent).getComputedStyle(parent, null), parentBorderTopWidth = parseInt(
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 } = getWindow(element).getComputedStyle(element);
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/transform/parseScale.ts
516
- function parseScale(scale) {
517
- if (scale === "none") {
518
- return null;
519
- }
520
- const values = scale.split(" ");
521
- const x = parseFloat(values[0]);
522
- const y = parseFloat(values[1]);
523
- if (isNaN(x) && isNaN(y)) {
524
- return null;
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: parsedTranslate?.x ?? parsedMatrix?.x ?? 0,
569
- y: parsedTranslate?.y ?? parsedMatrix?.y ?? 0,
570
- scaleX: parsedScale?.x ?? parsedMatrix?.scaleX ?? 1,
571
- scaleY: parsedScale?.y ?? parsedMatrix?.scaleY ?? 1
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 = getWindow(element).getComputedStyle(element);
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
- if (parsedTransform && ignoreTransforms) {
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"]}