@dnd-kit/dom 0.4.0-beta-20260412020809 → 0.4.0
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 +2 -1
- package/index.cjs.map +1 -1
- package/index.d.cts +3 -2
- package/index.d.ts +3 -2
- package/index.js +2 -1
- package/index.js.map +1 -1
- package/package.json +5 -5
package/index.js.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/stylesheet/StyleInjector.ts","src/core/plugins/cursor/Cursor.ts","src/core/plugins/feedback/constants.ts","src/core/plugins/feedback/utilities.ts","src/core/plugins/feedback/observers.ts","src/core/plugins/feedback/dropAnimation.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":["manager","_a","Plugin","untracked","generateUniqueId","showPopover","_b","_c","_d","DOMRectangle","Rectangle","_init","reactive","getRoot","getComputedStyles","parseTranslate","tX","tY","getFixedPositionOffset","getWindow","prefersReducedMotion","transform","status","initialTranslate","translate","delta","configurator","_dec","Direction","CorePlugin","Axes","scheduler","isKeyboardEvent","ScrollDirection","effect","canScroll","CSS_RULES","isElement","getDocument","event","_timeout","_coordinates","ActivationConstraint","getEventCoordinates","exceedsDistance","defaults","Sensor","Listeners","signal","isHTMLElement","getFrameTransform","AbstractDragDropManager","AbstractDraggable","effects","_element_dec","_element","AbstractDroppable","element"],"mappings":"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","file":"index.js","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 {CorePlugin, configurator} from '@dnd-kit/abstract';\nimport {derived, reactive, untracked} from '@dnd-kit/state';\nimport {getRoot, isDocument, isShadowRoot} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\ntype CleanupFunction = () => void;\n\nexport interface StyleInjectorOptions {\n nonce?: string;\n}\n\ninterface StyleRegistration {\n refCount: number;\n cleanup: CleanupFunction;\n}\n\nconst styleRegistry = new Map<\n Document | ShadowRoot,\n Map<string, StyleRegistration>\n>();\n\nexport class StyleInjector extends CorePlugin<\n DragDropManager,\n StyleInjectorOptions\n> {\n #registeredRules = new Set<string>();\n\n @reactive\n private accessor additionalRoots = new Set<Document | ShadowRoot>();\n\n constructor(manager: DragDropManager, options?: StyleInjectorOptions) {\n super(manager, options);\n\n this.registerEffect(this.#syncStyles);\n }\n\n /**\n * Registers CSS rules to be injected into the active drag operation's\n * document and shadow roots. The StyleInjector handles tracking\n * which roots need the styles and cleaning up when they're no longer needed.\n *\n * Returns a cleanup function that unregisters the rules.\n */\n public register(cssRules: string): CleanupFunction {\n this.#registeredRules.add(cssRules);\n\n return () => {\n this.#registeredRules.delete(cssRules);\n };\n }\n\n /**\n * Adds an additional root to track for style injection.\n * Returns a cleanup function that removes the root.\n */\n public addRoot(root: Document | ShadowRoot): CleanupFunction {\n untracked(() => {\n const roots = new Set(this.additionalRoots);\n roots.add(root);\n this.additionalRoots = roots;\n });\n\n return () => {\n untracked(() => {\n const roots = new Set(this.additionalRoots);\n roots.delete(root);\n this.additionalRoots = roots;\n });\n };\n }\n\n @derived\n private get sourceRoot() {\n const {source} = this.manager.dragOperation;\n return getRoot(source?.element ?? null);\n }\n\n @derived\n private get targetRoot() {\n const {target} = this.manager.dragOperation;\n return getRoot(target?.element ?? null);\n }\n\n @derived\n private get roots(): Set<Document | ShadowRoot> {\n const {status} = this.manager.dragOperation;\n\n if (status.initializing || status.initialized) {\n const roots = [this.sourceRoot, this.targetRoot].filter(\n (root) => root != null\n );\n return new Set([...roots, ...this.additionalRoots]);\n }\n\n return new Set();\n }\n\n #syncStyles() {\n const {roots} = this;\n const cleanups: CleanupFunction[] = [];\n\n for (const root of roots) {\n for (const cssRules of this.#registeredRules) {\n cleanups.push(this.#inject(root, cssRules));\n }\n }\n\n return () => {\n for (const cleanup of cleanups) {\n cleanup();\n }\n };\n }\n\n #inject(root: Document | ShadowRoot, cssRules: string): CleanupFunction {\n let rootStyles = styleRegistry.get(root);\n\n if (!rootStyles) {\n rootStyles = new Map();\n styleRegistry.set(root, rootStyles);\n }\n\n let registration = rootStyles.get(cssRules);\n\n if (!registration) {\n const created = isDocument(root)\n ? this.#injectStyleElement(root, rootStyles, cssRules)\n : this.#injectAdoptedSheet(root, rootStyles, cssRules);\n\n if (!created) {\n return () => {};\n }\n\n registration = created;\n rootStyles.set(cssRules, registration);\n }\n\n registration.refCount++;\n\n let disposed = false;\n\n return () => {\n if (disposed) return;\n disposed = true;\n\n registration!.refCount--;\n\n if (registration!.refCount === 0) {\n registration!.cleanup();\n }\n };\n }\n\n /**\n * For Document roots, prepend a <style> element to <head> so that any\n * @layer declarations appear before layers from regular stylesheets,\n * giving them the lowest cascade priority.\n */\n #injectStyleElement(\n root: Document,\n rootStyles: Map<string, StyleRegistration>,\n cssRules: string\n ): StyleRegistration | null {\n const style = root.createElement('style');\n const {nonce} = this.options ?? {};\n\n if (nonce) {\n style.setAttribute('nonce', nonce);\n }\n\n style.textContent = cssRules;\n root.head.prepend(style);\n\n const observer = new MutationObserver((entries) => {\n for (const entry of entries) {\n for (const node of Array.from(entry.removedNodes)) {\n if (node === style) {\n root.head.prepend(style);\n return;\n }\n }\n }\n });\n\n observer.observe(root.head, {childList: true});\n\n return {\n refCount: 0,\n cleanup: () => {\n observer.disconnect();\n style.remove();\n\n rootStyles.delete(cssRules);\n\n if (rootStyles.size === 0) {\n styleRegistry.delete(root);\n }\n },\n };\n }\n\n /**\n * For ShadowRoot roots, use adoptedStyleSheets to avoid DOM side effects\n * like interfering with :first-child or :nth-child selectors.\n */\n #injectAdoptedSheet(\n root: ShadowRoot,\n rootStyles: Map<string, StyleRegistration>,\n cssRules: string\n ): StyleRegistration | null {\n if (\n !(\n 'adoptedStyleSheets' in root &&\n Array.isArray(root.adoptedStyleSheets)\n ) &&\n process.env.NODE_ENV !== 'production'\n ) {\n console.error(\n \"Cannot inject styles: This browser doesn't support adoptedStyleSheets\"\n );\n }\n\n const targetWindow = root.ownerDocument.defaultView;\n const {CSSStyleSheet} = targetWindow ?? {};\n\n if (!CSSStyleSheet) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n 'Cannot inject styles: CSSStyleSheet constructor not available'\n );\n }\n\n return null;\n }\n\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(cssRules);\n root.adoptedStyleSheets.push(sheet);\n\n return {\n refCount: 0,\n cleanup: () => {\n if (isShadowRoot(root) && root.host?.isConnected) {\n const index = root.adoptedStyleSheets.indexOf(sheet);\n if (index !== -1) {\n root.adoptedStyleSheets.splice(index, 1);\n }\n }\n\n rootStyles.delete(cssRules);\n\n if (rootStyles.size === 0) {\n styleRegistry.delete(root);\n }\n },\n };\n }\n\n static configure = configurator(StyleInjector);\n}\n","import {Plugin} from '@dnd-kit/abstract';\n\nimport {DragDropManager} from '../../manager/index.ts';\nimport {StyleInjector} from '../stylesheet/StyleInjector.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\nexport class Cursor extends Plugin<DragDropManager> {\n constructor(\n public manager: DragDropManager,\n options?: CursorPluginOptions\n ) {\n super(manager, options);\n\n const {cursor = 'grabbing'} = options ?? {};\n const styleInjector = manager.registry.plugins.get(\n StyleInjector as any\n ) as StyleInjector | undefined;\n\n const unregisterStyles = styleInjector?.register(\n `* { cursor: ${cursor} !important; }`\n );\n\n if (unregisterStyles) {\n const originalDestroy = this.destroy.bind(this);\n this.destroy = () => {\n unregisterStyles();\n originalDestroy();\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 :is(:root,:host) [${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 transform: var(${CSS_PREFIX}transform, none) !important;\n transition: var(${CSS_PREFIX}transition) !important;\n }\n\n :is(:root,:host) [${PLACEHOLDER_ATTRIBUTE}] {\n transition: none;\n }\n\n :is(:root,:host) [${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 dnd-kit {\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 supportsStyle,\n showPopover,\n DOMRectangle,\n getFixedPositionOffset,\n type Styles,\n} from '@dnd-kit/dom/utilities';\nimport {Rectangle, type Coordinates} from '@dnd-kit/geometry';\n\nimport {CSS_PREFIX, IGNORED_ATTRIBUTES, IGNORED_STYLES} from './constants.ts';\nimport {isTableRow} from './utilities.ts';\n\nexport function createElementMutationObserver(\n element: Element,\n placeholder: Element,\n clone: boolean\n): MutationObserver {\n const observer = 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 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.replaceChildren(...element.cloneNode(true).childNodes);\n }\n });\n\n observer.observe(element, {\n attributes: true,\n subtree: true,\n childList: true,\n });\n\n return observer;\n}\n\nexport function createDocumentMutationObserver(\n element: Element,\n placeholder: Element,\n feedbackElement: Element\n): MutationObserver {\n const observer = 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 element.insertAdjacentElement('afterend', placeholder);\n showPopover(feedbackElement);\n return;\n }\n\n if (\n node.contains(placeholder) &&\n placeholder.previousElementSibling !== element\n ) {\n placeholder.insertAdjacentElement('beforebegin', element);\n showPopover(feedbackElement);\n return;\n }\n }\n }\n\n // Handle the case where siblings were moved around a stationary\n // source element (e.g., a VDOM framework reordered children).\n // The addedNodes won't contain the element or placeholder, but\n // they may no longer be adjacent.\n if (\n element.isConnected &&\n placeholder.isConnected &&\n element.nextElementSibling !== placeholder\n ) {\n element.insertAdjacentElement('afterend', placeholder);\n showPopover(feedbackElement);\n }\n });\n\n observer.observe(element.ownerDocument.body, {\n childList: true,\n subtree: true,\n });\n\n return observer;\n}\n\nexport interface ResizeObserverContext {\n placeholder: Element;\n element: Element;\n feedbackElement: Element;\n frameTransform: {x: number; y: number; scaleX: number; scaleY: number};\n transformOrigin: Coordinates;\n width: number;\n height: number;\n top: number;\n left: number;\n widthOffset: number;\n heightOffset: number;\n delta: Coordinates;\n styles: Styles;\n dragOperation: {shape: any};\n getTranslate: () => Coordinates | undefined;\n getElementMutationObserver: () => MutationObserver | undefined;\n getSavedCellWidths: () => string[] | undefined;\n setSavedCellWidths: (widths: string[]) => void;\n}\n\nexport function createResizeObserver(ctx: ResizeObserverContext): ResizeObserver {\n return new ResizeObserver(() => {\n const placeholderShape = new DOMRectangle(ctx.placeholder, {\n frameTransform: ctx.frameTransform,\n ignoreTransforms: true,\n });\n const origin = ctx.transformOrigin ?? {x: 1, y: 1};\n const dX = (ctx.width - placeholderShape.width) * origin.x + ctx.delta.x;\n const dY = (ctx.height - placeholderShape.height) * origin.y + ctx.delta.y;\n const fixedOffset = getFixedPositionOffset();\n\n ctx.styles.set(\n {\n width: placeholderShape.width - ctx.widthOffset,\n height: placeholderShape.height - ctx.heightOffset,\n top: ctx.top + dY + fixedOffset.y,\n left: ctx.left + dX + fixedOffset.x,\n },\n CSS_PREFIX\n );\n ctx.getElementMutationObserver()?.takeRecords();\n\n if (isTableRow(ctx.element) && isTableRow(ctx.placeholder)) {\n const cells = Array.from(ctx.element.cells);\n const placeholderCells = Array.from(ctx.placeholder.cells);\n\n if (!ctx.getSavedCellWidths()) {\n ctx.setSavedCellWidths(cells.map((cell) => cell.style.width));\n }\n\n for (const [index, cell] of cells.entries()) {\n const placeholderCell = placeholderCells[index];\n\n cell.style.width = `${placeholderCell.getBoundingClientRect().width}px`;\n }\n }\n\n // Compute the shape from the CSS values we just set plus the logical\n // translate, rather than measuring the feedbackElement with DOMRectangle.\n // This avoids capturing in-flight CSS transition values when the\n // ResizeObserver fires before the browser has created the transition.\n const translate = ctx.getTranslate() ?? {x: 0, y: 0};\n const shapeLeft = ctx.left + dX + fixedOffset.x + translate.x;\n const shapeTop = ctx.top + dY + fixedOffset.y + translate.y;\n const shapeWidth = placeholderShape.width - ctx.widthOffset;\n const shapeHeight = placeholderShape.height - ctx.heightOffset;\n const ft = ctx.frameTransform;\n\n ctx.dragOperation.shape = new Rectangle(\n shapeLeft * ft.scaleX + ft.x,\n shapeTop * ft.scaleY + ft.y,\n shapeWidth * ft.scaleX,\n shapeHeight * ft.scaleY\n );\n });\n}\n","import {\n animateTransform,\n DOMRectangle,\n getComputedStyles,\n getFinalKeyframe,\n getWindow,\n parseTranslate,\n prefersReducedMotion,\n showPopover,\n type Styles,\n} from '@dnd-kit/dom/utilities';\nimport {Rectangle, type Coordinates, type Alignment} from '@dnd-kit/geometry';\n\nimport type {Draggable} from '../../entities/index.ts';\nimport {CSS_PREFIX, DROPPING_ATTRIBUTE} from './constants.ts';\nimport {isSameFrame} from './utilities.ts';\n\nexport interface DropAnimationOptions {\n /** Duration in milliseconds. @default 250 */\n duration?: number;\n /** CSS easing function. @default 'ease' */\n easing?: string;\n}\n\nexport type DropAnimationFunction = (context: {\n source: Draggable;\n element: Element;\n feedbackElement: Element;\n placeholder: Element | null | undefined;\n translate: Coordinates;\n moved: boolean;\n}) => Promise<void> | void;\n\nexport type DropAnimation = DropAnimationOptions | DropAnimationFunction;\n\nconst DEFAULT_DURATION = 250;\nconst DEFAULT_EASING = 'ease';\n\nexport interface DropAnimationContext {\n source: Draggable;\n element: Element;\n feedbackElement: Element;\n placeholder: Element | null | undefined;\n translate: Coordinates;\n moved: boolean;\n transition: string;\n alignment: Alignment | undefined;\n styles: Styles;\n animation: DropAnimation | undefined;\n getElementMutationObserver: () => MutationObserver | undefined;\n cleanup: () => void;\n restoreFocus: () => void;\n}\n\nexport function runDropAnimation(ctx: DropAnimationContext): void {\n const {animation} = ctx;\n\n if (typeof animation === 'function') {\n const result = animation({\n source: ctx.source,\n element: ctx.element,\n feedbackElement: ctx.feedbackElement,\n placeholder: ctx.placeholder,\n translate: ctx.translate,\n moved: ctx.moved,\n });\n\n Promise.resolve(result).then(() => {\n ctx.cleanup();\n requestAnimationFrame(ctx.restoreFocus);\n });\n\n return;\n }\n\n const {\n duration = DEFAULT_DURATION,\n easing = DEFAULT_EASING,\n } = animation ?? {};\n\n showPopover(ctx.feedbackElement);\n\n const [, runningAnimation] =\n getFinalKeyframe(\n ctx.feedbackElement,\n (keyframe) => 'translate' in keyframe\n ) ?? [];\n\n runningAnimation?.pause();\n\n const target = ctx.placeholder ?? ctx.element;\n const options = {\n frameTransform: isSameFrame(ctx.feedbackElement, target)\n ? null\n : undefined,\n };\n const current = new DOMRectangle(ctx.feedbackElement, options);\n const currentTranslate =\n parseTranslate(getComputedStyles(ctx.feedbackElement).translate) ??\n ctx.translate;\n const final = new DOMRectangle(target, options);\n const delta = Rectangle.delta(current, final, ctx.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) !== 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) !== 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 ctx.styles.set({transition: ctx.transition}, CSS_PREFIX);\n ctx.feedbackElement.setAttribute(DROPPING_ATTRIBUTE, '');\n ctx.getElementMutationObserver()?.takeRecords();\n\n animateTransform({\n element: ctx.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: prefersReducedMotion(getWindow(ctx.feedbackElement))\n ? 0\n : ctx.moved || ctx.feedbackElement !== ctx.element\n ? duration\n : 0,\n easing,\n },\n }).then(() => {\n ctx.feedbackElement.removeAttribute(DROPPING_ATTRIBUTE);\n runningAnimation?.finish();\n ctx.cleanup();\n requestAnimationFrame(ctx.restoreFocus);\n });\n}\n","import {effects, reactive, untracked} from '@dnd-kit/state';\nimport {configurator, Plugin} from '@dnd-kit/abstract';\nimport {\n DOMRectangle,\n getComputedStyles,\n getFixedPositionOffset,\n getFrameTransform,\n getRoot,\n getWindow,\n isHTMLElement,\n prefersReducedMotion,\n isKeyboardEvent,\n parseTransform,\n parseTranslate,\n showPopover,\n Styles,\n supportsPopover,\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';\nimport {StyleInjector} from '../stylesheet/StyleInjector.ts';\n\nimport {ATTRIBUTE, CSS_PREFIX, CSS_RULES} from './constants.ts';\nimport {\n createPlaceholder,\n isSameFrame,\n isTableRow,\n preventPopoverClose,\n} from './utilities.ts';\nimport {\n createElementMutationObserver,\n createDocumentMutationObserver,\n createResizeObserver,\n} from './observers.ts';\nimport {runDropAnimation, type DropAnimation} from './dropAnimation.ts';\n\nexport type FeedbackType = 'default' | 'move' | 'clone' | 'none';\n\nexport interface KeyboardTransition {\n duration?: number;\n easing?: string;\n}\n\nexport interface FeedbackOptions {\n feedback?: FeedbackType;\n rootElement?: Element | ((source: Draggable) => Element);\n dropAnimation?: DropAnimation | null;\n keyboardTransition?: KeyboardTransition | null;\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\nexport class Feedback extends Plugin<DragDropManager, FeedbackOptions> {\n @reactive\n public accessor overlay: Element | undefined;\n\n /**\n * Override the drop animation configuration for this Feedback instance.\n *\n * - `undefined` – use the default from plugin options\n * - `null` – disable the drop animation entirely\n * - `DropAnimationOptions` – customize duration / easing\n * - `DropAnimationFunction` – provide a fully custom animation\n */\n public dropAnimation: DropAnimation | null | undefined;\n\n private state: State = {\n initial: {},\n current: {},\n };\n\n constructor(manager: DragDropManager, options?: FeedbackOptions) {\n super(manager, options);\n\n const styleInjector = manager.registry.plugins.get(\n StyleInjector as any\n ) as StyleInjector | undefined;\n\n const unregisterStyles = styleInjector?.register(CSS_RULES);\n\n if (unregisterStyles) {\n const originalDestroy = this.destroy.bind(this);\n this.destroy = () => {\n unregisterStyles();\n originalDestroy();\n };\n }\n\n this.registerEffect(this.#trackOverlayRoot.bind(this, styleInjector));\n this.registerEffect(this.#render);\n }\n\n #trackOverlayRoot(styleInjector: StyleInjector | undefined) {\n const {overlay} = this;\n\n if (!overlay || !styleInjector) return;\n\n const root = getRoot(overlay);\n\n if (!root) return;\n\n return styleInjector.addRoot(root);\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} = source;\n const entityOptions = source.pluginConfig(Feedback);\n const feedback =\n entityOptions?.feedback ?? options?.feedback ?? 'default';\n\n if (\n !element ||\n feedback === 'none' ||\n !status.initialized ||\n status.initializing\n ) {\n return;\n }\n\n /* ---- Geometry computation ---- */\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 const styles = new Styles(feedbackElement);\n const elementStyles = getComputedStyles(element);\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 } = elementStyles;\n // Filter out transform-related transitions that would interfere with\n // Feedback-managed properties (--dnd-transform, --dnd-translate, --dnd-scale)\n const feedbackTransition = transition\n .split(',')\n .filter((t) => !/^\\s*(transform|translate|scale)\\b/.test(t))\n .join(',');\n const parsedTransform = parseTransform(elementStyles);\n // Eagerly capture the raw transform CSS value before the\n // data-dnd-dragging attribute is set, since elementStyles is a live\n // CSSStyleDeclaration and the CSS rule for [data-dnd-dragging] overrides\n // transform via !important, which would cause the live object to return\n // the overridden value instead of the original.\n const initialTransformStyle = elementStyles.transform;\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 (!initial.translate) {\n if (this.overlay && parsedTransform) {\n // When using an overlay, capture the full translation from both\n // the CSS `translate` and `transform` properties, since the overlay\n // element does not inherit the source element's `transform` property.\n // This is needed for libraries like react-window v2 that use CSS\n // `transform: translateY()` for positioning.\n initial.translate = {x: parsedTransform.x, y: parsedTransform.y};\n } else if (translate !== 'none') {\n const parsedTranslate = parseTranslate(translate);\n\n if (parsedTranslate) {\n initial.translate = parsedTranslate;\n }\n }\n }\n\n if (!initial.transformOrigin) {\n const current = untracked(() => position.current);\n\n // Use the visual position (including transforms) since the cursor\n // position is in screen coordinates. The shape's top/left have transforms\n // stripped (ignoreTransforms), so we add them back for this calculation.\n const visualLeft = left + (parsedTransform?.x ?? 0);\n const visualTop = top + (parsedTransform?.y ?? 0);\n\n initial.transformOrigin = {\n x:\n (current.x - visualLeft * frameTransform.scaleX - frameTransform.x) /\n (width * frameTransform.scaleX),\n y:\n (current.y - visualTop * 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 // Compensate 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 /* ---- Apply initial feedback styles ---- */\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\n const fixedOffset = getFixedPositionOffset();\n\n styles.set(\n {\n width: width - widthOffset,\n height: height - heightOffset,\n top: projected.top + fixedOffset.y,\n left: projected.left + fixedOffset.x,\n translate: `${tX}px ${tY}px 0`,\n transform: this.overlay ? 'none' : initialTransformStyle,\n transition: feedbackTransition\n ? `${feedbackTransition}, translate 0ms linear`\n : 'translate 0ms linear',\n scale: crossFrame ? `${scaleDelta.x} ${scaleDelta.y}` : '',\n 'transform-origin': `${transformOrigin.x * 100}% ${transformOrigin.y * 100}%`,\n },\n CSS_PREFIX\n );\n\n /* ---- Placeholder setup ---- */\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 /* ---- Popover promotion ---- */\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 /* ---- Observers ---- */\n\n let elementMutationObserver: MutationObserver | undefined;\n let documentMutationObserver: MutationObserver | undefined;\n let savedCellWidths: string[] | undefined;\n\n const resizeObserver = createResizeObserver({\n placeholder: placeholder!,\n element,\n feedbackElement,\n frameTransform,\n transformOrigin,\n width,\n height,\n top,\n left,\n widthOffset,\n heightOffset,\n delta,\n styles,\n dragOperation,\n getTranslate: () => state.current.translate,\n getElementMutationObserver: () => elementMutationObserver,\n getSavedCellWidths: () => savedCellWidths,\n setSavedCellWidths: (widths) => {\n savedCellWidths = widths;\n },\n });\n\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 const reducedMotion = prefersReducedMotion(feedbackWindow);\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 = createElementMutationObserver(\n element,\n placeholder,\n clone\n );\n documentMutationObserver = createDocumentMutationObserver(\n element,\n placeholder,\n feedbackElement\n );\n }\n\n /* ---- Cleanup ---- */\n\n const id = manager.dragOperation.source?.id;\n\n const restoreFocus = () => {\n if (!isKeyboardOperation || id == null) return;\n\n const draggable = manager.registry.draggables.get(id);\n const focusTarget = draggable?.handle ?? draggable?.element;\n\n if (isHTMLElement(focusTarget)) {\n focusTarget.focus();\n }\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 if (savedCellWidths && isTableRow(element)) {\n const cells = Array.from(element.cells);\n\n for (const [index, cell] of cells.entries()) {\n cell.style.width = savedCellWidths[index] ?? '';\n }\n }\n\n source.status = 'idle';\n\n const moved = state.current.translate != null;\n const isDragging = dragOperation.status.dragging;\n\n if (\n placeholder &&\n ((!isDragging && moved) ||\n placeholder.parentElement !== feedbackElement.parentElement) &&\n feedbackElement.isConnected\n ) {\n placeholder.replaceWith(feedbackElement);\n }\n\n placeholder?.remove();\n };\n\n /* ---- Reactive effects ---- */\n\n const optionsDropAnimation = options?.dropAnimation;\n const feedbackPlugin = this;\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 keyboardTransition = options?.keyboardTransition;\n const translateTransition =\n isKeyboardOperation &&\n !reducedMotion &&\n keyboardTransition !== null\n ? `${keyboardTransition?.duration ?? 250}ms ${keyboardTransition?.easing ?? 'cubic-bezier(0.25, 1, 0.5, 1)'}`\n : '0ms linear';\n\n styles.set(\n {\n transition: feedbackTransition\n ? `${feedbackTransition}, translate ${translateTransition}`\n : `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 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 this.dispose();\n\n source.status = 'dropping';\n\n const dropAnimationConfig =\n entityOptions?.dropAnimation !== undefined\n ? entityOptions.dropAnimation\n : feedbackPlugin.dropAnimation !== undefined\n ? feedbackPlugin.dropAnimation\n : optionsDropAnimation;\n\n let translate = state.current.translate;\n const moved = translate != null;\n\n if (!translate && element !== feedbackElement) {\n translate = {x: 0, y: 0};\n }\n\n if (!translate || dropAnimationConfig === null) {\n cleanup();\n return;\n }\n\n manager.renderer.rendering.then(() => {\n runDropAnimation({\n source,\n element,\n feedbackElement,\n placeholder,\n translate: translate!,\n moved,\n transition,\n alignment: source.alignment,\n styles,\n animation: dropAnimationConfig ?? undefined,\n getElementMutationObserver: () => elementMutationObserver,\n cleanup,\n restoreFocus,\n });\n });\n }\n }\n );\n\n return () => {\n cleanup();\n cleanupEffects();\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 getRoot,\n} from '@dnd-kit/dom/utilities';\nimport {Axes, type Axis, type Coordinates} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollIntentTracker} from './ScrollIntent.ts';\n\nexport interface ScrollOptions {\n acceleration?: number;\n threshold?: Record<Axis, number>;\n}\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 getRoot(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 = (\n options?: {by: Coordinates},\n scrollOptions?: ScrollOptions\n ): 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 scrollOptions?.acceleration,\n scrollOptions?.threshold\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 {configurator, Plugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport type {Axis} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport {Scroller} from './Scroller.ts';\nimport {scheduler} from '../../../utilities/scheduling/scheduler.ts';\n\nexport interface AutoScrollerOptions {\n /**\n * Base scroll speed multiplier. Higher values scroll faster.\n * @default 25\n */\n acceleration?: number;\n /**\n * Percentage of container dimensions that defines the scroll activation zone.\n * A single number applies to both axes. Use `{ x, y }` to set per-axis\n * thresholds. Set an axis to `0` to disable auto-scrolling on that axis.\n * @default { x: 0.2, y: 0.2 }\n */\n threshold?: number | Record<Axis, number>;\n}\n\nconst AUTOSCROLL_INTERVAL = 10;\n\nexport class AutoScroller extends Plugin<DragDropManager, AutoScrollerOptions> {\n public destroy: CleanupFunction;\n\n constructor(manager: DragDropManager, options?: AutoScrollerOptions) {\n super(manager, options);\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 scrollOptions = {\n acceleration: this.options?.acceleration,\n threshold:\n typeof this.options?.threshold === 'number'\n ? {x: this.options.threshold, y: this.options.threshold}\n : this.options?.threshold,\n };\n\n const canScroll = scroller.scroll(undefined, scrollOptions);\n\n if (canScroll) {\n scroller.autoScrolling = true;\n const interval = setInterval(\n () =>\n scheduler.schedule(() =>\n scroller.scroll(undefined, scrollOptions)\n ),\n AUTOSCROLL_INTERVAL\n );\n\n return () => {\n clearInterval(interval);\n };\n } else {\n scroller.autoScrolling = false;\n }\n }\n });\n }\n\n static configure = configurator(AutoScroller);\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';\nimport {StyleInjector} from '../stylesheet/StyleInjector.ts';\n\nconst CSS_RULES =\n '* { user-select: none !important; -webkit-user-select: none !important; }';\n\nexport class PreventSelection extends Plugin<DragDropManager> {\n constructor(public manager: DragDropManager) {\n super(manager);\n\n const styleInjector = manager.registry.plugins.get(\n StyleInjector as any\n ) as StyleInjector | undefined;\n\n const unregisterStyles = styleInjector?.register(CSS_RULES);\n\n this.destroy = effect(() => {\n const {dragOperation} = this.manager;\n\n if (dragOperation.status.initialized) {\n removeSelection();\n document.addEventListener('selectionchange', removeSelection, {\n capture: true,\n });\n\n return () => {\n document.removeEventListener('selectionchange', removeSelection, {\n capture: true,\n });\n };\n }\n });\n\n if (unregisterStyles) {\n const originalDestroy = this.destroy.bind(this);\n this.destroy = () => {\n unregisterStyles();\n originalDestroy();\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): CleanupFunction {\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): CleanupFunction {\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 type: 'pointercancel', \n listener: this.handleCancel, \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 try {\n pointerCaptureTarget.setPointerCapture(event.pointerId);\n } catch {\n this.handleCancel(event);\n return;\n }\n\n const listenerTargets = isElement(event.target)\n ? [event.target, pointerCaptureTarget]\n : pointerCaptureTarget;\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 const {controller} = this;\n this.controller = undefined;\n\n if (controller && !controller.signal.aborted) {\n controller.abort();\n }\n\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 resolveCustomizable,\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 StyleInjector,\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 plugins = resolveCustomizable(input.plugins, defaultPreset.plugins);\n const sensors = resolveCustomizable(input.sensors, defaultPreset.sensors);\n const modifiers = resolveCustomizable(\n input.modifiers,\n defaultPreset.modifiers\n );\n\n super({\n ...input,\n plugins: [ScrollListener, Scroller, StyleInjector, ...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 interface Input<T extends Data = Data> extends DraggableInput<T> {\n handle?: Element;\n element?: Element;\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 ...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 }\n\n @reactive\n public accessor handle: Element | undefined;\n\n @reactive\n public accessor element: Element | undefined;\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/stylesheet/StyleInjector.ts","src/core/plugins/cursor/Cursor.ts","src/core/plugins/feedback/constants.ts","src/core/plugins/feedback/utilities.ts","src/core/plugins/feedback/observers.ts","src/core/plugins/feedback/dropAnimation.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":["manager","_a","Plugin","untracked","generateUniqueId","showPopover","_b","_c","_d","DOMRectangle","Rectangle","_init","reactive","getRoot","getComputedStyles","parseTranslate","tX","tY","getFixedPositionOffset","getWindow","prefersReducedMotion","transform","status","initialTranslate","translate","delta","configurator","_dec","Direction","CorePlugin","Axes","scheduler","isKeyboardEvent","ScrollDirection","effect","canScroll","CSS_RULES","isElement","getDocument","event","_timeout","_coordinates","ActivationConstraint","getEventCoordinates","exceedsDistance","defaults","Sensor","Listeners","signal","isHTMLElement","getFrameTransform","AbstractDragDropManager","AbstractDraggable","effects","_element_dec","_element","AbstractDroppable","element"],"mappings":"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","file":"index.js","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 {CorePlugin, configurator} from '@dnd-kit/abstract';\nimport {derived, reactive, untracked} from '@dnd-kit/state';\nimport {getRoot, isDocument, isShadowRoot} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\ntype CleanupFunction = () => void;\n\nexport interface StyleInjectorOptions {\n nonce?: string;\n}\n\ninterface StyleRegistration {\n refCount: number;\n cleanup: CleanupFunction;\n}\n\nconst styleRegistry = new Map<\n Document | ShadowRoot,\n Map<string, StyleRegistration>\n>();\n\nexport class StyleInjector extends CorePlugin<\n DragDropManager,\n StyleInjectorOptions\n> {\n #registeredRules = new Set<string>();\n\n @reactive\n private accessor additionalRoots = new Set<Document | ShadowRoot>();\n\n constructor(manager: DragDropManager, options?: StyleInjectorOptions) {\n super(manager, options);\n\n this.registerEffect(this.#syncStyles);\n }\n\n /**\n * Registers CSS rules to be injected into the active drag operation's\n * document and shadow roots. The StyleInjector handles tracking\n * which roots need the styles and cleaning up when they're no longer needed.\n *\n * Returns a cleanup function that unregisters the rules.\n */\n public register(cssRules: string): CleanupFunction {\n this.#registeredRules.add(cssRules);\n\n return () => {\n this.#registeredRules.delete(cssRules);\n };\n }\n\n /**\n * Adds an additional root to track for style injection.\n * Returns a cleanup function that removes the root.\n */\n public addRoot(root: Document | ShadowRoot): CleanupFunction {\n untracked(() => {\n const roots = new Set(this.additionalRoots);\n roots.add(root);\n this.additionalRoots = roots;\n });\n\n return () => {\n untracked(() => {\n const roots = new Set(this.additionalRoots);\n roots.delete(root);\n this.additionalRoots = roots;\n });\n };\n }\n\n @derived\n private get sourceRoot() {\n const {source} = this.manager.dragOperation;\n return getRoot(source?.element ?? null);\n }\n\n @derived\n private get targetRoot() {\n const {target} = this.manager.dragOperation;\n return getRoot(target?.element ?? null);\n }\n\n @derived\n private get roots(): Set<Document | ShadowRoot> {\n const {status} = this.manager.dragOperation;\n\n if (status.initializing || status.initialized) {\n const roots = [this.sourceRoot, this.targetRoot].filter(\n (root) => root != null\n );\n return new Set([...roots, ...this.additionalRoots]);\n }\n\n return new Set();\n }\n\n #syncStyles() {\n const {roots} = this;\n const cleanups: CleanupFunction[] = [];\n\n for (const root of roots) {\n for (const cssRules of this.#registeredRules) {\n cleanups.push(this.#inject(root, cssRules));\n }\n }\n\n return () => {\n for (const cleanup of cleanups) {\n cleanup();\n }\n };\n }\n\n #inject(root: Document | ShadowRoot, cssRules: string): CleanupFunction {\n let rootStyles = styleRegistry.get(root);\n\n if (!rootStyles) {\n rootStyles = new Map();\n styleRegistry.set(root, rootStyles);\n }\n\n let registration = rootStyles.get(cssRules);\n\n if (!registration) {\n const created = isDocument(root)\n ? this.#injectStyleElement(root, rootStyles, cssRules)\n : this.#injectAdoptedSheet(root, rootStyles, cssRules);\n\n if (!created) {\n return () => {};\n }\n\n registration = created;\n rootStyles.set(cssRules, registration);\n }\n\n registration.refCount++;\n\n let disposed = false;\n\n return () => {\n if (disposed) return;\n disposed = true;\n\n registration!.refCount--;\n\n if (registration!.refCount === 0) {\n registration!.cleanup();\n }\n };\n }\n\n /**\n * For Document roots, prepend a <style> element to <head> so that any\n * @layer declarations appear before layers from regular stylesheets,\n * giving them the lowest cascade priority.\n */\n #injectStyleElement(\n root: Document,\n rootStyles: Map<string, StyleRegistration>,\n cssRules: string\n ): StyleRegistration | null {\n const style = root.createElement('style');\n const {nonce} = this.options ?? {};\n\n if (nonce) {\n style.setAttribute('nonce', nonce);\n }\n\n style.textContent = cssRules;\n root.head.prepend(style);\n\n const observer = new MutationObserver((entries) => {\n for (const entry of entries) {\n for (const node of Array.from(entry.removedNodes)) {\n if (node === style) {\n root.head.prepend(style);\n return;\n }\n }\n }\n });\n\n observer.observe(root.head, {childList: true});\n\n return {\n refCount: 0,\n cleanup: () => {\n observer.disconnect();\n style.remove();\n\n rootStyles.delete(cssRules);\n\n if (rootStyles.size === 0) {\n styleRegistry.delete(root);\n }\n },\n };\n }\n\n /**\n * For ShadowRoot roots, use adoptedStyleSheets to avoid DOM side effects\n * like interfering with :first-child or :nth-child selectors.\n */\n #injectAdoptedSheet(\n root: ShadowRoot,\n rootStyles: Map<string, StyleRegistration>,\n cssRules: string\n ): StyleRegistration | null {\n if (\n !(\n 'adoptedStyleSheets' in root &&\n Array.isArray(root.adoptedStyleSheets)\n ) &&\n process.env.NODE_ENV !== 'production'\n ) {\n console.error(\n \"Cannot inject styles: This browser doesn't support adoptedStyleSheets\"\n );\n }\n\n const targetWindow = root.ownerDocument.defaultView;\n const {CSSStyleSheet} = targetWindow ?? {};\n\n if (!CSSStyleSheet) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n 'Cannot inject styles: CSSStyleSheet constructor not available'\n );\n }\n\n return null;\n }\n\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(cssRules);\n root.adoptedStyleSheets.push(sheet);\n\n return {\n refCount: 0,\n cleanup: () => {\n if (isShadowRoot(root) && root.host?.isConnected) {\n const index = root.adoptedStyleSheets.indexOf(sheet);\n if (index !== -1) {\n root.adoptedStyleSheets.splice(index, 1);\n }\n }\n\n rootStyles.delete(cssRules);\n\n if (rootStyles.size === 0) {\n styleRegistry.delete(root);\n }\n },\n };\n }\n\n static configure = configurator(StyleInjector);\n}\n","import {Plugin} from '@dnd-kit/abstract';\n\nimport {DragDropManager} from '../../manager/index.ts';\nimport {StyleInjector} from '../stylesheet/StyleInjector.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\nexport class Cursor extends Plugin<DragDropManager> {\n constructor(\n public manager: DragDropManager,\n options?: CursorPluginOptions\n ) {\n super(manager, options);\n\n const {cursor = 'grabbing'} = options ?? {};\n const styleInjector = manager.registry.plugins.get(\n StyleInjector as any\n ) as StyleInjector | undefined;\n\n const unregisterStyles = styleInjector?.register(\n `* { cursor: ${cursor} !important; }`\n );\n\n if (unregisterStyles) {\n const originalDestroy = this.destroy.bind(this);\n this.destroy = () => {\n unregisterStyles();\n originalDestroy();\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 :is(:root,:host) [${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 transform: var(${CSS_PREFIX}transform, none) !important;\n transition: var(${CSS_PREFIX}transition) !important;\n }\n\n :is(:root,:host) [${PLACEHOLDER_ATTRIBUTE}] {\n transition: none;\n }\n\n :is(:root,:host) [${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 dnd-kit {\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 supportsStyle,\n showPopover,\n DOMRectangle,\n getFixedPositionOffset,\n type Styles,\n} from '@dnd-kit/dom/utilities';\nimport {Rectangle, type Coordinates} from '@dnd-kit/geometry';\n\nimport {CSS_PREFIX, IGNORED_ATTRIBUTES, IGNORED_STYLES} from './constants.ts';\nimport {isTableRow} from './utilities.ts';\n\nexport function createElementMutationObserver(\n element: Element,\n placeholder: Element,\n clone: boolean\n): MutationObserver {\n const observer = 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 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.replaceChildren(...element.cloneNode(true).childNodes);\n }\n });\n\n observer.observe(element, {\n attributes: true,\n subtree: true,\n childList: true,\n });\n\n return observer;\n}\n\nexport function createDocumentMutationObserver(\n element: Element,\n placeholder: Element,\n feedbackElement: Element\n): MutationObserver {\n const observer = 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 element.insertAdjacentElement('afterend', placeholder);\n showPopover(feedbackElement);\n return;\n }\n\n if (\n node.contains(placeholder) &&\n placeholder.previousElementSibling !== element\n ) {\n placeholder.insertAdjacentElement('beforebegin', element);\n showPopover(feedbackElement);\n return;\n }\n }\n }\n\n // Handle the case where siblings were moved around a stationary\n // source element (e.g., a VDOM framework reordered children).\n // The addedNodes won't contain the element or placeholder, but\n // they may no longer be adjacent.\n if (\n element.isConnected &&\n placeholder.isConnected &&\n element.nextElementSibling !== placeholder\n ) {\n element.insertAdjacentElement('afterend', placeholder);\n showPopover(feedbackElement);\n }\n });\n\n observer.observe(element.ownerDocument.body, {\n childList: true,\n subtree: true,\n });\n\n return observer;\n}\n\nexport interface ResizeObserverContext {\n placeholder: Element;\n element: Element;\n feedbackElement: Element;\n frameTransform: {x: number; y: number; scaleX: number; scaleY: number};\n transformOrigin: Coordinates;\n width: number;\n height: number;\n top: number;\n left: number;\n widthOffset: number;\n heightOffset: number;\n delta: Coordinates;\n styles: Styles;\n dragOperation: {shape: any};\n getTranslate: () => Coordinates | undefined;\n getElementMutationObserver: () => MutationObserver | undefined;\n getSavedCellWidths: () => string[] | undefined;\n setSavedCellWidths: (widths: string[]) => void;\n}\n\nexport function createResizeObserver(ctx: ResizeObserverContext): ResizeObserver {\n return new ResizeObserver(() => {\n const placeholderShape = new DOMRectangle(ctx.placeholder, {\n frameTransform: ctx.frameTransform,\n ignoreTransforms: true,\n });\n const origin = ctx.transformOrigin ?? {x: 1, y: 1};\n const dX = (ctx.width - placeholderShape.width) * origin.x + ctx.delta.x;\n const dY = (ctx.height - placeholderShape.height) * origin.y + ctx.delta.y;\n const fixedOffset = getFixedPositionOffset();\n\n ctx.styles.set(\n {\n width: placeholderShape.width - ctx.widthOffset,\n height: placeholderShape.height - ctx.heightOffset,\n top: ctx.top + dY + fixedOffset.y,\n left: ctx.left + dX + fixedOffset.x,\n },\n CSS_PREFIX\n );\n ctx.getElementMutationObserver()?.takeRecords();\n\n if (isTableRow(ctx.element) && isTableRow(ctx.placeholder)) {\n const cells = Array.from(ctx.element.cells);\n const placeholderCells = Array.from(ctx.placeholder.cells);\n\n if (!ctx.getSavedCellWidths()) {\n ctx.setSavedCellWidths(cells.map((cell) => cell.style.width));\n }\n\n for (const [index, cell] of cells.entries()) {\n const placeholderCell = placeholderCells[index];\n\n cell.style.width = `${placeholderCell.getBoundingClientRect().width}px`;\n }\n }\n\n // Compute the shape from the CSS values we just set plus the logical\n // translate, rather than measuring the feedbackElement with DOMRectangle.\n // This avoids capturing in-flight CSS transition values when the\n // ResizeObserver fires before the browser has created the transition.\n const translate = ctx.getTranslate() ?? {x: 0, y: 0};\n const shapeLeft = ctx.left + dX + fixedOffset.x + translate.x;\n const shapeTop = ctx.top + dY + fixedOffset.y + translate.y;\n const shapeWidth = placeholderShape.width - ctx.widthOffset;\n const shapeHeight = placeholderShape.height - ctx.heightOffset;\n const ft = ctx.frameTransform;\n\n ctx.dragOperation.shape = new Rectangle(\n shapeLeft * ft.scaleX + ft.x,\n shapeTop * ft.scaleY + ft.y,\n shapeWidth * ft.scaleX,\n shapeHeight * ft.scaleY\n );\n });\n}\n","import {\n animateTransform,\n DOMRectangle,\n getComputedStyles,\n getFinalKeyframe,\n getWindow,\n parseTranslate,\n prefersReducedMotion,\n showPopover,\n type Styles,\n} from '@dnd-kit/dom/utilities';\nimport {Rectangle, type Coordinates, type Alignment} from '@dnd-kit/geometry';\n\nimport type {Draggable} from '../../entities/index.ts';\nimport {CSS_PREFIX, DROPPING_ATTRIBUTE} from './constants.ts';\nimport {isSameFrame} from './utilities.ts';\n\nexport interface DropAnimationOptions {\n /** Duration in milliseconds. @default 250 */\n duration?: number;\n /** CSS easing function. @default 'ease' */\n easing?: string;\n}\n\nexport type DropAnimationFunction = (context: {\n source: Draggable;\n element: Element;\n feedbackElement: Element;\n placeholder: Element | null | undefined;\n translate: Coordinates;\n moved: boolean;\n}) => Promise<void> | void;\n\nexport type DropAnimation = DropAnimationOptions | DropAnimationFunction;\n\nconst DEFAULT_DURATION = 250;\nconst DEFAULT_EASING = 'ease';\n\nexport interface DropAnimationContext {\n source: Draggable;\n element: Element;\n feedbackElement: Element;\n placeholder: Element | null | undefined;\n translate: Coordinates;\n moved: boolean;\n transition: string;\n alignment: Alignment | undefined;\n styles: Styles;\n animation: DropAnimation | undefined;\n getElementMutationObserver: () => MutationObserver | undefined;\n cleanup: () => void;\n restoreFocus: () => void;\n}\n\nexport function runDropAnimation(ctx: DropAnimationContext): void {\n const {animation} = ctx;\n\n if (typeof animation === 'function') {\n const result = animation({\n source: ctx.source,\n element: ctx.element,\n feedbackElement: ctx.feedbackElement,\n placeholder: ctx.placeholder,\n translate: ctx.translate,\n moved: ctx.moved,\n });\n\n Promise.resolve(result).then(() => {\n ctx.cleanup();\n requestAnimationFrame(ctx.restoreFocus);\n });\n\n return;\n }\n\n const {\n duration = DEFAULT_DURATION,\n easing = DEFAULT_EASING,\n } = animation ?? {};\n\n showPopover(ctx.feedbackElement);\n\n const [, runningAnimation] =\n getFinalKeyframe(\n ctx.feedbackElement,\n (keyframe) => 'translate' in keyframe\n ) ?? [];\n\n runningAnimation?.pause();\n\n const target = ctx.placeholder ?? ctx.element;\n const options = {\n frameTransform: isSameFrame(ctx.feedbackElement, target)\n ? null\n : undefined,\n };\n const current = new DOMRectangle(ctx.feedbackElement, options);\n const currentTranslate =\n parseTranslate(getComputedStyles(ctx.feedbackElement).translate) ??\n ctx.translate;\n const final = new DOMRectangle(target, options);\n const delta = Rectangle.delta(current, final, ctx.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) !== 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) !== 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 ctx.styles.set({transition: ctx.transition}, CSS_PREFIX);\n ctx.feedbackElement.setAttribute(DROPPING_ATTRIBUTE, '');\n ctx.getElementMutationObserver()?.takeRecords();\n\n animateTransform({\n element: ctx.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: prefersReducedMotion(getWindow(ctx.feedbackElement))\n ? 0\n : ctx.moved || ctx.feedbackElement !== ctx.element\n ? duration\n : 0,\n easing,\n },\n }).then(() => {\n ctx.feedbackElement.removeAttribute(DROPPING_ATTRIBUTE);\n runningAnimation?.finish();\n ctx.cleanup();\n requestAnimationFrame(ctx.restoreFocus);\n });\n}\n","import {effects, reactive, untracked} from '@dnd-kit/state';\nimport {configurator, Plugin} from '@dnd-kit/abstract';\nimport {\n DOMRectangle,\n getComputedStyles,\n getFixedPositionOffset,\n getFrameTransform,\n getRoot,\n getWindow,\n isHTMLElement,\n prefersReducedMotion,\n isKeyboardEvent,\n parseTransform,\n parseTranslate,\n showPopover,\n Styles,\n supportsPopover,\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';\nimport {StyleInjector} from '../stylesheet/StyleInjector.ts';\n\nimport {ATTRIBUTE, CSS_PREFIX, CSS_RULES} from './constants.ts';\nimport {\n createPlaceholder,\n isSameFrame,\n isTableRow,\n preventPopoverClose,\n} from './utilities.ts';\nimport {\n createElementMutationObserver,\n createDocumentMutationObserver,\n createResizeObserver,\n} from './observers.ts';\nimport {runDropAnimation, type DropAnimation} from './dropAnimation.ts';\n\nexport type FeedbackType = 'default' | 'move' | 'clone' | 'none';\n\nexport type FeedbackInput =\n | FeedbackType\n | ((source: Draggable, manager: DragDropManager) => FeedbackType);\n\nexport interface KeyboardTransition {\n duration?: number;\n easing?: string;\n}\n\nexport interface FeedbackOptions {\n feedback?: FeedbackInput;\n rootElement?: Element | ((source: Draggable) => Element);\n dropAnimation?: DropAnimation | null;\n keyboardTransition?: KeyboardTransition | null;\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\nexport class Feedback extends Plugin<DragDropManager, FeedbackOptions> {\n @reactive\n public accessor overlay: Element | undefined;\n\n /**\n * Override the drop animation configuration for this Feedback instance.\n *\n * - `undefined` – use the default from plugin options\n * - `null` – disable the drop animation entirely\n * - `DropAnimationOptions` – customize duration / easing\n * - `DropAnimationFunction` – provide a fully custom animation\n */\n public dropAnimation: DropAnimation | null | undefined;\n\n private state: State = {\n initial: {},\n current: {},\n };\n\n constructor(manager: DragDropManager, options?: FeedbackOptions) {\n super(manager, options);\n\n const styleInjector = manager.registry.plugins.get(\n StyleInjector as any\n ) as StyleInjector | undefined;\n\n const unregisterStyles = styleInjector?.register(CSS_RULES);\n\n if (unregisterStyles) {\n const originalDestroy = this.destroy.bind(this);\n this.destroy = () => {\n unregisterStyles();\n originalDestroy();\n };\n }\n\n this.registerEffect(this.#trackOverlayRoot.bind(this, styleInjector));\n this.registerEffect(this.#render);\n }\n\n #trackOverlayRoot(styleInjector: StyleInjector | undefined) {\n const {overlay} = this;\n\n if (!overlay || !styleInjector) return;\n\n const root = getRoot(overlay);\n\n if (!root) return;\n\n return styleInjector.addRoot(root);\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} = source;\n const entityOptions = source.pluginConfig(Feedback);\n const feedbackOption =\n entityOptions?.feedback ?? options?.feedback ?? 'default';\n const feedback =\n typeof feedbackOption === 'function'\n ? feedbackOption(source, manager)\n : feedbackOption;\n\n if (\n !element ||\n feedback === 'none' ||\n !status.initialized ||\n status.initializing\n ) {\n return;\n }\n\n /* ---- Geometry computation ---- */\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 const styles = new Styles(feedbackElement);\n const elementStyles = getComputedStyles(element);\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 } = elementStyles;\n // Filter out transform-related transitions that would interfere with\n // Feedback-managed properties (--dnd-transform, --dnd-translate, --dnd-scale)\n const feedbackTransition = transition\n .split(',')\n .filter((t) => !/^\\s*(transform|translate|scale)\\b/.test(t))\n .join(',');\n const parsedTransform = parseTransform(elementStyles);\n // Eagerly capture the raw transform CSS value before the\n // data-dnd-dragging attribute is set, since elementStyles is a live\n // CSSStyleDeclaration and the CSS rule for [data-dnd-dragging] overrides\n // transform via !important, which would cause the live object to return\n // the overridden value instead of the original.\n const initialTransformStyle = elementStyles.transform;\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 (!initial.translate) {\n if (this.overlay && parsedTransform) {\n // When using an overlay, capture the full translation from both\n // the CSS `translate` and `transform` properties, since the overlay\n // element does not inherit the source element's `transform` property.\n // This is needed for libraries like react-window v2 that use CSS\n // `transform: translateY()` for positioning.\n initial.translate = {x: parsedTransform.x, y: parsedTransform.y};\n } else if (translate !== 'none') {\n const parsedTranslate = parseTranslate(translate);\n\n if (parsedTranslate) {\n initial.translate = parsedTranslate;\n }\n }\n }\n\n if (!initial.transformOrigin) {\n const current = untracked(() => position.current);\n\n // Use the visual position (including transforms) since the cursor\n // position is in screen coordinates. The shape's top/left have transforms\n // stripped (ignoreTransforms), so we add them back for this calculation.\n const visualLeft = left + (parsedTransform?.x ?? 0);\n const visualTop = top + (parsedTransform?.y ?? 0);\n\n initial.transformOrigin = {\n x:\n (current.x - visualLeft * frameTransform.scaleX - frameTransform.x) /\n (width * frameTransform.scaleX),\n y:\n (current.y - visualTop * 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 // Compensate 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 /* ---- Apply initial feedback styles ---- */\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\n const fixedOffset = getFixedPositionOffset();\n\n styles.set(\n {\n width: width - widthOffset,\n height: height - heightOffset,\n top: projected.top + fixedOffset.y,\n left: projected.left + fixedOffset.x,\n translate: `${tX}px ${tY}px 0`,\n transform: this.overlay ? 'none' : initialTransformStyle,\n transition: feedbackTransition\n ? `${feedbackTransition}, translate 0ms linear`\n : 'translate 0ms linear',\n scale: crossFrame ? `${scaleDelta.x} ${scaleDelta.y}` : '',\n 'transform-origin': `${transformOrigin.x * 100}% ${transformOrigin.y * 100}%`,\n },\n CSS_PREFIX\n );\n\n /* ---- Placeholder setup ---- */\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 /* ---- Popover promotion ---- */\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 /* ---- Observers ---- */\n\n let elementMutationObserver: MutationObserver | undefined;\n let documentMutationObserver: MutationObserver | undefined;\n let savedCellWidths: string[] | undefined;\n\n const resizeObserver = createResizeObserver({\n placeholder: placeholder!,\n element,\n feedbackElement,\n frameTransform,\n transformOrigin,\n width,\n height,\n top,\n left,\n widthOffset,\n heightOffset,\n delta,\n styles,\n dragOperation,\n getTranslate: () => state.current.translate,\n getElementMutationObserver: () => elementMutationObserver,\n getSavedCellWidths: () => savedCellWidths,\n setSavedCellWidths: (widths) => {\n savedCellWidths = widths;\n },\n });\n\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 const reducedMotion = prefersReducedMotion(feedbackWindow);\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 = createElementMutationObserver(\n element,\n placeholder,\n clone\n );\n documentMutationObserver = createDocumentMutationObserver(\n element,\n placeholder,\n feedbackElement\n );\n }\n\n /* ---- Cleanup ---- */\n\n const id = manager.dragOperation.source?.id;\n\n const restoreFocus = () => {\n if (!isKeyboardOperation || id == null) return;\n\n const draggable = manager.registry.draggables.get(id);\n const focusTarget = draggable?.handle ?? draggable?.element;\n\n if (isHTMLElement(focusTarget)) {\n focusTarget.focus();\n }\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 if (savedCellWidths && isTableRow(element)) {\n const cells = Array.from(element.cells);\n\n for (const [index, cell] of cells.entries()) {\n cell.style.width = savedCellWidths[index] ?? '';\n }\n }\n\n source.status = 'idle';\n\n const moved = state.current.translate != null;\n const isDragging = dragOperation.status.dragging;\n\n if (\n placeholder &&\n ((!isDragging && moved) ||\n placeholder.parentElement !== feedbackElement.parentElement) &&\n feedbackElement.isConnected\n ) {\n placeholder.replaceWith(feedbackElement);\n }\n\n placeholder?.remove();\n };\n\n /* ---- Reactive effects ---- */\n\n const optionsDropAnimation = options?.dropAnimation;\n const feedbackPlugin = this;\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 keyboardTransition = options?.keyboardTransition;\n const translateTransition =\n isKeyboardOperation &&\n !reducedMotion &&\n keyboardTransition !== null\n ? `${keyboardTransition?.duration ?? 250}ms ${keyboardTransition?.easing ?? 'cubic-bezier(0.25, 1, 0.5, 1)'}`\n : '0ms linear';\n\n styles.set(\n {\n transition: feedbackTransition\n ? `${feedbackTransition}, translate ${translateTransition}`\n : `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 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 this.dispose();\n\n source.status = 'dropping';\n\n const dropAnimationConfig =\n entityOptions?.dropAnimation !== undefined\n ? entityOptions.dropAnimation\n : feedbackPlugin.dropAnimation !== undefined\n ? feedbackPlugin.dropAnimation\n : optionsDropAnimation;\n\n let translate = state.current.translate;\n const moved = translate != null;\n\n if (!translate && element !== feedbackElement) {\n translate = {x: 0, y: 0};\n }\n\n if (!translate || dropAnimationConfig === null) {\n cleanup();\n return;\n }\n\n manager.renderer.rendering.then(() => {\n runDropAnimation({\n source,\n element,\n feedbackElement,\n placeholder,\n translate: translate!,\n moved,\n transition,\n alignment: source.alignment,\n styles,\n animation: dropAnimationConfig ?? undefined,\n getElementMutationObserver: () => elementMutationObserver,\n cleanup,\n restoreFocus,\n });\n });\n }\n }\n );\n\n return () => {\n cleanup();\n cleanupEffects();\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 getRoot,\n} from '@dnd-kit/dom/utilities';\nimport {Axes, type Axis, type Coordinates} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollIntentTracker} from './ScrollIntent.ts';\n\nexport interface ScrollOptions {\n acceleration?: number;\n threshold?: Record<Axis, number>;\n}\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 getRoot(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 = (\n options?: {by: Coordinates},\n scrollOptions?: ScrollOptions\n ): 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 scrollOptions?.acceleration,\n scrollOptions?.threshold\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 {configurator, Plugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport type {Axis} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport {Scroller} from './Scroller.ts';\nimport {scheduler} from '../../../utilities/scheduling/scheduler.ts';\n\nexport interface AutoScrollerOptions {\n /**\n * Base scroll speed multiplier. Higher values scroll faster.\n * @default 25\n */\n acceleration?: number;\n /**\n * Percentage of container dimensions that defines the scroll activation zone.\n * A single number applies to both axes. Use `{ x, y }` to set per-axis\n * thresholds. Set an axis to `0` to disable auto-scrolling on that axis.\n * @default { x: 0.2, y: 0.2 }\n */\n threshold?: number | Record<Axis, number>;\n}\n\nconst AUTOSCROLL_INTERVAL = 10;\n\nexport class AutoScroller extends Plugin<DragDropManager, AutoScrollerOptions> {\n public destroy: CleanupFunction;\n\n constructor(manager: DragDropManager, options?: AutoScrollerOptions) {\n super(manager, options);\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 scrollOptions = {\n acceleration: this.options?.acceleration,\n threshold:\n typeof this.options?.threshold === 'number'\n ? {x: this.options.threshold, y: this.options.threshold}\n : this.options?.threshold,\n };\n\n const canScroll = scroller.scroll(undefined, scrollOptions);\n\n if (canScroll) {\n scroller.autoScrolling = true;\n const interval = setInterval(\n () =>\n scheduler.schedule(() =>\n scroller.scroll(undefined, scrollOptions)\n ),\n AUTOSCROLL_INTERVAL\n );\n\n return () => {\n clearInterval(interval);\n };\n } else {\n scroller.autoScrolling = false;\n }\n }\n });\n }\n\n static configure = configurator(AutoScroller);\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';\nimport {StyleInjector} from '../stylesheet/StyleInjector.ts';\n\nconst CSS_RULES =\n '* { user-select: none !important; -webkit-user-select: none !important; }';\n\nexport class PreventSelection extends Plugin<DragDropManager> {\n constructor(public manager: DragDropManager) {\n super(manager);\n\n const styleInjector = manager.registry.plugins.get(\n StyleInjector as any\n ) as StyleInjector | undefined;\n\n const unregisterStyles = styleInjector?.register(CSS_RULES);\n\n this.destroy = effect(() => {\n const {dragOperation} = this.manager;\n\n if (dragOperation.status.initialized) {\n removeSelection();\n document.addEventListener('selectionchange', removeSelection, {\n capture: true,\n });\n\n return () => {\n document.removeEventListener('selectionchange', removeSelection, {\n capture: true,\n });\n };\n }\n });\n\n if (unregisterStyles) {\n const originalDestroy = this.destroy.bind(this);\n this.destroy = () => {\n unregisterStyles();\n originalDestroy();\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): CleanupFunction {\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): CleanupFunction {\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 type: 'pointercancel', \n listener: this.handleCancel, \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 try {\n pointerCaptureTarget.setPointerCapture(event.pointerId);\n } catch {\n this.handleCancel(event);\n return;\n }\n\n const listenerTargets = isElement(event.target)\n ? [event.target, pointerCaptureTarget]\n : pointerCaptureTarget;\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 const {controller} = this;\n this.controller = undefined;\n\n if (controller && !controller.signal.aborted) {\n controller.abort();\n }\n\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 resolveCustomizable,\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 StyleInjector,\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 plugins = resolveCustomizable(input.plugins, defaultPreset.plugins);\n const sensors = resolveCustomizable(input.sensors, defaultPreset.sensors);\n const modifiers = resolveCustomizable(\n input.modifiers,\n defaultPreset.modifiers\n );\n\n super({\n ...input,\n plugins: [ScrollListener, Scroller, StyleInjector, ...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 interface Input<T extends Data = Data> extends DraggableInput<T> {\n handle?: Element;\n element?: Element;\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 ...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 }\n\n @reactive\n public accessor handle: Element | undefined;\n\n @reactive\n public accessor element: Element | undefined;\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"]}
|