@dnd-kit/dom 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.cjs +2 -12
- package/index.cjs.map +1 -1
- package/index.d.cts +1 -2
- package/index.d.ts +1 -2
- package/index.js +2 -12
- package/index.js.map +1 -1
- package/package.json +5 -5
- package/sortable.cjs +1 -3
- package/sortable.cjs.map +1 -1
- package/sortable.js +1 -3
- package/sortable.js.map +1 -1
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/feedback/constants.ts","src/core/plugins/feedback/utilities.ts","src/core/plugins/feedback/Feedback.ts","src/core/plugins/scrolling/ScrollLock.ts","src/core/plugins/scrolling/ScrollIntent.ts","src/core/plugins/scrolling/Scroller.ts","src/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/PointerSensor.ts","src/core/manager/renderer.ts","src/core/manager/manager.ts","src/core/entities/draggable/draggable.ts","src/core/entities/droppable/droppable.ts"],"names":["manager","Plugin","_a","document","generateUniqueId","_b","_c","untracked","tX","tY","showPopover","effect","transform","status","initialTranslate","element","translate","options","delta","getDocument","_dec","_init","reactive","Direction","Axes","computed","isKeyboardEvent","ScrollDirection","canScroll","CorePlugin","isElement","DOMRectangle","getWindow","event","Sensor","Listeners","isHTMLElement","getFrameTransform","configurator","noop","scheduler","AbstractDragDropManager","renderer","AbstractDraggable","effects","_element_dec","_element","AbstractDroppable","signal"],"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) 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.innerText = 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 {effects} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\nimport {isSafari, generateUniqueId} 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 id?: string;\n idPrefix?: {\n description?: string;\n announcement?: string;\n };\n announcements?: Announcements;\n screenReaderInstructions?: ScreenReaderInstructions;\n}\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 } = 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\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 announcement = getAnnouncement?.(event, manager);\n\n if (announcement && liveRegionElement) {\n liveRegionElement.innerText = announcement;\n }\n }\n );\n }\n );\n\n const initialize = () => {\n hiddenTextElement = createHiddenText(\n descriptionId,\n screenReaderInstructions.draggable\n );\n liveRegionElement = createLiveRegion(announcementId);\n\n document.body.append(hiddenTextElement, liveRegionElement);\n };\n\n const cleanupEffects = effects(() => {\n for (const draggable of manager.registry.draggables.value) {\n const {element, handle} = draggable;\n const activator = handle ?? element;\n\n if (activator) {\n if (!hiddenTextElement || !liveRegionElement) {\n initialize();\n }\n\n if (\n (!isFocusable(activator) || isSafari()) &&\n !activator.hasAttribute('tabindex')\n ) {\n activator.setAttribute('tabindex', '0');\n }\n\n if (\n !activator.hasAttribute('role') &&\n !(activator.tagName.toLowerCase() === 'button')\n ) {\n activator.setAttribute('role', defaultAttributes.role);\n }\n\n if (!activator.hasAttribute('role-description')) {\n activator.setAttribute(\n 'aria-roledescription',\n defaultAttributes.roleDescription\n );\n }\n\n if (!activator.hasAttribute('aria-describedby')) {\n activator.setAttribute('aria-describedby', descriptionId);\n }\n\n for (const key of ['aria-pressed', 'aria-grabbed']) {\n activator.setAttribute(key, String(draggable.isDragging));\n }\n\n activator.setAttribute('aria-disabled', String(draggable.disabled));\n }\n }\n\n this.destroy = () => {\n hiddenTextElement?.remove();\n liveRegionElement?.remove();\n eventListeners.forEach((unsubscribe) => unsubscribe());\n cleanupEffects();\n };\n });\n }\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\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'} = this.options ?? {};\n\n if (dragOperation.status.initialized) {\n const document = doc.value;\n const style = document.createElement('style');\n style.innerText = `* { cursor: ${cursor} !important; }`;\n document.head.appendChild(style);\n\n return () => style.remove();\n }\n });\n }\n}\n","export const ATTR_PREFIX = 'data-dnd-';\nexport const CSS_PREFIX = '--dnd-';\nexport const ATTRIBUTE = `${ATTR_PREFIX}dragging`;\nexport const PLACEHOLDER_ATTRIBUTE = `${ATTR_PREFIX}placeholder`;\n\nexport const IGNORED_ATTRIBUTES = [\n ATTRIBUTE,\n PLACEHOLDER_ATTRIBUTE,\n 'popover',\n 'aria-pressed',\n 'aria-grabbing',\n];\n\nexport const IGNORED_STYLES = ['view-transition-name'];\n\nexport const CSS_RULES = `\n :root [${ATTRIBUTE}] {\n position: fixed !important;\n pointer-events: none !important;\n touch-action: none;\n z-index: calc(infinity);\n will-change: translate;\n top: var(${CSS_PREFIX}top, 0px) !important;\n left: var(${CSS_PREFIX}left, 0px) !important;\n right: unset !important;\n bottom: unset !important;\n width: var(${CSS_PREFIX}width, auto);\n max-width: var(${CSS_PREFIX}width, auto);\n height: var(${CSS_PREFIX}height, auto);\n max-height: var(${CSS_PREFIX}height, auto);\n box-sizing: border-box;\n }\n\n :root [${PLACEHOLDER_ATTRIBUTE}] {\n transition: none;\n }\n\n :root [${PLACEHOLDER_ATTRIBUTE}='hidden'] {\n visibility: hidden;\n }\n\n [${ATTRIBUTE}] * {\n pointer-events: none !important;\n }\n [${ATTRIBUTE}][style*='${CSS_PREFIX}translate'] {\n translate: var(${CSS_PREFIX}translate) !important;\n }\n [style*='${CSS_PREFIX}transition'] {\n transition: var(${CSS_PREFIX}transition) !important;\n }\n [style*='${CSS_PREFIX}scale'] {\n scale: var(${CSS_PREFIX}scale) !important;\n transform-origin: var(${CSS_PREFIX}transform-origin) !important;\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 }\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 effect,\n reactive,\n untracked,\n type CleanupFunction,\n} from '@dnd-kit/state';\nimport {configurator, Plugin} from '@dnd-kit/abstract';\nimport {\n animateTransform,\n DOMRectangle,\n isKeyboardEvent,\n getComputedStyles,\n getDocument,\n getFrameTransform,\n getWindow,\n isHTMLElement,\n parseTranslate,\n showPopover,\n supportsPopover,\n supportsStyle,\n Styles,\n isKeyframeEffect,\n} from '@dnd-kit/dom/utilities';\nimport {Coordinates, Rectangle} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Draggable} from '../../entities/index.ts';\n\nimport {\n ATTRIBUTE,\n CSS_PREFIX,\n CSS_RULES,\n IGNORED_ATTRIBUTES,\n IGNORED_STYLES,\n} from './constants.ts';\nimport {\n createPlaceholder,\n isSameFrame,\n isTableRow,\n preventPopoverClose,\n} from './utilities.ts';\n\nexport interface FeedbackOptions {\n rootElement?: Element | ((source: Draggable) => Element);\n}\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 private state: State = {\n initial: {},\n current: {},\n };\n\n constructor(manager: DragDropManager, options?: FeedbackOptions) {\n super(manager);\n\n this.registerEffect(this.#injectStyles);\n this.registerEffect(this.#render);\n }\n\n #render() {\n const {state, manager, options} = this;\n const {dragOperation} = manager;\n const {position, source, status} = dragOperation;\n\n if (status.idle) {\n state.current = {};\n state.initial = {};\n return;\n }\n\n if (!source) return;\n\n const {element, feedback} = source;\n\n if (\n !element ||\n feedback === 'none' ||\n !status.initialized ||\n status.initializing\n ) {\n return;\n }\n\n const {initial} = state;\n const feedbackElement = this.overlay ?? element;\n const frameTransform = getFrameTransform(feedbackElement);\n const elementFrameTransform = getFrameTransform(element);\n const crossFrame = !isSameFrame(element, feedbackElement);\n const shape = new DOMRectangle(element, {\n frameTransform: crossFrame ? elementFrameTransform : null,\n ignoreTransforms: !crossFrame,\n });\n const scaleDelta = {\n x: elementFrameTransform.scaleX / frameTransform.scaleX,\n y: elementFrameTransform.scaleY / frameTransform.scaleY,\n };\n\n let cleanup: CleanupFunction | undefined;\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 {transition, translate} = getComputedStyles(element);\n const clone = feedback === 'clone';\n\n const placeholder =\n feedback !== 'move' && !this.overlay\n ? createPlaceholder(source, clone ? 'clone' : 'hidden')\n : null;\n const isKeyboardOperation = untracked(() =>\n isKeyboardEvent(manager.dragOperation.activatorEvent)\n );\n\n if (translate !== 'none') {\n const parsedTranslate = parseTranslate(translate);\n\n if (parsedTranslate && !initial.translate) {\n initial.translate = parsedTranslate;\n }\n }\n\n if (!initial.transformOrigin) {\n const current = untracked(() => position.current);\n\n initial.transformOrigin = {\n x:\n (current.x - left * frameTransform.scaleX - frameTransform.x) /\n (width * frameTransform.scaleX),\n y:\n (current.y - top * frameTransform.scaleY - frameTransform.y) /\n (height * frameTransform.scaleY),\n };\n }\n\n const {transformOrigin} = initial;\n const relativeTop = top * frameTransform.scaleY + frameTransform.y;\n const relativeLeft = left * frameTransform.scaleX + frameTransform.x;\n\n if (!initial.coordinates) {\n initial.coordinates = {\n x: relativeLeft,\n y: relativeTop,\n };\n\n // Compoensate for transformOrigin when scaling\n if (scaleDelta.x !== 1 || scaleDelta.y !== 1) {\n const {scaleX, scaleY} = elementFrameTransform;\n const {x: tX, y: tY} = transformOrigin;\n\n initial.coordinates.x += (width * scaleX - width) * tX;\n initial.coordinates.y += (height * scaleY - height) * tY;\n }\n }\n\n if (!initial.dimensions) {\n initial.dimensions = {width, height};\n }\n\n if (!initial.frameTransform) {\n initial.frameTransform = frameTransform;\n }\n\n const coordinatesDelta = {\n x: initial.coordinates.x - relativeLeft,\n y: initial.coordinates.y - relativeTop,\n };\n\n const sizeDelta = {\n width:\n (initial.dimensions.width * initial.frameTransform.scaleX -\n width * frameTransform.scaleX) *\n transformOrigin.x,\n height:\n (initial.dimensions.height * initial.frameTransform.scaleY -\n height * frameTransform.scaleY) *\n transformOrigin.y,\n };\n\n const delta = {\n x: coordinatesDelta.x / frameTransform.scaleX + sizeDelta.width,\n y: coordinatesDelta.y / frameTransform.scaleY + sizeDelta.height,\n };\n\n const projected = {\n left: left + delta.x,\n top: top + delta.y,\n };\n\n feedbackElement.setAttribute(ATTRIBUTE, 'true');\n\n const transform = untracked(() => dragOperation.transform);\n const initialTranslate = initial.translate ?? {x: 0, y: 0};\n const tX = transform.x * frameTransform.scaleX + initialTranslate.x;\n const tY = transform.y * frameTransform.scaleY + initialTranslate.y;\n const translateString = `${tX}px ${tY}px 0`;\n\n styles.set(\n {\n width: width,\n height: height,\n top: projected.top,\n left: projected.left,\n translate: translateString,\n scale: crossFrame ? `${scaleDelta.x} ${scaleDelta.y}` : '',\n 'transform-origin': `${transformOrigin.x * 100}% ${transformOrigin.y * 100}%`,\n },\n CSS_PREFIX\n );\n\n if (placeholder) {\n element.insertAdjacentElement('afterend', placeholder);\n\n if (options?.rootElement) {\n const root =\n typeof options.rootElement === 'function'\n ? options.rootElement(source)\n : options.rootElement;\n\n root.appendChild(element);\n }\n }\n\n if (supportsPopover(feedbackElement)) {\n if (!feedbackElement.hasAttribute('popover')) {\n feedbackElement.setAttribute('popover', 'manual');\n }\n showPopover(feedbackElement);\n feedbackElement.addEventListener('beforetoggle', preventPopoverClose);\n }\n\n const resizeObserver = new ResizeObserver(() => {\n if (!placeholder) return;\n\n const placeholderShape = new DOMRectangle(placeholder, {\n frameTransform,\n ignoreTransforms: true,\n });\n const origin = transformOrigin ?? {x: 1, y: 1};\n const dX = (width - placeholderShape.width) * origin.x + delta.x;\n const dY = (height - placeholderShape.height) * origin.y + delta.y;\n\n styles.set(\n {\n width: placeholderShape.width,\n height: placeholderShape.height,\n top: top + dY,\n left: left + dX,\n },\n CSS_PREFIX\n );\n\n const window = getWindow(element);\n\n /* Table cells need to have their width set explicitly because the feedback element is position fixed */\n if (isTableRow(element) && isTableRow(placeholder)) {\n const cells = Array.from(element.cells);\n const placeholderCells = Array.from(placeholder.cells);\n\n for (const [index, cell] of cells.entries()) {\n const placeholderCell = placeholderCells[index];\n\n cell.style.width = `${placeholderCell.offsetWidth}px`;\n }\n }\n\n dragOperation.shape = new DOMRectangle(element);\n });\n\n /* Initialize drag operation shape */\n dragOperation.shape = new DOMRectangle(feedbackElement);\n\n if (untracked(() => source.status) === 'idle') {\n requestAnimationFrame(() => (source.status = 'dragging'));\n }\n\n let elementMutationObserver: MutationObserver | undefined;\n let documentMutationObserver: MutationObserver | undefined;\n\n if (placeholder) {\n resizeObserver.observe(placeholder);\n\n elementMutationObserver = new MutationObserver(() => {\n for (const attribute of Array.from(element.attributes)) {\n if (\n attribute.name.startsWith('aria-') ||\n IGNORED_ATTRIBUTES.includes(attribute.name)\n ) {\n continue;\n }\n\n if (attribute.name === 'style') {\n if (supportsStyle(element) && supportsStyle(placeholder)) {\n for (const key of Object.values(element.style)) {\n if (\n key.startsWith(CSS_PREFIX) ||\n IGNORED_STYLES.includes(key)\n ) {\n continue;\n }\n\n placeholder.style.setProperty(\n key,\n element.style.getPropertyValue(key)\n );\n }\n }\n continue;\n }\n\n placeholder.setAttribute(attribute.name, attribute.value);\n }\n\n if (clone) {\n placeholder.innerHTML = element.innerHTML;\n }\n });\n\n elementMutationObserver.observe(element, {\n attributes: true,\n subtree: true,\n });\n\n /* Make sure the placeholder and the source element positions are always in sync */\n documentMutationObserver = new MutationObserver((entries) => {\n for (const entry of entries) {\n if (entry.addedNodes.length === 0) continue;\n\n for (const node of Array.from(entry.addedNodes)) {\n if (\n node.contains(element) &&\n element.nextElementSibling !== placeholder\n ) {\n /* Update the position of the placeholder when the source element is moved */\n element.insertAdjacentElement('afterend', placeholder);\n /* Force the source element to be promoted back to the top layer */\n showPopover(feedbackElement);\n return;\n }\n\n if (\n node.contains(placeholder) &&\n placeholder.previousElementSibling !== element\n ) {\n /* Update the position of the source element when the placeholder is moved */\n placeholder.insertAdjacentElement('beforebegin', element);\n /* Force the source element to be promoted back to the top layer */\n showPopover(feedbackElement);\n return;\n }\n }\n }\n });\n\n /* Observe mutations on the element's owner document body */\n documentMutationObserver.observe(element.ownerDocument.body, {\n childList: true,\n subtree: true,\n });\n }\n\n // Update transform on move\n const cleanupEffect = effect(() => {\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 translateTransition = isKeyboardOperation\n ? '250ms cubic-bezier(0.25, 1, 0.5, 1)'\n : '0ms linear';\n\n const initialTranslate = initial.translate ?? {x: 0, y: 0};\n const x = transform.x / frameTransform.scaleX + initialTranslate.x;\n const y = transform.y / frameTransform.scaleY + initialTranslate.y;\n\n styles.set(\n {\n transition: `${transition}, translate ${translateTransition}`,\n translate: `${x}px ${y}px 0`,\n },\n CSS_PREFIX\n );\n\n dragOperation.shape = new DOMRectangle(feedbackElement);\n\n state.current.translate = {\n x,\n y,\n };\n }\n });\n\n const id = manager.dragOperation.source?.id;\n\n const restoreFocus = () => {\n if (!isKeyboardOperation || id == null) {\n return;\n }\n\n const draggable = manager.registry.draggables.get(id);\n const element = draggable?.handle ?? draggable?.element;\n\n if (isHTMLElement(element)) {\n element.focus();\n }\n };\n\n let dropEffectCleanup: CleanupFunction | undefined;\n cleanup = () => {\n elementMutationObserver?.disconnect();\n documentMutationObserver?.disconnect();\n resizeObserver.disconnect();\n\n if (supportsPopover(feedbackElement)) {\n feedbackElement.removeEventListener(\n 'beforetoggle',\n preventPopoverClose\n );\n feedbackElement.removeAttribute('popover');\n }\n\n feedbackElement.removeAttribute(ATTRIBUTE);\n styles.reset();\n\n source.status = 'idle';\n\n const moved = state.current.translate != null;\n\n if (\n placeholder &&\n (moved ||\n placeholder.parentElement !== feedbackElement.parentElement) &&\n feedbackElement.isConnected\n ) {\n placeholder.replaceWith(feedbackElement);\n }\n\n placeholder?.remove();\n\n cleanupEffect();\n dropEffectCleanup?.();\n };\n\n // Drop animation\n dropEffectCleanup = effect(() => {\n if (dragOperation.status.dropped) {\n const onComplete = cleanup;\n cleanup = undefined;\n\n source.status = 'dropping';\n\n let translate = state.current.translate;\n const moved = translate != null;\n\n if (!translate && element !== feedbackElement) {\n translate = {\n x: 0,\n y: 0,\n };\n }\n\n if (!translate) {\n onComplete?.();\n return;\n }\n\n manager.renderer.rendering.then(() => {\n /* Force the source element to be promoted to the top layer before animating it */\n showPopover(feedbackElement);\n\n const target = placeholder ?? element;\n const animations = feedbackElement.getAnimations();\n\n if (animations.length) {\n animations.forEach((animation) => {\n const {effect} = animation;\n\n if (\n isKeyframeEffect(effect) &&\n effect.getKeyframes().some((keyframe) => keyframe.translate)\n ) {\n animation.finish();\n }\n });\n }\n\n const options = {\n frameTransform: isSameFrame(feedbackElement, target)\n ? null\n : undefined,\n };\n const current = new DOMRectangle(feedbackElement, options);\n const final = new DOMRectangle(target, options);\n const delta = Rectangle.delta(current, final, source.alignment);\n const finalTranslate = {\n x: translate.x - delta.x,\n y: translate.y - delta.y,\n };\n const heightKeyframes =\n Math.round(current.intrinsicHeight) !==\n Math.round(final.intrinsicHeight)\n ? {\n minHeight: [\n `${current.intrinsicHeight}px`,\n `${final.intrinsicHeight}px`,\n ],\n maxHeight: [\n `${current.intrinsicHeight}px`,\n `${final.intrinsicHeight}px`,\n ],\n }\n : {};\n const widthKeyframes =\n Math.round(current.intrinsicWidth) !==\n Math.round(final.intrinsicWidth)\n ? {\n minWidth: [\n `${current.intrinsicWidth}px`,\n `${final.intrinsicWidth}px`,\n ],\n maxWidth: [\n `${current.intrinsicWidth}px`,\n `${final.intrinsicWidth}px`,\n ],\n }\n : {};\n\n animateTransform({\n element: feedbackElement,\n keyframes: {\n ...heightKeyframes,\n ...widthKeyframes,\n translate: [\n `${translate.x}px ${translate.y}px 0`,\n `${finalTranslate.x}px ${finalTranslate.y}px 0`,\n ],\n },\n options: {\n duration: moved || feedbackElement !== element ? 250 : 0,\n easing: 'ease',\n },\n onReady() {\n styles.remove(['translate'], CSS_PREFIX);\n },\n onFinish() {\n onComplete?.();\n requestAnimationFrame(restoreFocus);\n },\n });\n });\n }\n });\n\n return () => cleanup?.();\n }\n\n #injectStyles() {\n const {status, source, target} = this.manager.dragOperation;\n\n if (status.initialized) {\n const sourceDocument = getDocument(source?.element ?? null);\n const targetDocument = getDocument(target?.element ?? null);\n const documents = new Set([sourceDocument, targetDocument]);\n\n for (const doc of documents) {\n if (!injectedStyleTags.has(doc)) {\n const style = document.createElement('style');\n style.innerText = CSS_RULES;\n doc.head.prepend(style);\n injectedStyleTags.set(doc, style);\n }\n }\n }\n }\n\n public destroy(): void {\n super.destroy();\n\n injectedStyleTags.forEach((style) => style.remove());\n injectedStyleTags.clear();\n }\n\n static configure = configurator(Feedback);\n}\n\nconst injectedStyleTags = new Map<Document, HTMLStyleElement>();\n","import {reactive} from '@dnd-kit/state';\nimport {ScrollDirection as Direction} from '@dnd-kit/dom/utilities';\n\nconst LOCKED = true;\nconst UNLOCKED = false;\n\nexport class ScrollLock {\n @reactive private accessor [Direction.Forward] = LOCKED;\n @reactive private accessor [Direction.Reverse] = LOCKED;\n\n public isLocked(direction?: Direction): boolean {\n if (direction === Direction.Idle) {\n return false;\n }\n\n if (direction == null) {\n return (\n this[Direction.Forward] === LOCKED && this[Direction.Reverse] === LOCKED\n );\n }\n\n return this[direction] === LOCKED;\n }\n\n public unlock(direction: Direction) {\n if (direction === Direction.Idle) {\n return;\n }\n\n this[direction] = UNLOCKED;\n }\n}\n","import {batch, effect, signal, type Signal} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\nimport {Axes} from '@dnd-kit/geometry';\nimport type {Coordinates} from '@dnd-kit/geometry';\nimport {ScrollDirection} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollLock} from './ScrollLock.ts';\n\nconst DIRECTIONS = [ScrollDirection.Forward, ScrollDirection.Reverse];\n\nclass ScrollIntent {\n public x = new ScrollLock();\n public y = new ScrollLock();\n\n public isLocked(): boolean {\n return this.x.isLocked() && this.y.isLocked();\n }\n}\n\nexport class ScrollIntentTracker extends Plugin<DragDropManager> {\n private signal: Signal<ScrollIntent | null>;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n const scrollIntent = signal<ScrollIntent>(new ScrollIntent());\n let previousDelta: Coordinates | null = null;\n\n this.signal = scrollIntent;\n\n effect(() => {\n const {status} = manager.dragOperation;\n\n if (!status.initialized) {\n previousDelta = null;\n scrollIntent.value = new ScrollIntent();\n return;\n }\n\n const {delta} = manager.dragOperation.position;\n\n if (previousDelta) {\n const directions = {\n x: getDirection(delta.x, previousDelta.x),\n y: getDirection(delta.y, previousDelta.y),\n };\n\n const intent = scrollIntent.peek();\n\n batch(() => {\n for (const axis of Axes) {\n for (const direction of DIRECTIONS) {\n if (directions[axis] === direction) {\n intent[axis].unlock(direction);\n }\n }\n }\n\n scrollIntent.value = intent;\n });\n }\n\n previousDelta = delta;\n });\n }\n\n get current(): ScrollIntent | null {\n return this.signal.peek();\n }\n}\n\nfunction getDirection(a: number, b: number): ScrollDirection {\n return Math.sign(a - b);\n}\n","import {CorePlugin} from '@dnd-kit/abstract';\nimport {computed, deepEqual, reactive} from '@dnd-kit/state';\nimport {\n canScroll,\n detectScrollIntent,\n getScrollableAncestors,\n getElementFromPoint,\n ScrollDirection,\n scheduler,\n isKeyboardEvent,\n getDocument,\n getFrameTransform,\n} from '@dnd-kit/dom/utilities';\nimport {Axes, type Coordinates} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollIntentTracker} from './ScrollIntent.ts';\n\nexport class Scroller extends CorePlugin<DragDropManager> {\n public getScrollableElements: () => Set<Element> | null;\n\n private scrollIntentTracker: ScrollIntentTracker;\n\n @reactive\n public accessor autoScrolling = false;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n let previousElementFromPoint: Element | null = null;\n let previousScrollableElements: Set<Element> | null = null;\n const elementFromPoint = computed(() => {\n const {position, source} = manager.dragOperation;\n\n if (!position) {\n return null;\n }\n\n const element = getElementFromPoint(\n getDocument(source?.element),\n position.current\n );\n\n if (element) {\n previousElementFromPoint = element;\n }\n\n return element ?? previousElementFromPoint;\n });\n const scrollableElements = computed(() => {\n const element = elementFromPoint.value;\n const {documentElement} = getDocument(element);\n\n if (!element || element === documentElement) {\n const {target} = manager.dragOperation;\n const targetElement = target?.element;\n\n if (targetElement) {\n const elements = getScrollableAncestors(targetElement, {\n excludeElement: false,\n });\n previousScrollableElements = elements;\n\n return elements;\n }\n }\n\n if (element) {\n const elements = getScrollableAncestors(element, {\n excludeElement: false,\n });\n\n if (\n this.autoScrolling &&\n previousScrollableElements &&\n elements.size < previousScrollableElements?.size\n ) {\n return previousScrollableElements;\n }\n\n previousScrollableElements = elements;\n\n return elements;\n }\n\n previousScrollableElements = null;\n\n return null;\n }, deepEqual);\n\n this.getScrollableElements = () => {\n return scrollableElements.value;\n };\n\n this.scrollIntentTracker = new ScrollIntentTracker(manager);\n\n this.destroy = manager.monitor.addEventListener('dragmove', (event) => {\n if (\n this.disabled ||\n event.defaultPrevented ||\n !isKeyboardEvent(manager.dragOperation.activatorEvent) ||\n !event.by\n ) {\n return;\n }\n\n // Prevent the move event if we can scroll to the new coordinates\n if (this.scroll({by: event.by})) {\n event.preventDefault();\n }\n });\n }\n\n #meta: {element: Element; by: Coordinates} | undefined;\n\n #scroll = () => {\n if (!this.#meta) {\n return;\n }\n\n const {element, by} = this.#meta;\n\n if (by.y) element.scrollTop += by.y;\n if (by.x) element.scrollLeft += by.x;\n };\n\n public scroll = (options?: {by: Coordinates}): boolean => {\n if (this.disabled) {\n return false;\n }\n\n const elements = this.getScrollableElements();\n\n if (!elements) {\n this.#meta = undefined;\n return false;\n }\n\n const {position} = this.manager.dragOperation;\n const currentPosition = position?.current;\n\n if (currentPosition) {\n const {by} = options ?? {};\n const intent = by\n ? {\n x: getScrollIntent(by.x),\n y: getScrollIntent(by.y),\n }\n : undefined;\n const scrollIntent = intent\n ? undefined\n : this.scrollIntentTracker.current;\n\n if (scrollIntent?.isLocked()) {\n return false;\n }\n\n for (const scrollableElement of elements) {\n const elementCanScroll = canScroll(scrollableElement, by);\n\n if (elementCanScroll.x || elementCanScroll.y) {\n const {speed, direction} = detectScrollIntent(\n scrollableElement,\n currentPosition,\n intent\n );\n\n if (scrollIntent) {\n for (const axis of Axes) {\n if (scrollIntent[axis].isLocked(direction[axis])) {\n speed[axis] = 0;\n direction[axis] = 0;\n }\n }\n }\n\n if (direction.x || direction.y) {\n const {x, y} = by ?? direction;\n const scrollLeftBy = x * speed.x;\n const scrollTopBy = y * speed.y;\n\n if (scrollLeftBy || scrollTopBy) {\n const previousScrollBy = this.#meta?.by;\n\n if (this.autoScrolling && previousScrollBy) {\n const scrollIntentMismatch =\n (previousScrollBy.x && !scrollLeftBy) ||\n (previousScrollBy.y && !scrollTopBy);\n\n if (scrollIntentMismatch) continue;\n }\n\n this.#meta = {\n element: scrollableElement,\n by: {\n x: scrollLeftBy,\n y: scrollTopBy,\n },\n };\n\n scheduler.schedule(this.#scroll);\n\n return true;\n }\n }\n }\n }\n }\n\n this.#meta = undefined;\n return false;\n };\n}\n\nfunction getScrollIntent(value: number) {\n if (value > 0) {\n return ScrollDirection.Forward;\n }\n\n if (value < 0) {\n return ScrollDirection.Reverse;\n }\n\n return ScrollDirection.Idle;\n}\n","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';\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(scroller.scroll, AUTOSCROLL_INTERVAL);\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\nexport class PreventSelection extends Plugin<DragDropManager> {\n constructor(public manager: DragDropManager) {\n super(manager);\n\n this.destroy = effect(() => {\n const {dragOperation} = this.manager;\n\n if (dragOperation.status.initialized) {\n const style = document.createElement('style');\n style.innerText = `* { 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 {Sensor} from '@dnd-kit/abstract';\nimport {batch, effect} from '@dnd-kit/state';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport {\n getDocument,\n getWindow,\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 keyboardCodes?: KeyboardCodes;\n shouldActivate?(args: {\n event: KeyboardEvent;\n source: Draggable;\n manager: DragDropManager;\n }): boolean;\n}\n\nconst DEFAULT_SHOULD_ACTIVATE = (args: {\n event: KeyboardEvent;\n source: Draggable;\n manager: DragDropManager;\n}) => {\n const {event, source} = args;\n const target = source.handle ?? source.element;\n return event.target === target;\n};\n\nconst DEFAULT_KEYBOARD_CODES: 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\nconst DEFAULT_OFFSET = 10;\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 = DEFAULT_KEYBOARD_CODES,\n shouldActivate = DEFAULT_SHOULD_ACTIVATE,\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 (shouldActivate({event, source, manager: this.manager})) {\n this.handleStart(event, source, options);\n }\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 sourceWindow = getWindow(sourceDocument);\n\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 this.listeners.bind(sourceWindow, [\n {type: 'resize', listener: () => this.handleEnd(event, true)},\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 = DEFAULT_KEYBOARD_CODES} = 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 offset = {\n x: 0,\n y: 0,\n };\n\n if (!shape) {\n return;\n }\n\n switch (direction) {\n case 'up':\n offset = {x: 0, y: -DEFAULT_OFFSET * factor};\n break;\n case 'down':\n offset = {x: 0, y: DEFAULT_OFFSET * factor};\n break;\n case 'left':\n offset = {x: -DEFAULT_OFFSET * factor, y: 0};\n break;\n case 'right':\n offset = {x: DEFAULT_OFFSET * factor, y: 0};\n break;\n }\n\n if (offset?.x || offset?.y) {\n event.preventDefault();\n\n this.manager.actions.move({\n event,\n by: offset,\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\nfunction isKeycode(event: KeyboardEvent, codes: KeyCode[]) {\n return codes.includes(event.code);\n}\n","import {effect} from '@dnd-kit/state';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport {Sensor, configurator} from '@dnd-kit/abstract';\nimport {\n exceedsDistance,\n type Distance,\n type Coordinates,\n} from '@dnd-kit/geometry';\nimport {\n getDocument,\n isElement,\n isHTMLElement,\n isPointerEvent,\n Listeners,\n getFrameTransform,\n} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Draggable} from '../../entities/index.ts';\n\nexport interface DelayConstraint {\n value: number;\n tolerance: Distance;\n}\n\nexport interface DistanceConstraint {\n value: Distance;\n tolerance?: Distance;\n}\n\nexport interface ActivationConstraints {\n distance?: DistanceConstraint;\n delay?: DelayConstraint;\n}\n\nexport interface PointerSensorOptions {\n activationConstraints?:\n | ActivationConstraints\n | ((\n event: PointerEvent,\n source: Draggable\n ) => ActivationConstraints | 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 #clearTimeout: CleanupFunction | undefined;\n\n protected listeners = new Listeners();\n\n protected initialCoordinates: Coordinates | 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 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 (isPointerEvent(event)) {\n this.handlePointerDown(event, source, options);\n }\n };\n\n if (target) {\n patchWindow(target.ownerDocument.defaultView);\n\n target.addEventListener('pointerdown', listener);\n\n return () => {\n target.removeEventListener('pointerdown', listener);\n };\n }\n });\n\n return unbind;\n }\n\n protected handlePointerDown(\n event: PointerEvent,\n source: Draggable,\n options: PointerSensorOptions = {}\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 {target} = event;\n const isNativeDraggable =\n isHTMLElement(target) &&\n target.draggable &&\n target.getAttribute('draggable') === 'true';\n\n const offset = getFrameTransform(source.element);\n\n this.initialCoordinates = {\n x: event.clientX * offset.scaleX + offset.x,\n y: event.clientY * offset.scaleY + offset.y,\n };\n\n const {activationConstraints} = options;\n const constraints =\n typeof activationConstraints === 'function'\n ? activationConstraints(event, source)\n : activationConstraints;\n\n (event as any).sensor = this;\n\n if (!constraints?.delay && !constraints?.distance) {\n this.handleStart(source, event);\n } else {\n const {delay} = constraints;\n\n if (delay) {\n const timeout = setTimeout(\n () => this.handleStart(source, event),\n delay.value\n );\n\n this.#clearTimeout = () => {\n clearTimeout(timeout);\n this.#clearTimeout = undefined;\n };\n }\n }\n\n const ownerDocument = getDocument(event.target);\n\n const unbindListeners = this.listeners.bind(ownerDocument, [\n {\n type: 'pointermove',\n listener: (event: PointerEvent) =>\n this.handlePointerMove(event, source, options),\n },\n {\n type: 'pointerup',\n listener: this.handlePointerUp,\n options: {\n capture: true,\n },\n },\n {\n // Cancel activation if there is a competing Drag and Drop interaction\n type: 'dragstart',\n listener: isNativeDraggable ? this.handleCancel : preventDefault,\n options: {\n capture: true,\n },\n },\n ]);\n\n const cleanup = () => {\n unbindListeners();\n this.#clearTimeout?.();\n this.initialCoordinates = undefined;\n };\n\n this.#cleanup.add(cleanup);\n }\n\n protected handlePointerMove(\n event: PointerEvent,\n source: Draggable,\n options: PointerSensorOptions\n ) {\n const coordinates = {\n x: event.clientX,\n y: event.clientY,\n };\n\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 if (this.manager.dragOperation.status.dragging) {\n event.preventDefault();\n event.stopPropagation();\n\n this.manager.actions.move({event, to: coordinates});\n return;\n }\n\n if (!this.initialCoordinates) {\n return;\n }\n\n const delta = {\n x: coordinates.x - this.initialCoordinates.x,\n y: coordinates.y - this.initialCoordinates.y,\n };\n const {activationConstraints} = options;\n const constraints =\n typeof activationConstraints === 'function'\n ? activationConstraints(event, source)\n : activationConstraints;\n const {distance, delay} = constraints ?? {};\n\n if (distance) {\n if (\n distance.tolerance != null &&\n exceedsDistance(delta, distance.tolerance)\n ) {\n return this.handleCancel(event);\n }\n if (exceedsDistance(delta, distance.value)) {\n return this.handleStart(source, event);\n }\n }\n\n if (delay) {\n if (exceedsDistance(delta, delay.tolerance)) {\n return this.handleCancel(event);\n }\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 this.#clearTimeout?.();\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 unbind = this.listeners.bind(ownerDocument, [\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 type: 'lostpointercapture',\n listener: (event: PointerEvent) => {\n if (event.target !== pointerCaptureTarget) return;\n\n this.handlePointerUp(event);\n },\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.#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\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 type {Renderer} from '@dnd-kit/abstract';\nimport {scheduler} from '@dnd-kit/dom/utilities';\n\nfunction noop() {}\n\nexport const renderer: Renderer = {\n get rendering() {\n return scheduler.schedule(noop);\n },\n};\n","import {\n DragDropManager as AbstractDragDropManager,\n DragDropManagerInput,\n type Renderer,\n type Modifiers,\n type Plugins,\n type Sensors,\n} from '@dnd-kit/abstract';\nimport {isElement} from '@dnd-kit/dom/utilities';\n\nimport type {Draggable, Droppable} from '../entities/index.ts';\nimport {\n Accessibility,\n AutoScroller,\n Cursor,\n Feedback,\n Scroller,\n ScrollListener,\n PreventSelection,\n} from '../plugins/index.ts';\nimport {KeyboardSensor, PointerSensor} from '../sensors/index.ts';\n\nimport {renderer} from './renderer.ts';\n\nexport interface Input extends DragDropManagerInput<DragDropManager> {}\n\nexport const defaultPreset: {\n modifiers: Modifiers<DragDropManager>;\n plugins: Plugins<DragDropManager>;\n renderer: Renderer;\n sensors: Sensors<DragDropManager>;\n} = {\n renderer,\n modifiers: [],\n plugins: [Accessibility, AutoScroller, Cursor, Feedback, PreventSelection],\n sensors: [\n PointerSensor.configure({\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 delay: {value: 250, tolerance: 5},\n };\n }\n return {\n delay: {value: 200, tolerance: 10},\n distance: {value: 5},\n };\n },\n }),\n KeyboardSensor,\n ],\n};\n\nexport class DragDropManager<\n T extends Draggable = Draggable,\n U extends Droppable = Droppable,\n> extends AbstractDragDropManager<Draggable, Droppable> {\n constructor(input: Input = {}) {\n const {\n plugins = defaultPreset.plugins,\n sensors = defaultPreset.sensors,\n modifiers = [],\n renderer = defaultPreset.renderer,\n } = input;\n\n super({\n ...input,\n plugins: [ScrollListener, Scroller, ...plugins],\n sensors,\n modifiers,\n renderer,\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/index.ts';\n\nexport type FeedbackType = 'default' | 'move' | 'clone' | 'none';\n\nexport interface Input<T extends Data = Data> extends DraggableInput<T> {\n handle?: Element;\n element?: Element;\n feedback?: FeedbackType;\n sensors?: Sensors;\n}\n\nexport class Draggable<T extends Data = Data> extends AbstractDraggable<\n T,\n DragDropManager\n> {\n constructor(\n {\n element,\n effects = () => [],\n handle,\n feedback = 'default',\n ...input\n }: Input<T>,\n manager: DragDropManager | undefined\n ) {\n super(\n {\n effects: () => [\n ...effects(),\n () => {\n const {manager} = this;\n\n if (!manager) return;\n\n const sensors = this.sensors?.map(descriptor) ?? [\n ...manager.sensors,\n ];\n const unbindFunctions = sensors.map((entry) => {\n const sensorInstance =\n entry instanceof Sensor\n ? entry\n : manager.registry.register(entry.plugin);\n const options =\n entry instanceof Sensor ? undefined : entry.options;\n\n const unbind = sensorInstance.bind(this, options);\n return unbind;\n });\n\n return function cleanup() {\n unbindFunctions.forEach((unbind) => unbind());\n };\n },\n ],\n ...input,\n },\n manager\n );\n\n this.element = element;\n this.handle = handle;\n this.feedback = feedback;\n }\n\n @reactive\n public accessor handle: Element | undefined;\n\n @reactive\n public accessor element: Element | undefined;\n\n @reactive\n public accessor feedback: FeedbackType;\n}\n","import {Droppable as AbstractDroppable} from '@dnd-kit/abstract';\nimport type {\n Data,\n DroppableInput as AbstractDroppableInput,\n} from '@dnd-kit/abstract';\nimport {defaultCollisionDetection} from '@dnd-kit/collision';\nimport type {CollisionDetector} from '@dnd-kit/collision';\nimport {reactive, signal, untracked} from '@dnd-kit/state';\nimport type {BoundingRectangle, Shape} from '@dnd-kit/geometry';\nimport {DOMRectangle, PositionObserver} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/manager.ts';\n\ntype OptionalInput = 'collisionDetector';\n\nexport interface Input<T extends Data = Data>\n extends Omit<AbstractDroppableInput<T>, OptionalInput> {\n collisionDetector?: CollisionDetector;\n element?: Element;\n}\n\nexport class Droppable<T extends Data = Data> extends AbstractDroppable<\n T,\n DragDropManager\n> {\n constructor(\n {element, effects = () => [], ...input}: Input<T>,\n manager: DragDropManager | undefined\n ) {\n const {collisionDetector = defaultCollisionDetection} = input;\n const updateShape = (boundingClientRect?: BoundingRectangle | null) => {\n const {manager, element} = this;\n\n if (!element || boundingClientRect === null) {\n this.shape = undefined;\n return undefined;\n }\n\n if (!manager) return;\n\n const updatedShape = new DOMRectangle(element);\n\n const shape = untracked(() => this.shape);\n if (updatedShape && shape?.equals(updatedShape)) {\n return shape;\n }\n\n this.shape = updatedShape;\n\n return updatedShape;\n };\n\n const observePosition = signal(false);\n\n super(\n {\n ...input,\n collisionDetector,\n effects: () => [\n ...effects(),\n () => {\n const {element, manager} = this;\n if (!manager) return;\n\n const {dragOperation} = manager;\n const {source} = dragOperation;\n\n observePosition.value = Boolean(\n source &&\n dragOperation.status.initialized &&\n element &&\n !this.disabled &&\n this.accepts(source)\n );\n },\n () => {\n const {element} = this;\n\n if (observePosition.value && element) {\n const positionObserver = new PositionObserver(\n element,\n updateShape\n );\n\n return () => {\n positionObserver.disconnect();\n this.shape = undefined;\n };\n }\n },\n () => {\n if (this.manager?.dragOperation.status.initialized) {\n return () => {\n this.shape = undefined;\n };\n }\n },\n ],\n },\n manager\n );\n\n this.element = element;\n this.refreshShape = () => updateShape();\n }\n\n @reactive\n accessor #element: Element | undefined;\n\n @reactive\n public accessor proxy: Element | undefined;\n\n set element(element: Element | undefined) {\n this.#element = element;\n }\n\n get element() {\n return this.proxy ?? this.#element;\n }\n\n public refreshShape: () => Shape | undefined;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["src/core/plugins/accessibility/defaults.ts","src/core/plugins/accessibility/utilities.ts","src/core/plugins/accessibility/HiddenText.ts","src/core/plugins/accessibility/LiveRegion.ts","src/core/plugins/accessibility/Accessibility.ts","src/core/plugins/cursor/Cursor.ts","src/core/plugins/feedback/constants.ts","src/core/plugins/feedback/utilities.ts","src/core/plugins/feedback/Feedback.ts","src/core/plugins/scrolling/ScrollLock.ts","src/core/plugins/scrolling/ScrollIntent.ts","src/core/plugins/scrolling/Scroller.ts","src/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/PointerSensor.ts","src/core/manager/manager.ts","src/core/entities/draggable/draggable.ts","src/core/entities/droppable/droppable.ts"],"names":["manager","Plugin","_a","document","generateUniqueId","_b","_c","untracked","tX","tY","showPopover","effect","transform","status","initialTranslate","element","translate","options","delta","getDocument","_dec","_init","reactive","Direction","Axes","computed","isKeyboardEvent","ScrollDirection","canScroll","CorePlugin","isElement","DOMRectangle","getWindow","event","Sensor","Listeners","isHTMLElement","getFrameTransform","configurator","AbstractDragDropManager","AbstractDraggable","effects","_element_dec","_element","AbstractDroppable","signal"],"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) 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.innerText = 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 {effects} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\nimport {isSafari, generateUniqueId} 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 id?: string;\n idPrefix?: {\n description?: string;\n announcement?: string;\n };\n announcements?: Announcements;\n screenReaderInstructions?: ScreenReaderInstructions;\n}\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 } = 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\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 announcement = getAnnouncement?.(event, manager);\n\n if (announcement && liveRegionElement) {\n liveRegionElement.innerText = announcement;\n }\n }\n );\n }\n );\n\n const initialize = () => {\n hiddenTextElement = createHiddenText(\n descriptionId,\n screenReaderInstructions.draggable\n );\n liveRegionElement = createLiveRegion(announcementId);\n\n document.body.append(hiddenTextElement, liveRegionElement);\n };\n\n const cleanupEffects = effects(() => {\n for (const draggable of manager.registry.draggables.value) {\n const {element, handle} = draggable;\n const activator = handle ?? element;\n\n if (activator) {\n if (!hiddenTextElement || !liveRegionElement) {\n initialize();\n }\n\n if (\n (!isFocusable(activator) || isSafari()) &&\n !activator.hasAttribute('tabindex')\n ) {\n activator.setAttribute('tabindex', '0');\n }\n\n if (\n !activator.hasAttribute('role') &&\n !(activator.tagName.toLowerCase() === 'button')\n ) {\n activator.setAttribute('role', defaultAttributes.role);\n }\n\n if (!activator.hasAttribute('role-description')) {\n activator.setAttribute(\n 'aria-roledescription',\n defaultAttributes.roleDescription\n );\n }\n\n if (!activator.hasAttribute('aria-describedby')) {\n activator.setAttribute('aria-describedby', descriptionId);\n }\n\n for (const key of ['aria-pressed', 'aria-grabbed']) {\n activator.setAttribute(key, String(draggable.isDragging));\n }\n\n activator.setAttribute('aria-disabled', String(draggable.disabled));\n }\n }\n\n this.destroy = () => {\n hiddenTextElement?.remove();\n liveRegionElement?.remove();\n eventListeners.forEach((unsubscribe) => unsubscribe());\n cleanupEffects();\n };\n });\n }\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\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'} = this.options ?? {};\n\n if (dragOperation.status.initialized) {\n const document = doc.value;\n const style = document.createElement('style');\n style.innerText = `* { cursor: ${cursor} !important; }`;\n document.head.appendChild(style);\n\n return () => style.remove();\n }\n });\n }\n}\n","export const ATTR_PREFIX = 'data-dnd-';\nexport const CSS_PREFIX = '--dnd-';\nexport const ATTRIBUTE = `${ATTR_PREFIX}dragging`;\nexport const PLACEHOLDER_ATTRIBUTE = `${ATTR_PREFIX}placeholder`;\n\nexport const IGNORED_ATTRIBUTES = [\n ATTRIBUTE,\n PLACEHOLDER_ATTRIBUTE,\n 'popover',\n 'aria-pressed',\n 'aria-grabbing',\n];\n\nexport const IGNORED_STYLES = ['view-transition-name'];\n\nexport const CSS_RULES = `\n :root [${ATTRIBUTE}] {\n position: fixed !important;\n pointer-events: none !important;\n touch-action: none;\n z-index: calc(infinity);\n will-change: translate;\n top: var(${CSS_PREFIX}top, 0px) !important;\n left: var(${CSS_PREFIX}left, 0px) !important;\n right: unset !important;\n bottom: unset !important;\n width: var(${CSS_PREFIX}width, auto);\n max-width: var(${CSS_PREFIX}width, auto);\n height: var(${CSS_PREFIX}height, auto);\n max-height: var(${CSS_PREFIX}height, auto);\n box-sizing: border-box;\n }\n\n :root [${PLACEHOLDER_ATTRIBUTE}] {\n transition: none;\n }\n\n :root [${PLACEHOLDER_ATTRIBUTE}='hidden'] {\n visibility: hidden;\n }\n\n [${ATTRIBUTE}] * {\n pointer-events: none !important;\n }\n [${ATTRIBUTE}][style*='${CSS_PREFIX}translate'] {\n translate: var(${CSS_PREFIX}translate) !important;\n }\n [style*='${CSS_PREFIX}transition'] {\n transition: var(${CSS_PREFIX}transition) !important;\n }\n [style*='${CSS_PREFIX}scale'] {\n scale: var(${CSS_PREFIX}scale) !important;\n transform-origin: var(${CSS_PREFIX}transform-origin) !important;\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 }\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 effect,\n reactive,\n untracked,\n type CleanupFunction,\n} from '@dnd-kit/state';\nimport {configurator, Plugin} from '@dnd-kit/abstract';\nimport {\n animateTransform,\n DOMRectangle,\n isKeyboardEvent,\n getComputedStyles,\n getDocument,\n getFrameTransform,\n getWindow,\n isHTMLElement,\n parseTranslate,\n showPopover,\n supportsPopover,\n supportsStyle,\n Styles,\n isKeyframeEffect,\n} from '@dnd-kit/dom/utilities';\nimport {Coordinates, Rectangle} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Draggable} from '../../entities/index.ts';\n\nimport {\n ATTRIBUTE,\n CSS_PREFIX,\n CSS_RULES,\n IGNORED_ATTRIBUTES,\n IGNORED_STYLES,\n} from './constants.ts';\nimport {\n createPlaceholder,\n isSameFrame,\n isTableRow,\n preventPopoverClose,\n} from './utilities.ts';\n\nexport interface FeedbackOptions {\n rootElement?: Element | ((source: Draggable) => Element);\n}\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 private state: State = {\n initial: {},\n current: {},\n };\n\n constructor(manager: DragDropManager, options?: FeedbackOptions) {\n super(manager);\n\n this.registerEffect(this.#injectStyles);\n this.registerEffect(this.#render);\n }\n\n #render() {\n const {state, manager, options} = this;\n const {dragOperation} = manager;\n const {position, source, status} = dragOperation;\n\n if (status.idle) {\n state.current = {};\n state.initial = {};\n return;\n }\n\n if (!source) return;\n\n const {element, feedback} = source;\n\n if (\n !element ||\n feedback === 'none' ||\n !status.initialized ||\n status.initializing\n ) {\n return;\n }\n\n const {initial} = state;\n const feedbackElement = this.overlay ?? element;\n const frameTransform = getFrameTransform(feedbackElement);\n const elementFrameTransform = getFrameTransform(element);\n const crossFrame = !isSameFrame(element, feedbackElement);\n const shape = new DOMRectangle(element, {\n frameTransform: crossFrame ? elementFrameTransform : null,\n ignoreTransforms: !crossFrame,\n });\n const scaleDelta = {\n x: elementFrameTransform.scaleX / frameTransform.scaleX,\n y: elementFrameTransform.scaleY / frameTransform.scaleY,\n };\n\n let cleanup: CleanupFunction | undefined;\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 {transition, translate} = getComputedStyles(element);\n const clone = feedback === 'clone';\n\n const placeholder =\n feedback !== 'move' && !this.overlay\n ? createPlaceholder(source, clone ? 'clone' : 'hidden')\n : null;\n const isKeyboardOperation = untracked(() =>\n isKeyboardEvent(manager.dragOperation.activatorEvent)\n );\n\n if (translate !== 'none') {\n const parsedTranslate = parseTranslate(translate);\n\n if (parsedTranslate && !initial.translate) {\n initial.translate = parsedTranslate;\n }\n }\n\n if (!initial.transformOrigin) {\n const current = untracked(() => position.current);\n\n initial.transformOrigin = {\n x:\n (current.x - left * frameTransform.scaleX - frameTransform.x) /\n (width * frameTransform.scaleX),\n y:\n (current.y - top * frameTransform.scaleY - frameTransform.y) /\n (height * frameTransform.scaleY),\n };\n }\n\n const {transformOrigin} = initial;\n const relativeTop = top * frameTransform.scaleY + frameTransform.y;\n const relativeLeft = left * frameTransform.scaleX + frameTransform.x;\n\n if (!initial.coordinates) {\n initial.coordinates = {\n x: relativeLeft,\n y: relativeTop,\n };\n\n // Compoensate for transformOrigin when scaling\n if (scaleDelta.x !== 1 || scaleDelta.y !== 1) {\n const {scaleX, scaleY} = elementFrameTransform;\n const {x: tX, y: tY} = transformOrigin;\n\n initial.coordinates.x += (width * scaleX - width) * tX;\n initial.coordinates.y += (height * scaleY - height) * tY;\n }\n }\n\n if (!initial.dimensions) {\n initial.dimensions = {width, height};\n }\n\n if (!initial.frameTransform) {\n initial.frameTransform = frameTransform;\n }\n\n const coordinatesDelta = {\n x: initial.coordinates.x - relativeLeft,\n y: initial.coordinates.y - relativeTop,\n };\n\n const sizeDelta = {\n width:\n (initial.dimensions.width * initial.frameTransform.scaleX -\n width * frameTransform.scaleX) *\n transformOrigin.x,\n height:\n (initial.dimensions.height * initial.frameTransform.scaleY -\n height * frameTransform.scaleY) *\n transformOrigin.y,\n };\n\n const delta = {\n x: coordinatesDelta.x / frameTransform.scaleX + sizeDelta.width,\n y: coordinatesDelta.y / frameTransform.scaleY + sizeDelta.height,\n };\n\n const projected = {\n left: left + delta.x,\n top: top + delta.y,\n };\n\n feedbackElement.setAttribute(ATTRIBUTE, 'true');\n\n const transform = untracked(() => dragOperation.transform);\n const initialTranslate = initial.translate ?? {x: 0, y: 0};\n const tX = transform.x * frameTransform.scaleX + initialTranslate.x;\n const tY = transform.y * frameTransform.scaleY + initialTranslate.y;\n const translateString = `${tX}px ${tY}px 0`;\n\n styles.set(\n {\n width: width,\n height: height,\n top: projected.top,\n left: projected.left,\n translate: translateString,\n scale: crossFrame ? `${scaleDelta.x} ${scaleDelta.y}` : '',\n 'transform-origin': `${transformOrigin.x * 100}% ${transformOrigin.y * 100}%`,\n },\n CSS_PREFIX\n );\n\n if (placeholder) {\n element.insertAdjacentElement('afterend', placeholder);\n\n if (options?.rootElement) {\n const root =\n typeof options.rootElement === 'function'\n ? options.rootElement(source)\n : options.rootElement;\n\n root.appendChild(element);\n }\n }\n\n if (supportsPopover(feedbackElement)) {\n if (!feedbackElement.hasAttribute('popover')) {\n feedbackElement.setAttribute('popover', 'manual');\n }\n showPopover(feedbackElement);\n feedbackElement.addEventListener('beforetoggle', preventPopoverClose);\n }\n\n const resizeObserver = new ResizeObserver(() => {\n if (!placeholder) return;\n\n const placeholderShape = new DOMRectangle(placeholder, {\n frameTransform,\n ignoreTransforms: true,\n });\n const origin = transformOrigin ?? {x: 1, y: 1};\n const dX = (width - placeholderShape.width) * origin.x + delta.x;\n const dY = (height - placeholderShape.height) * origin.y + delta.y;\n\n styles.set(\n {\n width: placeholderShape.width,\n height: placeholderShape.height,\n top: top + dY,\n left: left + dX,\n },\n CSS_PREFIX\n );\n\n const window = getWindow(element);\n\n /* Table cells need to have their width set explicitly because the feedback element is position fixed */\n if (isTableRow(element) && isTableRow(placeholder)) {\n const cells = Array.from(element.cells);\n const placeholderCells = Array.from(placeholder.cells);\n\n for (const [index, cell] of cells.entries()) {\n const placeholderCell = placeholderCells[index];\n\n cell.style.width = `${placeholderCell.offsetWidth}px`;\n }\n }\n\n dragOperation.shape = new DOMRectangle(element);\n });\n\n /* Initialize drag operation shape */\n dragOperation.shape = new DOMRectangle(feedbackElement);\n\n if (untracked(() => source.status) === 'idle') {\n requestAnimationFrame(() => (source.status = 'dragging'));\n }\n\n let elementMutationObserver: MutationObserver | undefined;\n let documentMutationObserver: MutationObserver | undefined;\n\n if (placeholder) {\n resizeObserver.observe(placeholder);\n\n elementMutationObserver = new MutationObserver(() => {\n for (const attribute of Array.from(element.attributes)) {\n if (\n attribute.name.startsWith('aria-') ||\n IGNORED_ATTRIBUTES.includes(attribute.name)\n ) {\n continue;\n }\n\n if (attribute.name === 'style') {\n if (supportsStyle(element) && supportsStyle(placeholder)) {\n for (const key of Object.values(element.style)) {\n if (\n key.startsWith(CSS_PREFIX) ||\n IGNORED_STYLES.includes(key)\n ) {\n continue;\n }\n\n placeholder.style.setProperty(\n key,\n element.style.getPropertyValue(key)\n );\n }\n }\n continue;\n }\n\n placeholder.setAttribute(attribute.name, attribute.value);\n }\n\n if (clone) {\n placeholder.innerHTML = element.innerHTML;\n }\n });\n\n elementMutationObserver.observe(element, {\n attributes: true,\n subtree: true,\n });\n\n /* Make sure the placeholder and the source element positions are always in sync */\n documentMutationObserver = new MutationObserver((entries) => {\n for (const entry of entries) {\n if (entry.addedNodes.length === 0) continue;\n\n for (const node of Array.from(entry.addedNodes)) {\n if (\n node.contains(element) &&\n element.nextElementSibling !== placeholder\n ) {\n /* Update the position of the placeholder when the source element is moved */\n element.insertAdjacentElement('afterend', placeholder);\n /* Force the source element to be promoted back to the top layer */\n showPopover(feedbackElement);\n return;\n }\n\n if (\n node.contains(placeholder) &&\n placeholder.previousElementSibling !== element\n ) {\n /* Update the position of the source element when the placeholder is moved */\n placeholder.insertAdjacentElement('beforebegin', element);\n /* Force the source element to be promoted back to the top layer */\n showPopover(feedbackElement);\n return;\n }\n }\n }\n });\n\n /* Observe mutations on the element's owner document body */\n documentMutationObserver.observe(element.ownerDocument.body, {\n childList: true,\n subtree: true,\n });\n }\n\n // Update transform on move\n const cleanupEffect = effect(() => {\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 translateTransition = isKeyboardOperation\n ? '250ms cubic-bezier(0.25, 1, 0.5, 1)'\n : '0ms linear';\n\n const initialTranslate = initial.translate ?? {x: 0, y: 0};\n const x = transform.x / frameTransform.scaleX + initialTranslate.x;\n const y = transform.y / frameTransform.scaleY + initialTranslate.y;\n\n styles.set(\n {\n transition: `${transition}, translate ${translateTransition}`,\n translate: `${x}px ${y}px 0`,\n },\n CSS_PREFIX\n );\n\n dragOperation.shape = new DOMRectangle(feedbackElement);\n\n state.current.translate = {\n x,\n y,\n };\n }\n });\n\n const id = manager.dragOperation.source?.id;\n\n const restoreFocus = () => {\n if (!isKeyboardOperation || id == null) {\n return;\n }\n\n const draggable = manager.registry.draggables.get(id);\n const element = draggable?.handle ?? draggable?.element;\n\n if (isHTMLElement(element)) {\n element.focus();\n }\n };\n\n let dropEffectCleanup: CleanupFunction | undefined;\n cleanup = () => {\n elementMutationObserver?.disconnect();\n documentMutationObserver?.disconnect();\n resizeObserver.disconnect();\n\n if (supportsPopover(feedbackElement)) {\n feedbackElement.removeEventListener(\n 'beforetoggle',\n preventPopoverClose\n );\n feedbackElement.removeAttribute('popover');\n }\n\n feedbackElement.removeAttribute(ATTRIBUTE);\n styles.reset();\n\n source.status = 'idle';\n\n const moved = state.current.translate != null;\n\n if (\n placeholder &&\n (moved ||\n placeholder.parentElement !== feedbackElement.parentElement) &&\n feedbackElement.isConnected\n ) {\n placeholder.replaceWith(feedbackElement);\n }\n\n placeholder?.remove();\n\n cleanupEffect();\n dropEffectCleanup?.();\n };\n\n // Drop animation\n dropEffectCleanup = effect(() => {\n if (dragOperation.status.dropped) {\n const onComplete = cleanup;\n cleanup = undefined;\n\n source.status = 'dropping';\n\n let translate = state.current.translate;\n const moved = translate != null;\n\n if (!translate && element !== feedbackElement) {\n translate = {\n x: 0,\n y: 0,\n };\n }\n\n if (!translate) {\n onComplete?.();\n return;\n }\n\n manager.renderer.rendering.then(() => {\n /* Force the source element to be promoted to the top layer before animating it */\n showPopover(feedbackElement);\n\n const target = placeholder ?? element;\n const animations = feedbackElement.getAnimations();\n\n if (animations.length) {\n animations.forEach((animation) => {\n const {effect} = animation;\n\n if (\n isKeyframeEffect(effect) &&\n effect.getKeyframes().some((keyframe) => keyframe.translate)\n ) {\n animation.finish();\n }\n });\n }\n\n const options = {\n frameTransform: isSameFrame(feedbackElement, target)\n ? null\n : undefined,\n };\n const current = new DOMRectangle(feedbackElement, options);\n const final = new DOMRectangle(target, options);\n const delta = Rectangle.delta(current, final, source.alignment);\n const finalTranslate = {\n x: translate.x - delta.x,\n y: translate.y - delta.y,\n };\n const heightKeyframes =\n Math.round(current.intrinsicHeight) !==\n Math.round(final.intrinsicHeight)\n ? {\n minHeight: [\n `${current.intrinsicHeight}px`,\n `${final.intrinsicHeight}px`,\n ],\n maxHeight: [\n `${current.intrinsicHeight}px`,\n `${final.intrinsicHeight}px`,\n ],\n }\n : {};\n const widthKeyframes =\n Math.round(current.intrinsicWidth) !==\n Math.round(final.intrinsicWidth)\n ? {\n minWidth: [\n `${current.intrinsicWidth}px`,\n `${final.intrinsicWidth}px`,\n ],\n maxWidth: [\n `${current.intrinsicWidth}px`,\n `${final.intrinsicWidth}px`,\n ],\n }\n : {};\n\n animateTransform({\n element: feedbackElement,\n keyframes: {\n ...heightKeyframes,\n ...widthKeyframes,\n translate: [\n `${translate.x}px ${translate.y}px 0`,\n `${finalTranslate.x}px ${finalTranslate.y}px 0`,\n ],\n },\n options: {\n duration: moved || feedbackElement !== element ? 250 : 0,\n easing: 'ease',\n },\n onReady() {\n styles.remove(['translate'], CSS_PREFIX);\n },\n onFinish() {\n onComplete?.();\n requestAnimationFrame(restoreFocus);\n },\n });\n });\n }\n });\n\n return () => cleanup?.();\n }\n\n #injectStyles() {\n const {status, source, target} = this.manager.dragOperation;\n\n if (status.initialized) {\n const sourceDocument = getDocument(source?.element ?? null);\n const targetDocument = getDocument(target?.element ?? null);\n const documents = new Set([sourceDocument, targetDocument]);\n\n for (const doc of documents) {\n if (!injectedStyleTags.has(doc)) {\n const style = document.createElement('style');\n style.innerText = CSS_RULES;\n doc.head.prepend(style);\n injectedStyleTags.set(doc, style);\n }\n }\n }\n }\n\n public destroy(): void {\n super.destroy();\n\n injectedStyleTags.forEach((style) => style.remove());\n injectedStyleTags.clear();\n }\n\n static configure = configurator(Feedback);\n}\n\nconst injectedStyleTags = new Map<Document, HTMLStyleElement>();\n","import {reactive} from '@dnd-kit/state';\nimport {ScrollDirection as Direction} from '@dnd-kit/dom/utilities';\n\nconst LOCKED = true;\nconst UNLOCKED = false;\n\nexport class ScrollLock {\n @reactive private accessor [Direction.Forward] = LOCKED;\n @reactive private accessor [Direction.Reverse] = LOCKED;\n\n public isLocked(direction?: Direction): boolean {\n if (direction === Direction.Idle) {\n return false;\n }\n\n if (direction == null) {\n return (\n this[Direction.Forward] === LOCKED && this[Direction.Reverse] === LOCKED\n );\n }\n\n return this[direction] === LOCKED;\n }\n\n public unlock(direction: Direction) {\n if (direction === Direction.Idle) {\n return;\n }\n\n this[direction] = UNLOCKED;\n }\n}\n","import {batch, effect, signal, type Signal} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\nimport {Axes} from '@dnd-kit/geometry';\nimport type {Coordinates} from '@dnd-kit/geometry';\nimport {ScrollDirection} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollLock} from './ScrollLock.ts';\n\nconst DIRECTIONS = [ScrollDirection.Forward, ScrollDirection.Reverse];\n\nclass ScrollIntent {\n public x = new ScrollLock();\n public y = new ScrollLock();\n\n public isLocked(): boolean {\n return this.x.isLocked() && this.y.isLocked();\n }\n}\n\nexport class ScrollIntentTracker extends Plugin<DragDropManager> {\n private signal: Signal<ScrollIntent | null>;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n const scrollIntent = signal<ScrollIntent>(new ScrollIntent());\n let previousDelta: Coordinates | null = null;\n\n this.signal = scrollIntent;\n\n effect(() => {\n const {status} = manager.dragOperation;\n\n if (!status.initialized) {\n previousDelta = null;\n scrollIntent.value = new ScrollIntent();\n return;\n }\n\n const {delta} = manager.dragOperation.position;\n\n if (previousDelta) {\n const directions = {\n x: getDirection(delta.x, previousDelta.x),\n y: getDirection(delta.y, previousDelta.y),\n };\n\n const intent = scrollIntent.peek();\n\n batch(() => {\n for (const axis of Axes) {\n for (const direction of DIRECTIONS) {\n if (directions[axis] === direction) {\n intent[axis].unlock(direction);\n }\n }\n }\n\n scrollIntent.value = intent;\n });\n }\n\n previousDelta = delta;\n });\n }\n\n get current(): ScrollIntent | null {\n return this.signal.peek();\n }\n}\n\nfunction getDirection(a: number, b: number): ScrollDirection {\n return Math.sign(a - b);\n}\n","import {CorePlugin} from '@dnd-kit/abstract';\nimport {computed, deepEqual, reactive} from '@dnd-kit/state';\nimport {\n canScroll,\n detectScrollIntent,\n getScrollableAncestors,\n getElementFromPoint,\n ScrollDirection,\n scheduler,\n isKeyboardEvent,\n getDocument,\n getFrameTransform,\n} from '@dnd-kit/dom/utilities';\nimport {Axes, type Coordinates} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollIntentTracker} from './ScrollIntent.ts';\n\nexport class Scroller extends CorePlugin<DragDropManager> {\n public getScrollableElements: () => Set<Element> | null;\n\n private scrollIntentTracker: ScrollIntentTracker;\n\n @reactive\n public accessor autoScrolling = false;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n let previousElementFromPoint: Element | null = null;\n let previousScrollableElements: Set<Element> | null = null;\n const elementFromPoint = computed(() => {\n const {position, source} = manager.dragOperation;\n\n if (!position) {\n return null;\n }\n\n const element = getElementFromPoint(\n getDocument(source?.element),\n position.current\n );\n\n if (element) {\n previousElementFromPoint = element;\n }\n\n return element ?? previousElementFromPoint;\n });\n const scrollableElements = computed(() => {\n const element = elementFromPoint.value;\n const {documentElement} = getDocument(element);\n\n if (!element || element === documentElement) {\n const {target} = manager.dragOperation;\n const targetElement = target?.element;\n\n if (targetElement) {\n const elements = getScrollableAncestors(targetElement, {\n excludeElement: false,\n });\n previousScrollableElements = elements;\n\n return elements;\n }\n }\n\n if (element) {\n const elements = getScrollableAncestors(element, {\n excludeElement: false,\n });\n\n if (\n this.autoScrolling &&\n previousScrollableElements &&\n elements.size < previousScrollableElements?.size\n ) {\n return previousScrollableElements;\n }\n\n previousScrollableElements = elements;\n\n return elements;\n }\n\n previousScrollableElements = null;\n\n return null;\n }, deepEqual);\n\n this.getScrollableElements = () => {\n return scrollableElements.value;\n };\n\n this.scrollIntentTracker = new ScrollIntentTracker(manager);\n\n this.destroy = manager.monitor.addEventListener('dragmove', (event) => {\n if (\n this.disabled ||\n event.defaultPrevented ||\n !isKeyboardEvent(manager.dragOperation.activatorEvent) ||\n !event.by\n ) {\n return;\n }\n\n // Prevent the move event if we can scroll to the new coordinates\n if (this.scroll({by: event.by})) {\n event.preventDefault();\n }\n });\n }\n\n #meta: {element: Element; by: Coordinates} | undefined;\n\n #scroll = () => {\n if (!this.#meta) {\n return;\n }\n\n const {element, by} = this.#meta;\n\n if (by.y) element.scrollTop += by.y;\n if (by.x) element.scrollLeft += by.x;\n };\n\n public scroll = (options?: {by: Coordinates}): boolean => {\n if (this.disabled) {\n return false;\n }\n\n const elements = this.getScrollableElements();\n\n if (!elements) {\n this.#meta = undefined;\n return false;\n }\n\n const {position} = this.manager.dragOperation;\n const currentPosition = position?.current;\n\n if (currentPosition) {\n const {by} = options ?? {};\n const intent = by\n ? {\n x: getScrollIntent(by.x),\n y: getScrollIntent(by.y),\n }\n : undefined;\n const scrollIntent = intent\n ? undefined\n : this.scrollIntentTracker.current;\n\n if (scrollIntent?.isLocked()) {\n return false;\n }\n\n for (const scrollableElement of elements) {\n const elementCanScroll = canScroll(scrollableElement, by);\n\n if (elementCanScroll.x || elementCanScroll.y) {\n const {speed, direction} = detectScrollIntent(\n scrollableElement,\n currentPosition,\n intent\n );\n\n if (scrollIntent) {\n for (const axis of Axes) {\n if (scrollIntent[axis].isLocked(direction[axis])) {\n speed[axis] = 0;\n direction[axis] = 0;\n }\n }\n }\n\n if (direction.x || direction.y) {\n const {x, y} = by ?? direction;\n const scrollLeftBy = x * speed.x;\n const scrollTopBy = y * speed.y;\n\n if (scrollLeftBy || scrollTopBy) {\n const previousScrollBy = this.#meta?.by;\n\n if (this.autoScrolling && previousScrollBy) {\n const scrollIntentMismatch =\n (previousScrollBy.x && !scrollLeftBy) ||\n (previousScrollBy.y && !scrollTopBy);\n\n if (scrollIntentMismatch) continue;\n }\n\n this.#meta = {\n element: scrollableElement,\n by: {\n x: scrollLeftBy,\n y: scrollTopBy,\n },\n };\n\n scheduler.schedule(this.#scroll);\n\n return true;\n }\n }\n }\n }\n }\n\n this.#meta = undefined;\n return false;\n };\n}\n\nfunction getScrollIntent(value: number) {\n if (value > 0) {\n return ScrollDirection.Forward;\n }\n\n if (value < 0) {\n return ScrollDirection.Reverse;\n }\n\n return ScrollDirection.Idle;\n}\n","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';\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(scroller.scroll, AUTOSCROLL_INTERVAL);\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\nexport class PreventSelection extends Plugin<DragDropManager> {\n constructor(public manager: DragDropManager) {\n super(manager);\n\n this.destroy = effect(() => {\n const {dragOperation} = this.manager;\n\n if (dragOperation.status.initialized) {\n const style = document.createElement('style');\n style.innerText = `* { 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 {Sensor} from '@dnd-kit/abstract';\nimport {batch, effect} from '@dnd-kit/state';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport {\n getDocument,\n getWindow,\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 keyboardCodes?: KeyboardCodes;\n shouldActivate?(args: {\n event: KeyboardEvent;\n source: Draggable;\n manager: DragDropManager;\n }): boolean;\n}\n\nconst DEFAULT_SHOULD_ACTIVATE = (args: {\n event: KeyboardEvent;\n source: Draggable;\n manager: DragDropManager;\n}) => {\n const {event, source} = args;\n const target = source.handle ?? source.element;\n return event.target === target;\n};\n\nconst DEFAULT_KEYBOARD_CODES: 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\nconst DEFAULT_OFFSET = 10;\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 = DEFAULT_KEYBOARD_CODES,\n shouldActivate = DEFAULT_SHOULD_ACTIVATE,\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 (shouldActivate({event, source, manager: this.manager})) {\n this.handleStart(event, source, options);\n }\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 sourceWindow = getWindow(sourceDocument);\n\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 this.listeners.bind(sourceWindow, [\n {type: 'resize', listener: () => this.handleEnd(event, true)},\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 = DEFAULT_KEYBOARD_CODES} = 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 offset = {\n x: 0,\n y: 0,\n };\n\n if (!shape) {\n return;\n }\n\n switch (direction) {\n case 'up':\n offset = {x: 0, y: -DEFAULT_OFFSET * factor};\n break;\n case 'down':\n offset = {x: 0, y: DEFAULT_OFFSET * factor};\n break;\n case 'left':\n offset = {x: -DEFAULT_OFFSET * factor, y: 0};\n break;\n case 'right':\n offset = {x: DEFAULT_OFFSET * factor, y: 0};\n break;\n }\n\n if (offset?.x || offset?.y) {\n event.preventDefault();\n\n this.manager.actions.move({\n event,\n by: offset,\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\nfunction isKeycode(event: KeyboardEvent, codes: KeyCode[]) {\n return codes.includes(event.code);\n}\n","import {effect} from '@dnd-kit/state';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport {Sensor, configurator} from '@dnd-kit/abstract';\nimport {\n exceedsDistance,\n type Distance,\n type Coordinates,\n} from '@dnd-kit/geometry';\nimport {\n getDocument,\n isElement,\n isHTMLElement,\n isPointerEvent,\n Listeners,\n getFrameTransform,\n} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Draggable} from '../../entities/index.ts';\n\nexport interface DelayConstraint {\n value: number;\n tolerance: Distance;\n}\n\nexport interface DistanceConstraint {\n value: Distance;\n tolerance?: Distance;\n}\n\nexport interface ActivationConstraints {\n distance?: DistanceConstraint;\n delay?: DelayConstraint;\n}\n\nexport interface PointerSensorOptions {\n activationConstraints?:\n | ActivationConstraints\n | ((\n event: PointerEvent,\n source: Draggable\n ) => ActivationConstraints | 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 #clearTimeout: CleanupFunction | undefined;\n\n protected listeners = new Listeners();\n\n protected initialCoordinates: Coordinates | 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 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 (isPointerEvent(event)) {\n this.handlePointerDown(event, source, options);\n }\n };\n\n if (target) {\n patchWindow(target.ownerDocument.defaultView);\n\n target.addEventListener('pointerdown', listener);\n\n return () => {\n target.removeEventListener('pointerdown', listener);\n };\n }\n });\n\n return unbind;\n }\n\n protected handlePointerDown(\n event: PointerEvent,\n source: Draggable,\n options: PointerSensorOptions = {}\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 {target} = event;\n const isNativeDraggable =\n isHTMLElement(target) &&\n target.draggable &&\n target.getAttribute('draggable') === 'true';\n\n const offset = getFrameTransform(source.element);\n\n this.initialCoordinates = {\n x: event.clientX * offset.scaleX + offset.x,\n y: event.clientY * offset.scaleY + offset.y,\n };\n\n const {activationConstraints} = options;\n const constraints =\n typeof activationConstraints === 'function'\n ? activationConstraints(event, source)\n : activationConstraints;\n\n (event as any).sensor = this;\n\n if (!constraints?.delay && !constraints?.distance) {\n this.handleStart(source, event);\n } else {\n const {delay} = constraints;\n\n if (delay) {\n const timeout = setTimeout(\n () => this.handleStart(source, event),\n delay.value\n );\n\n this.#clearTimeout = () => {\n clearTimeout(timeout);\n this.#clearTimeout = undefined;\n };\n }\n }\n\n const ownerDocument = getDocument(event.target);\n\n const unbindListeners = this.listeners.bind(ownerDocument, [\n {\n type: 'pointermove',\n listener: (event: PointerEvent) =>\n this.handlePointerMove(event, source, options),\n },\n {\n type: 'pointerup',\n listener: this.handlePointerUp,\n options: {\n capture: true,\n },\n },\n {\n // Cancel activation if there is a competing Drag and Drop interaction\n type: 'dragstart',\n listener: isNativeDraggable ? this.handleCancel : preventDefault,\n options: {\n capture: true,\n },\n },\n ]);\n\n const cleanup = () => {\n unbindListeners();\n this.#clearTimeout?.();\n this.initialCoordinates = undefined;\n };\n\n this.#cleanup.add(cleanup);\n }\n\n protected handlePointerMove(\n event: PointerEvent,\n source: Draggable,\n options: PointerSensorOptions\n ) {\n const coordinates = {\n x: event.clientX,\n y: event.clientY,\n };\n\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 if (this.manager.dragOperation.status.dragging) {\n event.preventDefault();\n event.stopPropagation();\n\n this.manager.actions.move({event, to: coordinates});\n return;\n }\n\n if (!this.initialCoordinates) {\n return;\n }\n\n const delta = {\n x: coordinates.x - this.initialCoordinates.x,\n y: coordinates.y - this.initialCoordinates.y,\n };\n const {activationConstraints} = options;\n const constraints =\n typeof activationConstraints === 'function'\n ? activationConstraints(event, source)\n : activationConstraints;\n const {distance, delay} = constraints ?? {};\n\n if (distance) {\n if (\n distance.tolerance != null &&\n exceedsDistance(delta, distance.tolerance)\n ) {\n return this.handleCancel(event);\n }\n if (exceedsDistance(delta, distance.value)) {\n return this.handleStart(source, event);\n }\n }\n\n if (delay) {\n if (exceedsDistance(delta, delay.tolerance)) {\n return this.handleCancel(event);\n }\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 this.#clearTimeout?.();\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 unbind = this.listeners.bind(ownerDocument, [\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 type: 'lostpointercapture',\n listener: (event: PointerEvent) => {\n if (event.target !== pointerCaptureTarget) return;\n\n this.handlePointerUp(event);\n },\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.#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\nfunction isCapturedBySensor(event: Event) {\n return 'sensor' in event;\n}\n\nfunction preventDefault(event: Event) {\n event.preventDefault();\n}\n\nfunction noop() {}\n\nconst windows = new WeakSet<Window>();\n\nfunction patchWindow(window: Window | null) {\n if (!window || windows.has(window)) {\n return;\n }\n\n window.addEventListener('touchmove', noop, {\n capture: false,\n passive: false,\n });\n windows.add(window);\n}\n","import {\n DragDropManager as AbstractDragDropManager,\n DragDropManagerInput,\n type Renderer,\n type Modifiers,\n type Plugins,\n type Sensors,\n} from '@dnd-kit/abstract';\nimport {isElement} from '@dnd-kit/dom/utilities';\n\nimport type {Draggable, Droppable} from '../entities/index.ts';\nimport {\n Accessibility,\n AutoScroller,\n Cursor,\n Feedback,\n Scroller,\n ScrollListener,\n PreventSelection,\n} from '../plugins/index.ts';\nimport {KeyboardSensor, PointerSensor} from '../sensors/index.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: [\n PointerSensor.configure({\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 delay: {value: 250, tolerance: 5},\n };\n }\n return {\n delay: {value: 200, tolerance: 10},\n distance: {value: 5},\n };\n },\n }),\n KeyboardSensor,\n ],\n};\n\nexport class DragDropManager<\n T extends Draggable = Draggable,\n U extends Droppable = Droppable,\n> extends AbstractDragDropManager<Draggable, Droppable> {\n constructor(input: Input = {}) {\n const {\n plugins = defaultPreset.plugins,\n sensors = defaultPreset.sensors,\n modifiers = [],\n } = input;\n\n super({\n ...input,\n plugins: [ScrollListener, Scroller, ...plugins],\n sensors,\n modifiers,\n });\n }\n}\n","import {\n Draggable as AbstractDraggable,\n Sensor,\n descriptor,\n} from '@dnd-kit/abstract';\nimport type {Data, DraggableInput} from '@dnd-kit/abstract';\nimport {reactive} from '@dnd-kit/state';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Sensors} from '../../sensors/index.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"]}
|