@dnd-kit/dom 0.3.1 → 0.3.2
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 +84 -42
- package/index.cjs.map +1 -1
- package/index.js +84 -42
- 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/cursor/Cursor.ts","src/core/plugins/stylesheet/StyleSheetManager.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","document","untracked","generateUniqueId","showPopover","_b","_c","_d","DOMRectangle","_init","reactive","getRoot","getComputedStyles","parseTranslate","tX","tY","getFixedPositionOffset","getWindow","prefersReducedMotion","transform","status","initialTranslate","translate","delta","Rectangle","_dec","Direction","effect","CorePlugin","Axes","scheduler","computed","getDocument","isKeyboardEvent","ScrollDirection","canScroll","isElement","event","configurator","_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 {Plugin} from '@dnd-kit/abstract';\nimport {computed, effect} from '@dnd-kit/state';\nimport {getDocument} from '@dnd-kit/dom/utilities';\n\nimport {DragDropManager} from '../../manager/index.ts';\n\ninterface CursorPluginOptions {\n /**\n * The style of the cursor to be applied to the document body.\n * @default 'grabbing'\n */\n cursor?: string;\n /**\n * The nonce to be applied to the style element.\n */\n nonce?: string;\n}\n\nexport class Cursor extends Plugin<DragDropManager> {\n constructor(\n public manager: DragDropManager,\n options?: CursorPluginOptions\n ) {\n super(manager, options);\n\n const doc = computed(() =>\n getDocument(this.manager.dragOperation.source?.element)\n );\n\n this.destroy = effect(() => {\n const {dragOperation} = this.manager;\n const {cursor = 'grabbing', nonce} = this.options ?? {};\n\n if (dragOperation.status.initialized) {\n const document = doc.value;\n const style = document.createElement('style');\n\n if (nonce) {\n style.setAttribute('nonce', nonce);\n }\n\n style.textContent = `* { cursor: ${cursor} !important; }`;\n document.head.appendChild(style);\n\n return () => style.remove();\n }\n });\n }\n}\n","import {CorePlugin} 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\ninterface SheetRegistration {\n sheet: CSSStyleSheet;\n refCount: number;\n cleanup: CleanupFunction;\n}\n\nconst sheetRegistry = new Map<\n Document | ShadowRoot,\n Map<string, SheetRegistration>\n>();\n\nexport class StyleSheetManager extends CorePlugin<DragDropManager> {\n #registeredRules = new Set<string>();\n\n @reactive\n private accessor additionalRoots = new Set<Document | ShadowRoot>();\n\n constructor(manager: DragDropManager) {\n super(manager);\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 StyleSheetManager 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 rootSheets = sheetRegistry.get(root);\n\n if (!rootSheets) {\n rootSheets = new Map();\n sheetRegistry.set(root, rootSheets);\n }\n\n let registration = rootSheets.get(cssRules);\n\n if (!registration) {\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 = isDocument(root)\n ? root.defaultView\n : 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 () => {};\n }\n\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(cssRules);\n root.adoptedStyleSheets.push(sheet);\n\n registration = {\n sheet,\n refCount: 0,\n cleanup: () => {\n if (\n isDocument(root) ||\n (isShadowRoot(root) && root.host?.isConnected)\n ) {\n const index = root.adoptedStyleSheets.indexOf(sheet);\n if (index !== -1) {\n root.adoptedStyleSheets.splice(index, 1);\n }\n }\n\n rootSheets!.delete(cssRules);\n\n if (rootSheets!.size === 0) {\n sheetRegistry.delete(root);\n }\n },\n };\n rootSheets.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","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 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 {\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 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.innerHTML = element.innerHTML;\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\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 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 ctx.dragOperation.shape = new DOMRectangle(ctx.feedbackElement);\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 {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 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 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 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 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 {StyleSheetManager} from '../stylesheet/StyleSheetManager.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 interface FeedbackOptions {\n rootElement?: Element | ((source: Draggable) => Element);\n nonce?: string;\n dropAnimation?: DropAnimation | 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 styleSheetManager = manager.registry.plugins.get(\n StyleSheetManager as any\n ) as StyleSheetManager | undefined;\n\n const unregisterStyles = styleSheetManager?.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, styleSheetManager));\n this.registerEffect(this.#render);\n }\n\n #trackOverlayRoot(styleSheetManager: StyleSheetManager | undefined) {\n const {overlay} = this;\n\n if (!overlay || !styleSheetManager) return;\n\n const root = getRoot(overlay);\n\n if (!root) return;\n\n return styleSheetManager.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, feedback} = source;\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 {\n transition,\n translate,\n boxSizing,\n paddingBlockStart,\n paddingBlockEnd,\n paddingInlineStart,\n paddingInlineEnd,\n borderInlineStartWidth,\n borderInlineEndWidth,\n borderBlockStartWidth,\n borderBlockEndWidth,\n } = getComputedStyles(element);\n const clone = feedback === 'clone';\n const contentBox = boxSizing === 'content-box';\n const widthOffset = contentBox\n ? parseInt(paddingInlineStart) +\n parseInt(paddingInlineEnd) +\n parseInt(borderInlineStartWidth) +\n parseInt(borderInlineEndWidth)\n : 0;\n const heightOffset = contentBox\n ? parseInt(paddingBlockStart) +\n parseInt(paddingBlockEnd) +\n parseInt(borderBlockStartWidth) +\n parseInt(borderBlockEndWidth)\n : 0;\n\n const placeholder =\n feedback !== 'move' && !this.overlay\n ? createPlaceholder(source, clone ? 'clone' : 'hidden')\n : null;\n const isKeyboardOperation = untracked(() =>\n isKeyboardEvent(manager.dragOperation.activatorEvent)\n );\n\n if (translate !== 'none') {\n const parsedTranslate = parseTranslate(translate);\n\n if (parsedTranslate && !initial.translate) {\n initial.translate = parsedTranslate;\n }\n }\n\n if (!initial.transformOrigin) {\n const current = untracked(() => position.current);\n\n initial.transformOrigin = {\n x:\n (current.x - left * frameTransform.scaleX - frameTransform.x) /\n (width * frameTransform.scaleX),\n y:\n (current.y - top * frameTransform.scaleY - frameTransform.y) /\n (height * frameTransform.scaleY),\n };\n }\n\n const {transformOrigin} = initial;\n const relativeTop = top * frameTransform.scaleY + frameTransform.y;\n const relativeLeft = left * frameTransform.scaleX + frameTransform.x;\n\n if (!initial.coordinates) {\n initial.coordinates = {\n x: relativeLeft,\n y: relativeTop,\n };\n\n // 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 transition: transition ? `${transition}, 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 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\n if (\n placeholder &&\n (moved ||\n placeholder.parentElement !== feedbackElement.parentElement) &&\n feedbackElement.isConnected\n ) {\n placeholder.replaceWith(feedbackElement);\n }\n\n placeholder?.remove();\n };\n\n /* ---- 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 translateTransition =\n isKeyboardOperation && !reducedMotion\n ? '250ms cubic-bezier(0.25, 1, 0.5, 1)'\n : '0ms linear';\n\n styles.set(\n {\n transition: `${transition}, translate ${translateTransition}`,\n translate: `${translate.x}px ${translate.y}px 0`,\n },\n CSS_PREFIX\n );\n elementMutationObserver?.takeRecords();\n\n if (\n currentShape &&\n currentShape !== initialShape &&\n previousTranslate &&\n !modifiers.length\n ) {\n const delta = Point.delta(translate, previousTranslate);\n\n dragOperation.shape = Rectangle.from(\n currentShape.boundingRectangle\n ).translate(\n 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 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 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 Coordinates} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollIntentTracker} from './ScrollIntent.ts';\n\nexport class Scroller extends CorePlugin<DragDropManager> {\n public getScrollableElements: () => Set<Element> | null;\n\n private scrollIntentTracker: ScrollIntentTracker;\n\n @reactive\n public accessor autoScrolling = false;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n let previousElementFromPoint: Element | null = null;\n let previousScrollableElements: Set<Element> | null = null;\n const elementFromPoint = computed(() => {\n const {position, source} = manager.dragOperation;\n\n if (!position) {\n return null;\n }\n\n const element = getElementFromPoint(\n 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 = (options?: {by: Coordinates}): boolean => {\n if (this.disabled) {\n return false;\n }\n\n const elements = this.getScrollableElements();\n\n if (!elements) {\n this.#meta = undefined;\n return false;\n }\n\n const {position} = this.manager.dragOperation;\n const currentPosition = position?.current;\n\n if (currentPosition) {\n const {by} = options ?? {};\n const intent = by\n ? {\n x: getScrollIntent(by.x),\n y: getScrollIntent(by.y),\n }\n : undefined;\n const scrollIntent = intent\n ? undefined\n : this.scrollIntentTracker.current;\n\n if (scrollIntent?.isLocked()) {\n return false;\n }\n\n for (const scrollableElement of elements) {\n const elementCanScroll = canScroll(scrollableElement, by);\n\n if (elementCanScroll.x || elementCanScroll.y) {\n const {speed, direction} = detectScrollIntent(\n scrollableElement,\n currentPosition,\n intent\n );\n\n if (scrollIntent) {\n for (const axis of Axes) {\n if (scrollIntent[axis].isLocked(direction[axis])) {\n speed[axis] = 0;\n direction[axis] = 0;\n }\n }\n }\n\n if (direction.x || direction.y) {\n const {x, y} = by ?? direction;\n const scrollLeftBy = x * speed.x;\n const scrollTopBy = y * speed.y;\n\n if (scrollLeftBy || scrollTopBy) {\n const previousScrollBy = this.#meta?.by;\n\n if (this.autoScrolling && previousScrollBy) {\n const scrollIntentMismatch =\n (previousScrollBy.x && !scrollLeftBy) ||\n (previousScrollBy.y && !scrollTopBy);\n\n if (scrollIntentMismatch) continue;\n }\n\n this.#meta = {\n element: scrollableElement,\n by: {\n x: scrollLeftBy,\n y: scrollTopBy,\n },\n };\n\n scheduler.schedule(this.#scroll);\n\n return true;\n }\n }\n }\n }\n }\n\n this.#meta = undefined;\n return false;\n };\n}\n\nfunction getScrollIntent(value: number) {\n if (value > 0) {\n return ScrollDirection.Forward;\n }\n\n if (value < 0) {\n return ScrollDirection.Reverse;\n }\n\n return ScrollDirection.Idle;\n}\n","type Callback = () => void;\n\nexport class Scheduler<T extends (callback: Callback) => any> {\n constructor(private scheduler: T) {}\n\n private pending: boolean = false;\n private tasks: Set<() => void> = new Set();\n private resolvers: Set<() => void> = new Set();\n\n public schedule(task: () => void): Promise<void> {\n this.tasks.add(task);\n\n if (!this.pending) {\n this.pending = true;\n this.scheduler(this.flush);\n }\n\n return new Promise<void>((resolve) => this.resolvers.add(resolve));\n }\n\n public flush = () => {\n const {tasks, resolvers} = this;\n\n this.pending = false;\n this.tasks = new Set();\n this.resolvers = new Set();\n\n for (const task of tasks) {\n task();\n }\n\n for (const resolve of resolvers) {\n resolve();\n }\n };\n}\n\nexport const scheduler = new Scheduler((callback) => {\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(callback);\n } else {\n callback();\n }\n});\n","import {Plugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\nimport type {CleanupFunction} from '@dnd-kit/state';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport {Scroller} from './Scroller.ts';\nimport {scheduler} from '../../../utilities/scheduling/scheduler.ts';\n\ninterface Options {}\n\nconst AUTOSCROLL_INTERVAL = 10;\n\nexport class AutoScroller extends Plugin<DragDropManager> {\n public destroy: CleanupFunction;\n\n constructor(manager: DragDropManager, _options?: Options) {\n super(manager);\n\n const scroller = manager.registry.plugins.get(Scroller);\n\n if (!scroller) {\n throw new Error('AutoScroller plugin depends on Scroller plugin');\n }\n\n this.destroy = effect(() => {\n if (this.disabled) {\n return;\n }\n\n // We consume the position from the drag operation\n // so that this effect is run when the position changes\n const {position: _, status} = manager.dragOperation;\n\n if (status.dragging) {\n const canScroll = scroller.scroll();\n\n if (canScroll) {\n scroller.autoScrolling = true;\n const interval = setInterval(\n () => scheduler.schedule(scroller.scroll),\n AUTOSCROLL_INTERVAL\n );\n\n return () => {\n clearInterval(interval);\n };\n } else {\n scroller.autoScrolling = false;\n }\n }\n });\n }\n}\n","import {CorePlugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nconst listenerOptions: AddEventListenerOptions = {\n capture: true,\n passive: true,\n};\n\nexport class ScrollListener extends CorePlugin<DragDropManager> {\n #timeout: NodeJS.Timeout | undefined;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n const {dragOperation} = this.manager;\n\n this.destroy = effect(() => {\n const enabled = dragOperation.status.dragging;\n\n if (enabled) {\n const root = dragOperation.source?.element?.ownerDocument ?? document;\n\n root.addEventListener('scroll', this.handleScroll, listenerOptions);\n\n return () => {\n root.removeEventListener(\n 'scroll',\n this.handleScroll,\n listenerOptions\n );\n };\n }\n });\n }\n\n private handleScroll = () => {\n if (this.#timeout == null) {\n this.#timeout = setTimeout(() => {\n this.manager.collisionObserver.forceUpdate(false);\n this.#timeout = undefined;\n }, 50);\n }\n };\n}\n","import {Plugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\n\nimport {DragDropManager} from '../../manager/index.ts';\n\ninterface PreventSelectionPluginOptions {\n /**\n * The nonce to be applied to the style element.\n */\n nonce?: string;\n}\n\nexport class PreventSelection extends Plugin<DragDropManager> {\n constructor(\n public manager: DragDropManager,\n options?: PreventSelectionPluginOptions\n ) {\n super(manager, options);\n\n this.destroy = effect(() => {\n const {dragOperation} = this.manager;\n const {nonce} = this.options ?? {};\n\n if (dragOperation.status.initialized) {\n const style = document.createElement('style');\n if (nonce) {\n style.setAttribute('nonce', nonce);\n }\n style.textContent = `* { user-select: none !important; -webkit-user-select: none !important; }`;\n document.head.appendChild(style);\n\n removeSelection();\n document.addEventListener('selectionchange', removeSelection, {\n capture: true,\n });\n\n return () => {\n document.removeEventListener('selectionchange', removeSelection, {\n capture: true,\n });\n style.remove();\n };\n }\n });\n }\n}\n\nfunction removeSelection() {\n document.getSelection()?.removeAllRanges();\n}\n","import {configurator, Sensor} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport {\n getDocument,\n isElement,\n isKeyboardEvent,\n scrollIntoViewIfNeeded,\n Listeners,\n DOMRectangle,\n} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Draggable} from '../../entities/index.ts';\nimport {AutoScroller} from '../../plugins/index.ts';\n\nexport type KeyCode = KeyboardEvent['code'];\n\nexport type KeyboardCodes = {\n start: KeyCode[];\n cancel: KeyCode[];\n end: KeyCode[];\n up: KeyCode[];\n down: KeyCode[];\n left: KeyCode[];\n right: KeyCode[];\n};\n\nexport interface KeyboardSensorOptions {\n /**\n * The offset by which the keyboard sensor should move the draggable.\n *\n * @default 10\n */\n offset?: number | {x: number; y: number};\n /**\n * The keyboard codes that activate the keyboard sensor.\n *\n * @default {\n * start: ['Space', 'Enter'],\n * cancel: ['Escape'],\n * end: ['Space', 'Enter', 'Tab'],\n * up: ['ArrowUp'],\n * down: ['ArrowDown'],\n * left: ['ArrowLeft'],\n * right: ['ArrowRight']\n * }\n */\n keyboardCodes?: KeyboardCodes;\n /**\n * Function that determines if the keyboard sensor should activate.\n */\n preventActivation?: (event: KeyboardEvent, source: Draggable) => boolean;\n}\n\nconst defaults = Object.freeze<Required<KeyboardSensorOptions>>({\n offset: 10,\n keyboardCodes: {\n start: ['Space', 'Enter'],\n cancel: ['Escape'],\n end: ['Space', 'Enter', 'Tab'],\n up: ['ArrowUp'],\n down: ['ArrowDown'],\n left: ['ArrowLeft'],\n right: ['ArrowRight'],\n },\n preventActivation(event, source) {\n const target = source.handle ?? source.element;\n return event.target !== target;\n },\n});\n\n/**\n * The KeyboardSensor class is an input sensor that handles Keyboard events.\n */\nexport class KeyboardSensor extends Sensor<\n DragDropManager,\n KeyboardSensorOptions\n> {\n constructor(\n public manager: DragDropManager,\n public options?: KeyboardSensorOptions\n ) {\n super(manager);\n }\n\n #cleanupFunctions: CleanupFunction[] = [];\n\n protected listeners = new Listeners();\n\n public bind(source: Draggable, options = this.options) {\n const unbind = effect(() => {\n const target = source.handle ?? source.element;\n const listener: EventListener = (event: Event) => {\n if (isKeyboardEvent(event)) {\n this.handleSourceKeyDown(event, source, options);\n }\n };\n\n if (target) {\n target.addEventListener('keydown', listener);\n\n return () => {\n target.removeEventListener('keydown', listener);\n };\n }\n });\n\n return unbind;\n }\n\n protected handleSourceKeyDown = (\n event: KeyboardEvent,\n source: Draggable,\n options: KeyboardSensorOptions | undefined\n ) => {\n if (this.disabled || event.defaultPrevented) {\n return;\n }\n\n if (!isElement(event.target)) {\n return;\n }\n\n if (source.disabled) {\n return;\n }\n\n const {\n keyboardCodes = defaults.keyboardCodes,\n preventActivation = defaults.preventActivation,\n } = options ?? {};\n\n if (!keyboardCodes.start.includes(event.code)) {\n return;\n }\n\n if (!this.manager.dragOperation.status.idle) {\n return;\n }\n\n if (preventActivation?.(event, source)) return;\n\n this.handleStart(event, source, options);\n };\n\n protected handleStart(\n event: KeyboardEvent,\n source: Draggable,\n options: KeyboardSensorOptions | undefined\n ) {\n const {element} = source;\n\n if (!element) {\n throw new Error('Source draggable does not have an associated element');\n }\n\n event.preventDefault();\n event.stopImmediatePropagation();\n\n scrollIntoViewIfNeeded(element);\n\n const {center} = new DOMRectangle(element);\n const controller = this.manager.actions.start({\n event,\n coordinates: {\n x: center.x,\n y: center.y,\n },\n source,\n });\n\n if (controller.signal.aborted) return this.cleanup();\n\n this.sideEffects();\n\n const sourceDocument = getDocument(element);\n const listeners = [\n this.listeners.bind(sourceDocument, [\n {\n type: 'keydown',\n listener: (event: KeyboardEvent) =>\n this.handleKeyDown(event, source, options),\n options: {capture: true},\n },\n ]),\n ];\n\n this.#cleanupFunctions.push(...listeners);\n }\n\n protected handleKeyDown(\n event: KeyboardEvent,\n _source: Draggable,\n options: KeyboardSensorOptions | undefined\n ) {\n const {keyboardCodes = defaults.keyboardCodes} = options ?? {};\n\n if (isKeycode(event, [...keyboardCodes.end, ...keyboardCodes.cancel])) {\n event.preventDefault();\n const canceled = isKeycode(event, keyboardCodes.cancel);\n\n this.handleEnd(event, canceled);\n return;\n }\n\n if (isKeycode(event, keyboardCodes.up)) {\n this.handleMove('up', event);\n } else if (isKeycode(event, keyboardCodes.down)) {\n this.handleMove('down', event);\n }\n\n if (isKeycode(event, keyboardCodes.left)) {\n this.handleMove('left', event);\n } else if (isKeycode(event, keyboardCodes.right)) {\n this.handleMove('right', event);\n }\n }\n\n protected handleEnd(event: Event, canceled: boolean) {\n this.manager.actions.stop({\n event,\n canceled,\n });\n\n this.cleanup();\n }\n\n protected handleMove(\n direction: 'up' | 'down' | 'left' | 'right',\n event: KeyboardEvent\n ) {\n const {shape} = this.manager.dragOperation;\n const factor = event.shiftKey ? 5 : 1;\n let by = {\n x: 0,\n y: 0,\n };\n let offset = this.options?.offset ?? defaults.offset;\n\n if (typeof offset === 'number') {\n offset = {x: offset, y: offset};\n }\n\n if (!shape) {\n return;\n }\n\n switch (direction) {\n case 'up':\n by = {x: 0, y: -offset.y * factor};\n break;\n case 'down':\n by = {x: 0, y: offset.y * factor};\n break;\n case 'left':\n by = {x: -offset.x * factor, y: 0};\n break;\n case 'right':\n by = {x: offset.x * factor, y: 0};\n break;\n }\n\n if (by.x || by.y) {\n event.preventDefault();\n\n this.manager.actions.move({\n event,\n by,\n });\n }\n }\n\n private sideEffects() {\n const autoScroller = this.manager.registry.plugins.get(AutoScroller as any);\n\n if (autoScroller?.disabled === false) {\n autoScroller.disable();\n\n this.#cleanupFunctions.push(() => {\n autoScroller.enable();\n });\n }\n }\n\n protected cleanup() {\n this.#cleanupFunctions.forEach((cleanup) => cleanup());\n this.#cleanupFunctions = [];\n }\n\n public destroy() {\n this.cleanup();\n // Remove all event listeners\n this.listeners.clear();\n }\n\n static configure = configurator(KeyboardSensor);\n\n static defaults = defaults;\n}\n\nfunction isKeycode(event: KeyboardEvent, codes: KeyCode[]) {\n return codes.includes(event.code);\n}\n","import {ActivationConstraint} from '@dnd-kit/abstract';\nimport {\n exceedsDistance,\n type Distance,\n type Coordinates,\n} from '@dnd-kit/geometry';\nimport {getEventCoordinates} from '@dnd-kit/dom/utilities';\n\nexport interface DistanceConstraintOptions {\n value: number;\n tolerance?: Distance;\n}\n\nexport class DistanceConstraint extends ActivationConstraint<\n PointerEvent,\n DistanceConstraintOptions\n> {\n #coordinates?: Coordinates;\n\n onEvent(event: PointerEvent) {\n switch (event.type) {\n case 'pointerdown':\n this.#coordinates = getEventCoordinates(event);\n break;\n case 'pointermove':\n if (!this.#coordinates) return;\n\n const {x, y} = getEventCoordinates(event);\n const delta = {\n x: x - this.#coordinates.x,\n y: y - this.#coordinates.y,\n };\n\n const {tolerance} = this.options;\n\n if (tolerance && exceedsDistance(delta, tolerance)) {\n this.abort();\n return;\n }\n\n if (exceedsDistance(delta, this.options.value)) {\n this.activate(event);\n }\n break;\n case 'pointerup':\n this.abort();\n break;\n }\n }\n\n abort() {\n this.#coordinates = undefined;\n }\n}\n","import {ActivationConstraint} from '@dnd-kit/abstract';\nimport {\n exceedsDistance,\n type Distance,\n type Coordinates,\n} from '@dnd-kit/geometry';\nimport {getEventCoordinates} from '@dnd-kit/dom/utilities';\n\nexport interface DelayConstraintOptions {\n value: number;\n tolerance: Distance;\n}\n\nexport class DelayConstraint extends ActivationConstraint<\n PointerEvent,\n DelayConstraintOptions\n> {\n #timeout?: ReturnType<typeof setTimeout>;\n #coordinates?: Coordinates;\n\n onEvent(event: PointerEvent) {\n switch (event.type) {\n case 'pointerdown':\n this.#coordinates = getEventCoordinates(event);\n this.#timeout = setTimeout(\n () => this.activate(event),\n this.options.value\n );\n break;\n case 'pointermove':\n if (!this.#coordinates) return;\n\n const {x, y} = getEventCoordinates(event);\n const delta = {\n x: x - this.#coordinates.x,\n y: y - this.#coordinates.y,\n };\n\n if (exceedsDistance(delta, this.options.tolerance)) {\n this.abort();\n }\n break;\n case 'pointerup':\n this.abort();\n break;\n }\n }\n\n abort() {\n if (this.#timeout) {\n clearTimeout(this.#timeout);\n this.#coordinates = undefined;\n this.#timeout = undefined;\n }\n }\n}\n","import {DistanceConstraint} from './DistanceConstraint.ts';\nimport {DelayConstraint} from './DelayConstraint.ts';\n\nexport class PointerActivationConstraints {\n static Delay = DelayConstraint;\n static Distance = DistanceConstraint;\n}\n","import {effect} from '@dnd-kit/state';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport {\n Sensor,\n configurator,\n ActivationController,\n type ActivationConstraints,\n} from '@dnd-kit/abstract';\nimport type {Coordinates} from '@dnd-kit/geometry';\nimport {\n getDocument,\n getDocuments,\n getEventCoordinates,\n getFrameTransform,\n isElement,\n isHTMLElement,\n isInteractiveElement,\n isPointerEvent,\n isTextInput,\n Listeners,\n scheduler,\n} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Draggable} from '../../entities/index.ts';\n\nimport {PointerActivationConstraints} from './PointerActivationConstraints.ts';\n\ntype Maybe<T> = T | undefined;\n\nexport interface PointerSensorOptions {\n activationConstraints?:\n | ActivationConstraints<PointerEvent>\n | ((\n event: PointerEvent,\n source: Draggable\n ) => ActivationConstraints<PointerEvent> | undefined);\n activatorElements?:\n | Maybe<Element>[]\n | ((source: Draggable) => Maybe<Element>[]);\n preventActivation?: (event: PointerEvent, source: Draggable) => boolean;\n}\n\nconst defaults = Object.freeze<PointerSensorOptions>({\n activationConstraints(event, source) {\n const {pointerType, target} = event;\n\n if (\n pointerType === 'mouse' &&\n isElement(target) &&\n (source.handle === target || source.handle?.contains(target))\n ) {\n return undefined;\n }\n\n if (pointerType === 'touch') {\n return [\n new PointerActivationConstraints.Delay({value: 250, tolerance: 5}),\n ];\n }\n\n if (isTextInput(target) && !event.defaultPrevented) {\n return [\n new PointerActivationConstraints.Delay({value: 200, tolerance: 0}),\n ];\n }\n\n return [\n new PointerActivationConstraints.Delay({value: 200, tolerance: 10}),\n new PointerActivationConstraints.Distance({value: 5}),\n ];\n },\n preventActivation(event, source) {\n const {target} = event;\n\n if (target === source.element) return false;\n if (target === source.handle) return false;\n if (!isElement(target)) return false;\n if (source.handle?.contains(target)) return false;\n\n return isInteractiveElement(target);\n },\n});\n\ntype LatestState = {\n event: PointerEvent | undefined;\n coordinates: Coordinates | undefined;\n};\n\n/**\n * The PointerSensor class is an input sensor that handles Pointer events,\n * such as mouse, touch and pen interactions.\n */\nexport class PointerSensor extends Sensor<\n DragDropManager,\n PointerSensorOptions\n> {\n #cleanup: Set<CleanupFunction> = new Set();\n\n protected listeners = new Listeners();\n\n protected initialCoordinates: Coordinates | undefined;\n\n protected controller: ActivationController<PointerEvent> | undefined;\n\n constructor(\n public manager: DragDropManager,\n public options?: PointerSensorOptions\n ) {\n super(manager);\n\n this.handleCancel = this.handleCancel.bind(this);\n this.handlePointerUp = this.handlePointerUp.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n protected activationConstraints(\n event: PointerEvent,\n source: Draggable,\n options = this.options\n ) {\n const {activationConstraints = defaults.activationConstraints} =\n options ?? {};\n\n const constraints =\n typeof activationConstraints === 'function'\n ? activationConstraints(event, source)\n : activationConstraints;\n\n return constraints;\n }\n\n public bind(source: Draggable, options = this.options) {\n const unbind = effect(() => {\n const controller = new AbortController();\n const {signal} = controller;\n const listener: EventListener = (event: Event) => {\n if (isPointerEvent(event)) {\n this.handlePointerDown(event, source, options);\n }\n };\n let targets = [source.handle ?? source.element];\n\n if (options?.activatorElements) {\n if (Array.isArray(options.activatorElements)) {\n targets = options.activatorElements;\n } else {\n targets = options.activatorElements(source);\n }\n }\n\n for (const target of targets) {\n if (!target) continue;\n\n patchWindow(target.ownerDocument.defaultView);\n target.addEventListener('pointerdown', listener, {signal});\n }\n\n return () => controller.abort();\n });\n\n return unbind;\n }\n\n protected handlePointerDown(\n event: PointerEvent,\n source: Draggable,\n options: PointerSensorOptions | undefined\n ) {\n if (\n this.disabled ||\n !event.isPrimary ||\n event.button !== 0 ||\n !isElement(event.target) ||\n source.disabled ||\n isCapturedBySensor(event) ||\n !this.manager.dragOperation.status.idle\n ) {\n return;\n }\n\n const {preventActivation = defaults.preventActivation} = options ?? {};\n\n if (preventActivation?.(event, source)) {\n return;\n }\n\n const {target} = event;\n const isNativeDraggable =\n isHTMLElement(target) &&\n target.draggable &&\n target.getAttribute('draggable') === 'true';\n\n const offset = getFrameTransform(source.element);\n const {x, y} = getEventCoordinates(event);\n\n this.initialCoordinates = {\n x: x * offset.scaleX + offset.x,\n y: y * offset.scaleY + offset.y,\n };\n\n const constraints = this.activationConstraints(event, source, options);\n (event as any).sensor = this;\n\n const controller = new ActivationController<PointerEvent>(\n constraints,\n (event) => this.handleStart(source, event)\n );\n\n controller.signal.onabort = () => this.handleCancel(event);\n controller.onEvent(event);\n\n this.controller = controller;\n\n const documents = getDocuments();\n const unbindListeners = this.listeners.bind(documents, [\n {\n type: 'pointermove',\n listener: (event: PointerEvent) =>\n this.handlePointerMove(event, source),\n },\n {\n type: 'pointerup',\n listener: this.handlePointerUp,\n options: {\n capture: true,\n },\n },\n { \n 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 pointerCaptureTarget.setPointerCapture(event.pointerId);\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 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 StyleSheetManager,\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(input.modifiers, defaultPreset.modifiers);\n\n super({\n ...input,\n plugins: [ScrollListener, Scroller, StyleSheetManager, ...plugins],\n sensors,\n modifiers,\n });\n }\n}\n","import {\n Draggable as AbstractDraggable,\n Sensor,\n descriptor,\n} from '@dnd-kit/abstract';\nimport type {Data, DraggableInput} from '@dnd-kit/abstract';\nimport {reactive} from '@dnd-kit/state';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Sensors} from '../../sensors/types.ts';\n\nexport type FeedbackType = 'default' | 'move' | 'clone' | 'none';\n\nexport interface Input<T extends Data = Data> extends DraggableInput<T> {\n handle?: Element;\n element?: Element;\n feedback?: FeedbackType;\n sensors?: Sensors;\n}\n\nexport class Draggable<T extends Data = Data> extends AbstractDraggable<\n T,\n DragDropManager\n> {\n constructor(\n {\n element,\n effects = () => [],\n handle,\n feedback = 'default',\n ...input\n }: Input<T>,\n manager: DragDropManager | undefined\n ) {\n super(\n {\n effects: () => [\n ...effects(),\n () => {\n const {manager} = this;\n\n if (!manager) return;\n\n const sensors = this.sensors?.map(descriptor) ?? [\n ...manager.sensors,\n ];\n const unbindFunctions = sensors.map((entry) => {\n const sensorInstance =\n entry instanceof Sensor\n ? entry\n : manager.registry.register(entry.plugin);\n const options =\n entry instanceof Sensor ? undefined : entry.options;\n\n const unbind = sensorInstance.bind(this, options);\n return unbind;\n });\n\n return function cleanup() {\n unbindFunctions.forEach((unbind) => unbind());\n };\n },\n ],\n ...input,\n },\n manager\n );\n\n this.element = element;\n this.handle = handle;\n this.feedback = feedback;\n }\n\n @reactive\n public accessor handle: Element | undefined;\n\n @reactive\n public accessor element: Element | undefined;\n\n @reactive\n public accessor feedback: FeedbackType;\n}\n","import {Droppable as AbstractDroppable} from '@dnd-kit/abstract';\nimport type {\n Data,\n DroppableInput as AbstractDroppableInput,\n} from '@dnd-kit/abstract';\nimport {defaultCollisionDetection} from '@dnd-kit/collision';\nimport type {CollisionDetector} from '@dnd-kit/collision';\nimport {reactive, signal, untracked} from '@dnd-kit/state';\nimport type {BoundingRectangle, Shape} from '@dnd-kit/geometry';\nimport {DOMRectangle, PositionObserver} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/manager.ts';\n\ntype OptionalInput = 'collisionDetector';\n\nexport interface Input<T extends Data = Data>\n extends Omit<AbstractDroppableInput<T>, OptionalInput> {\n collisionDetector?: CollisionDetector;\n element?: Element;\n}\n\nexport class Droppable<T extends Data = Data> extends AbstractDroppable<\n T,\n DragDropManager\n> {\n constructor(\n {element, effects = () => [], ...input}: Input<T>,\n manager: DragDropManager | undefined\n ) {\n const {collisionDetector = defaultCollisionDetection} = input;\n const updateShape = (boundingClientRect?: BoundingRectangle | null) => {\n const {manager, element} = this;\n\n if (!element || boundingClientRect === null) {\n this.shape = undefined;\n return undefined;\n }\n\n if (!manager) return;\n\n const updatedShape = new DOMRectangle(element);\n\n const shape = untracked(() => this.shape);\n if (updatedShape && shape?.equals(updatedShape)) {\n return shape;\n }\n\n this.shape = updatedShape;\n\n return updatedShape;\n };\n\n const observePosition = signal(false);\n\n super(\n {\n ...input,\n collisionDetector,\n effects: () => [\n ...effects(),\n () => {\n const {element, manager} = this;\n if (!manager) return;\n\n const {dragOperation} = manager;\n const {source} = dragOperation;\n\n observePosition.value = Boolean(\n source &&\n dragOperation.status.initialized &&\n element &&\n !this.disabled &&\n this.accepts(source)\n );\n },\n () => {\n const {element} = this;\n\n if (observePosition.value && element) {\n const positionObserver = new PositionObserver(\n element,\n updateShape\n );\n\n return () => {\n positionObserver.disconnect();\n this.shape = undefined;\n };\n }\n },\n () => {\n if (this.manager?.dragOperation.status.initialized) {\n return () => {\n this.shape = undefined;\n };\n }\n },\n ],\n },\n manager\n );\n\n this.element = element;\n this.refreshShape = () => updateShape();\n }\n\n @reactive\n accessor #element: Element | undefined;\n\n @reactive\n public accessor proxy: Element | undefined;\n\n set element(element: Element | undefined) {\n this.#element = element;\n }\n\n get element() {\n return this.proxy ?? this.#element;\n }\n\n public refreshShape: () => Shape | undefined;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["src/core/plugins/accessibility/defaults.ts","src/core/plugins/accessibility/utilities.ts","src/core/plugins/accessibility/HiddenText.ts","src/core/plugins/accessibility/LiveRegion.ts","src/core/plugins/accessibility/Accessibility.ts","src/core/plugins/cursor/Cursor.ts","src/core/plugins/stylesheet/StyleSheetManager.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","document","untracked","generateUniqueId","showPopover","_b","_c","_d","DOMRectangle","_init","reactive","getRoot","getComputedStyles","parseTranslate","tX","tY","getFixedPositionOffset","getWindow","prefersReducedMotion","transform","status","initialTranslate","translate","delta","Rectangle","_dec","Direction","effect","CorePlugin","Axes","scheduler","computed","getDocument","isKeyboardEvent","ScrollDirection","canScroll","isElement","event","configurator","_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 {Plugin} from '@dnd-kit/abstract';\nimport {computed, effect} from '@dnd-kit/state';\nimport {getDocument} from '@dnd-kit/dom/utilities';\n\nimport {DragDropManager} from '../../manager/index.ts';\n\ninterface CursorPluginOptions {\n /**\n * The style of the cursor to be applied to the document body.\n * @default 'grabbing'\n */\n cursor?: string;\n /**\n * The nonce to be applied to the style element.\n */\n nonce?: string;\n}\n\nexport class Cursor extends Plugin<DragDropManager> {\n constructor(\n public manager: DragDropManager,\n options?: CursorPluginOptions\n ) {\n super(manager, options);\n\n const doc = computed(() =>\n getDocument(this.manager.dragOperation.source?.element)\n );\n\n this.destroy = effect(() => {\n const {dragOperation} = this.manager;\n const {cursor = 'grabbing', nonce} = this.options ?? {};\n\n if (dragOperation.status.initialized) {\n const document = doc.value;\n const style = document.createElement('style');\n\n if (nonce) {\n style.setAttribute('nonce', nonce);\n }\n\n style.textContent = `* { cursor: ${cursor} !important; }`;\n document.head.appendChild(style);\n\n return () => style.remove();\n }\n });\n }\n}\n","import {CorePlugin} 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\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 StyleSheetManager extends CorePlugin<DragDropManager> {\n #registeredRules = new Set<string>();\n\n @reactive\n private accessor additionalRoots = new Set<Document | ShadowRoot>();\n\n constructor(manager: DragDropManager) {\n super(manager);\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 StyleSheetManager 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 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","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 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 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.innerHTML = element.innerHTML;\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\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 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 ctx.dragOperation.shape = new DOMRectangle(ctx.feedbackElement);\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 {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 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 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 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 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 {StyleSheetManager} from '../stylesheet/StyleSheetManager.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 interface FeedbackOptions {\n rootElement?: Element | ((source: Draggable) => Element);\n nonce?: string;\n dropAnimation?: DropAnimation | 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 styleSheetManager = manager.registry.plugins.get(\n StyleSheetManager as any\n ) as StyleSheetManager | undefined;\n\n const unregisterStyles = styleSheetManager?.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, styleSheetManager));\n this.registerEffect(this.#render);\n }\n\n #trackOverlayRoot(styleSheetManager: StyleSheetManager | undefined) {\n const {overlay} = this;\n\n if (!overlay || !styleSheetManager) return;\n\n const root = getRoot(overlay);\n\n if (!root) return;\n\n return styleSheetManager.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, feedback} = source;\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 {\n transition,\n translate,\n boxSizing,\n paddingBlockStart,\n paddingBlockEnd,\n paddingInlineStart,\n paddingInlineEnd,\n borderInlineStartWidth,\n borderInlineEndWidth,\n borderBlockStartWidth,\n borderBlockEndWidth,\n } = getComputedStyles(element);\n const clone = feedback === 'clone';\n const contentBox = boxSizing === 'content-box';\n const widthOffset = contentBox\n ? parseInt(paddingInlineStart) +\n parseInt(paddingInlineEnd) +\n parseInt(borderInlineStartWidth) +\n parseInt(borderInlineEndWidth)\n : 0;\n const heightOffset = contentBox\n ? parseInt(paddingBlockStart) +\n parseInt(paddingBlockEnd) +\n parseInt(borderBlockStartWidth) +\n parseInt(borderBlockEndWidth)\n : 0;\n\n const placeholder =\n feedback !== 'move' && !this.overlay\n ? createPlaceholder(source, clone ? 'clone' : 'hidden')\n : null;\n const isKeyboardOperation = untracked(() =>\n isKeyboardEvent(manager.dragOperation.activatorEvent)\n );\n\n if (translate !== 'none') {\n const parsedTranslate = parseTranslate(translate);\n\n if (parsedTranslate && !initial.translate) {\n initial.translate = parsedTranslate;\n }\n }\n\n if (!initial.transformOrigin) {\n const current = untracked(() => position.current);\n\n initial.transformOrigin = {\n x:\n (current.x - left * frameTransform.scaleX - frameTransform.x) /\n (width * frameTransform.scaleX),\n y:\n (current.y - top * frameTransform.scaleY - frameTransform.y) /\n (height * frameTransform.scaleY),\n };\n }\n\n const {transformOrigin} = initial;\n const relativeTop = top * frameTransform.scaleY + frameTransform.y;\n const relativeLeft = left * frameTransform.scaleX + frameTransform.x;\n\n if (!initial.coordinates) {\n initial.coordinates = {\n x: relativeLeft,\n y: relativeTop,\n };\n\n // 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 transition: transition ? `${transition}, 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 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\n if (\n placeholder &&\n (moved ||\n placeholder.parentElement !== feedbackElement.parentElement) &&\n feedbackElement.isConnected\n ) {\n placeholder.replaceWith(feedbackElement);\n }\n\n placeholder?.remove();\n };\n\n /* ---- 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 translateTransition =\n isKeyboardOperation && !reducedMotion\n ? '250ms cubic-bezier(0.25, 1, 0.5, 1)'\n : '0ms linear';\n\n styles.set(\n {\n transition: `${transition}, translate ${translateTransition}`,\n translate: `${translate.x}px ${translate.y}px 0`,\n },\n CSS_PREFIX\n );\n elementMutationObserver?.takeRecords();\n\n if (\n currentShape &&\n currentShape !== initialShape &&\n previousTranslate &&\n !modifiers.length\n ) {\n const delta = Point.delta(translate, previousTranslate);\n\n dragOperation.shape = Rectangle.from(\n currentShape.boundingRectangle\n ).translate(\n 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 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 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 Coordinates} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollIntentTracker} from './ScrollIntent.ts';\n\nexport class Scroller extends CorePlugin<DragDropManager> {\n public getScrollableElements: () => Set<Element> | null;\n\n private scrollIntentTracker: ScrollIntentTracker;\n\n @reactive\n public accessor autoScrolling = false;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n let previousElementFromPoint: Element | null = null;\n let previousScrollableElements: Set<Element> | null = null;\n const elementFromPoint = computed(() => {\n const {position, source} = manager.dragOperation;\n\n if (!position) {\n return null;\n }\n\n const element = getElementFromPoint(\n 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 = (options?: {by: Coordinates}): boolean => {\n if (this.disabled) {\n return false;\n }\n\n const elements = this.getScrollableElements();\n\n if (!elements) {\n this.#meta = undefined;\n return false;\n }\n\n const {position} = this.manager.dragOperation;\n const currentPosition = position?.current;\n\n if (currentPosition) {\n const {by} = options ?? {};\n const intent = by\n ? {\n x: getScrollIntent(by.x),\n y: getScrollIntent(by.y),\n }\n : undefined;\n const scrollIntent = intent\n ? undefined\n : this.scrollIntentTracker.current;\n\n if (scrollIntent?.isLocked()) {\n return false;\n }\n\n for (const scrollableElement of elements) {\n const elementCanScroll = canScroll(scrollableElement, by);\n\n if (elementCanScroll.x || elementCanScroll.y) {\n const {speed, direction} = detectScrollIntent(\n scrollableElement,\n currentPosition,\n intent\n );\n\n if (scrollIntent) {\n for (const axis of Axes) {\n if (scrollIntent[axis].isLocked(direction[axis])) {\n speed[axis] = 0;\n direction[axis] = 0;\n }\n }\n }\n\n if (direction.x || direction.y) {\n const {x, y} = by ?? direction;\n const scrollLeftBy = x * speed.x;\n const scrollTopBy = y * speed.y;\n\n if (scrollLeftBy || scrollTopBy) {\n const previousScrollBy = this.#meta?.by;\n\n if (this.autoScrolling && previousScrollBy) {\n const scrollIntentMismatch =\n (previousScrollBy.x && !scrollLeftBy) ||\n (previousScrollBy.y && !scrollTopBy);\n\n if (scrollIntentMismatch) continue;\n }\n\n this.#meta = {\n element: scrollableElement,\n by: {\n x: scrollLeftBy,\n y: scrollTopBy,\n },\n };\n\n scheduler.schedule(this.#scroll);\n\n return true;\n }\n }\n }\n }\n }\n\n this.#meta = undefined;\n return false;\n };\n}\n\nfunction getScrollIntent(value: number) {\n if (value > 0) {\n return ScrollDirection.Forward;\n }\n\n if (value < 0) {\n return ScrollDirection.Reverse;\n }\n\n return ScrollDirection.Idle;\n}\n","type Callback = () => void;\n\nexport class Scheduler<T extends (callback: Callback) => any> {\n constructor(private scheduler: T) {}\n\n private pending: boolean = false;\n private tasks: Set<() => void> = new Set();\n private resolvers: Set<() => void> = new Set();\n\n public schedule(task: () => void): Promise<void> {\n this.tasks.add(task);\n\n if (!this.pending) {\n this.pending = true;\n this.scheduler(this.flush);\n }\n\n return new Promise<void>((resolve) => this.resolvers.add(resolve));\n }\n\n public flush = () => {\n const {tasks, resolvers} = this;\n\n this.pending = false;\n this.tasks = new Set();\n this.resolvers = new Set();\n\n for (const task of tasks) {\n task();\n }\n\n for (const resolve of resolvers) {\n resolve();\n }\n };\n}\n\nexport const scheduler = new Scheduler((callback) => {\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(callback);\n } else {\n callback();\n }\n});\n","import {Plugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\nimport type {CleanupFunction} from '@dnd-kit/state';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport {Scroller} from './Scroller.ts';\nimport {scheduler} from '../../../utilities/scheduling/scheduler.ts';\n\ninterface Options {}\n\nconst AUTOSCROLL_INTERVAL = 10;\n\nexport class AutoScroller extends Plugin<DragDropManager> {\n public destroy: CleanupFunction;\n\n constructor(manager: DragDropManager, _options?: Options) {\n super(manager);\n\n const scroller = manager.registry.plugins.get(Scroller);\n\n if (!scroller) {\n throw new Error('AutoScroller plugin depends on Scroller plugin');\n }\n\n this.destroy = effect(() => {\n if (this.disabled) {\n return;\n }\n\n // We consume the position from the drag operation\n // so that this effect is run when the position changes\n const {position: _, status} = manager.dragOperation;\n\n if (status.dragging) {\n const canScroll = scroller.scroll();\n\n if (canScroll) {\n scroller.autoScrolling = true;\n const interval = setInterval(\n () => scheduler.schedule(scroller.scroll),\n AUTOSCROLL_INTERVAL\n );\n\n return () => {\n clearInterval(interval);\n };\n } else {\n scroller.autoScrolling = false;\n }\n }\n });\n }\n}\n","import {CorePlugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nconst listenerOptions: AddEventListenerOptions = {\n capture: true,\n passive: true,\n};\n\nexport class ScrollListener extends CorePlugin<DragDropManager> {\n #timeout: NodeJS.Timeout | undefined;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n const {dragOperation} = this.manager;\n\n this.destroy = effect(() => {\n const enabled = dragOperation.status.dragging;\n\n if (enabled) {\n const root = dragOperation.source?.element?.ownerDocument ?? document;\n\n root.addEventListener('scroll', this.handleScroll, listenerOptions);\n\n return () => {\n root.removeEventListener(\n 'scroll',\n this.handleScroll,\n listenerOptions\n );\n };\n }\n });\n }\n\n private handleScroll = () => {\n if (this.#timeout == null) {\n this.#timeout = setTimeout(() => {\n this.manager.collisionObserver.forceUpdate(false);\n this.#timeout = undefined;\n }, 50);\n }\n };\n}\n","import {Plugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\n\nimport {DragDropManager} from '../../manager/index.ts';\n\ninterface PreventSelectionPluginOptions {\n /**\n * The nonce to be applied to the style element.\n */\n nonce?: string;\n}\n\nexport class PreventSelection extends Plugin<DragDropManager> {\n constructor(\n public manager: DragDropManager,\n options?: PreventSelectionPluginOptions\n ) {\n super(manager, options);\n\n this.destroy = effect(() => {\n const {dragOperation} = this.manager;\n const {nonce} = this.options ?? {};\n\n if (dragOperation.status.initialized) {\n const style = document.createElement('style');\n if (nonce) {\n style.setAttribute('nonce', nonce);\n }\n style.textContent = `* { user-select: none !important; -webkit-user-select: none !important; }`;\n document.head.appendChild(style);\n\n removeSelection();\n document.addEventListener('selectionchange', removeSelection, {\n capture: true,\n });\n\n return () => {\n document.removeEventListener('selectionchange', removeSelection, {\n capture: true,\n });\n style.remove();\n };\n }\n });\n }\n}\n\nfunction removeSelection() {\n document.getSelection()?.removeAllRanges();\n}\n","import {configurator, Sensor} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport {\n getDocument,\n isElement,\n isKeyboardEvent,\n scrollIntoViewIfNeeded,\n Listeners,\n DOMRectangle,\n} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Draggable} from '../../entities/index.ts';\nimport {AutoScroller} from '../../plugins/index.ts';\n\nexport type KeyCode = KeyboardEvent['code'];\n\nexport type KeyboardCodes = {\n start: KeyCode[];\n cancel: KeyCode[];\n end: KeyCode[];\n up: KeyCode[];\n down: KeyCode[];\n left: KeyCode[];\n right: KeyCode[];\n};\n\nexport interface KeyboardSensorOptions {\n /**\n * The offset by which the keyboard sensor should move the draggable.\n *\n * @default 10\n */\n offset?: number | {x: number; y: number};\n /**\n * The keyboard codes that activate the keyboard sensor.\n *\n * @default {\n * start: ['Space', 'Enter'],\n * cancel: ['Escape'],\n * end: ['Space', 'Enter', 'Tab'],\n * up: ['ArrowUp'],\n * down: ['ArrowDown'],\n * left: ['ArrowLeft'],\n * right: ['ArrowRight']\n * }\n */\n keyboardCodes?: KeyboardCodes;\n /**\n * Function that determines if the keyboard sensor should activate.\n */\n preventActivation?: (event: KeyboardEvent, source: Draggable) => boolean;\n}\n\nconst defaults = Object.freeze<Required<KeyboardSensorOptions>>({\n offset: 10,\n keyboardCodes: {\n start: ['Space', 'Enter'],\n cancel: ['Escape'],\n end: ['Space', 'Enter', 'Tab'],\n up: ['ArrowUp'],\n down: ['ArrowDown'],\n left: ['ArrowLeft'],\n right: ['ArrowRight'],\n },\n preventActivation(event, source) {\n const target = source.handle ?? source.element;\n return event.target !== target;\n },\n});\n\n/**\n * The KeyboardSensor class is an input sensor that handles Keyboard events.\n */\nexport class KeyboardSensor extends Sensor<\n DragDropManager,\n KeyboardSensorOptions\n> {\n constructor(\n public manager: DragDropManager,\n public options?: KeyboardSensorOptions\n ) {\n super(manager);\n }\n\n #cleanupFunctions: CleanupFunction[] = [];\n\n protected listeners = new Listeners();\n\n public bind(source: Draggable, options = this.options) {\n const unbind = effect(() => {\n const target = source.handle ?? source.element;\n const listener: EventListener = (event: Event) => {\n if (isKeyboardEvent(event)) {\n this.handleSourceKeyDown(event, source, options);\n }\n };\n\n if (target) {\n target.addEventListener('keydown', listener);\n\n return () => {\n target.removeEventListener('keydown', listener);\n };\n }\n });\n\n return unbind;\n }\n\n protected handleSourceKeyDown = (\n event: KeyboardEvent,\n source: Draggable,\n options: KeyboardSensorOptions | undefined\n ) => {\n if (this.disabled || event.defaultPrevented) {\n return;\n }\n\n if (!isElement(event.target)) {\n return;\n }\n\n if (source.disabled) {\n return;\n }\n\n const {\n keyboardCodes = defaults.keyboardCodes,\n preventActivation = defaults.preventActivation,\n } = options ?? {};\n\n if (!keyboardCodes.start.includes(event.code)) {\n return;\n }\n\n if (!this.manager.dragOperation.status.idle) {\n return;\n }\n\n if (preventActivation?.(event, source)) return;\n\n this.handleStart(event, source, options);\n };\n\n protected handleStart(\n event: KeyboardEvent,\n source: Draggable,\n options: KeyboardSensorOptions | undefined\n ) {\n const {element} = source;\n\n if (!element) {\n throw new Error('Source draggable does not have an associated element');\n }\n\n event.preventDefault();\n event.stopImmediatePropagation();\n\n scrollIntoViewIfNeeded(element);\n\n const {center} = new DOMRectangle(element);\n const controller = this.manager.actions.start({\n event,\n coordinates: {\n x: center.x,\n y: center.y,\n },\n source,\n });\n\n if (controller.signal.aborted) return this.cleanup();\n\n this.sideEffects();\n\n const sourceDocument = getDocument(element);\n const listeners = [\n this.listeners.bind(sourceDocument, [\n {\n type: 'keydown',\n listener: (event: KeyboardEvent) =>\n this.handleKeyDown(event, source, options),\n options: {capture: true},\n },\n ]),\n ];\n\n this.#cleanupFunctions.push(...listeners);\n }\n\n protected handleKeyDown(\n event: KeyboardEvent,\n _source: Draggable,\n options: KeyboardSensorOptions | undefined\n ) {\n const {keyboardCodes = defaults.keyboardCodes} = options ?? {};\n\n if (isKeycode(event, [...keyboardCodes.end, ...keyboardCodes.cancel])) {\n event.preventDefault();\n const canceled = isKeycode(event, keyboardCodes.cancel);\n\n this.handleEnd(event, canceled);\n return;\n }\n\n if (isKeycode(event, keyboardCodes.up)) {\n this.handleMove('up', event);\n } else if (isKeycode(event, keyboardCodes.down)) {\n this.handleMove('down', event);\n }\n\n if (isKeycode(event, keyboardCodes.left)) {\n this.handleMove('left', event);\n } else if (isKeycode(event, keyboardCodes.right)) {\n this.handleMove('right', event);\n }\n }\n\n protected handleEnd(event: Event, canceled: boolean) {\n this.manager.actions.stop({\n event,\n canceled,\n });\n\n this.cleanup();\n }\n\n protected handleMove(\n direction: 'up' | 'down' | 'left' | 'right',\n event: KeyboardEvent\n ) {\n const {shape} = this.manager.dragOperation;\n const factor = event.shiftKey ? 5 : 1;\n let by = {\n x: 0,\n y: 0,\n };\n let offset = this.options?.offset ?? defaults.offset;\n\n if (typeof offset === 'number') {\n offset = {x: offset, y: offset};\n }\n\n if (!shape) {\n return;\n }\n\n switch (direction) {\n case 'up':\n by = {x: 0, y: -offset.y * factor};\n break;\n case 'down':\n by = {x: 0, y: offset.y * factor};\n break;\n case 'left':\n by = {x: -offset.x * factor, y: 0};\n break;\n case 'right':\n by = {x: offset.x * factor, y: 0};\n break;\n }\n\n if (by.x || by.y) {\n event.preventDefault();\n\n this.manager.actions.move({\n event,\n by,\n });\n }\n }\n\n private sideEffects() {\n const autoScroller = this.manager.registry.plugins.get(AutoScroller as any);\n\n if (autoScroller?.disabled === false) {\n autoScroller.disable();\n\n this.#cleanupFunctions.push(() => {\n autoScroller.enable();\n });\n }\n }\n\n protected cleanup() {\n this.#cleanupFunctions.forEach((cleanup) => cleanup());\n this.#cleanupFunctions = [];\n }\n\n public destroy() {\n this.cleanup();\n // Remove all event listeners\n this.listeners.clear();\n }\n\n static configure = configurator(KeyboardSensor);\n\n static defaults = defaults;\n}\n\nfunction isKeycode(event: KeyboardEvent, codes: KeyCode[]) {\n return codes.includes(event.code);\n}\n","import {ActivationConstraint} from '@dnd-kit/abstract';\nimport {\n exceedsDistance,\n type Distance,\n type Coordinates,\n} from '@dnd-kit/geometry';\nimport {getEventCoordinates} from '@dnd-kit/dom/utilities';\n\nexport interface DistanceConstraintOptions {\n value: number;\n tolerance?: Distance;\n}\n\nexport class DistanceConstraint extends ActivationConstraint<\n PointerEvent,\n DistanceConstraintOptions\n> {\n #coordinates?: Coordinates;\n\n onEvent(event: PointerEvent) {\n switch (event.type) {\n case 'pointerdown':\n this.#coordinates = getEventCoordinates(event);\n break;\n case 'pointermove':\n if (!this.#coordinates) return;\n\n const {x, y} = getEventCoordinates(event);\n const delta = {\n x: x - this.#coordinates.x,\n y: y - this.#coordinates.y,\n };\n\n const {tolerance} = this.options;\n\n if (tolerance && exceedsDistance(delta, tolerance)) {\n this.abort();\n return;\n }\n\n if (exceedsDistance(delta, this.options.value)) {\n this.activate(event);\n }\n break;\n case 'pointerup':\n this.abort();\n break;\n }\n }\n\n abort() {\n this.#coordinates = undefined;\n }\n}\n","import {ActivationConstraint} from '@dnd-kit/abstract';\nimport {\n exceedsDistance,\n type Distance,\n type Coordinates,\n} from '@dnd-kit/geometry';\nimport {getEventCoordinates} from '@dnd-kit/dom/utilities';\n\nexport interface DelayConstraintOptions {\n value: number;\n tolerance: Distance;\n}\n\nexport class DelayConstraint extends ActivationConstraint<\n PointerEvent,\n DelayConstraintOptions\n> {\n #timeout?: ReturnType<typeof setTimeout>;\n #coordinates?: Coordinates;\n\n onEvent(event: PointerEvent) {\n switch (event.type) {\n case 'pointerdown':\n this.#coordinates = getEventCoordinates(event);\n this.#timeout = setTimeout(\n () => this.activate(event),\n this.options.value\n );\n break;\n case 'pointermove':\n if (!this.#coordinates) return;\n\n const {x, y} = getEventCoordinates(event);\n const delta = {\n x: x - this.#coordinates.x,\n y: y - this.#coordinates.y,\n };\n\n if (exceedsDistance(delta, this.options.tolerance)) {\n this.abort();\n }\n break;\n case 'pointerup':\n this.abort();\n break;\n }\n }\n\n abort() {\n if (this.#timeout) {\n clearTimeout(this.#timeout);\n this.#coordinates = undefined;\n this.#timeout = undefined;\n }\n }\n}\n","import {DistanceConstraint} from './DistanceConstraint.ts';\nimport {DelayConstraint} from './DelayConstraint.ts';\n\nexport class PointerActivationConstraints {\n static Delay = DelayConstraint;\n static Distance = DistanceConstraint;\n}\n","import {effect} from '@dnd-kit/state';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport {\n Sensor,\n configurator,\n ActivationController,\n type ActivationConstraints,\n} from '@dnd-kit/abstract';\nimport type {Coordinates} from '@dnd-kit/geometry';\nimport {\n getDocument,\n getDocuments,\n getEventCoordinates,\n getFrameTransform,\n isElement,\n isHTMLElement,\n isInteractiveElement,\n isPointerEvent,\n isTextInput,\n Listeners,\n scheduler,\n} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Draggable} from '../../entities/index.ts';\n\nimport {PointerActivationConstraints} from './PointerActivationConstraints.ts';\n\ntype Maybe<T> = T | undefined;\n\nexport interface PointerSensorOptions {\n activationConstraints?:\n | ActivationConstraints<PointerEvent>\n | ((\n event: PointerEvent,\n source: Draggable\n ) => ActivationConstraints<PointerEvent> | undefined);\n activatorElements?:\n | Maybe<Element>[]\n | ((source: Draggable) => Maybe<Element>[]);\n preventActivation?: (event: PointerEvent, source: Draggable) => boolean;\n}\n\nconst defaults = Object.freeze<PointerSensorOptions>({\n activationConstraints(event, source) {\n const {pointerType, target} = event;\n\n if (\n pointerType === 'mouse' &&\n isElement(target) &&\n (source.handle === target || source.handle?.contains(target))\n ) {\n return undefined;\n }\n\n if (pointerType === 'touch') {\n return [\n new PointerActivationConstraints.Delay({value: 250, tolerance: 5}),\n ];\n }\n\n if (isTextInput(target) && !event.defaultPrevented) {\n return [\n new PointerActivationConstraints.Delay({value: 200, tolerance: 0}),\n ];\n }\n\n return [\n new PointerActivationConstraints.Delay({value: 200, tolerance: 10}),\n new PointerActivationConstraints.Distance({value: 5}),\n ];\n },\n preventActivation(event, source) {\n const {target} = event;\n\n if (target === source.element) return false;\n if (target === source.handle) return false;\n if (!isElement(target)) return false;\n if (source.handle?.contains(target)) return false;\n\n return isInteractiveElement(target);\n },\n});\n\ntype LatestState = {\n event: PointerEvent | undefined;\n coordinates: Coordinates | undefined;\n};\n\n/**\n * The PointerSensor class is an input sensor that handles Pointer events,\n * such as mouse, touch and pen interactions.\n */\nexport class PointerSensor extends Sensor<\n DragDropManager,\n PointerSensorOptions\n> {\n #cleanup: Set<CleanupFunction> = new Set();\n\n protected listeners = new Listeners();\n\n protected initialCoordinates: Coordinates | undefined;\n\n protected controller: ActivationController<PointerEvent> | undefined;\n\n constructor(\n public manager: DragDropManager,\n public options?: PointerSensorOptions\n ) {\n super(manager);\n\n this.handleCancel = this.handleCancel.bind(this);\n this.handlePointerUp = this.handlePointerUp.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n protected activationConstraints(\n event: PointerEvent,\n source: Draggable,\n options = this.options\n ) {\n const {activationConstraints = defaults.activationConstraints} =\n options ?? {};\n\n const constraints =\n typeof activationConstraints === 'function'\n ? activationConstraints(event, source)\n : activationConstraints;\n\n return constraints;\n }\n\n public bind(source: Draggable, options = this.options) {\n const unbind = effect(() => {\n const controller = new AbortController();\n const {signal} = controller;\n const listener: EventListener = (event: Event) => {\n if (isPointerEvent(event)) {\n this.handlePointerDown(event, source, options);\n }\n };\n let targets = [source.handle ?? source.element];\n\n if (options?.activatorElements) {\n if (Array.isArray(options.activatorElements)) {\n targets = options.activatorElements;\n } else {\n targets = options.activatorElements(source);\n }\n }\n\n for (const target of targets) {\n if (!target) continue;\n\n patchWindow(target.ownerDocument.defaultView);\n target.addEventListener('pointerdown', listener, {signal});\n }\n\n return () => controller.abort();\n });\n\n return unbind;\n }\n\n protected handlePointerDown(\n event: PointerEvent,\n source: Draggable,\n options: PointerSensorOptions | undefined\n ) {\n if (\n this.disabled ||\n !event.isPrimary ||\n event.button !== 0 ||\n !isElement(event.target) ||\n source.disabled ||\n isCapturedBySensor(event) ||\n !this.manager.dragOperation.status.idle\n ) {\n return;\n }\n\n const {preventActivation = defaults.preventActivation} = options ?? {};\n\n if (preventActivation?.(event, source)) {\n return;\n }\n\n const {target} = event;\n const isNativeDraggable =\n isHTMLElement(target) &&\n target.draggable &&\n target.getAttribute('draggable') === 'true';\n\n const offset = getFrameTransform(source.element);\n const {x, y} = getEventCoordinates(event);\n\n this.initialCoordinates = {\n x: x * offset.scaleX + offset.x,\n y: y * offset.scaleY + offset.y,\n };\n\n const constraints = this.activationConstraints(event, source, options);\n (event as any).sensor = this;\n\n const controller = new ActivationController<PointerEvent>(\n constraints,\n (event) => this.handleStart(source, event)\n );\n\n controller.signal.onabort = () => this.handleCancel(event);\n controller.onEvent(event);\n\n this.controller = controller;\n\n const documents = getDocuments();\n const unbindListeners = this.listeners.bind(documents, [\n {\n type: 'pointermove',\n listener: (event: PointerEvent) =>\n this.handlePointerMove(event, source),\n },\n {\n type: 'pointerup',\n listener: this.handlePointerUp,\n options: {\n capture: true,\n },\n },\n { \n 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 pointerCaptureTarget.setPointerCapture(event.pointerId);\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 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 StyleSheetManager,\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(input.modifiers, defaultPreset.modifiers);\n\n super({\n ...input,\n plugins: [ScrollListener, Scroller, StyleSheetManager, ...plugins],\n sensors,\n modifiers,\n });\n }\n}\n","import {\n Draggable as AbstractDraggable,\n Sensor,\n descriptor,\n} from '@dnd-kit/abstract';\nimport type {Data, DraggableInput} from '@dnd-kit/abstract';\nimport {reactive} from '@dnd-kit/state';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Sensors} from '../../sensors/types.ts';\n\nexport type FeedbackType = 'default' | 'move' | 'clone' | 'none';\n\nexport interface Input<T extends Data = Data> extends DraggableInput<T> {\n handle?: Element;\n element?: Element;\n feedback?: FeedbackType;\n sensors?: Sensors;\n}\n\nexport class Draggable<T extends Data = Data> extends AbstractDraggable<\n T,\n DragDropManager\n> {\n constructor(\n {\n element,\n effects = () => [],\n handle,\n feedback = 'default',\n ...input\n }: Input<T>,\n manager: DragDropManager | undefined\n ) {\n super(\n {\n effects: () => [\n ...effects(),\n () => {\n const {manager} = this;\n\n if (!manager) return;\n\n const sensors = this.sensors?.map(descriptor) ?? [\n ...manager.sensors,\n ];\n const unbindFunctions = sensors.map((entry) => {\n const sensorInstance =\n entry instanceof Sensor\n ? entry\n : manager.registry.register(entry.plugin);\n const options =\n entry instanceof Sensor ? undefined : entry.options;\n\n const unbind = sensorInstance.bind(this, options);\n return unbind;\n });\n\n return function cleanup() {\n unbindFunctions.forEach((unbind) => unbind());\n };\n },\n ],\n ...input,\n },\n manager\n );\n\n this.element = element;\n this.handle = handle;\n this.feedback = feedback;\n }\n\n @reactive\n public accessor handle: Element | undefined;\n\n @reactive\n public accessor element: Element | undefined;\n\n @reactive\n public accessor feedback: FeedbackType;\n}\n","import {Droppable as AbstractDroppable} from '@dnd-kit/abstract';\nimport type {\n Data,\n DroppableInput as AbstractDroppableInput,\n} from '@dnd-kit/abstract';\nimport {defaultCollisionDetection} from '@dnd-kit/collision';\nimport type {CollisionDetector} from '@dnd-kit/collision';\nimport {reactive, signal, untracked} from '@dnd-kit/state';\nimport type {BoundingRectangle, Shape} from '@dnd-kit/geometry';\nimport {DOMRectangle, PositionObserver} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/manager.ts';\n\ntype OptionalInput = 'collisionDetector';\n\nexport interface Input<T extends Data = Data>\n extends Omit<AbstractDroppableInput<T>, OptionalInput> {\n collisionDetector?: CollisionDetector;\n element?: Element;\n}\n\nexport class Droppable<T extends Data = Data> extends AbstractDroppable<\n T,\n DragDropManager\n> {\n constructor(\n {element, effects = () => [], ...input}: Input<T>,\n manager: DragDropManager | undefined\n ) {\n const {collisionDetector = defaultCollisionDetection} = input;\n const updateShape = (boundingClientRect?: BoundingRectangle | null) => {\n const {manager, element} = this;\n\n if (!element || boundingClientRect === null) {\n this.shape = undefined;\n return undefined;\n }\n\n if (!manager) return;\n\n const updatedShape = new DOMRectangle(element);\n\n const shape = untracked(() => this.shape);\n if (updatedShape && shape?.equals(updatedShape)) {\n return shape;\n }\n\n this.shape = updatedShape;\n\n return updatedShape;\n };\n\n const observePosition = signal(false);\n\n super(\n {\n ...input,\n collisionDetector,\n effects: () => [\n ...effects(),\n () => {\n const {element, manager} = this;\n if (!manager) return;\n\n const {dragOperation} = manager;\n const {source} = dragOperation;\n\n observePosition.value = Boolean(\n source &&\n dragOperation.status.initialized &&\n element &&\n !this.disabled &&\n this.accepts(source)\n );\n },\n () => {\n const {element} = this;\n\n if (observePosition.value && element) {\n const positionObserver = new PositionObserver(\n element,\n updateShape\n );\n\n return () => {\n positionObserver.disconnect();\n this.shape = undefined;\n };\n }\n },\n () => {\n if (this.manager?.dragOperation.status.initialized) {\n return () => {\n this.shape = undefined;\n };\n }\n },\n ],\n },\n manager\n );\n\n this.element = element;\n this.refreshShape = () => updateShape();\n }\n\n @reactive\n accessor #element: Element | undefined;\n\n @reactive\n public accessor proxy: Element | undefined;\n\n set element(element: Element | undefined) {\n this.#element = element;\n }\n\n get element() {\n return this.proxy ?? this.#element;\n }\n\n public refreshShape: () => Shape | undefined;\n}\n"]}
|