@dnd-kit/dom 0.2.2 → 0.2.3
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 +3 -4
- package/index.cjs.map +1 -1
- package/index.d.cts +1 -1
- package/index.d.ts +1 -1
- package/index.js +3 -4
- package/index.js.map +1 -1
- package/package.json +5 -5
package/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["src/core/plugins/accessibility/defaults.ts","src/core/plugins/accessibility/utilities.ts","src/core/plugins/accessibility/HiddenText.ts","src/core/plugins/accessibility/LiveRegion.ts","src/core/plugins/accessibility/Accessibility.ts","src/core/plugins/cursor/Cursor.ts","src/core/plugins/feedback/constants.ts","src/core/plugins/feedback/utilities.ts","src/core/plugins/feedback/Feedback.ts","src/core/plugins/scrolling/ScrollLock.ts","src/core/plugins/scrolling/ScrollIntent.ts","src/core/plugins/scrolling/Scroller.ts","src/utilities/scheduling/scheduler.ts","src/core/plugins/scrolling/AutoScroller.ts","src/core/plugins/scrolling/ScrollListener.ts","src/core/plugins/selection/PreventSelection.ts","src/core/sensors/keyboard/KeyboardSensor.ts","src/core/sensors/pointer/DistanceConstraint.ts","src/core/sensors/pointer/DelayConstraint.ts","src/core/sensors/pointer/PointerActivationConstraints.ts","src/core/sensors/pointer/PointerSensor.ts","src/core/manager/manager.ts","src/core/entities/draggable/draggable.ts","src/core/entities/droppable/droppable.ts"],"names":["Plugin","generateUniqueId","scheduler","manager","_a","isSafari","computed","getDocument","effect","document","untracked","cloneElement","ProxiedElements","getFrameElement","isElement","showPopover","reactive","_b","_c","state","getFrameTransform","DOMRectangle","Styles","getComputedStyles","isKeyboardEvent","parseTranslate","tX","tY","supportsPopover","getWindow","supportsStyle","styles","element","isHTMLElement","effects","transform","status","initialTranslate","translate","delta","Point","Rectangle","getFinalKeyframe","options","animateTransform","configurator","_dec","_init","Direction","ScrollDirection","signal","batch","Axes","CorePlugin","canScroll","detectScrollIntent","getElementFromPoint","getScrollableAncestors","deepEqual","Sensor","Listeners","scrollIntoViewIfNeeded","event","ActivationConstraint","getEventCoordinates","exceedsDistance","_timeout","_coordinates","defaults","isTextInput","isInteractiveElement","isPointerEvent","ActivationController","getDocuments","AbstractDragDropManager","AbstractDraggable","descriptor","_element_dec","_element","AbstractDroppable","defaultCollisionDetection","PositionObserver"],"mappings":"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","file":"index.cjs","sourcesContent":["import type {Announcements, ScreenReaderInstructions} from './types.ts';\n\nexport const defaultAttributes = {\n role: 'button',\n roleDescription: 'draggable',\n tabIndex: 0,\n};\n\nexport const defaultDescriptionIdPrefix = `dnd-kit-description`;\nexport const defaultAnnouncementIdPrefix = `dnd-kit-announcement`;\n\nexport const defaultScreenReaderInstructions: ScreenReaderInstructions = {\n draggable: `To pick up a draggable item, press the space bar. While dragging, use the arrow keys to move the item in a given direction. Press space again to drop the item in its new position, or press escape to cancel.`,\n};\n\nexport const defaultAnnouncements: Announcements = {\n dragstart({operation: {source}}) {\n if (!source) return;\n\n return `Picked up draggable item ${source.id}.`;\n },\n dragover({operation: {source, target}}) {\n if (!source || source.id === target?.id) return;\n\n if (target) {\n return `Draggable item ${source.id} was moved over droppable target ${target.id}.`;\n }\n\n return `Draggable item ${source.id} is no longer over a droppable target.`;\n },\n dragend({operation: {source, target}, canceled}) {\n if (!source) return;\n\n if (canceled) {\n return `Dragging was cancelled. Draggable item ${source.id} was dropped.`;\n }\n\n if (target) {\n return `Draggable item ${source.id} was dropped over droppable target ${target.id}`;\n }\n\n return `Draggable item ${source.id} was dropped.`;\n },\n};\n","export function isFocusable(element: Element) {\n const tagName = element.tagName.toLowerCase();\n\n return ['input', 'select', 'textarea', 'a', 'button'].includes(tagName);\n}\n","export function createHiddenText(id: string, value: string) {\n const element = document.createElement('div');\n\n element.id = id;\n element.style.setProperty('display', 'none');\n element.textContent = value;\n\n return element;\n}\n","export function createLiveRegion(id: string) {\n const element = document.createElement('div');\n\n element.id = id;\n element.setAttribute('role', 'status');\n element.setAttribute('aria-live', 'polite');\n element.setAttribute('aria-atomic', 'true');\n element.style.setProperty('position', 'fixed');\n element.style.setProperty('width', '1px');\n element.style.setProperty('height', '1px');\n element.style.setProperty('margin', '-1px');\n element.style.setProperty('border', '0');\n element.style.setProperty('padding', '0');\n element.style.setProperty('overflow', 'hidden');\n element.style.setProperty('clip', 'rect(0 0 0 0)');\n element.style.setProperty('clip-path', 'inset(100%)');\n element.style.setProperty('white-space', 'nowrap');\n\n return element;\n}\n","import {Plugin} from '@dnd-kit/abstract';\nimport {isSafari, generateUniqueId, scheduler} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport {\n defaultAnnouncements,\n defaultAttributes,\n defaultAnnouncementIdPrefix,\n defaultDescriptionIdPrefix,\n defaultScreenReaderInstructions,\n} from './defaults.ts';\nimport type {Announcements, ScreenReaderInstructions} from './types.ts';\nimport {isFocusable} from './utilities.ts';\nimport {createHiddenText} from './HiddenText.ts';\nimport {createLiveRegion} from './LiveRegion.ts';\n\ninterface Options {\n /**\n * Optional id that should be used for the accessibility plugin's screen reader instructions and announcements.\n */\n id?: string;\n /**\n * Optional id prefix to use for the accessibility plugin's screen reader instructions and announcements.\n */\n idPrefix?: {\n description?: string;\n announcement?: string;\n };\n /**\n * The announcements to use for the accessibility plugin.\n */\n announcements?: Announcements;\n /**\n * The screen reader instructions to use for the accessibility plugin.\n */\n screenReaderInstructions?: ScreenReaderInstructions;\n /**\n * The number of milliseconds to debounce the announcement updates.\n *\n * @remarks\n * Only the `dragover` and `dragmove` announcements are debounced.\n *\n * @default 500\n */\n debounce?: number;\n}\n\nconst debouncedEvents = ['dragover', 'dragmove'];\n\nexport class Accessibility extends Plugin<DragDropManager> {\n constructor(manager: DragDropManager, options?: Options) {\n super(manager);\n\n const {\n id,\n idPrefix: {\n description: descriptionPrefix = defaultDescriptionIdPrefix,\n announcement: announcementPrefix = defaultAnnouncementIdPrefix,\n } = {},\n announcements = defaultAnnouncements,\n screenReaderInstructions = defaultScreenReaderInstructions,\n debounce: debounceMs = 500,\n } = options ?? {};\n\n const descriptionId = id\n ? `${descriptionPrefix}-${id}`\n : generateUniqueId(descriptionPrefix);\n const announcementId = id\n ? `${announcementPrefix}-${id}`\n : generateUniqueId(announcementPrefix);\n\n let hiddenTextElement: HTMLElement | undefined;\n let liveRegionElement: HTMLElement | undefined;\n let liveRegionTextNode: Node | undefined;\n let latestAnnouncement: string | undefined;\n\n const updateAnnouncement = (value = latestAnnouncement) => {\n if (!liveRegionTextNode || !value) return;\n if (liveRegionTextNode?.nodeValue !== value) {\n liveRegionTextNode.nodeValue = value;\n }\n };\n const scheduleUpdateAnnouncement = () =>\n scheduler.schedule(updateAnnouncement);\n const debouncedUpdateAnnouncement = debounce(\n scheduleUpdateAnnouncement,\n debounceMs\n );\n\n const eventListeners = Object.entries(announcements).map(\n ([eventName, getAnnouncement]) => {\n return this.manager.monitor.addEventListener(\n eventName as keyof Announcements,\n (event: any, manager: DragDropManager) => {\n const element = liveRegionTextNode;\n if (!element) return;\n\n const announcement = getAnnouncement?.(event, manager);\n\n if (announcement && element.nodeValue !== announcement) {\n latestAnnouncement = announcement;\n\n if (debouncedEvents.includes(eventName)) {\n debouncedUpdateAnnouncement();\n } else {\n scheduleUpdateAnnouncement();\n debouncedUpdateAnnouncement.cancel();\n }\n }\n }\n );\n }\n );\n\n const initialize = () => {\n let elements = [];\n\n if (!hiddenTextElement?.isConnected) {\n hiddenTextElement = createHiddenText(\n descriptionId,\n screenReaderInstructions.draggable\n );\n elements.push(hiddenTextElement);\n }\n\n if (!liveRegionElement?.isConnected) {\n liveRegionElement = createLiveRegion(announcementId);\n liveRegionTextNode = document.createTextNode('');\n liveRegionElement.appendChild(liveRegionTextNode);\n elements.push(liveRegionElement);\n }\n\n if (elements.length > 0) {\n document.body.append(...elements);\n }\n };\n\n const mutations = new Set<() => void>();\n\n function executeMutations() {\n for (const operation of mutations) {\n operation();\n }\n }\n\n this.registerEffect(() => {\n mutations.clear();\n\n // Re-run effect when any of the draggable elements change\n for (const draggable of this.manager.registry.draggables.value) {\n const activator = draggable.handle ?? draggable.element;\n\n if (activator) {\n if (!hiddenTextElement || !liveRegionElement) {\n mutations.add(initialize);\n }\n\n if (\n (!isFocusable(activator) || isSafari()) &&\n !activator.hasAttribute('tabindex')\n ) {\n mutations.add(() => activator.setAttribute('tabindex', '0'));\n }\n\n if (\n !activator.hasAttribute('role') &&\n !(activator.tagName.toLowerCase() === 'button')\n ) {\n mutations.add(() =>\n activator.setAttribute('role', defaultAttributes.role)\n );\n }\n\n if (!activator.hasAttribute('aria-roledescription')) {\n mutations.add(() =>\n activator.setAttribute(\n 'aria-roledescription',\n defaultAttributes.roleDescription\n )\n );\n }\n\n if (!activator.hasAttribute('aria-describedby')) {\n mutations.add(() =>\n activator.setAttribute('aria-describedby', descriptionId)\n );\n }\n\n for (const key of ['aria-pressed', 'aria-grabbed']) {\n const value = String(draggable.isDragging);\n\n if (activator.getAttribute(key) !== value) {\n mutations.add(() => activator.setAttribute(key, value));\n }\n }\n\n const disabled = String(draggable.disabled);\n\n if (activator.getAttribute('aria-disabled') !== disabled) {\n mutations.add(() =>\n activator.setAttribute('aria-disabled', disabled)\n );\n }\n }\n }\n\n if (mutations.size > 0) {\n scheduler.schedule(executeMutations);\n }\n });\n\n this.destroy = () => {\n super.destroy();\n hiddenTextElement?.remove();\n liveRegionElement?.remove();\n eventListeners.forEach((unsubscribe) => unsubscribe());\n };\n }\n}\n\nfunction debounce(fn: () => void, wait: number) {\n let timeout: NodeJS.Timeout | undefined;\n const debounced = () => {\n clearTimeout(timeout);\n timeout = setTimeout(fn, wait);\n };\n\n debounced.cancel = () => clearTimeout(timeout);\n\n return debounced;\n}\n","import {Plugin} from '@dnd-kit/abstract';\nimport {computed, effect} from '@dnd-kit/state';\nimport {getDocument} from '@dnd-kit/dom/utilities';\n\nimport {DragDropManager} from '../../manager/index.ts';\n\ninterface CursorPluginOptions {\n /**\n * The style of the cursor to be applied to the document body.\n * @default 'grabbing'\n */\n cursor?: string;\n /**\n * The nonce to be applied to the style element.\n */\n nonce?: string;\n}\n\nexport class Cursor extends Plugin<DragDropManager> {\n constructor(\n public manager: DragDropManager,\n options?: CursorPluginOptions\n ) {\n super(manager, options);\n\n const doc = computed(() =>\n getDocument(this.manager.dragOperation.source?.element)\n );\n\n this.destroy = effect(() => {\n const {dragOperation} = this.manager;\n const {cursor = 'grabbing', nonce} = this.options ?? {};\n\n if (dragOperation.status.initialized) {\n const document = doc.value;\n const style = document.createElement('style');\n\n if (nonce) {\n style.setAttribute('nonce', nonce);\n }\n\n style.textContent = `* { cursor: ${cursor} !important; }`;\n document.head.appendChild(style);\n\n return () => style.remove();\n }\n });\n }\n}\n","export const ATTR_PREFIX = 'data-dnd-';\nexport const DROPPING_ATTRIBUTE = `${ATTR_PREFIX}dropping`;\nexport const CSS_PREFIX = '--dnd-';\nexport const ATTRIBUTE = `${ATTR_PREFIX}dragging`;\nexport const PLACEHOLDER_ATTRIBUTE = `${ATTR_PREFIX}placeholder`;\n\nexport const IGNORED_ATTRIBUTES = [\n ATTRIBUTE,\n PLACEHOLDER_ATTRIBUTE,\n 'popover',\n 'aria-pressed',\n 'aria-grabbing',\n];\n\nexport const IGNORED_STYLES = ['view-transition-name'];\n\nexport const CSS_RULES = `\n :root [${ATTRIBUTE}] {\n position: fixed !important;\n pointer-events: none !important;\n touch-action: none;\n z-index: calc(infinity);\n will-change: translate;\n top: var(${CSS_PREFIX}top, 0px) !important;\n left: var(${CSS_PREFIX}left, 0px) !important;\n right: unset !important;\n bottom: unset !important;\n width: var(${CSS_PREFIX}width, auto);\n max-width: var(${CSS_PREFIX}width, auto);\n height: var(${CSS_PREFIX}height, auto);\n max-height: var(${CSS_PREFIX}height, auto);\n transition: var(${CSS_PREFIX}transition) !important;\n }\n\n :root [${PLACEHOLDER_ATTRIBUTE}] {\n transition: none;\n }\n\n :root [${PLACEHOLDER_ATTRIBUTE}='hidden'] {\n visibility: hidden;\n }\n\n [${ATTRIBUTE}] * {\n pointer-events: none !important;\n }\n\n [${ATTRIBUTE}]:not([${DROPPING_ATTRIBUTE}]) {\n translate: var(${CSS_PREFIX}translate) !important;\n }\n\n [${ATTRIBUTE}][style*='${CSS_PREFIX}scale'] {\n scale: var(${CSS_PREFIX}scale) !important;\n transform-origin: var(${CSS_PREFIX}transform-origin) !important;\n }\n\n @layer {\n :where([${ATTRIBUTE}][popover]) {\n overflow: visible;\n background: unset;\n border: unset;\n margin: unset;\n padding: unset;\n color: inherit;\n\n &:is(input, button) {\n border: revert;\n background: revert;\n }\n }\n }\n [${ATTRIBUTE}]::backdrop, [${ATTR_PREFIX}overlay]:not([${ATTRIBUTE}]) {\n display: none;\n visibility: hidden;\n }\n`\n .replace(/\\n+/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim();\n","import {untracked} from '@dnd-kit/state';\nimport {\n cloneElement,\n generateUniqueId,\n getFrameElement,\n showPopover,\n ProxiedElements,\n isElement,\n} from '@dnd-kit/dom/utilities';\n\nimport type {Draggable, Droppable} from '../../entities/index.ts';\nimport {ATTR_PREFIX, PLACEHOLDER_ATTRIBUTE} from './constants.ts';\n\n/**\n * Creates a placeholder element for a draggable source\n * The placeholder maintains the original element's dimensions and position\n */\nexport function createPlaceholder(\n source: Draggable,\n type = 'hidden'\n): Element | undefined {\n return untracked(() => {\n const {element, manager} = source;\n\n if (!element || !manager) return;\n\n const containedDroppables = findContainedDroppables(\n element,\n manager.registry.droppables\n );\n const cleanup: Array<() => void> = [];\n const placeholder = cloneElement(element);\n const {remove} = placeholder;\n\n proxyDroppableElements(containedDroppables, placeholder, cleanup);\n configurePlaceholder(placeholder, type);\n\n // Override remove to handle cleanup of proxies\n placeholder.remove = () => {\n cleanup.forEach((fn) => fn());\n remove.call(placeholder);\n };\n\n return placeholder;\n });\n}\n\n/**\n * Maps droppable elements contained within the source element\n * Returns a map of droppables to their temporary identifier attributes\n */\nfunction findContainedDroppables(\n element: Element,\n droppables: Iterable<Droppable>\n): Map<Droppable, string> {\n const containedDroppables = new Map<Droppable, string>();\n\n for (const droppable of droppables) {\n if (!droppable.element) continue;\n\n if (element === droppable.element || element.contains(droppable.element)) {\n const identifierAttribute = `${ATTR_PREFIX}${generateUniqueId('dom-id')}`;\n droppable.element.setAttribute(identifierAttribute, '');\n containedDroppables.set(droppable, identifierAttribute);\n }\n }\n\n return containedDroppables;\n}\n\n/**\n * Sets up proxy relationships between original droppable elements and their clones\n */\nfunction proxyDroppableElements(\n containedDroppables: Map<Droppable, string>,\n placeholder: Element,\n cleanup: Array<() => void>\n): void {\n for (const [droppable, identifierAttribute] of containedDroppables) {\n if (!droppable.element) continue;\n\n const selector = `[${identifierAttribute}]`;\n const clonedElement = placeholder.matches(selector)\n ? placeholder\n : placeholder.querySelector(selector);\n\n droppable.element.removeAttribute(identifierAttribute);\n\n if (!clonedElement) continue;\n\n const originalElement = droppable.element;\n\n droppable.proxy = clonedElement;\n clonedElement.removeAttribute(identifierAttribute);\n\n ProxiedElements.set(originalElement, clonedElement);\n\n cleanup.push(() => {\n ProxiedElements.delete(originalElement);\n droppable.proxy = undefined;\n });\n }\n}\n\n/**\n * Configures accessibility and visual attributes for the placeholder\n */\nfunction configurePlaceholder(placeholder: Element, type = 'hidden'): void {\n placeholder.setAttribute('inert', 'true');\n placeholder.setAttribute('tab-index', '-1');\n placeholder.setAttribute('aria-hidden', 'true');\n placeholder.setAttribute(PLACEHOLDER_ATTRIBUTE, type);\n}\n\n/**\n * Checks if two elements are in the same frame context\n */\nexport function isSameFrame(element: Element, target: Element): boolean {\n if (element === target) return true;\n return getFrameElement(element) === getFrameElement(target);\n}\n\n/**\n * Prevent an element with the `popover` attribute from being closed\n */\nexport function preventPopoverClose(event: Event) {\n const {target} = event;\n\n if (\n 'newState' in event &&\n event.newState === 'closed' &&\n isElement(target) &&\n target.hasAttribute('popover')\n ) {\n requestAnimationFrame(() => showPopover(target));\n }\n}\n\nexport function isTableRow(element: Element): element is HTMLTableRowElement {\n return element.tagName === 'TR';\n}\n","import {\n effects,\n reactive,\n untracked,\n type CleanupFunction,\n} from '@dnd-kit/state';\nimport {configurator, Plugin} from '@dnd-kit/abstract';\nimport {\n animateTransform,\n DOMRectangle,\n getComputedStyles,\n getDocument,\n getFinalKeyframe,\n getFrameTransform,\n getWindow,\n isHTMLElement,\n isKeyboardEvent,\n parseTranslate,\n showPopover,\n Styles,\n supportsPopover,\n supportsStyle,\n} from '@dnd-kit/dom/utilities';\nimport {Coordinates, Point, Rectangle} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Draggable} from '../../entities/index.ts';\n\nimport {\n ATTRIBUTE,\n CSS_PREFIX,\n CSS_RULES,\n DROPPING_ATTRIBUTE,\n IGNORED_ATTRIBUTES,\n IGNORED_STYLES,\n} from './constants.ts';\nimport {\n createPlaceholder,\n isSameFrame,\n isTableRow,\n preventPopoverClose,\n} from './utilities.ts';\n\nexport interface FeedbackOptions {\n rootElement?: Element | ((source: Draggable) => Element);\n nonce?: string;\n}\n\ninterface State {\n current: {\n translate?: Coordinates;\n };\n initial: {\n dimensions?: {width: number; height: number};\n coordinates?: Coordinates;\n frameTransform?: {x: number; y: number; scaleX: number; scaleY: number};\n translate?: Coordinates;\n transformOrigin?: Coordinates;\n };\n}\n\ninterface StyleSheetRegistration {\n cleanup: CleanupFunction;\n instances: Set<Feedback>;\n}\n\nconst styleSheetRegistry = new Map<Document, StyleSheetRegistration>();\n\nexport class Feedback extends Plugin<DragDropManager, FeedbackOptions> {\n @reactive\n public accessor overlay: Element | undefined;\n\n private state: State = {\n initial: {},\n current: {},\n };\n\n constructor(manager: DragDropManager, options?: FeedbackOptions) {\n super(manager, options);\n\n this.registerEffect(this.#injectStyles);\n this.registerEffect(this.#render);\n }\n\n #render() {\n const {state, manager, options} = this;\n const {dragOperation} = manager;\n const {position, source, status} = dragOperation;\n\n if (status.idle) {\n state.current = {};\n state.initial = {};\n return;\n }\n\n if (!source) return;\n\n const {element, feedback} = source;\n\n if (\n !element ||\n feedback === 'none' ||\n !status.initialized ||\n status.initializing\n ) {\n return;\n }\n\n const {initial} = state;\n const feedbackElement = this.overlay ?? element;\n const frameTransform = getFrameTransform(feedbackElement);\n const elementFrameTransform = getFrameTransform(element);\n const crossFrame = !isSameFrame(element, feedbackElement);\n const shape = new DOMRectangle(element, {\n frameTransform: crossFrame ? elementFrameTransform : null,\n ignoreTransforms: !crossFrame,\n });\n const scaleDelta = {\n x: elementFrameTransform.scaleX / frameTransform.scaleX,\n y: elementFrameTransform.scaleY / frameTransform.scaleY,\n };\n\n let {width, height, top, left} = shape;\n\n if (crossFrame) {\n width = width / scaleDelta.x;\n height = height / scaleDelta.y;\n }\n\n let elementMutationObserver: MutationObserver | undefined;\n let documentMutationObserver: MutationObserver | undefined;\n const styles = new Styles(feedbackElement);\n const {\n transition,\n translate,\n boxSizing,\n paddingBlockStart,\n paddingBlockEnd,\n paddingInlineStart,\n paddingInlineEnd,\n borderInlineStartWidth,\n borderInlineEndWidth,\n borderBlockStartWidth,\n borderBlockEndWidth,\n } = getComputedStyles(element);\n const clone = feedback === 'clone';\n const contentBox = boxSizing === 'content-box';\n const widthOffset = contentBox\n ? parseInt(paddingInlineStart) +\n parseInt(paddingInlineEnd) +\n parseInt(borderInlineStartWidth) +\n parseInt(borderInlineEndWidth)\n : 0;\n const heightOffset = contentBox\n ? parseInt(paddingBlockStart) +\n parseInt(paddingBlockEnd) +\n parseInt(borderBlockStartWidth) +\n parseInt(borderBlockEndWidth)\n : 0;\n\n const placeholder =\n feedback !== 'move' && !this.overlay\n ? createPlaceholder(source, clone ? 'clone' : 'hidden')\n : null;\n const isKeyboardOperation = untracked(() =>\n isKeyboardEvent(manager.dragOperation.activatorEvent)\n );\n\n if (translate !== 'none') {\n const parsedTranslate = parseTranslate(translate);\n\n if (parsedTranslate && !initial.translate) {\n initial.translate = parsedTranslate;\n }\n }\n\n if (!initial.transformOrigin) {\n const current = untracked(() => position.current);\n\n initial.transformOrigin = {\n x:\n (current.x - left * frameTransform.scaleX - frameTransform.x) /\n (width * frameTransform.scaleX),\n y:\n (current.y - top * frameTransform.scaleY - frameTransform.y) /\n (height * frameTransform.scaleY),\n };\n }\n\n const {transformOrigin} = initial;\n const relativeTop = top * frameTransform.scaleY + frameTransform.y;\n const relativeLeft = left * frameTransform.scaleX + frameTransform.x;\n\n if (!initial.coordinates) {\n initial.coordinates = {\n x: relativeLeft,\n y: relativeTop,\n };\n\n // Compoensate for transformOrigin when scaling\n if (scaleDelta.x !== 1 || scaleDelta.y !== 1) {\n const {scaleX, scaleY} = elementFrameTransform;\n const {x: tX, y: tY} = transformOrigin;\n\n initial.coordinates.x += (width * scaleX - width) * tX;\n initial.coordinates.y += (height * scaleY - height) * tY;\n }\n }\n\n if (!initial.dimensions) {\n initial.dimensions = {width, height};\n }\n\n if (!initial.frameTransform) {\n initial.frameTransform = frameTransform;\n }\n\n const coordinatesDelta = {\n x: initial.coordinates.x - relativeLeft,\n y: initial.coordinates.y - relativeTop,\n };\n\n const sizeDelta = {\n width:\n (initial.dimensions.width * initial.frameTransform.scaleX -\n width * frameTransform.scaleX) *\n transformOrigin.x,\n height:\n (initial.dimensions.height * initial.frameTransform.scaleY -\n height * frameTransform.scaleY) *\n transformOrigin.y,\n };\n\n const delta = {\n x: coordinatesDelta.x / frameTransform.scaleX + sizeDelta.width,\n y: coordinatesDelta.y / frameTransform.scaleY + sizeDelta.height,\n };\n\n const projected = {\n left: left + delta.x,\n top: top + delta.y,\n };\n\n feedbackElement.setAttribute(ATTRIBUTE, 'true');\n\n const transform = untracked(() => dragOperation.transform);\n const initialTranslate = initial.translate ?? {x: 0, y: 0};\n const tX = transform.x * frameTransform.scaleX + initialTranslate.x;\n const tY = transform.y * frameTransform.scaleY + initialTranslate.y;\n const translateString = `${tX}px ${tY}px 0`;\n const transitionString = transition\n ? `${transition}, translate 0ms linear`\n : '';\n\n styles.set(\n {\n width: width - widthOffset,\n height: height - heightOffset,\n top: projected.top,\n left: projected.left,\n translate: translateString,\n transition: transitionString,\n scale: crossFrame ? `${scaleDelta.x} ${scaleDelta.y}` : '',\n 'transform-origin': `${transformOrigin.x * 100}% ${transformOrigin.y * 100}%`,\n },\n CSS_PREFIX\n );\n\n if (placeholder) {\n element.insertAdjacentElement('afterend', placeholder);\n\n if (options?.rootElement) {\n const root =\n typeof options.rootElement === 'function'\n ? options.rootElement(source)\n : options.rootElement;\n\n root.appendChild(element);\n }\n }\n\n if (supportsPopover(feedbackElement)) {\n if (!feedbackElement.hasAttribute('popover')) {\n feedbackElement.setAttribute('popover', 'manual');\n }\n showPopover(feedbackElement);\n feedbackElement.addEventListener('beforetoggle', preventPopoverClose);\n }\n\n const resizeObserver = new ResizeObserver(() => {\n if (!placeholder) return;\n\n const placeholderShape = new DOMRectangle(placeholder, {\n frameTransform,\n ignoreTransforms: true,\n });\n const origin = transformOrigin ?? {x: 1, y: 1};\n const dX = (width - placeholderShape.width) * origin.x + delta.x;\n const dY = (height - placeholderShape.height) * origin.y + delta.y;\n\n styles.set(\n {\n width: placeholderShape.width - widthOffset,\n height: placeholderShape.height - heightOffset,\n top: top + dY,\n left: left + dX,\n },\n CSS_PREFIX\n );\n elementMutationObserver?.takeRecords();\n\n /* Table cells need to have their width set explicitly because the feedback element is position fixed */\n if (isTableRow(element) && isTableRow(placeholder)) {\n const cells = Array.from(element.cells);\n const placeholderCells = Array.from(placeholder.cells);\n\n for (const [index, cell] of cells.entries()) {\n const placeholderCell = placeholderCells[index];\n\n cell.style.width = `${placeholderCell.offsetWidth}px`;\n }\n }\n\n dragOperation.shape = new DOMRectangle(feedbackElement);\n });\n\n /* Initialize drag operation shape */\n const initialShape = new DOMRectangle(feedbackElement);\n untracked(() => (dragOperation.shape = initialShape));\n\n const feedbackWindow = getWindow(feedbackElement);\n const handleWindowResize = (event: Event) => {\n this.manager.actions.stop({event});\n };\n\n if (isKeyboardOperation) {\n feedbackWindow.addEventListener('resize', handleWindowResize);\n }\n\n if (untracked(() => source.status) === 'idle') {\n requestAnimationFrame(() => (source.status = 'dragging'));\n }\n\n if (placeholder) {\n resizeObserver.observe(placeholder);\n\n elementMutationObserver = new MutationObserver((mutations) => {\n let hasChildrenMutations = false;\n\n for (const mutation of mutations) {\n if (mutation.target !== element) {\n hasChildrenMutations = true;\n continue;\n }\n\n if (mutation.type !== 'attributes') {\n // Should never happen, but defensive programming just in case\n continue;\n }\n\n // Attribute name is guaranteed to be non-null if type is \"attributes\"\n // https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord/attributeName#value\n const attributeName = mutation.attributeName!;\n\n if (\n attributeName.startsWith('aria-') ||\n IGNORED_ATTRIBUTES.includes(attributeName)\n ) {\n continue;\n }\n\n const attributeValue = element.getAttribute(attributeName);\n\n if (attributeName === 'style') {\n if (supportsStyle(element) && supportsStyle(placeholder)) {\n const styles = element.style;\n\n for (const key of Array.from(placeholder.style)) {\n if (styles.getPropertyValue(key) === '') {\n placeholder.style.removeProperty(key);\n }\n }\n\n for (const key of Array.from(styles)) {\n if (\n IGNORED_STYLES.includes(key) ||\n key.startsWith(CSS_PREFIX)\n ) {\n continue;\n }\n\n const value = styles.getPropertyValue(key);\n\n placeholder.style.setProperty(key, value);\n }\n }\n } else if (attributeValue !== null) {\n placeholder.setAttribute(attributeName, attributeValue);\n } else {\n placeholder.removeAttribute(attributeName);\n }\n }\n\n if (hasChildrenMutations && clone) {\n placeholder.innerHTML = element.innerHTML;\n }\n });\n\n elementMutationObserver.observe(element, {\n attributes: true,\n subtree: true,\n childList: true,\n });\n\n /* Make sure the placeholder and the source element positions are always in sync */\n documentMutationObserver = new MutationObserver((entries) => {\n for (const entry of entries) {\n if (entry.addedNodes.length === 0) continue;\n\n for (const node of Array.from(entry.addedNodes)) {\n if (\n node.contains(element) &&\n element.nextElementSibling !== placeholder\n ) {\n /* Update the position of the placeholder when the source element is moved */\n element.insertAdjacentElement('afterend', placeholder);\n /* Force the source element to be promoted back to the top layer */\n showPopover(feedbackElement);\n return;\n }\n\n if (\n node.contains(placeholder) &&\n placeholder.previousElementSibling !== element\n ) {\n /* Update the position of the source element when the placeholder is moved */\n placeholder.insertAdjacentElement('beforebegin', element);\n /* Force the source element to be promoted back to the top layer */\n showPopover(feedbackElement);\n return;\n }\n }\n }\n });\n\n /* Observe mutations on the element's owner document body */\n documentMutationObserver.observe(element.ownerDocument.body, {\n childList: true,\n subtree: true,\n });\n }\n\n const id = manager.dragOperation.source?.id;\n\n const restoreFocus = () => {\n if (!isKeyboardOperation || id == null) {\n return;\n }\n\n const draggable = manager.registry.draggables.get(id);\n const element = draggable?.handle ?? draggable?.element;\n\n if (isHTMLElement(element)) {\n element.focus();\n }\n };\n const cleanup = () => {\n elementMutationObserver?.disconnect();\n documentMutationObserver?.disconnect();\n resizeObserver.disconnect();\n feedbackWindow.removeEventListener('resize', handleWindowResize);\n\n if (supportsPopover(feedbackElement)) {\n feedbackElement.removeEventListener(\n 'beforetoggle',\n preventPopoverClose\n );\n feedbackElement.removeAttribute('popover');\n }\n\n feedbackElement.removeAttribute(ATTRIBUTE);\n styles.reset();\n\n source.status = 'idle';\n\n const moved = state.current.translate != null;\n\n if (\n placeholder &&\n (moved ||\n placeholder.parentElement !== feedbackElement.parentElement) &&\n feedbackElement.isConnected\n ) {\n placeholder.replaceWith(feedbackElement);\n }\n\n placeholder?.remove();\n };\n\n const cleanupEffects = effects(\n // Update transform on move\n () => {\n const {transform, status} = dragOperation;\n\n if (!transform.x && !transform.y && !state.current.translate) {\n return;\n }\n\n if (status.dragging) {\n const initialTranslate = initial.translate ?? {x: 0, y: 0};\n const translate = {\n x: transform.x / frameTransform.scaleX + initialTranslate.x,\n y: transform.y / frameTransform.scaleY + initialTranslate.y,\n };\n const previousTranslate = state.current.translate;\n const modifiers = untracked(() => dragOperation.modifiers);\n const currentShape = untracked(() => dragOperation.shape?.current);\n const translateTransition = isKeyboardOperation\n ? '250ms cubic-bezier(0.25, 1, 0.5, 1)'\n : '0ms linear';\n\n styles.set(\n {\n transition: `${transition}, translate ${translateTransition}`,\n translate: `${translate.x}px ${translate.y}px 0`,\n },\n CSS_PREFIX\n );\n elementMutationObserver?.takeRecords();\n\n if (\n currentShape &&\n currentShape !== initialShape &&\n previousTranslate &&\n !modifiers.length\n ) {\n const delta = Point.delta(translate, previousTranslate);\n\n dragOperation.shape = Rectangle.from(\n currentShape.boundingRectangle\n ).translate(\n // Need to take into account frame transform when optimistically updating shape\n delta.x * frameTransform.scaleX,\n delta.y * frameTransform.scaleY\n );\n } else {\n dragOperation.shape = new DOMRectangle(feedbackElement);\n }\n\n state.current.translate = translate;\n }\n },\n // Drop animation\n function () {\n if (dragOperation.status.dropped) {\n // Dispose of the effect\n this.dispose();\n\n source.status = 'dropping';\n\n let translate = state.current.translate;\n const moved = translate != null;\n\n if (!translate && element !== feedbackElement) {\n translate = {\n x: 0,\n y: 0,\n };\n }\n\n if (!translate) {\n cleanup();\n return;\n }\n\n const dropAnimation = () => {\n {\n /* Force the source element to be promoted to the top layer before animating it */\n showPopover(feedbackElement);\n\n // Pause any translate transitions that are running on the feedback element\n const [, animation] =\n getFinalKeyframe(\n feedbackElement,\n (keyframe) => 'translate' in keyframe\n ) ?? [];\n\n animation?.pause();\n\n const target = placeholder ?? element;\n const options = {\n frameTransform: isSameFrame(feedbackElement, target)\n ? null\n : undefined,\n };\n const current = new DOMRectangle(feedbackElement, options);\n // With a keyboard activator, since there is a transition on the translate property,\n // the translate value may not be the same as the computed value if the transition is still running.\n const currentTranslate =\n parseTranslate(getComputedStyles(feedbackElement).translate) ??\n translate;\n const final = new DOMRectangle(target, options);\n const delta = Rectangle.delta(current, final, source.alignment);\n const finalTranslate = {\n x: currentTranslate.x - delta.x,\n y: currentTranslate.y - delta.y,\n };\n const heightKeyframes =\n Math.round(current.intrinsicHeight) !==\n Math.round(final.intrinsicHeight)\n ? {\n minHeight: [\n `${current.intrinsicHeight}px`,\n `${final.intrinsicHeight}px`,\n ],\n maxHeight: [\n `${current.intrinsicHeight}px`,\n `${final.intrinsicHeight}px`,\n ],\n }\n : {};\n const widthKeyframes =\n Math.round(current.intrinsicWidth) !==\n Math.round(final.intrinsicWidth)\n ? {\n minWidth: [\n `${current.intrinsicWidth}px`,\n `${final.intrinsicWidth}px`,\n ],\n maxWidth: [\n `${current.intrinsicWidth}px`,\n `${final.intrinsicWidth}px`,\n ],\n }\n : {};\n\n styles.set({transition}, CSS_PREFIX);\n feedbackElement.setAttribute(DROPPING_ATTRIBUTE, '');\n elementMutationObserver?.takeRecords();\n\n animateTransform({\n element: feedbackElement,\n keyframes: {\n ...heightKeyframes,\n ...widthKeyframes,\n translate: [\n `${currentTranslate.x}px ${currentTranslate.y}px 0`,\n `${finalTranslate.x}px ${finalTranslate.y}px 0`,\n ],\n },\n options: {\n duration: moved || feedbackElement !== element ? 250 : 0,\n easing: 'ease',\n },\n }).then(() => {\n feedbackElement.removeAttribute(DROPPING_ATTRIBUTE);\n animation?.finish();\n cleanup();\n requestAnimationFrame(restoreFocus);\n });\n }\n };\n\n manager.renderer.rendering.then(dropAnimation);\n }\n }\n );\n\n return () => {\n cleanup();\n cleanupEffects();\n };\n }\n\n #injectStyles() {\n const {status, source, target} = this.manager.dragOperation;\n const {nonce} = this.options ?? {};\n\n if (status.initializing) {\n const sourceDocument = getDocument(source?.element ?? null);\n const targetDocument = getDocument(target?.element ?? null);\n const documents = new Set([sourceDocument, targetDocument]);\n\n for (const doc of documents) {\n let registration = styleSheetRegistry.get(doc);\n\n if (!registration) {\n const style = document.createElement('style');\n style.textContent = CSS_RULES;\n if (nonce) {\n style.setAttribute('nonce', nonce);\n }\n doc.head.prepend(style);\n const mutationObserver = new MutationObserver((entries) => {\n for (const entry of entries) {\n if (entry.type === 'childList') {\n const removedNodes = Array.from(entry.removedNodes);\n\n if (removedNodes.length > 0 && removedNodes.includes(style)) {\n // Re-inject the style tag if it gets removed from the DOM\n doc.head.prepend(style);\n }\n }\n }\n });\n mutationObserver.observe(doc.head, {childList: true});\n\n registration = {\n cleanup: () => {\n mutationObserver.disconnect();\n style.remove();\n },\n instances: new Set(),\n };\n styleSheetRegistry.set(doc, registration);\n }\n\n // Track this instance for this document\n registration.instances.add(this);\n }\n }\n }\n\n public destroy(): void {\n super.destroy();\n\n // Clean up documents this instance was tracking\n for (const [doc, registration] of styleSheetRegistry.entries()) {\n if (registration.instances.has(this)) {\n registration.instances.delete(this);\n\n // If no more instances are using this document, clean it up\n if (registration.instances.size === 0) {\n registration.cleanup();\n styleSheetRegistry.delete(doc);\n }\n }\n }\n }\n\n static configure = configurator(Feedback);\n}\n","import {reactive} from '@dnd-kit/state';\nimport {ScrollDirection as Direction} from '@dnd-kit/dom/utilities';\n\nconst LOCKED = true;\nconst UNLOCKED = false;\n\nexport class ScrollLock {\n @reactive private accessor [Direction.Forward] = LOCKED;\n @reactive private accessor [Direction.Reverse] = LOCKED;\n\n public isLocked(direction?: Direction): boolean {\n if (direction === Direction.Idle) {\n return false;\n }\n\n if (direction == null) {\n return (\n this[Direction.Forward] === LOCKED && this[Direction.Reverse] === LOCKED\n );\n }\n\n return this[direction] === LOCKED;\n }\n\n public unlock(direction: Direction) {\n if (direction === Direction.Idle) {\n return;\n }\n\n this[direction] = UNLOCKED;\n }\n}\n","import {batch, effect, signal, type Signal} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\nimport {Axes} from '@dnd-kit/geometry';\nimport type {Coordinates} from '@dnd-kit/geometry';\nimport {ScrollDirection} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollLock} from './ScrollLock.ts';\n\nconst DIRECTIONS = [ScrollDirection.Forward, ScrollDirection.Reverse];\n\nclass ScrollIntent {\n public x = new ScrollLock();\n public y = new ScrollLock();\n\n public isLocked(): boolean {\n return this.x.isLocked() && this.y.isLocked();\n }\n}\n\nexport class ScrollIntentTracker extends Plugin<DragDropManager> {\n private signal: Signal<ScrollIntent | null>;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n const scrollIntent = signal<ScrollIntent>(new ScrollIntent());\n let previousDelta: Coordinates | null = null;\n\n this.signal = scrollIntent;\n\n effect(() => {\n const {status} = manager.dragOperation;\n\n if (!status.initialized) {\n previousDelta = null;\n scrollIntent.value = new ScrollIntent();\n return;\n }\n\n const {delta} = manager.dragOperation.position;\n\n if (previousDelta) {\n const directions = {\n x: getDirection(delta.x, previousDelta.x),\n y: getDirection(delta.y, previousDelta.y),\n };\n\n const intent = scrollIntent.peek();\n\n batch(() => {\n for (const axis of Axes) {\n for (const direction of DIRECTIONS) {\n if (directions[axis] === direction) {\n intent[axis].unlock(direction);\n }\n }\n }\n\n scrollIntent.value = intent;\n });\n }\n\n previousDelta = delta;\n });\n }\n\n get current(): ScrollIntent | null {\n return this.signal.peek();\n }\n}\n\nfunction getDirection(a: number, b: number): ScrollDirection {\n return Math.sign(a - b);\n}\n","import {CorePlugin} from '@dnd-kit/abstract';\nimport {computed, deepEqual, reactive} from '@dnd-kit/state';\nimport {\n canScroll,\n detectScrollIntent,\n getScrollableAncestors,\n getElementFromPoint,\n ScrollDirection,\n scheduler,\n isKeyboardEvent,\n getDocument,\n getFrameTransform,\n} from '@dnd-kit/dom/utilities';\nimport {Axes, type Coordinates} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollIntentTracker} from './ScrollIntent.ts';\n\nexport class Scroller extends CorePlugin<DragDropManager> {\n public getScrollableElements: () => Set<Element> | null;\n\n private scrollIntentTracker: ScrollIntentTracker;\n\n @reactive\n public accessor autoScrolling = false;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n let previousElementFromPoint: Element | null = null;\n let previousScrollableElements: Set<Element> | null = null;\n const elementFromPoint = computed(() => {\n const {position, source} = manager.dragOperation;\n\n if (!position) {\n return null;\n }\n\n const element = getElementFromPoint(\n getDocument(source?.element),\n position.current\n );\n\n if (element) {\n previousElementFromPoint = element;\n }\n\n return element ?? previousElementFromPoint;\n });\n const scrollableElements = computed(() => {\n const element = elementFromPoint.value;\n const {documentElement} = getDocument(element);\n\n if (!element || element === documentElement) {\n const {target} = manager.dragOperation;\n const targetElement = target?.element;\n\n if (targetElement) {\n const elements = getScrollableAncestors(targetElement, {\n excludeElement: false,\n });\n previousScrollableElements = elements;\n\n return elements;\n }\n }\n\n if (element) {\n const elements = getScrollableAncestors(element, {\n excludeElement: false,\n });\n\n if (\n this.autoScrolling &&\n previousScrollableElements &&\n elements.size < previousScrollableElements?.size\n ) {\n return previousScrollableElements;\n }\n\n previousScrollableElements = elements;\n\n return elements;\n }\n\n previousScrollableElements = null;\n\n return null;\n }, deepEqual);\n\n this.getScrollableElements = () => {\n return scrollableElements.value;\n };\n\n this.scrollIntentTracker = new ScrollIntentTracker(manager);\n\n this.destroy = manager.monitor.addEventListener('dragmove', (event) => {\n if (\n this.disabled ||\n event.defaultPrevented ||\n !isKeyboardEvent(manager.dragOperation.activatorEvent) ||\n !event.by\n ) {\n return;\n }\n\n // Prevent the move event if we can scroll to the new coordinates\n if (this.scroll({by: event.by})) {\n event.preventDefault();\n }\n });\n }\n\n #meta: {element: Element; by: Coordinates} | undefined;\n\n #scroll = () => {\n if (!this.#meta) {\n return;\n }\n\n const {element, by} = this.#meta;\n\n if (by.y) element.scrollTop += by.y;\n if (by.x) element.scrollLeft += by.x;\n };\n\n public scroll = (options?: {by: Coordinates}): boolean => {\n if (this.disabled) {\n return false;\n }\n\n const elements = this.getScrollableElements();\n\n if (!elements) {\n this.#meta = undefined;\n return false;\n }\n\n const {position} = this.manager.dragOperation;\n const currentPosition = position?.current;\n\n if (currentPosition) {\n const {by} = options ?? {};\n const intent = by\n ? {\n x: getScrollIntent(by.x),\n y: getScrollIntent(by.y),\n }\n : undefined;\n const scrollIntent = intent\n ? undefined\n : this.scrollIntentTracker.current;\n\n if (scrollIntent?.isLocked()) {\n return false;\n }\n\n for (const scrollableElement of elements) {\n const elementCanScroll = canScroll(scrollableElement, by);\n\n if (elementCanScroll.x || elementCanScroll.y) {\n const {speed, direction} = detectScrollIntent(\n scrollableElement,\n currentPosition,\n intent\n );\n\n if (scrollIntent) {\n for (const axis of Axes) {\n if (scrollIntent[axis].isLocked(direction[axis])) {\n speed[axis] = 0;\n direction[axis] = 0;\n }\n }\n }\n\n if (direction.x || direction.y) {\n const {x, y} = by ?? direction;\n const scrollLeftBy = x * speed.x;\n const scrollTopBy = y * speed.y;\n\n if (scrollLeftBy || scrollTopBy) {\n const previousScrollBy = this.#meta?.by;\n\n if (this.autoScrolling && previousScrollBy) {\n const scrollIntentMismatch =\n (previousScrollBy.x && !scrollLeftBy) ||\n (previousScrollBy.y && !scrollTopBy);\n\n if (scrollIntentMismatch) continue;\n }\n\n this.#meta = {\n element: scrollableElement,\n by: {\n x: scrollLeftBy,\n y: scrollTopBy,\n },\n };\n\n scheduler.schedule(this.#scroll);\n\n return true;\n }\n }\n }\n }\n }\n\n this.#meta = undefined;\n return false;\n };\n}\n\nfunction getScrollIntent(value: number) {\n if (value > 0) {\n return ScrollDirection.Forward;\n }\n\n if (value < 0) {\n return ScrollDirection.Reverse;\n }\n\n return ScrollDirection.Idle;\n}\n","type Callback = () => void;\n\nexport class Scheduler<T extends (callback: Callback) => any> {\n constructor(private scheduler: T) {}\n\n private pending: boolean = false;\n private tasks: Set<() => void> = new Set();\n private resolvers: Set<() => void> = new Set();\n\n public schedule(task: () => void): Promise<void> {\n this.tasks.add(task);\n\n if (!this.pending) {\n this.pending = true;\n this.scheduler(this.flush);\n }\n\n return new Promise<void>((resolve) => this.resolvers.add(resolve));\n }\n\n public flush = () => {\n const {tasks, resolvers} = this;\n\n this.pending = false;\n this.tasks = new Set();\n this.resolvers = new Set();\n\n for (const task of tasks) {\n task();\n }\n\n for (const resolve of resolvers) {\n resolve();\n }\n };\n}\n\nexport const scheduler = new Scheduler((callback) => {\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(callback);\n } else {\n callback();\n }\n});\n","import {Plugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\nimport type {CleanupFunction} from '@dnd-kit/state';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport {Scroller} from './Scroller.ts';\nimport {scheduler} from '../../../utilities/scheduling/scheduler.ts';\n\ninterface Options {}\n\nconst AUTOSCROLL_INTERVAL = 10;\n\nexport class AutoScroller extends Plugin<DragDropManager> {\n public destroy: CleanupFunction;\n\n constructor(manager: DragDropManager, _options?: Options) {\n super(manager);\n\n const scroller = manager.registry.plugins.get(Scroller);\n\n if (!scroller) {\n throw new Error('AutoScroller plugin depends on Scroller plugin');\n }\n\n this.destroy = effect(() => {\n if (this.disabled) {\n return;\n }\n\n // We consume the position from the drag operation\n // so that this effect is run when the position changes\n const {position: _, status} = manager.dragOperation;\n\n if (status.dragging) {\n const canScroll = scroller.scroll();\n\n if (canScroll) {\n scroller.autoScrolling = true;\n const interval = setInterval(\n () => scheduler.schedule(scroller.scroll),\n AUTOSCROLL_INTERVAL\n );\n\n return () => {\n clearInterval(interval);\n };\n } else {\n scroller.autoScrolling = false;\n }\n }\n });\n }\n}\n","import {CorePlugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nconst listenerOptions: AddEventListenerOptions = {\n capture: true,\n passive: true,\n};\n\nexport class ScrollListener extends CorePlugin<DragDropManager> {\n #timeout: NodeJS.Timeout | undefined;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n const {dragOperation} = this.manager;\n\n this.destroy = effect(() => {\n const enabled = dragOperation.status.dragging;\n\n if (enabled) {\n const root = dragOperation.source?.element?.ownerDocument ?? document;\n\n root.addEventListener('scroll', this.handleScroll, listenerOptions);\n\n return () => {\n root.removeEventListener(\n 'scroll',\n this.handleScroll,\n listenerOptions\n );\n };\n }\n });\n }\n\n private handleScroll = () => {\n if (this.#timeout == null) {\n this.#timeout = setTimeout(() => {\n this.manager.collisionObserver.forceUpdate(false);\n this.#timeout = undefined;\n }, 50);\n }\n };\n}\n","import {Plugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\n\nimport {DragDropManager} from '../../manager/index.ts';\n\ninterface PreventSelectionPluginOptions {\n /**\n * The nonce to be applied to the style element.\n */\n nonce?: string;\n}\n\nexport class PreventSelection extends Plugin<DragDropManager> {\n constructor(\n public manager: DragDropManager,\n options?: PreventSelectionPluginOptions\n ) {\n super(manager, options);\n\n this.destroy = effect(() => {\n const {dragOperation} = this.manager;\n const {nonce} = this.options ?? {};\n\n if (dragOperation.status.initialized) {\n const style = document.createElement('style');\n if (nonce) {\n style.setAttribute('nonce', nonce);\n }\n style.textContent = `* { user-select: none !important; -webkit-user-select: none !important; }`;\n document.head.appendChild(style);\n\n removeSelection();\n document.addEventListener('selectionchange', removeSelection, {\n capture: true,\n });\n\n return () => {\n document.removeEventListener('selectionchange', removeSelection, {\n capture: true,\n });\n style.remove();\n };\n }\n });\n }\n}\n\nfunction removeSelection() {\n document.getSelection()?.removeAllRanges();\n}\n","import {configurator, Sensor} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport {\n getDocument,\n isElement,\n isKeyboardEvent,\n scrollIntoViewIfNeeded,\n Listeners,\n DOMRectangle,\n} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Draggable} from '../../entities/index.ts';\nimport {AutoScroller} from '../../plugins/index.ts';\n\nexport type KeyCode = KeyboardEvent['code'];\n\nexport type KeyboardCodes = {\n start: KeyCode[];\n cancel: KeyCode[];\n end: KeyCode[];\n up: KeyCode[];\n down: KeyCode[];\n left: KeyCode[];\n right: KeyCode[];\n};\n\nexport interface KeyboardSensorOptions {\n /**\n * The offset by which the keyboard sensor should move the draggable.\n *\n * @default 10\n */\n offset?: number | {x: number; y: number};\n /**\n * The keyboard codes that activate the keyboard sensor.\n *\n * @default {\n * start: ['Space', 'Enter'],\n * cancel: ['Escape'],\n * end: ['Space', 'Enter', 'Tab'],\n * up: ['ArrowUp'],\n * down: ['ArrowDown'],\n * left: ['ArrowLeft'],\n * right: ['ArrowRight']\n * }\n */\n keyboardCodes?: KeyboardCodes;\n /**\n * Function that determines if the keyboard sensor should activate.\n */\n preventActivation?: (event: KeyboardEvent, source: Draggable) => boolean;\n}\n\nconst defaults = Object.freeze<Required<KeyboardSensorOptions>>({\n offset: 10,\n keyboardCodes: {\n start: ['Space', 'Enter'],\n cancel: ['Escape'],\n end: ['Space', 'Enter', 'Tab'],\n up: ['ArrowUp'],\n down: ['ArrowDown'],\n left: ['ArrowLeft'],\n right: ['ArrowRight'],\n },\n preventActivation(event, source) {\n const target = source.handle ?? source.element;\n return event.target !== target;\n },\n});\n\n/**\n * The KeyboardSensor class is an input sensor that handles Keyboard events.\n */\nexport class KeyboardSensor extends Sensor<\n DragDropManager,\n KeyboardSensorOptions\n> {\n constructor(\n public manager: DragDropManager,\n public options?: KeyboardSensorOptions\n ) {\n super(manager);\n }\n\n #cleanupFunctions: CleanupFunction[] = [];\n\n protected listeners = new Listeners();\n\n public bind(source: Draggable, options = this.options) {\n const unbind = effect(() => {\n const target = source.handle ?? source.element;\n const listener: EventListener = (event: Event) => {\n if (isKeyboardEvent(event)) {\n this.handleSourceKeyDown(event, source, options);\n }\n };\n\n if (target) {\n target.addEventListener('keydown', listener);\n\n return () => {\n target.removeEventListener('keydown', listener);\n };\n }\n });\n\n return unbind;\n }\n\n protected handleSourceKeyDown = (\n event: KeyboardEvent,\n source: Draggable,\n options: KeyboardSensorOptions | undefined\n ) => {\n if (this.disabled || event.defaultPrevented) {\n return;\n }\n\n if (!isElement(event.target)) {\n return;\n }\n\n if (source.disabled) {\n return;\n }\n\n const {\n keyboardCodes = defaults.keyboardCodes,\n preventActivation = defaults.preventActivation,\n } = options ?? {};\n\n if (!keyboardCodes.start.includes(event.code)) {\n return;\n }\n\n if (!this.manager.dragOperation.status.idle) {\n return;\n }\n\n if (preventActivation?.(event, source)) return;\n\n this.handleStart(event, source, options);\n };\n\n protected handleStart(\n event: KeyboardEvent,\n source: Draggable,\n options: KeyboardSensorOptions | undefined\n ) {\n const {element} = source;\n\n if (!element) {\n throw new Error('Source draggable does not have an associated element');\n }\n\n event.preventDefault();\n event.stopImmediatePropagation();\n\n scrollIntoViewIfNeeded(element);\n\n const {center} = new DOMRectangle(element);\n const controller = this.manager.actions.start({\n event,\n coordinates: {\n x: center.x,\n y: center.y,\n },\n source,\n });\n\n if (controller.signal.aborted) return this.cleanup();\n\n this.sideEffects();\n\n const sourceDocument = getDocument(element);\n const listeners = [\n this.listeners.bind(sourceDocument, [\n {\n type: 'keydown',\n listener: (event: KeyboardEvent) =>\n this.handleKeyDown(event, source, options),\n options: {capture: true},\n },\n ]),\n ];\n\n this.#cleanupFunctions.push(...listeners);\n }\n\n protected handleKeyDown(\n event: KeyboardEvent,\n _source: Draggable,\n options: KeyboardSensorOptions | undefined\n ) {\n const {keyboardCodes = defaults.keyboardCodes} = options ?? {};\n\n if (isKeycode(event, [...keyboardCodes.end, ...keyboardCodes.cancel])) {\n event.preventDefault();\n const canceled = isKeycode(event, keyboardCodes.cancel);\n\n this.handleEnd(event, canceled);\n return;\n }\n\n if (isKeycode(event, keyboardCodes.up)) {\n this.handleMove('up', event);\n } else if (isKeycode(event, keyboardCodes.down)) {\n this.handleMove('down', event);\n }\n\n if (isKeycode(event, keyboardCodes.left)) {\n this.handleMove('left', event);\n } else if (isKeycode(event, keyboardCodes.right)) {\n this.handleMove('right', event);\n }\n }\n\n protected handleEnd(event: Event, canceled: boolean) {\n this.manager.actions.stop({\n event,\n canceled,\n });\n\n this.cleanup();\n }\n\n protected handleMove(\n direction: 'up' | 'down' | 'left' | 'right',\n event: KeyboardEvent\n ) {\n const {shape} = this.manager.dragOperation;\n const factor = event.shiftKey ? 5 : 1;\n let by = {\n x: 0,\n y: 0,\n };\n let offset = this.options?.offset ?? defaults.offset;\n\n if (typeof offset === 'number') {\n offset = {x: offset, y: offset};\n }\n\n if (!shape) {\n return;\n }\n\n switch (direction) {\n case 'up':\n by = {x: 0, y: -offset.y * factor};\n break;\n case 'down':\n by = {x: 0, y: offset.y * factor};\n break;\n case 'left':\n by = {x: -offset.x * factor, y: 0};\n break;\n case 'right':\n by = {x: offset.x * factor, y: 0};\n break;\n }\n\n if (by.x || by.y) {\n event.preventDefault();\n\n this.manager.actions.move({\n event,\n by,\n });\n }\n }\n\n private sideEffects() {\n const autoScroller = this.manager.registry.plugins.get(AutoScroller as any);\n\n if (autoScroller?.disabled === false) {\n autoScroller.disable();\n\n this.#cleanupFunctions.push(() => {\n autoScroller.enable();\n });\n }\n }\n\n protected cleanup() {\n this.#cleanupFunctions.forEach((cleanup) => cleanup());\n this.#cleanupFunctions = [];\n }\n\n public destroy() {\n this.cleanup();\n // Remove all event listeners\n this.listeners.clear();\n }\n\n static configure = configurator(KeyboardSensor);\n\n static defaults = defaults;\n}\n\nfunction isKeycode(event: KeyboardEvent, codes: KeyCode[]) {\n return codes.includes(event.code);\n}\n","import {ActivationConstraint} from '@dnd-kit/abstract';\nimport {\n exceedsDistance,\n type Distance,\n type Coordinates,\n} from '@dnd-kit/geometry';\nimport {getEventCoordinates} from '@dnd-kit/dom/utilities';\n\nexport interface DistanceConstraintOptions {\n value: number;\n tolerance?: Distance;\n}\n\nexport class DistanceConstraint extends ActivationConstraint<\n PointerEvent,\n DistanceConstraintOptions\n> {\n #coordinates?: Coordinates;\n\n onEvent(event: PointerEvent) {\n switch (event.type) {\n case 'pointerdown':\n this.#coordinates = getEventCoordinates(event);\n break;\n case 'pointermove':\n if (!this.#coordinates) return;\n\n const {x, y} = getEventCoordinates(event);\n const delta = {\n x: x - this.#coordinates.x,\n y: y - this.#coordinates.y,\n };\n\n const {tolerance} = this.options;\n\n if (tolerance && exceedsDistance(delta, tolerance)) {\n this.abort();\n return;\n }\n\n if (exceedsDistance(delta, this.options.value)) {\n this.activate(event);\n }\n break;\n case 'pointerup':\n this.abort();\n break;\n }\n }\n\n abort() {\n this.#coordinates = undefined;\n }\n}\n","import {ActivationConstraint} from '@dnd-kit/abstract';\nimport {\n exceedsDistance,\n type Distance,\n type Coordinates,\n} from '@dnd-kit/geometry';\nimport {getEventCoordinates} from '@dnd-kit/dom/utilities';\n\nexport interface DelayConstraintOptions {\n value: number;\n tolerance: Distance;\n}\n\nexport class DelayConstraint extends ActivationConstraint<\n PointerEvent,\n DelayConstraintOptions\n> {\n #timeout?: ReturnType<typeof setTimeout>;\n #coordinates?: Coordinates;\n\n onEvent(event: PointerEvent) {\n switch (event.type) {\n case 'pointerdown':\n this.#coordinates = getEventCoordinates(event);\n this.#timeout = setTimeout(\n () => this.activate(event),\n this.options.value\n );\n break;\n case 'pointermove':\n if (!this.#coordinates) return;\n\n const {x, y} = getEventCoordinates(event);\n const delta = {\n x: x - this.#coordinates.x,\n y: y - this.#coordinates.y,\n };\n\n if (exceedsDistance(delta, this.options.tolerance)) {\n this.abort();\n }\n break;\n case 'pointerup':\n this.abort();\n break;\n }\n }\n\n abort() {\n if (this.#timeout) {\n clearTimeout(this.#timeout);\n this.#coordinates = undefined;\n this.#timeout = undefined;\n }\n }\n}\n","import {DistanceConstraint} from './DistanceConstraint.ts';\nimport {DelayConstraint} from './DelayConstraint.ts';\n\nexport class PointerActivationConstraints {\n static Delay = DelayConstraint;\n static Distance = DistanceConstraint;\n}\n","import {effect} from '@dnd-kit/state';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport {\n Sensor,\n configurator,\n ActivationController,\n type ActivationConstraints,\n} from '@dnd-kit/abstract';\nimport type {Coordinates} from '@dnd-kit/geometry';\nimport {\n getDocument,\n getDocuments,\n getEventCoordinates,\n getFrameTransform,\n isElement,\n isHTMLElement,\n isInteractiveElement,\n isPointerEvent,\n isTextInput,\n Listeners,\n scheduler,\n} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Draggable} from '../../entities/index.ts';\n\nimport {PointerActivationConstraints} from './PointerActivationConstraints.ts';\n\ntype Maybe<T> = T | undefined;\n\nexport interface PointerSensorOptions {\n activationConstraints?:\n | ActivationConstraints<PointerEvent>\n | ((\n event: PointerEvent,\n source: Draggable\n ) => ActivationConstraints<PointerEvent> | undefined);\n activatorElements?:\n | Maybe<Element>[]\n | ((source: Draggable) => Maybe<Element>[]);\n preventActivation?: (event: PointerEvent, source: Draggable) => boolean;\n}\n\nconst defaults = Object.freeze<PointerSensorOptions>({\n activationConstraints(event, source) {\n const {pointerType, target} = event;\n\n if (\n pointerType === 'mouse' &&\n isElement(target) &&\n (source.handle === target || source.handle?.contains(target))\n ) {\n return undefined;\n }\n\n if (pointerType === 'touch') {\n return [\n new PointerActivationConstraints.Delay({value: 250, tolerance: 5}),\n ];\n }\n\n if (isTextInput(target) && !event.defaultPrevented) {\n return [\n new PointerActivationConstraints.Delay({value: 200, tolerance: 0}),\n ];\n }\n\n return [\n new PointerActivationConstraints.Delay({value: 200, tolerance: 10}),\n new PointerActivationConstraints.Distance({value: 5}),\n ];\n },\n preventActivation(event, source) {\n const {target} = event;\n\n if (target === source.element) return false;\n if (target === source.handle) return false;\n if (!isElement(target)) return false;\n if (source.handle?.contains(target)) return false;\n\n return isInteractiveElement(target);\n },\n});\n\ntype LatestState = {\n event: PointerEvent | undefined;\n coordinates: Coordinates | undefined;\n};\n\n/**\n * The PointerSensor class is an input sensor that handles Pointer events,\n * such as mouse, touch and pen interactions.\n */\nexport class PointerSensor extends Sensor<\n DragDropManager,\n PointerSensorOptions\n> {\n #cleanup: Set<CleanupFunction> = new Set();\n\n protected listeners = new Listeners();\n\n protected initialCoordinates: Coordinates | undefined;\n\n protected controller: ActivationController<PointerEvent> | undefined;\n\n constructor(\n public manager: DragDropManager,\n public options?: PointerSensorOptions\n ) {\n super(manager);\n\n this.handleCancel = this.handleCancel.bind(this);\n this.handlePointerUp = this.handlePointerUp.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n protected activationConstraints(event: PointerEvent, source: Draggable) {\n const {activationConstraints = defaults.activationConstraints} =\n this.options ?? {};\n\n const constraints =\n typeof activationConstraints === 'function'\n ? activationConstraints(event, source)\n : activationConstraints;\n\n return constraints;\n }\n\n public bind(source: Draggable, options = this.options) {\n const unbind = effect(() => {\n const controller = new AbortController();\n const {signal} = controller;\n const listener: EventListener = (event: Event) => {\n if (isPointerEvent(event)) {\n this.handlePointerDown(event, source, options);\n }\n };\n let targets = [source.handle ?? source.element];\n\n if (options?.activatorElements) {\n if (Array.isArray(options.activatorElements)) {\n targets = options.activatorElements;\n } else {\n targets = options.activatorElements(source);\n }\n }\n\n for (const target of targets) {\n if (!target) continue;\n\n patchWindow(target.ownerDocument.defaultView);\n target.addEventListener('pointerdown', listener, {signal});\n }\n\n return () => controller.abort();\n });\n\n return unbind;\n }\n\n protected handlePointerDown(\n event: PointerEvent,\n source: Draggable,\n options: PointerSensorOptions | undefined\n ) {\n if (\n this.disabled ||\n !event.isPrimary ||\n event.button !== 0 ||\n !isElement(event.target) ||\n source.disabled ||\n isCapturedBySensor(event) ||\n !this.manager.dragOperation.status.idle\n ) {\n return;\n }\n\n const {preventActivation = defaults.preventActivation} = options ?? {};\n\n if (preventActivation?.(event, source)) {\n return;\n }\n\n const {target} = event;\n const isNativeDraggable =\n isHTMLElement(target) &&\n target.draggable &&\n target.getAttribute('draggable') === 'true';\n\n const offset = getFrameTransform(source.element);\n const {x, y} = getEventCoordinates(event);\n\n this.initialCoordinates = {\n x: x * offset.scaleX + offset.x,\n y: y * offset.scaleY + offset.y,\n };\n\n const constraints = this.activationConstraints(event, source);\n (event as any).sensor = this;\n\n const controller = new ActivationController<PointerEvent>(\n constraints,\n (event) => this.handleStart(source, event)\n );\n\n controller.signal.onabort = () => this.handleCancel(event);\n controller.onEvent(event);\n\n this.controller = controller;\n\n const documents = getDocuments();\n const unbindListeners = this.listeners.bind(documents, [\n {\n type: 'pointermove',\n listener: (event: PointerEvent) =>\n this.handlePointerMove(event, source),\n },\n {\n type: 'pointerup',\n listener: this.handlePointerUp,\n options: {\n capture: true,\n },\n },\n {\n // Cancel activation if there is a competing Drag and Drop interaction\n type: 'dragstart',\n listener: isNativeDraggable ? this.handleCancel : preventDefault,\n options: {\n capture: true,\n },\n },\n ]);\n\n const cleanup = () => {\n unbindListeners();\n this.initialCoordinates = undefined;\n };\n\n this.#cleanup.add(cleanup);\n }\n\n private latest: LatestState = {\n event: undefined,\n coordinates: undefined,\n };\n\n protected handleMove = () => {\n const {event, coordinates: to} = this.latest;\n\n if (!event || !to) {\n return;\n }\n\n this.manager.actions.move({event, to});\n };\n\n protected handlePointerMove(event: PointerEvent, source: Draggable) {\n if (this.controller?.activated === false) {\n this.controller?.onEvent(event);\n return;\n }\n\n if (this.manager.dragOperation.status.dragging) {\n const coordinates = getEventCoordinates(event);\n const offset = getFrameTransform(source.element);\n\n coordinates.x = coordinates.x * offset.scaleX + offset.x;\n coordinates.y = coordinates.y * offset.scaleY + offset.y;\n\n event.preventDefault();\n event.stopPropagation();\n\n this.latest.event = event;\n this.latest.coordinates = coordinates;\n\n scheduler.schedule(this.handleMove);\n }\n }\n\n private handlePointerUp(event: PointerEvent) {\n // End the drag and drop operation\n const {status} = this.manager.dragOperation;\n\n if (!status.idle) {\n // Prevent the default behaviour of the event\n event.preventDefault();\n event.stopPropagation();\n\n const canceled = !status.initialized;\n this.manager.actions.stop({event, canceled});\n }\n\n this.cleanup();\n }\n\n protected handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.handleCancel(event);\n }\n }\n\n protected handleStart(source: Draggable, event: PointerEvent) {\n const {manager, initialCoordinates} = this;\n\n if (!initialCoordinates || !manager.dragOperation.status.idle) {\n return;\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n const controller = manager.actions.start({\n coordinates: initialCoordinates,\n event,\n source,\n });\n\n if (controller.signal.aborted) return this.cleanup();\n\n event.preventDefault();\n\n const ownerDocument = getDocument(event.target);\n const pointerCaptureTarget = ownerDocument.body;\n\n pointerCaptureTarget.setPointerCapture(event.pointerId);\n\n const listenerTargets = isElement(event.target)\n ? [event.target, ownerDocument.body]\n : ownerDocument.body;\n\n const unbind = this.listeners.bind(listenerTargets, [\n {\n // Prevent scrolling on touch devices\n type: 'touchmove',\n listener: preventDefault,\n options: {\n passive: false,\n },\n },\n {\n // Prevent click events\n type: 'click',\n listener: preventDefault,\n },\n {\n type: 'contextmenu',\n listener: preventDefault,\n },\n {\n type: 'keydown',\n listener: this.handleKeyDown,\n },\n ]);\n\n this.#cleanup.add(unbind);\n }\n\n protected handleCancel(event: Event) {\n const {dragOperation} = this.manager;\n\n if (dragOperation.status.initialized) {\n this.manager.actions.stop({event, canceled: true});\n }\n\n this.cleanup();\n }\n\n protected cleanup() {\n this.latest = {\n event: undefined,\n coordinates: undefined,\n };\n this.#cleanup.forEach((cleanup) => cleanup());\n this.#cleanup.clear();\n }\n\n public destroy() {\n this.cleanup();\n this.listeners.clear();\n }\n\n static configure = configurator(PointerSensor);\n\n static defaults = defaults;\n}\n\nfunction isCapturedBySensor(event: Event) {\n return 'sensor' in event;\n}\n\nfunction preventDefault(event: Event) {\n event.preventDefault();\n}\n\nfunction noop() {}\n\nconst windows = new WeakSet<Window>();\n\nfunction patchWindow(window: Window | null) {\n if (!window || windows.has(window)) {\n return;\n }\n\n window.addEventListener('touchmove', noop, {\n capture: false,\n passive: false,\n });\n windows.add(window);\n}\n","import {\n DragDropManager as AbstractDragDropManager,\n DragDropManagerInput,\n type Data,\n type Modifiers,\n type Plugins,\n type Sensors,\n} from '@dnd-kit/abstract';\n\nimport type {Draggable, Droppable} from '../entities/index.ts';\nimport {\n Accessibility,\n AutoScroller,\n Cursor,\n Feedback,\n Scroller,\n ScrollListener,\n PreventSelection,\n} from '../plugins/index.ts';\nimport {KeyboardSensor} from '../sensors/keyboard/KeyboardSensor.ts';\nimport {PointerSensor} from '../sensors/pointer/PointerSensor.ts';\n\nexport interface Input extends DragDropManagerInput<DragDropManager> {}\n\nexport const defaultPreset: {\n modifiers: Modifiers<DragDropManager>;\n plugins: Plugins<DragDropManager>;\n sensors: Sensors<DragDropManager>;\n} = {\n modifiers: [],\n plugins: [Accessibility, AutoScroller, Cursor, Feedback, PreventSelection],\n sensors: [PointerSensor, KeyboardSensor],\n};\n\nexport class DragDropManager<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n> extends AbstractDragDropManager<U, V> {\n constructor(input: Input = {}) {\n const {\n plugins = defaultPreset.plugins,\n sensors = defaultPreset.sensors,\n modifiers = [],\n } = input;\n\n super({\n ...input,\n plugins: [ScrollListener, Scroller, ...plugins],\n sensors,\n modifiers,\n });\n }\n}\n","import {\n Draggable as AbstractDraggable,\n Sensor,\n descriptor,\n} from '@dnd-kit/abstract';\nimport type {Data, DraggableInput} from '@dnd-kit/abstract';\nimport {reactive} from '@dnd-kit/state';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Sensors} from '../../sensors/types.ts';\n\nexport type FeedbackType = 'default' | 'move' | 'clone' | 'none';\n\nexport interface Input<T extends Data = Data> extends DraggableInput<T> {\n handle?: Element;\n element?: Element;\n feedback?: FeedbackType;\n sensors?: Sensors;\n}\n\nexport class Draggable<T extends Data = Data> extends AbstractDraggable<\n T,\n DragDropManager\n> {\n constructor(\n {\n element,\n effects = () => [],\n handle,\n feedback = 'default',\n ...input\n }: Input<T>,\n manager: DragDropManager | undefined\n ) {\n super(\n {\n effects: () => [\n ...effects(),\n () => {\n const {manager} = this;\n\n if (!manager) return;\n\n const sensors = this.sensors?.map(descriptor) ?? [\n ...manager.sensors,\n ];\n const unbindFunctions = sensors.map((entry) => {\n const sensorInstance =\n entry instanceof Sensor\n ? entry\n : manager.registry.register(entry.plugin);\n const options =\n entry instanceof Sensor ? undefined : entry.options;\n\n const unbind = sensorInstance.bind(this, options);\n return unbind;\n });\n\n return function cleanup() {\n unbindFunctions.forEach((unbind) => unbind());\n };\n },\n ],\n ...input,\n },\n manager\n );\n\n this.element = element;\n this.handle = handle;\n this.feedback = feedback;\n }\n\n @reactive\n public accessor handle: Element | undefined;\n\n @reactive\n public accessor element: Element | undefined;\n\n @reactive\n public accessor feedback: FeedbackType;\n}\n","import {Droppable as AbstractDroppable} from '@dnd-kit/abstract';\nimport type {\n Data,\n DroppableInput as AbstractDroppableInput,\n} from '@dnd-kit/abstract';\nimport {defaultCollisionDetection} from '@dnd-kit/collision';\nimport type {CollisionDetector} from '@dnd-kit/collision';\nimport {reactive, signal, untracked} from '@dnd-kit/state';\nimport type {BoundingRectangle, Shape} from '@dnd-kit/geometry';\nimport {DOMRectangle, PositionObserver} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/manager.ts';\n\ntype OptionalInput = 'collisionDetector';\n\nexport interface Input<T extends Data = Data>\n extends Omit<AbstractDroppableInput<T>, OptionalInput> {\n collisionDetector?: CollisionDetector;\n element?: Element;\n}\n\nexport class Droppable<T extends Data = Data> extends AbstractDroppable<\n T,\n DragDropManager\n> {\n constructor(\n {element, effects = () => [], ...input}: Input<T>,\n manager: DragDropManager | undefined\n ) {\n const {collisionDetector = defaultCollisionDetection} = input;\n const updateShape = (boundingClientRect?: BoundingRectangle | null) => {\n const {manager, element} = this;\n\n if (!element || boundingClientRect === null) {\n this.shape = undefined;\n return undefined;\n }\n\n if (!manager) return;\n\n const updatedShape = new DOMRectangle(element);\n\n const shape = untracked(() => this.shape);\n if (updatedShape && shape?.equals(updatedShape)) {\n return shape;\n }\n\n this.shape = updatedShape;\n\n return updatedShape;\n };\n\n const observePosition = signal(false);\n\n super(\n {\n ...input,\n collisionDetector,\n effects: () => [\n ...effects(),\n () => {\n const {element, manager} = this;\n if (!manager) return;\n\n const {dragOperation} = manager;\n const {source} = dragOperation;\n\n observePosition.value = Boolean(\n source &&\n dragOperation.status.initialized &&\n element &&\n !this.disabled &&\n this.accepts(source)\n );\n },\n () => {\n const {element} = this;\n\n if (observePosition.value && element) {\n const positionObserver = new PositionObserver(\n element,\n updateShape\n );\n\n return () => {\n positionObserver.disconnect();\n this.shape = undefined;\n };\n }\n },\n () => {\n if (this.manager?.dragOperation.status.initialized) {\n return () => {\n this.shape = undefined;\n };\n }\n },\n ],\n },\n manager\n );\n\n this.element = element;\n this.refreshShape = () => updateShape();\n }\n\n @reactive\n accessor #element: Element | undefined;\n\n @reactive\n public accessor proxy: Element | undefined;\n\n set element(element: Element | undefined) {\n this.#element = element;\n }\n\n get element() {\n return this.proxy ?? this.#element;\n }\n\n public refreshShape: () => Shape | undefined;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["src/core/plugins/accessibility/defaults.ts","src/core/plugins/accessibility/utilities.ts","src/core/plugins/accessibility/HiddenText.ts","src/core/plugins/accessibility/LiveRegion.ts","src/core/plugins/accessibility/Accessibility.ts","src/core/plugins/cursor/Cursor.ts","src/core/plugins/feedback/constants.ts","src/core/plugins/feedback/utilities.ts","src/core/plugins/feedback/Feedback.ts","src/core/plugins/scrolling/ScrollLock.ts","src/core/plugins/scrolling/ScrollIntent.ts","src/core/plugins/scrolling/Scroller.ts","src/utilities/scheduling/scheduler.ts","src/core/plugins/scrolling/AutoScroller.ts","src/core/plugins/scrolling/ScrollListener.ts","src/core/plugins/selection/PreventSelection.ts","src/core/sensors/keyboard/KeyboardSensor.ts","src/core/sensors/pointer/DistanceConstraint.ts","src/core/sensors/pointer/DelayConstraint.ts","src/core/sensors/pointer/PointerActivationConstraints.ts","src/core/sensors/pointer/PointerSensor.ts","src/core/manager/manager.ts","src/core/entities/draggable/draggable.ts","src/core/entities/droppable/droppable.ts"],"names":["Plugin","generateUniqueId","scheduler","manager","_a","isSafari","computed","getDocument","effect","document","untracked","cloneElement","ProxiedElements","getFrameElement","isElement","showPopover","reactive","_b","_c","state","getFrameTransform","DOMRectangle","Styles","getComputedStyles","isKeyboardEvent","parseTranslate","tX","tY","supportsPopover","getWindow","supportsStyle","styles","element","isHTMLElement","effects","transform","status","initialTranslate","translate","delta","Point","Rectangle","getFinalKeyframe","options","animateTransform","configurator","_dec","_init","Direction","ScrollDirection","signal","batch","Axes","CorePlugin","canScroll","detectScrollIntent","getElementFromPoint","getScrollableAncestors","deepEqual","Sensor","Listeners","scrollIntoViewIfNeeded","event","ActivationConstraint","getEventCoordinates","exceedsDistance","_timeout","_coordinates","defaults","isTextInput","isInteractiveElement","isPointerEvent","ActivationController","getDocuments","AbstractDragDropManager","AbstractDraggable","descriptor","_element_dec","_element","AbstractDroppable","defaultCollisionDetection","PositionObserver"],"mappings":"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","file":"index.cjs","sourcesContent":["import type {Announcements, ScreenReaderInstructions} from './types.ts';\n\nexport const defaultAttributes = {\n role: 'button',\n roleDescription: 'draggable',\n tabIndex: 0,\n};\n\nexport const defaultDescriptionIdPrefix = `dnd-kit-description`;\nexport const defaultAnnouncementIdPrefix = `dnd-kit-announcement`;\n\nexport const defaultScreenReaderInstructions: ScreenReaderInstructions = {\n draggable: `To pick up a draggable item, press the space bar. While dragging, use the arrow keys to move the item in a given direction. Press space again to drop the item in its new position, or press escape to cancel.`,\n};\n\nexport const defaultAnnouncements: Announcements = {\n dragstart({operation: {source}}) {\n if (!source) return;\n\n return `Picked up draggable item ${source.id}.`;\n },\n dragover({operation: {source, target}}) {\n if (!source || source.id === target?.id) return;\n\n if (target) {\n return `Draggable item ${source.id} was moved over droppable target ${target.id}.`;\n }\n\n return `Draggable item ${source.id} is no longer over a droppable target.`;\n },\n dragend({operation: {source, target}, canceled}) {\n if (!source) return;\n\n if (canceled) {\n return `Dragging was cancelled. Draggable item ${source.id} was dropped.`;\n }\n\n if (target) {\n return `Draggable item ${source.id} was dropped over droppable target ${target.id}`;\n }\n\n return `Draggable item ${source.id} was dropped.`;\n },\n};\n","export function isFocusable(element: Element) {\n const tagName = element.tagName.toLowerCase();\n\n return ['input', 'select', 'textarea', 'a', 'button'].includes(tagName);\n}\n","export function createHiddenText(id: string, value: string) {\n const element = document.createElement('div');\n\n element.id = id;\n element.style.setProperty('display', 'none');\n element.textContent = value;\n\n return element;\n}\n","export function createLiveRegion(id: string) {\n const element = document.createElement('div');\n\n element.id = id;\n element.setAttribute('role', 'status');\n element.setAttribute('aria-live', 'polite');\n element.setAttribute('aria-atomic', 'true');\n element.style.setProperty('position', 'fixed');\n element.style.setProperty('width', '1px');\n element.style.setProperty('height', '1px');\n element.style.setProperty('margin', '-1px');\n element.style.setProperty('border', '0');\n element.style.setProperty('padding', '0');\n element.style.setProperty('overflow', 'hidden');\n element.style.setProperty('clip', 'rect(0 0 0 0)');\n element.style.setProperty('clip-path', 'inset(100%)');\n element.style.setProperty('white-space', 'nowrap');\n\n return element;\n}\n","import {Plugin} from '@dnd-kit/abstract';\nimport {isSafari, generateUniqueId, scheduler} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport {\n defaultAnnouncements,\n defaultAttributes,\n defaultAnnouncementIdPrefix,\n defaultDescriptionIdPrefix,\n defaultScreenReaderInstructions,\n} from './defaults.ts';\nimport type {Announcements, ScreenReaderInstructions} from './types.ts';\nimport {isFocusable} from './utilities.ts';\nimport {createHiddenText} from './HiddenText.ts';\nimport {createLiveRegion} from './LiveRegion.ts';\n\ninterface Options {\n /**\n * Optional id that should be used for the accessibility plugin's screen reader instructions and announcements.\n */\n id?: string;\n /**\n * Optional id prefix to use for the accessibility plugin's screen reader instructions and announcements.\n */\n idPrefix?: {\n description?: string;\n announcement?: string;\n };\n /**\n * The announcements to use for the accessibility plugin.\n */\n announcements?: Announcements;\n /**\n * The screen reader instructions to use for the accessibility plugin.\n */\n screenReaderInstructions?: ScreenReaderInstructions;\n /**\n * The number of milliseconds to debounce the announcement updates.\n *\n * @remarks\n * Only the `dragover` and `dragmove` announcements are debounced.\n *\n * @default 500\n */\n debounce?: number;\n}\n\nconst debouncedEvents = ['dragover', 'dragmove'];\n\nexport class Accessibility extends Plugin<DragDropManager> {\n constructor(manager: DragDropManager, options?: Options) {\n super(manager);\n\n const {\n id,\n idPrefix: {\n description: descriptionPrefix = defaultDescriptionIdPrefix,\n announcement: announcementPrefix = defaultAnnouncementIdPrefix,\n } = {},\n announcements = defaultAnnouncements,\n screenReaderInstructions = defaultScreenReaderInstructions,\n debounce: debounceMs = 500,\n } = options ?? {};\n\n const descriptionId = id\n ? `${descriptionPrefix}-${id}`\n : generateUniqueId(descriptionPrefix);\n const announcementId = id\n ? `${announcementPrefix}-${id}`\n : generateUniqueId(announcementPrefix);\n\n let hiddenTextElement: HTMLElement | undefined;\n let liveRegionElement: HTMLElement | undefined;\n let liveRegionTextNode: Node | undefined;\n let latestAnnouncement: string | undefined;\n\n const updateAnnouncement = (value = latestAnnouncement) => {\n if (!liveRegionTextNode || !value) return;\n if (liveRegionTextNode?.nodeValue !== value) {\n liveRegionTextNode.nodeValue = value;\n }\n };\n const scheduleUpdateAnnouncement = () =>\n scheduler.schedule(updateAnnouncement);\n const debouncedUpdateAnnouncement = debounce(\n scheduleUpdateAnnouncement,\n debounceMs\n );\n\n const eventListeners = Object.entries(announcements).map(\n ([eventName, getAnnouncement]) => {\n return this.manager.monitor.addEventListener(\n eventName as keyof Announcements,\n (event: any, manager: DragDropManager) => {\n const element = liveRegionTextNode;\n if (!element) return;\n\n const announcement = getAnnouncement?.(event, manager);\n\n if (announcement && element.nodeValue !== announcement) {\n latestAnnouncement = announcement;\n\n if (debouncedEvents.includes(eventName)) {\n debouncedUpdateAnnouncement();\n } else {\n scheduleUpdateAnnouncement();\n debouncedUpdateAnnouncement.cancel();\n }\n }\n }\n );\n }\n );\n\n const initialize = () => {\n let elements = [];\n\n if (!hiddenTextElement?.isConnected) {\n hiddenTextElement = createHiddenText(\n descriptionId,\n screenReaderInstructions.draggable\n );\n elements.push(hiddenTextElement);\n }\n\n if (!liveRegionElement?.isConnected) {\n liveRegionElement = createLiveRegion(announcementId);\n liveRegionTextNode = document.createTextNode('');\n liveRegionElement.appendChild(liveRegionTextNode);\n elements.push(liveRegionElement);\n }\n\n if (elements.length > 0) {\n document.body.append(...elements);\n }\n };\n\n const mutations = new Set<() => void>();\n\n function executeMutations() {\n for (const operation of mutations) {\n operation();\n }\n }\n\n this.registerEffect(() => {\n mutations.clear();\n\n // Re-run effect when any of the draggable elements change\n for (const draggable of this.manager.registry.draggables.value) {\n const activator = draggable.handle ?? draggable.element;\n\n if (activator) {\n if (!hiddenTextElement || !liveRegionElement) {\n mutations.add(initialize);\n }\n\n if (\n (!isFocusable(activator) || isSafari()) &&\n !activator.hasAttribute('tabindex')\n ) {\n mutations.add(() => activator.setAttribute('tabindex', '0'));\n }\n\n if (\n !activator.hasAttribute('role') &&\n !(activator.tagName.toLowerCase() === 'button')\n ) {\n mutations.add(() =>\n activator.setAttribute('role', defaultAttributes.role)\n );\n }\n\n if (!activator.hasAttribute('aria-roledescription')) {\n mutations.add(() =>\n activator.setAttribute(\n 'aria-roledescription',\n defaultAttributes.roleDescription\n )\n );\n }\n\n if (!activator.hasAttribute('aria-describedby')) {\n mutations.add(() =>\n activator.setAttribute('aria-describedby', descriptionId)\n );\n }\n\n for (const key of ['aria-pressed', 'aria-grabbed']) {\n const value = String(draggable.isDragging);\n\n if (activator.getAttribute(key) !== value) {\n mutations.add(() => activator.setAttribute(key, value));\n }\n }\n\n const disabled = String(draggable.disabled);\n\n if (activator.getAttribute('aria-disabled') !== disabled) {\n mutations.add(() =>\n activator.setAttribute('aria-disabled', disabled)\n );\n }\n }\n }\n\n if (mutations.size > 0) {\n scheduler.schedule(executeMutations);\n }\n });\n\n this.destroy = () => {\n super.destroy();\n hiddenTextElement?.remove();\n liveRegionElement?.remove();\n eventListeners.forEach((unsubscribe) => unsubscribe());\n };\n }\n}\n\nfunction debounce(fn: () => void, wait: number) {\n let timeout: NodeJS.Timeout | undefined;\n const debounced = () => {\n clearTimeout(timeout);\n timeout = setTimeout(fn, wait);\n };\n\n debounced.cancel = () => clearTimeout(timeout);\n\n return debounced;\n}\n","import {Plugin} from '@dnd-kit/abstract';\nimport {computed, effect} from '@dnd-kit/state';\nimport {getDocument} from '@dnd-kit/dom/utilities';\n\nimport {DragDropManager} from '../../manager/index.ts';\n\ninterface CursorPluginOptions {\n /**\n * The style of the cursor to be applied to the document body.\n * @default 'grabbing'\n */\n cursor?: string;\n /**\n * The nonce to be applied to the style element.\n */\n nonce?: string;\n}\n\nexport class Cursor extends Plugin<DragDropManager> {\n constructor(\n public manager: DragDropManager,\n options?: CursorPluginOptions\n ) {\n super(manager, options);\n\n const doc = computed(() =>\n getDocument(this.manager.dragOperation.source?.element)\n );\n\n this.destroy = effect(() => {\n const {dragOperation} = this.manager;\n const {cursor = 'grabbing', nonce} = this.options ?? {};\n\n if (dragOperation.status.initialized) {\n const document = doc.value;\n const style = document.createElement('style');\n\n if (nonce) {\n style.setAttribute('nonce', nonce);\n }\n\n style.textContent = `* { cursor: ${cursor} !important; }`;\n document.head.appendChild(style);\n\n return () => style.remove();\n }\n });\n }\n}\n","export const ATTR_PREFIX = 'data-dnd-';\nexport const DROPPING_ATTRIBUTE = `${ATTR_PREFIX}dropping`;\nexport const CSS_PREFIX = '--dnd-';\nexport const ATTRIBUTE = `${ATTR_PREFIX}dragging`;\nexport const PLACEHOLDER_ATTRIBUTE = `${ATTR_PREFIX}placeholder`;\n\nexport const IGNORED_ATTRIBUTES = [\n ATTRIBUTE,\n PLACEHOLDER_ATTRIBUTE,\n 'popover',\n 'aria-pressed',\n 'aria-grabbing',\n];\n\nexport const IGNORED_STYLES = ['view-transition-name'];\n\nexport const CSS_RULES = `\n :root [${ATTRIBUTE}] {\n position: fixed !important;\n pointer-events: none !important;\n touch-action: none;\n z-index: calc(infinity);\n will-change: translate;\n top: var(${CSS_PREFIX}top, 0px) !important;\n left: var(${CSS_PREFIX}left, 0px) !important;\n right: unset !important;\n bottom: unset !important;\n width: var(${CSS_PREFIX}width, auto);\n max-width: var(${CSS_PREFIX}width, auto);\n height: var(${CSS_PREFIX}height, auto);\n max-height: var(${CSS_PREFIX}height, auto);\n transition: var(${CSS_PREFIX}transition) !important;\n }\n\n :root [${PLACEHOLDER_ATTRIBUTE}] {\n transition: none;\n }\n\n :root [${PLACEHOLDER_ATTRIBUTE}='hidden'] {\n visibility: hidden;\n }\n\n [${ATTRIBUTE}] * {\n pointer-events: none !important;\n }\n\n [${ATTRIBUTE}]:not([${DROPPING_ATTRIBUTE}]) {\n translate: var(${CSS_PREFIX}translate) !important;\n }\n\n [${ATTRIBUTE}][style*='${CSS_PREFIX}scale'] {\n scale: var(${CSS_PREFIX}scale) !important;\n transform-origin: var(${CSS_PREFIX}transform-origin) !important;\n }\n\n @layer {\n :where([${ATTRIBUTE}][popover]) {\n overflow: visible;\n background: unset;\n border: unset;\n margin: unset;\n padding: unset;\n color: inherit;\n\n &:is(input, button) {\n border: revert;\n background: revert;\n }\n }\n }\n [${ATTRIBUTE}]::backdrop, [${ATTR_PREFIX}overlay]:not([${ATTRIBUTE}]) {\n display: none;\n visibility: hidden;\n }\n`\n .replace(/\\n+/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim();\n","import {untracked} from '@dnd-kit/state';\nimport {\n cloneElement,\n generateUniqueId,\n getFrameElement,\n showPopover,\n ProxiedElements,\n isElement,\n} from '@dnd-kit/dom/utilities';\n\nimport type {Draggable, Droppable} from '../../entities/index.ts';\nimport {ATTR_PREFIX, PLACEHOLDER_ATTRIBUTE} from './constants.ts';\n\n/**\n * Creates a placeholder element for a draggable source\n * The placeholder maintains the original element's dimensions and position\n */\nexport function createPlaceholder(\n source: Draggable,\n type = 'hidden'\n): Element | undefined {\n return untracked(() => {\n const {element, manager} = source;\n\n if (!element || !manager) return;\n\n const containedDroppables = findContainedDroppables(\n element,\n manager.registry.droppables\n );\n const cleanup: Array<() => void> = [];\n const placeholder = cloneElement(element);\n const {remove} = placeholder;\n\n proxyDroppableElements(containedDroppables, placeholder, cleanup);\n configurePlaceholder(placeholder, type);\n\n // Override remove to handle cleanup of proxies\n placeholder.remove = () => {\n cleanup.forEach((fn) => fn());\n remove.call(placeholder);\n };\n\n return placeholder;\n });\n}\n\n/**\n * Maps droppable elements contained within the source element\n * Returns a map of droppables to their temporary identifier attributes\n */\nfunction findContainedDroppables(\n element: Element,\n droppables: Iterable<Droppable>\n): Map<Droppable, string> {\n const containedDroppables = new Map<Droppable, string>();\n\n for (const droppable of droppables) {\n if (!droppable.element) continue;\n\n if (element === droppable.element || element.contains(droppable.element)) {\n const identifierAttribute = `${ATTR_PREFIX}${generateUniqueId('dom-id')}`;\n droppable.element.setAttribute(identifierAttribute, '');\n containedDroppables.set(droppable, identifierAttribute);\n }\n }\n\n return containedDroppables;\n}\n\n/**\n * Sets up proxy relationships between original droppable elements and their clones\n */\nfunction proxyDroppableElements(\n containedDroppables: Map<Droppable, string>,\n placeholder: Element,\n cleanup: Array<() => void>\n): void {\n for (const [droppable, identifierAttribute] of containedDroppables) {\n if (!droppable.element) continue;\n\n const selector = `[${identifierAttribute}]`;\n const clonedElement = placeholder.matches(selector)\n ? placeholder\n : placeholder.querySelector(selector);\n\n droppable.element.removeAttribute(identifierAttribute);\n\n if (!clonedElement) continue;\n\n const originalElement = droppable.element;\n\n droppable.proxy = clonedElement;\n clonedElement.removeAttribute(identifierAttribute);\n\n ProxiedElements.set(originalElement, clonedElement);\n\n cleanup.push(() => {\n ProxiedElements.delete(originalElement);\n droppable.proxy = undefined;\n });\n }\n}\n\n/**\n * Configures accessibility and visual attributes for the placeholder\n */\nfunction configurePlaceholder(placeholder: Element, type = 'hidden'): void {\n placeholder.setAttribute('inert', 'true');\n placeholder.setAttribute('tab-index', '-1');\n placeholder.setAttribute('aria-hidden', 'true');\n placeholder.setAttribute(PLACEHOLDER_ATTRIBUTE, type);\n}\n\n/**\n * Checks if two elements are in the same frame context\n */\nexport function isSameFrame(element: Element, target: Element): boolean {\n if (element === target) return true;\n return getFrameElement(element) === getFrameElement(target);\n}\n\n/**\n * Prevent an element with the `popover` attribute from being closed\n */\nexport function preventPopoverClose(event: Event) {\n const {target} = event;\n\n if (\n 'newState' in event &&\n event.newState === 'closed' &&\n isElement(target) &&\n target.hasAttribute('popover')\n ) {\n requestAnimationFrame(() => showPopover(target));\n }\n}\n\nexport function isTableRow(element: Element): element is HTMLTableRowElement {\n return element.tagName === 'TR';\n}\n","import {\n effects,\n reactive,\n untracked,\n type CleanupFunction,\n} from '@dnd-kit/state';\nimport {configurator, Plugin} from '@dnd-kit/abstract';\nimport {\n animateTransform,\n DOMRectangle,\n getComputedStyles,\n getDocument,\n getFinalKeyframe,\n getFrameTransform,\n getWindow,\n isHTMLElement,\n isKeyboardEvent,\n parseTranslate,\n showPopover,\n Styles,\n supportsPopover,\n supportsStyle,\n} from '@dnd-kit/dom/utilities';\nimport {Coordinates, Point, Rectangle} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Draggable} from '../../entities/index.ts';\n\nimport {\n ATTRIBUTE,\n CSS_PREFIX,\n CSS_RULES,\n DROPPING_ATTRIBUTE,\n IGNORED_ATTRIBUTES,\n IGNORED_STYLES,\n} from './constants.ts';\nimport {\n createPlaceholder,\n isSameFrame,\n isTableRow,\n preventPopoverClose,\n} from './utilities.ts';\n\nexport interface FeedbackOptions {\n rootElement?: Element | ((source: Draggable) => Element);\n nonce?: string;\n}\n\ninterface State {\n current: {\n translate?: Coordinates;\n };\n initial: {\n dimensions?: {width: number; height: number};\n coordinates?: Coordinates;\n frameTransform?: {x: number; y: number; scaleX: number; scaleY: number};\n translate?: Coordinates;\n transformOrigin?: Coordinates;\n };\n}\n\ninterface StyleSheetRegistration {\n cleanup: CleanupFunction;\n instances: Set<Feedback>;\n}\n\nconst styleSheetRegistry = new Map<Document, StyleSheetRegistration>();\n\nexport class Feedback extends Plugin<DragDropManager, FeedbackOptions> {\n @reactive\n public accessor overlay: Element | undefined;\n\n private state: State = {\n initial: {},\n current: {},\n };\n\n constructor(manager: DragDropManager, options?: FeedbackOptions) {\n super(manager, options);\n\n this.registerEffect(this.#injectStyles);\n this.registerEffect(this.#render);\n }\n\n #render() {\n const {state, manager, options} = this;\n const {dragOperation} = manager;\n const {position, source, status} = dragOperation;\n\n if (status.idle) {\n state.current = {};\n state.initial = {};\n return;\n }\n\n if (!source) return;\n\n const {element, feedback} = source;\n\n if (\n !element ||\n feedback === 'none' ||\n !status.initialized ||\n status.initializing\n ) {\n return;\n }\n\n const {initial} = state;\n const feedbackElement = this.overlay ?? element;\n const frameTransform = getFrameTransform(feedbackElement);\n const elementFrameTransform = getFrameTransform(element);\n const crossFrame = !isSameFrame(element, feedbackElement);\n const shape = new DOMRectangle(element, {\n frameTransform: crossFrame ? elementFrameTransform : null,\n ignoreTransforms: !crossFrame,\n });\n const scaleDelta = {\n x: elementFrameTransform.scaleX / frameTransform.scaleX,\n y: elementFrameTransform.scaleY / frameTransform.scaleY,\n };\n\n let {width, height, top, left} = shape;\n\n if (crossFrame) {\n width = width / scaleDelta.x;\n height = height / scaleDelta.y;\n }\n\n let elementMutationObserver: MutationObserver | undefined;\n let documentMutationObserver: MutationObserver | undefined;\n const styles = new Styles(feedbackElement);\n const {\n transition,\n translate,\n boxSizing,\n paddingBlockStart,\n paddingBlockEnd,\n paddingInlineStart,\n paddingInlineEnd,\n borderInlineStartWidth,\n borderInlineEndWidth,\n borderBlockStartWidth,\n borderBlockEndWidth,\n } = getComputedStyles(element);\n const clone = feedback === 'clone';\n const contentBox = boxSizing === 'content-box';\n const widthOffset = contentBox\n ? parseInt(paddingInlineStart) +\n parseInt(paddingInlineEnd) +\n parseInt(borderInlineStartWidth) +\n parseInt(borderInlineEndWidth)\n : 0;\n const heightOffset = contentBox\n ? parseInt(paddingBlockStart) +\n parseInt(paddingBlockEnd) +\n parseInt(borderBlockStartWidth) +\n parseInt(borderBlockEndWidth)\n : 0;\n\n const placeholder =\n feedback !== 'move' && !this.overlay\n ? createPlaceholder(source, clone ? 'clone' : 'hidden')\n : null;\n const isKeyboardOperation = untracked(() =>\n isKeyboardEvent(manager.dragOperation.activatorEvent)\n );\n\n if (translate !== 'none') {\n const parsedTranslate = parseTranslate(translate);\n\n if (parsedTranslate && !initial.translate) {\n initial.translate = parsedTranslate;\n }\n }\n\n if (!initial.transformOrigin) {\n const current = untracked(() => position.current);\n\n initial.transformOrigin = {\n x:\n (current.x - left * frameTransform.scaleX - frameTransform.x) /\n (width * frameTransform.scaleX),\n y:\n (current.y - top * frameTransform.scaleY - frameTransform.y) /\n (height * frameTransform.scaleY),\n };\n }\n\n const {transformOrigin} = initial;\n const relativeTop = top * frameTransform.scaleY + frameTransform.y;\n const relativeLeft = left * frameTransform.scaleX + frameTransform.x;\n\n if (!initial.coordinates) {\n initial.coordinates = {\n x: relativeLeft,\n y: relativeTop,\n };\n\n // Compoensate for transformOrigin when scaling\n if (scaleDelta.x !== 1 || scaleDelta.y !== 1) {\n const {scaleX, scaleY} = elementFrameTransform;\n const {x: tX, y: tY} = transformOrigin;\n\n initial.coordinates.x += (width * scaleX - width) * tX;\n initial.coordinates.y += (height * scaleY - height) * tY;\n }\n }\n\n if (!initial.dimensions) {\n initial.dimensions = {width, height};\n }\n\n if (!initial.frameTransform) {\n initial.frameTransform = frameTransform;\n }\n\n const coordinatesDelta = {\n x: initial.coordinates.x - relativeLeft,\n y: initial.coordinates.y - relativeTop,\n };\n\n const sizeDelta = {\n width:\n (initial.dimensions.width * initial.frameTransform.scaleX -\n width * frameTransform.scaleX) *\n transformOrigin.x,\n height:\n (initial.dimensions.height * initial.frameTransform.scaleY -\n height * frameTransform.scaleY) *\n transformOrigin.y,\n };\n\n const delta = {\n x: coordinatesDelta.x / frameTransform.scaleX + sizeDelta.width,\n y: coordinatesDelta.y / frameTransform.scaleY + sizeDelta.height,\n };\n\n const projected = {\n left: left + delta.x,\n top: top + delta.y,\n };\n\n feedbackElement.setAttribute(ATTRIBUTE, 'true');\n\n const transform = untracked(() => dragOperation.transform);\n const initialTranslate = initial.translate ?? {x: 0, y: 0};\n const tX = transform.x * frameTransform.scaleX + initialTranslate.x;\n const tY = transform.y * frameTransform.scaleY + initialTranslate.y;\n const translateString = `${tX}px ${tY}px 0`;\n const transitionString = transition\n ? `${transition}, translate 0ms linear`\n : '';\n\n styles.set(\n {\n width: width - widthOffset,\n height: height - heightOffset,\n top: projected.top,\n left: projected.left,\n translate: translateString,\n transition: transitionString,\n scale: crossFrame ? `${scaleDelta.x} ${scaleDelta.y}` : '',\n 'transform-origin': `${transformOrigin.x * 100}% ${transformOrigin.y * 100}%`,\n },\n CSS_PREFIX\n );\n\n if (placeholder) {\n element.insertAdjacentElement('afterend', placeholder);\n\n if (options?.rootElement) {\n const root =\n typeof options.rootElement === 'function'\n ? options.rootElement(source)\n : options.rootElement;\n\n root.appendChild(element);\n }\n }\n\n if (supportsPopover(feedbackElement)) {\n if (!feedbackElement.hasAttribute('popover')) {\n feedbackElement.setAttribute('popover', 'manual');\n }\n showPopover(feedbackElement);\n feedbackElement.addEventListener('beforetoggle', preventPopoverClose);\n }\n\n const resizeObserver = new ResizeObserver(() => {\n if (!placeholder) return;\n\n const placeholderShape = new DOMRectangle(placeholder, {\n frameTransform,\n ignoreTransforms: true,\n });\n const origin = transformOrigin ?? {x: 1, y: 1};\n const dX = (width - placeholderShape.width) * origin.x + delta.x;\n const dY = (height - placeholderShape.height) * origin.y + delta.y;\n\n styles.set(\n {\n width: placeholderShape.width - widthOffset,\n height: placeholderShape.height - heightOffset,\n top: top + dY,\n left: left + dX,\n },\n CSS_PREFIX\n );\n elementMutationObserver?.takeRecords();\n\n /* Table cells need to have their width set explicitly because the feedback element is position fixed */\n if (isTableRow(element) && isTableRow(placeholder)) {\n const cells = Array.from(element.cells);\n const placeholderCells = Array.from(placeholder.cells);\n\n for (const [index, cell] of cells.entries()) {\n const placeholderCell = placeholderCells[index];\n\n cell.style.width = `${placeholderCell.offsetWidth}px`;\n }\n }\n\n dragOperation.shape = new DOMRectangle(feedbackElement);\n });\n\n /* Initialize drag operation shape */\n const initialShape = new DOMRectangle(feedbackElement);\n untracked(() => (dragOperation.shape = initialShape));\n\n const feedbackWindow = getWindow(feedbackElement);\n const handleWindowResize = (event: Event) => {\n this.manager.actions.stop({event});\n };\n\n if (isKeyboardOperation) {\n feedbackWindow.addEventListener('resize', handleWindowResize);\n }\n\n if (untracked(() => source.status) === 'idle') {\n requestAnimationFrame(() => (source.status = 'dragging'));\n }\n\n if (placeholder) {\n resizeObserver.observe(placeholder);\n\n elementMutationObserver = new MutationObserver((mutations) => {\n let hasChildrenMutations = false;\n\n for (const mutation of mutations) {\n if (mutation.target !== element) {\n hasChildrenMutations = true;\n continue;\n }\n\n if (mutation.type !== 'attributes') {\n // Should never happen, but defensive programming just in case\n continue;\n }\n\n // Attribute name is guaranteed to be non-null if type is \"attributes\"\n // https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord/attributeName#value\n const attributeName = mutation.attributeName!;\n\n if (\n attributeName.startsWith('aria-') ||\n IGNORED_ATTRIBUTES.includes(attributeName)\n ) {\n continue;\n }\n\n const attributeValue = element.getAttribute(attributeName);\n\n if (attributeName === 'style') {\n if (supportsStyle(element) && supportsStyle(placeholder)) {\n const styles = element.style;\n\n for (const key of Array.from(placeholder.style)) {\n if (styles.getPropertyValue(key) === '') {\n placeholder.style.removeProperty(key);\n }\n }\n\n for (const key of Array.from(styles)) {\n if (\n IGNORED_STYLES.includes(key) ||\n key.startsWith(CSS_PREFIX)\n ) {\n continue;\n }\n\n const value = styles.getPropertyValue(key);\n\n placeholder.style.setProperty(key, value);\n }\n }\n } else if (attributeValue !== null) {\n placeholder.setAttribute(attributeName, attributeValue);\n } else {\n placeholder.removeAttribute(attributeName);\n }\n }\n\n if (hasChildrenMutations && clone) {\n placeholder.innerHTML = element.innerHTML;\n }\n });\n\n elementMutationObserver.observe(element, {\n attributes: true,\n subtree: true,\n childList: true,\n });\n\n /* Make sure the placeholder and the source element positions are always in sync */\n documentMutationObserver = new MutationObserver((entries) => {\n for (const entry of entries) {\n if (entry.addedNodes.length === 0) continue;\n\n for (const node of Array.from(entry.addedNodes)) {\n if (\n node.contains(element) &&\n element.nextElementSibling !== placeholder\n ) {\n /* Update the position of the placeholder when the source element is moved */\n element.insertAdjacentElement('afterend', placeholder);\n /* Force the source element to be promoted back to the top layer */\n showPopover(feedbackElement);\n return;\n }\n\n if (\n node.contains(placeholder) &&\n placeholder.previousElementSibling !== element\n ) {\n /* Update the position of the source element when the placeholder is moved */\n placeholder.insertAdjacentElement('beforebegin', element);\n /* Force the source element to be promoted back to the top layer */\n showPopover(feedbackElement);\n return;\n }\n }\n }\n });\n\n /* Observe mutations on the element's owner document body */\n documentMutationObserver.observe(element.ownerDocument.body, {\n childList: true,\n subtree: true,\n });\n }\n\n const id = manager.dragOperation.source?.id;\n\n const restoreFocus = () => {\n if (!isKeyboardOperation || id == null) {\n return;\n }\n\n const draggable = manager.registry.draggables.get(id);\n const element = draggable?.handle ?? draggable?.element;\n\n if (isHTMLElement(element)) {\n element.focus();\n }\n };\n const cleanup = () => {\n elementMutationObserver?.disconnect();\n documentMutationObserver?.disconnect();\n resizeObserver.disconnect();\n feedbackWindow.removeEventListener('resize', handleWindowResize);\n\n if (supportsPopover(feedbackElement)) {\n feedbackElement.removeEventListener(\n 'beforetoggle',\n preventPopoverClose\n );\n feedbackElement.removeAttribute('popover');\n }\n\n feedbackElement.removeAttribute(ATTRIBUTE);\n styles.reset();\n\n source.status = 'idle';\n\n const moved = state.current.translate != null;\n\n if (\n placeholder &&\n (moved ||\n placeholder.parentElement !== feedbackElement.parentElement) &&\n feedbackElement.isConnected\n ) {\n placeholder.replaceWith(feedbackElement);\n }\n\n placeholder?.remove();\n };\n\n const cleanupEffects = effects(\n // Update transform on move\n () => {\n const {transform, status} = dragOperation;\n\n if (!transform.x && !transform.y && !state.current.translate) {\n return;\n }\n\n if (status.dragging) {\n const initialTranslate = initial.translate ?? {x: 0, y: 0};\n const translate = {\n x: transform.x / frameTransform.scaleX + initialTranslate.x,\n y: transform.y / frameTransform.scaleY + initialTranslate.y,\n };\n const previousTranslate = state.current.translate;\n const modifiers = untracked(() => dragOperation.modifiers);\n const currentShape = untracked(() => dragOperation.shape?.current);\n const translateTransition = isKeyboardOperation\n ? '250ms cubic-bezier(0.25, 1, 0.5, 1)'\n : '0ms linear';\n\n styles.set(\n {\n transition: `${transition}, translate ${translateTransition}`,\n translate: `${translate.x}px ${translate.y}px 0`,\n },\n CSS_PREFIX\n );\n elementMutationObserver?.takeRecords();\n\n if (\n currentShape &&\n currentShape !== initialShape &&\n previousTranslate &&\n !modifiers.length\n ) {\n const delta = Point.delta(translate, previousTranslate);\n\n dragOperation.shape = Rectangle.from(\n currentShape.boundingRectangle\n ).translate(\n // Need to take into account frame transform when optimistically updating shape\n delta.x * frameTransform.scaleX,\n delta.y * frameTransform.scaleY\n );\n } else {\n dragOperation.shape = new DOMRectangle(feedbackElement);\n }\n\n state.current.translate = translate;\n }\n },\n // Drop animation\n function () {\n if (dragOperation.status.dropped) {\n // Dispose of the effect\n this.dispose();\n\n source.status = 'dropping';\n\n let translate = state.current.translate;\n const moved = translate != null;\n\n if (!translate && element !== feedbackElement) {\n translate = {\n x: 0,\n y: 0,\n };\n }\n\n if (!translate) {\n cleanup();\n return;\n }\n\n const dropAnimation = () => {\n {\n /* Force the source element to be promoted to the top layer before animating it */\n showPopover(feedbackElement);\n\n // Pause any translate transitions that are running on the feedback element\n const [, animation] =\n getFinalKeyframe(\n feedbackElement,\n (keyframe) => 'translate' in keyframe\n ) ?? [];\n\n animation?.pause();\n\n const target = placeholder ?? element;\n const options = {\n frameTransform: isSameFrame(feedbackElement, target)\n ? null\n : undefined,\n };\n const current = new DOMRectangle(feedbackElement, options);\n // With a keyboard activator, since there is a transition on the translate property,\n // the translate value may not be the same as the computed value if the transition is still running.\n const currentTranslate =\n parseTranslate(getComputedStyles(feedbackElement).translate) ??\n translate;\n const final = new DOMRectangle(target, options);\n const delta = Rectangle.delta(current, final, source.alignment);\n const finalTranslate = {\n x: currentTranslate.x - delta.x,\n y: currentTranslate.y - delta.y,\n };\n const heightKeyframes =\n Math.round(current.intrinsicHeight) !==\n Math.round(final.intrinsicHeight)\n ? {\n minHeight: [\n `${current.intrinsicHeight}px`,\n `${final.intrinsicHeight}px`,\n ],\n maxHeight: [\n `${current.intrinsicHeight}px`,\n `${final.intrinsicHeight}px`,\n ],\n }\n : {};\n const widthKeyframes =\n Math.round(current.intrinsicWidth) !==\n Math.round(final.intrinsicWidth)\n ? {\n minWidth: [\n `${current.intrinsicWidth}px`,\n `${final.intrinsicWidth}px`,\n ],\n maxWidth: [\n `${current.intrinsicWidth}px`,\n `${final.intrinsicWidth}px`,\n ],\n }\n : {};\n\n styles.set({transition}, CSS_PREFIX);\n feedbackElement.setAttribute(DROPPING_ATTRIBUTE, '');\n elementMutationObserver?.takeRecords();\n\n animateTransform({\n element: feedbackElement,\n keyframes: {\n ...heightKeyframes,\n ...widthKeyframes,\n translate: [\n `${currentTranslate.x}px ${currentTranslate.y}px 0`,\n `${finalTranslate.x}px ${finalTranslate.y}px 0`,\n ],\n },\n options: {\n duration: moved || feedbackElement !== element ? 250 : 0,\n easing: 'ease',\n },\n }).then(() => {\n feedbackElement.removeAttribute(DROPPING_ATTRIBUTE);\n animation?.finish();\n cleanup();\n requestAnimationFrame(restoreFocus);\n });\n }\n };\n\n manager.renderer.rendering.then(dropAnimation);\n }\n }\n );\n\n return () => {\n cleanup();\n cleanupEffects();\n };\n }\n\n #injectStyles() {\n const {status, source, target} = this.manager.dragOperation;\n const {nonce} = this.options ?? {};\n\n if (status.initializing) {\n const sourceDocument = getDocument(source?.element ?? null);\n const targetDocument = getDocument(target?.element ?? null);\n const documents = new Set([sourceDocument, targetDocument]);\n\n for (const doc of documents) {\n let registration = styleSheetRegistry.get(doc);\n\n if (!registration) {\n const style = document.createElement('style');\n style.textContent = CSS_RULES;\n if (nonce) {\n style.setAttribute('nonce', nonce);\n }\n doc.head.prepend(style);\n const mutationObserver = new MutationObserver((entries) => {\n for (const entry of entries) {\n if (entry.type === 'childList') {\n const removedNodes = Array.from(entry.removedNodes);\n\n if (removedNodes.length > 0 && removedNodes.includes(style)) {\n // Re-inject the style tag if it gets removed from the DOM\n doc.head.prepend(style);\n }\n }\n }\n });\n mutationObserver.observe(doc.head, {childList: true});\n\n registration = {\n cleanup: () => {\n mutationObserver.disconnect();\n style.remove();\n },\n instances: new Set(),\n };\n styleSheetRegistry.set(doc, registration);\n }\n\n // Track this instance for this document\n registration.instances.add(this);\n }\n }\n }\n\n public destroy(): void {\n super.destroy();\n\n // Clean up documents this instance was tracking\n for (const [doc, registration] of styleSheetRegistry.entries()) {\n if (registration.instances.has(this)) {\n registration.instances.delete(this);\n\n // If no more instances are using this document, clean it up\n if (registration.instances.size === 0) {\n registration.cleanup();\n styleSheetRegistry.delete(doc);\n }\n }\n }\n }\n\n static configure = configurator(Feedback);\n}\n","import {reactive} from '@dnd-kit/state';\nimport {ScrollDirection as Direction} from '@dnd-kit/dom/utilities';\n\nconst LOCKED = true;\nconst UNLOCKED = false;\n\nexport class ScrollLock {\n @reactive private accessor [Direction.Forward] = LOCKED;\n @reactive private accessor [Direction.Reverse] = LOCKED;\n\n public isLocked(direction?: Direction): boolean {\n if (direction === Direction.Idle) {\n return false;\n }\n\n if (direction == null) {\n return (\n this[Direction.Forward] === LOCKED && this[Direction.Reverse] === LOCKED\n );\n }\n\n return this[direction] === LOCKED;\n }\n\n public unlock(direction: Direction) {\n if (direction === Direction.Idle) {\n return;\n }\n\n this[direction] = UNLOCKED;\n }\n}\n","import {batch, effect, signal, type Signal} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\nimport {Axes} from '@dnd-kit/geometry';\nimport type {Coordinates} from '@dnd-kit/geometry';\nimport {ScrollDirection} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollLock} from './ScrollLock.ts';\n\nconst DIRECTIONS = [ScrollDirection.Forward, ScrollDirection.Reverse];\n\nclass ScrollIntent {\n public x = new ScrollLock();\n public y = new ScrollLock();\n\n public isLocked(): boolean {\n return this.x.isLocked() && this.y.isLocked();\n }\n}\n\nexport class ScrollIntentTracker extends Plugin<DragDropManager> {\n private signal: Signal<ScrollIntent | null>;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n const scrollIntent = signal<ScrollIntent>(new ScrollIntent());\n let previousDelta: Coordinates | null = null;\n\n this.signal = scrollIntent;\n\n effect(() => {\n const {status} = manager.dragOperation;\n\n if (!status.initialized) {\n previousDelta = null;\n scrollIntent.value = new ScrollIntent();\n return;\n }\n\n const {delta} = manager.dragOperation.position;\n\n if (previousDelta) {\n const directions = {\n x: getDirection(delta.x, previousDelta.x),\n y: getDirection(delta.y, previousDelta.y),\n };\n\n const intent = scrollIntent.peek();\n\n batch(() => {\n for (const axis of Axes) {\n for (const direction of DIRECTIONS) {\n if (directions[axis] === direction) {\n intent[axis].unlock(direction);\n }\n }\n }\n\n scrollIntent.value = intent;\n });\n }\n\n previousDelta = delta;\n });\n }\n\n get current(): ScrollIntent | null {\n return this.signal.peek();\n }\n}\n\nfunction getDirection(a: number, b: number): ScrollDirection {\n return Math.sign(a - b);\n}\n","import {CorePlugin} from '@dnd-kit/abstract';\nimport {computed, deepEqual, reactive} from '@dnd-kit/state';\nimport {\n canScroll,\n detectScrollIntent,\n getScrollableAncestors,\n getElementFromPoint,\n ScrollDirection,\n scheduler,\n isKeyboardEvent,\n getDocument,\n getFrameTransform,\n} from '@dnd-kit/dom/utilities';\nimport {Axes, type Coordinates} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollIntentTracker} from './ScrollIntent.ts';\n\nexport class Scroller extends CorePlugin<DragDropManager> {\n public getScrollableElements: () => Set<Element> | null;\n\n private scrollIntentTracker: ScrollIntentTracker;\n\n @reactive\n public accessor autoScrolling = false;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n let previousElementFromPoint: Element | null = null;\n let previousScrollableElements: Set<Element> | null = null;\n const elementFromPoint = computed(() => {\n const {position, source} = manager.dragOperation;\n\n if (!position) {\n return null;\n }\n\n const element = getElementFromPoint(\n getDocument(source?.element),\n position.current\n );\n\n if (element) {\n previousElementFromPoint = element;\n }\n\n return element ?? previousElementFromPoint;\n });\n const scrollableElements = computed(() => {\n const element = elementFromPoint.value;\n const {documentElement} = getDocument(element);\n\n if (!element || element === documentElement) {\n const {target} = manager.dragOperation;\n const targetElement = target?.element;\n\n if (targetElement) {\n const elements = getScrollableAncestors(targetElement, {\n excludeElement: false,\n });\n previousScrollableElements = elements;\n\n return elements;\n }\n }\n\n if (element) {\n const elements = getScrollableAncestors(element, {\n excludeElement: false,\n });\n\n if (\n this.autoScrolling &&\n previousScrollableElements &&\n elements.size < previousScrollableElements?.size\n ) {\n return previousScrollableElements;\n }\n\n previousScrollableElements = elements;\n\n return elements;\n }\n\n previousScrollableElements = null;\n\n return null;\n }, deepEqual);\n\n this.getScrollableElements = () => {\n return scrollableElements.value;\n };\n\n this.scrollIntentTracker = new ScrollIntentTracker(manager);\n\n this.destroy = manager.monitor.addEventListener('dragmove', (event) => {\n if (\n this.disabled ||\n event.defaultPrevented ||\n !isKeyboardEvent(manager.dragOperation.activatorEvent) ||\n !event.by\n ) {\n return;\n }\n\n // Prevent the move event if we can scroll to the new coordinates\n if (this.scroll({by: event.by})) {\n event.preventDefault();\n }\n });\n }\n\n #meta: {element: Element; by: Coordinates} | undefined;\n\n #scroll = () => {\n if (!this.#meta) {\n return;\n }\n\n const {element, by} = this.#meta;\n\n if (by.y) element.scrollTop += by.y;\n if (by.x) element.scrollLeft += by.x;\n };\n\n public scroll = (options?: {by: Coordinates}): boolean => {\n if (this.disabled) {\n return false;\n }\n\n const elements = this.getScrollableElements();\n\n if (!elements) {\n this.#meta = undefined;\n return false;\n }\n\n const {position} = this.manager.dragOperation;\n const currentPosition = position?.current;\n\n if (currentPosition) {\n const {by} = options ?? {};\n const intent = by\n ? {\n x: getScrollIntent(by.x),\n y: getScrollIntent(by.y),\n }\n : undefined;\n const scrollIntent = intent\n ? undefined\n : this.scrollIntentTracker.current;\n\n if (scrollIntent?.isLocked()) {\n return false;\n }\n\n for (const scrollableElement of elements) {\n const elementCanScroll = canScroll(scrollableElement, by);\n\n if (elementCanScroll.x || elementCanScroll.y) {\n const {speed, direction} = detectScrollIntent(\n scrollableElement,\n currentPosition,\n intent\n );\n\n if (scrollIntent) {\n for (const axis of Axes) {\n if (scrollIntent[axis].isLocked(direction[axis])) {\n speed[axis] = 0;\n direction[axis] = 0;\n }\n }\n }\n\n if (direction.x || direction.y) {\n const {x, y} = by ?? direction;\n const scrollLeftBy = x * speed.x;\n const scrollTopBy = y * speed.y;\n\n if (scrollLeftBy || scrollTopBy) {\n const previousScrollBy = this.#meta?.by;\n\n if (this.autoScrolling && previousScrollBy) {\n const scrollIntentMismatch =\n (previousScrollBy.x && !scrollLeftBy) ||\n (previousScrollBy.y && !scrollTopBy);\n\n if (scrollIntentMismatch) continue;\n }\n\n this.#meta = {\n element: scrollableElement,\n by: {\n x: scrollLeftBy,\n y: scrollTopBy,\n },\n };\n\n scheduler.schedule(this.#scroll);\n\n return true;\n }\n }\n }\n }\n }\n\n this.#meta = undefined;\n return false;\n };\n}\n\nfunction getScrollIntent(value: number) {\n if (value > 0) {\n return ScrollDirection.Forward;\n }\n\n if (value < 0) {\n return ScrollDirection.Reverse;\n }\n\n return ScrollDirection.Idle;\n}\n","type Callback = () => void;\n\nexport class Scheduler<T extends (callback: Callback) => any> {\n constructor(private scheduler: T) {}\n\n private pending: boolean = false;\n private tasks: Set<() => void> = new Set();\n private resolvers: Set<() => void> = new Set();\n\n public schedule(task: () => void): Promise<void> {\n this.tasks.add(task);\n\n if (!this.pending) {\n this.pending = true;\n this.scheduler(this.flush);\n }\n\n return new Promise<void>((resolve) => this.resolvers.add(resolve));\n }\n\n public flush = () => {\n const {tasks, resolvers} = this;\n\n this.pending = false;\n this.tasks = new Set();\n this.resolvers = new Set();\n\n for (const task of tasks) {\n task();\n }\n\n for (const resolve of resolvers) {\n resolve();\n }\n };\n}\n\nexport const scheduler = new Scheduler((callback) => {\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(callback);\n } else {\n callback();\n }\n});\n","import {Plugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\nimport type {CleanupFunction} from '@dnd-kit/state';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport {Scroller} from './Scroller.ts';\nimport {scheduler} from '../../../utilities/scheduling/scheduler.ts';\n\ninterface Options {}\n\nconst AUTOSCROLL_INTERVAL = 10;\n\nexport class AutoScroller extends Plugin<DragDropManager> {\n public destroy: CleanupFunction;\n\n constructor(manager: DragDropManager, _options?: Options) {\n super(manager);\n\n const scroller = manager.registry.plugins.get(Scroller);\n\n if (!scroller) {\n throw new Error('AutoScroller plugin depends on Scroller plugin');\n }\n\n this.destroy = effect(() => {\n if (this.disabled) {\n return;\n }\n\n // We consume the position from the drag operation\n // so that this effect is run when the position changes\n const {position: _, status} = manager.dragOperation;\n\n if (status.dragging) {\n const canScroll = scroller.scroll();\n\n if (canScroll) {\n scroller.autoScrolling = true;\n const interval = setInterval(\n () => scheduler.schedule(scroller.scroll),\n AUTOSCROLL_INTERVAL\n );\n\n return () => {\n clearInterval(interval);\n };\n } else {\n scroller.autoScrolling = false;\n }\n }\n });\n }\n}\n","import {CorePlugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nconst listenerOptions: AddEventListenerOptions = {\n capture: true,\n passive: true,\n};\n\nexport class ScrollListener extends CorePlugin<DragDropManager> {\n #timeout: NodeJS.Timeout | undefined;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n const {dragOperation} = this.manager;\n\n this.destroy = effect(() => {\n const enabled = dragOperation.status.dragging;\n\n if (enabled) {\n const root = dragOperation.source?.element?.ownerDocument ?? document;\n\n root.addEventListener('scroll', this.handleScroll, listenerOptions);\n\n return () => {\n root.removeEventListener(\n 'scroll',\n this.handleScroll,\n listenerOptions\n );\n };\n }\n });\n }\n\n private handleScroll = () => {\n if (this.#timeout == null) {\n this.#timeout = setTimeout(() => {\n this.manager.collisionObserver.forceUpdate(false);\n this.#timeout = undefined;\n }, 50);\n }\n };\n}\n","import {Plugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\n\nimport {DragDropManager} from '../../manager/index.ts';\n\ninterface PreventSelectionPluginOptions {\n /**\n * The nonce to be applied to the style element.\n */\n nonce?: string;\n}\n\nexport class PreventSelection extends Plugin<DragDropManager> {\n constructor(\n public manager: DragDropManager,\n options?: PreventSelectionPluginOptions\n ) {\n super(manager, options);\n\n this.destroy = effect(() => {\n const {dragOperation} = this.manager;\n const {nonce} = this.options ?? {};\n\n if (dragOperation.status.initialized) {\n const style = document.createElement('style');\n if (nonce) {\n style.setAttribute('nonce', nonce);\n }\n style.textContent = `* { user-select: none !important; -webkit-user-select: none !important; }`;\n document.head.appendChild(style);\n\n removeSelection();\n document.addEventListener('selectionchange', removeSelection, {\n capture: true,\n });\n\n return () => {\n document.removeEventListener('selectionchange', removeSelection, {\n capture: true,\n });\n style.remove();\n };\n }\n });\n }\n}\n\nfunction removeSelection() {\n document.getSelection()?.removeAllRanges();\n}\n","import {configurator, Sensor} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport {\n getDocument,\n isElement,\n isKeyboardEvent,\n scrollIntoViewIfNeeded,\n Listeners,\n DOMRectangle,\n} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Draggable} from '../../entities/index.ts';\nimport {AutoScroller} from '../../plugins/index.ts';\n\nexport type KeyCode = KeyboardEvent['code'];\n\nexport type KeyboardCodes = {\n start: KeyCode[];\n cancel: KeyCode[];\n end: KeyCode[];\n up: KeyCode[];\n down: KeyCode[];\n left: KeyCode[];\n right: KeyCode[];\n};\n\nexport interface KeyboardSensorOptions {\n /**\n * The offset by which the keyboard sensor should move the draggable.\n *\n * @default 10\n */\n offset?: number | {x: number; y: number};\n /**\n * The keyboard codes that activate the keyboard sensor.\n *\n * @default {\n * start: ['Space', 'Enter'],\n * cancel: ['Escape'],\n * end: ['Space', 'Enter', 'Tab'],\n * up: ['ArrowUp'],\n * down: ['ArrowDown'],\n * left: ['ArrowLeft'],\n * right: ['ArrowRight']\n * }\n */\n keyboardCodes?: KeyboardCodes;\n /**\n * Function that determines if the keyboard sensor should activate.\n */\n preventActivation?: (event: KeyboardEvent, source: Draggable) => boolean;\n}\n\nconst defaults = Object.freeze<Required<KeyboardSensorOptions>>({\n offset: 10,\n keyboardCodes: {\n start: ['Space', 'Enter'],\n cancel: ['Escape'],\n end: ['Space', 'Enter', 'Tab'],\n up: ['ArrowUp'],\n down: ['ArrowDown'],\n left: ['ArrowLeft'],\n right: ['ArrowRight'],\n },\n preventActivation(event, source) {\n const target = source.handle ?? source.element;\n return event.target !== target;\n },\n});\n\n/**\n * The KeyboardSensor class is an input sensor that handles Keyboard events.\n */\nexport class KeyboardSensor extends Sensor<\n DragDropManager,\n KeyboardSensorOptions\n> {\n constructor(\n public manager: DragDropManager,\n public options?: KeyboardSensorOptions\n ) {\n super(manager);\n }\n\n #cleanupFunctions: CleanupFunction[] = [];\n\n protected listeners = new Listeners();\n\n public bind(source: Draggable, options = this.options) {\n const unbind = effect(() => {\n const target = source.handle ?? source.element;\n const listener: EventListener = (event: Event) => {\n if (isKeyboardEvent(event)) {\n this.handleSourceKeyDown(event, source, options);\n }\n };\n\n if (target) {\n target.addEventListener('keydown', listener);\n\n return () => {\n target.removeEventListener('keydown', listener);\n };\n }\n });\n\n return unbind;\n }\n\n protected handleSourceKeyDown = (\n event: KeyboardEvent,\n source: Draggable,\n options: KeyboardSensorOptions | undefined\n ) => {\n if (this.disabled || event.defaultPrevented) {\n return;\n }\n\n if (!isElement(event.target)) {\n return;\n }\n\n if (source.disabled) {\n return;\n }\n\n const {\n keyboardCodes = defaults.keyboardCodes,\n preventActivation = defaults.preventActivation,\n } = options ?? {};\n\n if (!keyboardCodes.start.includes(event.code)) {\n return;\n }\n\n if (!this.manager.dragOperation.status.idle) {\n return;\n }\n\n if (preventActivation?.(event, source)) return;\n\n this.handleStart(event, source, options);\n };\n\n protected handleStart(\n event: KeyboardEvent,\n source: Draggable,\n options: KeyboardSensorOptions | undefined\n ) {\n const {element} = source;\n\n if (!element) {\n throw new Error('Source draggable does not have an associated element');\n }\n\n event.preventDefault();\n event.stopImmediatePropagation();\n\n scrollIntoViewIfNeeded(element);\n\n const {center} = new DOMRectangle(element);\n const controller = this.manager.actions.start({\n event,\n coordinates: {\n x: center.x,\n y: center.y,\n },\n source,\n });\n\n if (controller.signal.aborted) return this.cleanup();\n\n this.sideEffects();\n\n const sourceDocument = getDocument(element);\n const listeners = [\n this.listeners.bind(sourceDocument, [\n {\n type: 'keydown',\n listener: (event: KeyboardEvent) =>\n this.handleKeyDown(event, source, options),\n options: {capture: true},\n },\n ]),\n ];\n\n this.#cleanupFunctions.push(...listeners);\n }\n\n protected handleKeyDown(\n event: KeyboardEvent,\n _source: Draggable,\n options: KeyboardSensorOptions | undefined\n ) {\n const {keyboardCodes = defaults.keyboardCodes} = options ?? {};\n\n if (isKeycode(event, [...keyboardCodes.end, ...keyboardCodes.cancel])) {\n event.preventDefault();\n const canceled = isKeycode(event, keyboardCodes.cancel);\n\n this.handleEnd(event, canceled);\n return;\n }\n\n if (isKeycode(event, keyboardCodes.up)) {\n this.handleMove('up', event);\n } else if (isKeycode(event, keyboardCodes.down)) {\n this.handleMove('down', event);\n }\n\n if (isKeycode(event, keyboardCodes.left)) {\n this.handleMove('left', event);\n } else if (isKeycode(event, keyboardCodes.right)) {\n this.handleMove('right', event);\n }\n }\n\n protected handleEnd(event: Event, canceled: boolean) {\n this.manager.actions.stop({\n event,\n canceled,\n });\n\n this.cleanup();\n }\n\n protected handleMove(\n direction: 'up' | 'down' | 'left' | 'right',\n event: KeyboardEvent\n ) {\n const {shape} = this.manager.dragOperation;\n const factor = event.shiftKey ? 5 : 1;\n let by = {\n x: 0,\n y: 0,\n };\n let offset = this.options?.offset ?? defaults.offset;\n\n if (typeof offset === 'number') {\n offset = {x: offset, y: offset};\n }\n\n if (!shape) {\n return;\n }\n\n switch (direction) {\n case 'up':\n by = {x: 0, y: -offset.y * factor};\n break;\n case 'down':\n by = {x: 0, y: offset.y * factor};\n break;\n case 'left':\n by = {x: -offset.x * factor, y: 0};\n break;\n case 'right':\n by = {x: offset.x * factor, y: 0};\n break;\n }\n\n if (by.x || by.y) {\n event.preventDefault();\n\n this.manager.actions.move({\n event,\n by,\n });\n }\n }\n\n private sideEffects() {\n const autoScroller = this.manager.registry.plugins.get(AutoScroller as any);\n\n if (autoScroller?.disabled === false) {\n autoScroller.disable();\n\n this.#cleanupFunctions.push(() => {\n autoScroller.enable();\n });\n }\n }\n\n protected cleanup() {\n this.#cleanupFunctions.forEach((cleanup) => cleanup());\n this.#cleanupFunctions = [];\n }\n\n public destroy() {\n this.cleanup();\n // Remove all event listeners\n this.listeners.clear();\n }\n\n static configure = configurator(KeyboardSensor);\n\n static defaults = defaults;\n}\n\nfunction isKeycode(event: KeyboardEvent, codes: KeyCode[]) {\n return codes.includes(event.code);\n}\n","import {ActivationConstraint} from '@dnd-kit/abstract';\nimport {\n exceedsDistance,\n type Distance,\n type Coordinates,\n} from '@dnd-kit/geometry';\nimport {getEventCoordinates} from '@dnd-kit/dom/utilities';\n\nexport interface DistanceConstraintOptions {\n value: number;\n tolerance?: Distance;\n}\n\nexport class DistanceConstraint extends ActivationConstraint<\n PointerEvent,\n DistanceConstraintOptions\n> {\n #coordinates?: Coordinates;\n\n onEvent(event: PointerEvent) {\n switch (event.type) {\n case 'pointerdown':\n this.#coordinates = getEventCoordinates(event);\n break;\n case 'pointermove':\n if (!this.#coordinates) return;\n\n const {x, y} = getEventCoordinates(event);\n const delta = {\n x: x - this.#coordinates.x,\n y: y - this.#coordinates.y,\n };\n\n const {tolerance} = this.options;\n\n if (tolerance && exceedsDistance(delta, tolerance)) {\n this.abort();\n return;\n }\n\n if (exceedsDistance(delta, this.options.value)) {\n this.activate(event);\n }\n break;\n case 'pointerup':\n this.abort();\n break;\n }\n }\n\n abort() {\n this.#coordinates = undefined;\n }\n}\n","import {ActivationConstraint} from '@dnd-kit/abstract';\nimport {\n exceedsDistance,\n type Distance,\n type Coordinates,\n} from '@dnd-kit/geometry';\nimport {getEventCoordinates} from '@dnd-kit/dom/utilities';\n\nexport interface DelayConstraintOptions {\n value: number;\n tolerance: Distance;\n}\n\nexport class DelayConstraint extends ActivationConstraint<\n PointerEvent,\n DelayConstraintOptions\n> {\n #timeout?: ReturnType<typeof setTimeout>;\n #coordinates?: Coordinates;\n\n onEvent(event: PointerEvent) {\n switch (event.type) {\n case 'pointerdown':\n this.#coordinates = getEventCoordinates(event);\n this.#timeout = setTimeout(\n () => this.activate(event),\n this.options.value\n );\n break;\n case 'pointermove':\n if (!this.#coordinates) return;\n\n const {x, y} = getEventCoordinates(event);\n const delta = {\n x: x - this.#coordinates.x,\n y: y - this.#coordinates.y,\n };\n\n if (exceedsDistance(delta, this.options.tolerance)) {\n this.abort();\n }\n break;\n case 'pointerup':\n this.abort();\n break;\n }\n }\n\n abort() {\n if (this.#timeout) {\n clearTimeout(this.#timeout);\n this.#coordinates = undefined;\n this.#timeout = undefined;\n }\n }\n}\n","import {DistanceConstraint} from './DistanceConstraint.ts';\nimport {DelayConstraint} from './DelayConstraint.ts';\n\nexport class PointerActivationConstraints {\n static Delay = DelayConstraint;\n static Distance = DistanceConstraint;\n}\n","import {effect} from '@dnd-kit/state';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport {\n Sensor,\n configurator,\n ActivationController,\n type ActivationConstraints,\n} from '@dnd-kit/abstract';\nimport type {Coordinates} from '@dnd-kit/geometry';\nimport {\n getDocument,\n getDocuments,\n getEventCoordinates,\n getFrameTransform,\n isElement,\n isHTMLElement,\n isInteractiveElement,\n isPointerEvent,\n isTextInput,\n Listeners,\n scheduler,\n} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Draggable} from '../../entities/index.ts';\n\nimport {PointerActivationConstraints} from './PointerActivationConstraints.ts';\n\ntype Maybe<T> = T | undefined;\n\nexport interface PointerSensorOptions {\n activationConstraints?:\n | ActivationConstraints<PointerEvent>\n | ((\n event: PointerEvent,\n source: Draggable\n ) => ActivationConstraints<PointerEvent> | undefined);\n activatorElements?:\n | Maybe<Element>[]\n | ((source: Draggable) => Maybe<Element>[]);\n preventActivation?: (event: PointerEvent, source: Draggable) => boolean;\n}\n\nconst defaults = Object.freeze<PointerSensorOptions>({\n activationConstraints(event, source) {\n const {pointerType, target} = event;\n\n if (\n pointerType === 'mouse' &&\n isElement(target) &&\n (source.handle === target || source.handle?.contains(target))\n ) {\n return undefined;\n }\n\n if (pointerType === 'touch') {\n return [\n new PointerActivationConstraints.Delay({value: 250, tolerance: 5}),\n ];\n }\n\n if (isTextInput(target) && !event.defaultPrevented) {\n return [\n new PointerActivationConstraints.Delay({value: 200, tolerance: 0}),\n ];\n }\n\n return [\n new PointerActivationConstraints.Delay({value: 200, tolerance: 10}),\n new PointerActivationConstraints.Distance({value: 5}),\n ];\n },\n preventActivation(event, source) {\n const {target} = event;\n\n if (target === source.element) return false;\n if (target === source.handle) return false;\n if (!isElement(target)) return false;\n if (source.handle?.contains(target)) return false;\n\n return isInteractiveElement(target);\n },\n});\n\ntype LatestState = {\n event: PointerEvent | undefined;\n coordinates: Coordinates | undefined;\n};\n\n/**\n * The PointerSensor class is an input sensor that handles Pointer events,\n * such as mouse, touch and pen interactions.\n */\nexport class PointerSensor extends Sensor<\n DragDropManager,\n PointerSensorOptions\n> {\n #cleanup: Set<CleanupFunction> = new Set();\n\n protected listeners = new Listeners();\n\n protected initialCoordinates: Coordinates | undefined;\n\n protected controller: ActivationController<PointerEvent> | undefined;\n\n constructor(\n public manager: DragDropManager,\n public options?: PointerSensorOptions\n ) {\n super(manager);\n\n this.handleCancel = this.handleCancel.bind(this);\n this.handlePointerUp = this.handlePointerUp.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n protected activationConstraints(\n event: PointerEvent, \n source: Draggable, \n options = this.options\n ) {\n const {activationConstraints = defaults.activationConstraints} =\n options ?? {};\n\n const constraints =\n typeof activationConstraints === 'function'\n ? activationConstraints(event, source)\n : activationConstraints;\n\n return constraints;\n }\n\n public bind(source: Draggable, options = this.options) {\n const unbind = effect(() => {\n const controller = new AbortController();\n const {signal} = controller;\n const listener: EventListener = (event: Event) => {\n if (isPointerEvent(event)) {\n this.handlePointerDown(event, source, options);\n }\n };\n let targets = [source.handle ?? source.element];\n\n if (options?.activatorElements) {\n if (Array.isArray(options.activatorElements)) {\n targets = options.activatorElements;\n } else {\n targets = options.activatorElements(source);\n }\n }\n\n for (const target of targets) {\n if (!target) continue;\n\n patchWindow(target.ownerDocument.defaultView);\n target.addEventListener('pointerdown', listener, {signal});\n }\n\n return () => controller.abort();\n });\n\n return unbind;\n }\n\n protected handlePointerDown(\n event: PointerEvent,\n source: Draggable,\n options: PointerSensorOptions | undefined\n ) {\n if (\n this.disabled ||\n !event.isPrimary ||\n event.button !== 0 ||\n !isElement(event.target) ||\n source.disabled ||\n isCapturedBySensor(event) ||\n !this.manager.dragOperation.status.idle\n ) {\n return;\n }\n\n const {preventActivation = defaults.preventActivation} = options ?? {};\n\n if (preventActivation?.(event, source)) {\n return;\n }\n\n const {target} = event;\n const isNativeDraggable =\n isHTMLElement(target) &&\n target.draggable &&\n target.getAttribute('draggable') === 'true';\n\n const offset = getFrameTransform(source.element);\n const {x, y} = getEventCoordinates(event);\n\n this.initialCoordinates = {\n x: x * offset.scaleX + offset.x,\n y: y * offset.scaleY + offset.y,\n };\n\n const constraints = this.activationConstraints(event, source, options);\n (event as any).sensor = this;\n\n const controller = new ActivationController<PointerEvent>(\n constraints,\n (event) => this.handleStart(source, event)\n );\n\n controller.signal.onabort = () => this.handleCancel(event);\n controller.onEvent(event);\n\n this.controller = controller;\n\n const documents = getDocuments();\n const unbindListeners = this.listeners.bind(documents, [\n {\n type: 'pointermove',\n listener: (event: PointerEvent) =>\n this.handlePointerMove(event, source),\n },\n {\n type: 'pointerup',\n listener: this.handlePointerUp,\n options: {\n capture: true,\n },\n },\n {\n // Cancel activation if there is a competing Drag and Drop interaction\n type: 'dragstart',\n listener: isNativeDraggable ? this.handleCancel : preventDefault,\n options: {\n capture: true,\n },\n },\n ]);\n\n const cleanup = () => {\n unbindListeners();\n this.initialCoordinates = undefined;\n };\n\n this.#cleanup.add(cleanup);\n }\n\n private latest: LatestState = {\n event: undefined,\n coordinates: undefined,\n };\n\n protected handleMove = () => {\n const {event, coordinates: to} = this.latest;\n\n if (!event || !to) {\n return;\n }\n\n this.manager.actions.move({event, to});\n };\n\n protected handlePointerMove(event: PointerEvent, source: Draggable) {\n if (this.controller?.activated === false) {\n this.controller?.onEvent(event);\n return;\n }\n\n if (this.manager.dragOperation.status.dragging) {\n const coordinates = getEventCoordinates(event);\n const offset = getFrameTransform(source.element);\n\n coordinates.x = coordinates.x * offset.scaleX + offset.x;\n coordinates.y = coordinates.y * offset.scaleY + offset.y;\n\n event.preventDefault();\n event.stopPropagation();\n\n this.latest.event = event;\n this.latest.coordinates = coordinates;\n\n scheduler.schedule(this.handleMove);\n }\n }\n\n private handlePointerUp(event: PointerEvent) {\n // End the drag and drop operation\n const {status} = this.manager.dragOperation;\n\n if (!status.idle) {\n // Prevent the default behaviour of the event\n event.preventDefault();\n event.stopPropagation();\n\n const canceled = !status.initialized;\n this.manager.actions.stop({event, canceled});\n }\n\n this.cleanup();\n }\n\n protected handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.handleCancel(event);\n }\n }\n\n protected handleStart(source: Draggable, event: PointerEvent) {\n const {manager, initialCoordinates} = this;\n\n if (!initialCoordinates || !manager.dragOperation.status.idle) {\n return;\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n const controller = manager.actions.start({\n coordinates: initialCoordinates,\n event,\n source,\n });\n\n if (controller.signal.aborted) return this.cleanup();\n\n event.preventDefault();\n\n const ownerDocument = getDocument(event.target);\n const pointerCaptureTarget = ownerDocument.body;\n\n pointerCaptureTarget.setPointerCapture(event.pointerId);\n\n const listenerTargets = isElement(event.target)\n ? [event.target, ownerDocument.body]\n : ownerDocument.body;\n\n const unbind = this.listeners.bind(listenerTargets, [\n {\n // Prevent scrolling on touch devices\n type: 'touchmove',\n listener: preventDefault,\n options: {\n passive: false,\n },\n },\n {\n // Prevent click events\n type: 'click',\n listener: preventDefault,\n },\n {\n type: 'contextmenu',\n listener: preventDefault,\n },\n {\n type: 'keydown',\n listener: this.handleKeyDown,\n },\n ]);\n\n this.#cleanup.add(unbind);\n }\n\n protected handleCancel(event: Event) {\n const {dragOperation} = this.manager;\n\n if (dragOperation.status.initialized) {\n this.manager.actions.stop({event, canceled: true});\n }\n\n this.cleanup();\n }\n\n protected cleanup() {\n this.latest = {\n event: undefined,\n coordinates: undefined,\n };\n this.#cleanup.forEach((cleanup) => cleanup());\n this.#cleanup.clear();\n }\n\n public destroy() {\n this.cleanup();\n this.listeners.clear();\n }\n\n static configure = configurator(PointerSensor);\n\n static defaults = defaults;\n}\n\nfunction isCapturedBySensor(event: Event) {\n return 'sensor' in event;\n}\n\nfunction preventDefault(event: Event) {\n event.preventDefault();\n}\n\nfunction noop() {}\n\nconst windows = new WeakSet<Window>();\n\nfunction patchWindow(window: Window | null) {\n if (!window || windows.has(window)) {\n return;\n }\n\n window.addEventListener('touchmove', noop, {\n capture: false,\n passive: false,\n });\n windows.add(window);\n}\n","import {\n DragDropManager as AbstractDragDropManager,\n DragDropManagerInput,\n type Data,\n type Modifiers,\n type Plugins,\n type Sensors,\n} from '@dnd-kit/abstract';\n\nimport type {Draggable, Droppable} from '../entities/index.ts';\nimport {\n Accessibility,\n AutoScroller,\n Cursor,\n Feedback,\n Scroller,\n ScrollListener,\n PreventSelection,\n} from '../plugins/index.ts';\nimport {KeyboardSensor} from '../sensors/keyboard/KeyboardSensor.ts';\nimport {PointerSensor} from '../sensors/pointer/PointerSensor.ts';\n\nexport interface Input extends DragDropManagerInput<DragDropManager> {}\n\nexport const defaultPreset: {\n modifiers: Modifiers<DragDropManager>;\n plugins: Plugins<DragDropManager>;\n sensors: Sensors<DragDropManager>;\n} = {\n modifiers: [],\n plugins: [Accessibility, AutoScroller, Cursor, Feedback, PreventSelection],\n sensors: [PointerSensor, KeyboardSensor],\n};\n\nexport class DragDropManager<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n> extends AbstractDragDropManager<U, V> {\n constructor(input: Input = {}) {\n const {\n plugins = defaultPreset.plugins,\n sensors = defaultPreset.sensors,\n modifiers = [],\n } = input;\n\n super({\n ...input,\n plugins: [ScrollListener, Scroller, ...plugins],\n sensors,\n modifiers,\n });\n }\n}\n","import {\n Draggable as AbstractDraggable,\n Sensor,\n descriptor,\n} from '@dnd-kit/abstract';\nimport type {Data, DraggableInput} from '@dnd-kit/abstract';\nimport {reactive} from '@dnd-kit/state';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Sensors} from '../../sensors/types.ts';\n\nexport type FeedbackType = 'default' | 'move' | 'clone' | 'none';\n\nexport interface Input<T extends Data = Data> extends DraggableInput<T> {\n handle?: Element;\n element?: Element;\n feedback?: FeedbackType;\n sensors?: Sensors;\n}\n\nexport class Draggable<T extends Data = Data> extends AbstractDraggable<\n T,\n DragDropManager\n> {\n constructor(\n {\n element,\n effects = () => [],\n handle,\n feedback = 'default',\n ...input\n }: Input<T>,\n manager: DragDropManager | undefined\n ) {\n super(\n {\n effects: () => [\n ...effects(),\n () => {\n const {manager} = this;\n\n if (!manager) return;\n\n const sensors = this.sensors?.map(descriptor) ?? [\n ...manager.sensors,\n ];\n const unbindFunctions = sensors.map((entry) => {\n const sensorInstance =\n entry instanceof Sensor\n ? entry\n : manager.registry.register(entry.plugin);\n const options =\n entry instanceof Sensor ? undefined : entry.options;\n\n const unbind = sensorInstance.bind(this, options);\n return unbind;\n });\n\n return function cleanup() {\n unbindFunctions.forEach((unbind) => unbind());\n };\n },\n ],\n ...input,\n },\n manager\n );\n\n this.element = element;\n this.handle = handle;\n this.feedback = feedback;\n }\n\n @reactive\n public accessor handle: Element | undefined;\n\n @reactive\n public accessor element: Element | undefined;\n\n @reactive\n public accessor feedback: FeedbackType;\n}\n","import {Droppable as AbstractDroppable} from '@dnd-kit/abstract';\nimport type {\n Data,\n DroppableInput as AbstractDroppableInput,\n} from '@dnd-kit/abstract';\nimport {defaultCollisionDetection} from '@dnd-kit/collision';\nimport type {CollisionDetector} from '@dnd-kit/collision';\nimport {reactive, signal, untracked} from '@dnd-kit/state';\nimport type {BoundingRectangle, Shape} from '@dnd-kit/geometry';\nimport {DOMRectangle, PositionObserver} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/manager.ts';\n\ntype OptionalInput = 'collisionDetector';\n\nexport interface Input<T extends Data = Data>\n extends Omit<AbstractDroppableInput<T>, OptionalInput> {\n collisionDetector?: CollisionDetector;\n element?: Element;\n}\n\nexport class Droppable<T extends Data = Data> extends AbstractDroppable<\n T,\n DragDropManager\n> {\n constructor(\n {element, effects = () => [], ...input}: Input<T>,\n manager: DragDropManager | undefined\n ) {\n const {collisionDetector = defaultCollisionDetection} = input;\n const updateShape = (boundingClientRect?: BoundingRectangle | null) => {\n const {manager, element} = this;\n\n if (!element || boundingClientRect === null) {\n this.shape = undefined;\n return undefined;\n }\n\n if (!manager) return;\n\n const updatedShape = new DOMRectangle(element);\n\n const shape = untracked(() => this.shape);\n if (updatedShape && shape?.equals(updatedShape)) {\n return shape;\n }\n\n this.shape = updatedShape;\n\n return updatedShape;\n };\n\n const observePosition = signal(false);\n\n super(\n {\n ...input,\n collisionDetector,\n effects: () => [\n ...effects(),\n () => {\n const {element, manager} = this;\n if (!manager) return;\n\n const {dragOperation} = manager;\n const {source} = dragOperation;\n\n observePosition.value = Boolean(\n source &&\n dragOperation.status.initialized &&\n element &&\n !this.disabled &&\n this.accepts(source)\n );\n },\n () => {\n const {element} = this;\n\n if (observePosition.value && element) {\n const positionObserver = new PositionObserver(\n element,\n updateShape\n );\n\n return () => {\n positionObserver.disconnect();\n this.shape = undefined;\n };\n }\n },\n () => {\n if (this.manager?.dragOperation.status.initialized) {\n return () => {\n this.shape = undefined;\n };\n }\n },\n ],\n },\n manager\n );\n\n this.element = element;\n this.refreshShape = () => updateShape();\n }\n\n @reactive\n accessor #element: Element | undefined;\n\n @reactive\n public accessor proxy: Element | undefined;\n\n set element(element: Element | undefined) {\n this.#element = element;\n }\n\n get element() {\n return this.proxy ?? this.#element;\n }\n\n public refreshShape: () => Shape | undefined;\n}\n"]}
|