@dnd-kit/dom 0.0.1

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.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["src/core/manager/manager.ts","src/core/plugins/accessibility/Accessibility.ts","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/cursor/Cursor.ts","src/core/plugins/feedback/Feedback.ts","src/core/plugins/scrolling/Scroller.ts","src/core/plugins/scrolling/ScrollIntent.ts","src/core/plugins/scrolling/ScrollLock.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/entities/draggable/draggable.ts","src/core/entities/droppable/droppable.ts"],"names":["manager","Plugin","effect","cleanupEffect","status","shape","element","delta","ScrollDirection","isKeyboardEvent","Axes","canScroll","CorePlugin","batch","DOMRectangle","getWindow","event","Sensor","getDocument","Listeners","reactive","effects","signal","untracked","scheduler"],"mappings":"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","sourcesContent":["import {\n DragDropManager as AbstractDragDropManager,\n DragDropManagerInput,\n type Plugins,\n type Sensors,\n} from '@dnd-kit/abstract';\n\nimport type {Draggable, Droppable} from '../entities/index.js';\nimport {\n Accessibility,\n AutoScroller,\n Cursor,\n Feedback,\n Scroller,\n ScrollListener,\n PreventSelection,\n} from '../plugins/index.js';\nimport {KeyboardSensor, PointerSensor} from '../sensors/index.js';\n\nexport interface Input extends DragDropManagerInput<any> {}\n\nexport const defaultPreset: {\n plugins: Plugins<DragDropManager>;\n sensors: Sensors<DragDropManager>;\n} = {\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 target instanceof Element &&\n (source.handle === target || source.handle?.contains(target))\n ) {\n return undefined;\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 {effects} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\n\nimport type {DragDropManager} from '../../manager/index.js';\nimport {\n defaultAnnouncements,\n defaultAttributes,\n defaultAnnouncementIdPrefix,\n defaultDescriptionIdPrefix,\n defaultScreenReaderInstructions,\n} from './defaults.js';\nimport type {Announcements, ScreenReaderInstructions} from './types.js';\nimport {generateUniqueId, isFocusable} from './utilities.js';\nimport {createHiddenText} from './HiddenText.js';\nimport {createLiveRegion} from './LiveRegion.js';\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 (!isFocusable(activator) && !activator.hasAttribute('tabindex')) {\n activator.setAttribute('tabindex', '0');\n }\n\n if (\n !activator.hasAttribute('role') &&\n !(activator instanceof HTMLButtonElement)\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 activator.setAttribute(\n 'aria-pressed',\n String(draggable.isDragSource)\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 type {Announcements, ScreenReaderInstructions} from './types.js';\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 return (\n element instanceof HTMLInputElement ||\n element instanceof HTMLSelectElement ||\n element instanceof HTMLTextAreaElement ||\n element instanceof HTMLAnchorElement ||\n element instanceof HTMLButtonElement ||\n element instanceof HTMLAreaElement\n );\n}\n\nconst ids: Record<string, number> = {};\n\nexport function generateUniqueId(prefix: string) {\n const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n ids[prefix] = id;\n\n return `${prefix}-${id}`;\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 {Plugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\n\nimport {DragDropManager} from '../../manager/index.js';\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 this.destroy = effect(() => {\n const {dragOperation} = this.manager;\n const {cursor = 'grabbing'} = this.options ?? {};\n\n if (dragOperation.status.initialized) {\n const style = document.createElement('style');\n style.innerText = `* { cursor: ${cursor} !important; }`;\n document.head.appendChild(style);\n\n return () => {\n style.remove();\n };\n }\n });\n }\n}\n","import {effect, untracked, type CleanupFunction} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\nimport {\n animateTransform,\n createPlaceholder,\n DOMRectangle,\n getWindow,\n isKeyboardEvent,\n showPopover,\n supportsPopover,\n supportsStyle,\n Styles,\n type Transform,\n} from '@dnd-kit/dom/utilities';\nimport {Coordinates} from '@dnd-kit/geometry';\n\nimport {DragDropManager} from '../../manager/index.js';\n\nconst ATTR_PREFIX = 'data-dnd-kit-';\nconst CSS_PREFIX = '--dnd-kit-feedback-';\nconst cssRules = `[${ATTR_PREFIX}feedback] {position: fixed !important;pointer-events: none;touch-action: none;z-index: 999999;will-change: transform;top: var(${CSS_PREFIX}top, 0px) !important;left: var(${CSS_PREFIX}left, 0px) !important;width: var(${CSS_PREFIX}width, auto) !important;height: var(${CSS_PREFIX}height, auto) !important;margin: var(${CSS_PREFIX}margin, 0px) !important;padding: var(${CSS_PREFIX}padding, 0px) !important;}[${ATTR_PREFIX}feedback][style*=\"${CSS_PREFIX}translate\"] {transition: var(${CSS_PREFIX}transition) !important;translate: var(${CSS_PREFIX}translate) !important;}[${ATTR_PREFIX}feedback][popover]{overflow:visible;}[popover]{background:unset;border:unset;}[${ATTR_PREFIX}feedback]::backdrop {display: none}`;\nconst ATTRIBUTE = `${ATTR_PREFIX}feedback`;\nconst IGNORED_ATTRIBUTES = [ATTRIBUTE, 'popover'];\nconst IGNORED_STYLES = ['view-transition-name'];\n\nexport class Feedback extends Plugin<DragDropManager> {\n constructor(manager: DragDropManager) {\n super(manager);\n\n let style: HTMLStyleElement | undefined;\n let initialCoordinates: Coordinates | undefined;\n let currentTransform: Transform | undefined;\n let transformOrigin: Coordinates | undefined;\n let moved = false;\n\n const styleInjectionCleanup = effect(() => {\n if (!style && manager.dragOperation.status.initialized) {\n style = document.createElement('style');\n style.innerText = cssRules;\n document.head.prepend(style);\n\n return styleInjectionCleanup;\n }\n });\n\n const cleanupEffect = effect(() => {\n const {dragOperation} = manager;\n const {position, source, status} = dragOperation;\n\n if (status.idle) {\n initialCoordinates = undefined;\n currentTransform = undefined;\n transformOrigin = undefined;\n moved = false;\n return;\n }\n\n if (!source) return;\n\n const {element, feedback} = source;\n\n if (!element || feedback === 'none') return;\n\n const shape = new DOMRectangle(element, true);\n const {width, height, top, left} = shape;\n const styles = new Styles(element);\n const {padding, margin, transition} =\n getWindow(element).getComputedStyle(element);\n const droppable = manager.registry.droppables.get(source.id);\n const clone = feedback === 'clone';\n const placeholder = createPlaceholder(element, clone);\n const isKeyboardOperation = untracked(() =>\n isKeyboardEvent(manager.dragOperation.activatorEvent)\n );\n\n if (!initialCoordinates) {\n initialCoordinates = {\n x: left,\n y: top,\n };\n }\n\n if (!transformOrigin) {\n const currentPosition = untracked(() => position.current);\n transformOrigin = {\n x: (currentPosition.x - left) / width,\n y: (currentPosition.y - top) / height,\n };\n }\n\n const delta = {\n x: initialCoordinates.x - left,\n y: initialCoordinates.y - top,\n };\n const projected = {\n top: top + delta.y,\n left: left + delta.x,\n };\n\n element.setAttribute(ATTRIBUTE, '');\n styles.set(\n {\n width: width,\n height: height,\n top: projected.top,\n left: projected.left,\n padding,\n margin,\n translate: currentTransform\n ? `${currentTransform.x}px ${currentTransform.y}px 0`\n : '',\n },\n CSS_PREFIX\n );\n element.parentElement?.insertBefore(\n placeholder,\n element.nextElementSibling\n );\n\n if (supportsPopover(element)) {\n element.setAttribute('popover', '');\n showPopover(element);\n }\n\n const actual = new DOMRectangle(element, true);\n const offset = {\n top: projected.top - actual.top,\n left: projected.left - actual.left,\n };\n\n if (Math.abs(offset.top) || Math.abs(offset.left)) {\n styles.set(\n {\n top: projected.top + offset.top,\n left: projected.left + offset.left,\n },\n CSS_PREFIX\n );\n }\n\n const resizeObserver = new ResizeObserver(() => {\n const placeholderShape = new DOMRectangle(placeholder, true);\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 + offset.top,\n left: left + dX + offset.left,\n },\n CSS_PREFIX\n );\n\n manager.dragOperation.shape = new DOMRectangle(element);\n });\n\n if (droppable) {\n /*\n * If there is a droppable with the same id as the draggable source\n * set the placeholder as the droppable's placeholder, which takes\n * precedence over the dorppable's `element` property when computing\n * its shape.\n */\n droppable.placeholder = placeholder;\n untracked(droppable.refreshShape);\n }\n\n /* Initialize drag operation shape */\n dragOperation.shape = shape;\n\n resizeObserver.observe(placeholder);\n\n const 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 placeholder.setAttribute('style', clone ? '' : 'opacity: 0;');\n placeholder.style.setProperty('transition', 'none');\n\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 const documentMutationObserver = new MutationObserver((entries) => {\n for (const entry of entries) {\n if (Array.from(entry.addedNodes).includes(element)) {\n /* Update the position of the placeholder when the source element is moved */\n entry.target.insertBefore(placeholder, element.nextElementSibling);\n\n /*\n * Any update in DOM order that affects the source element hide the popover\n * so we need to force the source element to be promoted to the top layer again\n */\n showPopover(element);\n return;\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 const cleanupEffect = effect(function updateTransform() {\n const {transform, status} = dragOperation;\n const {x, y} = transform;\n\n if (!x && !y && !moved) {\n return;\n }\n\n if (!moved) {\n moved = true;\n }\n\n if (status.dragging) {\n const translateTransition = isKeyboardOperation\n ? '250ms ease'\n : '0ms linear';\n\n const shape = new DOMRectangle(element);\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 = shape.translate(\n x - (currentTransform?.x ?? 0),\n y - (currentTransform?.y ?? 0)\n );\n\n currentTransform = {\n x,\n y,\n z: 0,\n scaleX: shape.scale.x,\n scaleY: shape.scale.y,\n };\n }\n });\n\n const id = manager.dragOperation.source?.id;\n\n const restoreFocus = () => {\n if (id == null) {\n return;\n }\n\n const draggable = manager.registry.draggables.get(id);\n const element = draggable?.handle ?? draggable?.element;\n\n if (element instanceof HTMLElement) {\n element.focus();\n }\n };\n\n let cleanup: CleanupFunction | undefined = () => {\n elementMutationObserver.disconnect();\n documentMutationObserver.disconnect();\n resizeObserver.disconnect();\n\n styles.reset();\n placeholder.remove();\n element.removeAttribute(ATTRIBUTE);\n\n if (supportsPopover(element)) {\n element.removeAttribute('popover');\n }\n\n cleanupEffect();\n dropEffectCleanup();\n\n if (droppable) {\n droppable.placeholder = undefined;\n }\n };\n\n const dropEffectCleanup = effect(function dropAnimation() {\n if (dragOperation.status.dropping) {\n const onComplete = cleanup;\n cleanup = undefined;\n\n const transform = currentTransform;\n\n if (!transform) {\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(element);\n\n const shape = new DOMRectangle(placeholder, true);\n const currentShape = new DOMRectangle(element, true).translate(\n transform.x,\n transform.y\n );\n const delta = {\n x: currentShape.center.x - shape.center.x,\n y: currentShape.center.y - shape.center.y,\n };\n const final = {\n x: transform.x - delta.x,\n y: transform.y - delta.y,\n z: 0,\n };\n\n animateTransform({\n element,\n keyframes: {\n translate: [\n `${transform.x}px ${transform.y}px ${transform.z ?? 0}`,\n `${final.x}px ${final.y}px ${final.z}`,\n ],\n },\n options: {\n duration: moved ? 250 : 0,\n easing: 'ease',\n },\n onReady() {\n styles.remove(['translate', 'transition'], CSS_PREFIX);\n },\n onFinish() {\n requestAnimationFrame(restoreFocus);\n onComplete?.();\n },\n });\n });\n }\n });\n\n return () => cleanup?.();\n });\n\n this.destroy = () => {\n styleInjectionCleanup();\n cleanupEffect();\n style?.remove();\n };\n }\n}\n","import {CorePlugin} from '@dnd-kit/abstract';\nimport {computed, deepEqual} from '@dnd-kit/state';\nimport {\n canScroll,\n detectScrollIntent,\n getScrollableAncestors,\n ScrollDirection,\n scheduler,\n isKeyboardEvent,\n} from '@dnd-kit/dom/utilities';\nimport {Axes, type Coordinates} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.js';\n\nimport {ScrollIntentTracker} from './ScrollIntent.js';\n\nexport class Scroller extends CorePlugin<DragDropManager> {\n public getScrollableElements: () => Element[] | null;\n\n private scrollIntentTracker: ScrollIntentTracker;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n let previousElementFromPoint: Element | null = null;\n const elementFromPoint = computed(() => {\n const {position} = manager.dragOperation;\n\n if (!position) {\n return null;\n }\n\n const {x, y} = position.current;\n const element = document.elementFromPoint(x, y);\n\n if (element) {\n previousElementFromPoint = element;\n }\n\n return document.elementFromPoint(x, y) ?? previousElementFromPoint;\n });\n const scrollableElements = computed(() => {\n const element = elementFromPoint.value;\n\n if (!element || element === document.documentElement) {\n const {target} = manager.dragOperation;\n const targetElement = target?.element;\n\n if (targetElement) {\n return getScrollableAncestors(targetElement, {excludeElement: false});\n }\n }\n\n return element\n ? getScrollableAncestors(element, {excludeElement: false})\n : 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 element.scrollBy(by.x, by.y);\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 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 trackedScrollIntent = intent\n ? undefined\n : this.scrollIntentTracker.current;\n\n if (trackedScrollIntent?.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 (trackedScrollIntent) {\n for (const axis of Axes) {\n if (trackedScrollIntent[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 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 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 {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.js';\n\nimport {ScrollLock} from './ScrollLock.js';\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 {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 [Direction.Forward] = LOCKED;\n @reactive private [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 {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.js';\nimport {Scroller} from './Scroller.js';\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 const interval = setInterval(scroller.scroll, AUTOSCROLL_INTERVAL);\n\n return () => {\n clearInterval(interval);\n };\n }\n }\n });\n }\n}\n","import {DragOperationStatus, CorePlugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\n\nimport type {DragDropManager} from '../../manager/index.js';\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 document.addEventListener('scroll', this.handleScroll, listenerOptions);\n\n return () => {\n document.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();\n\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.js';\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 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 DOMRectangle,\n getDocument,\n getWindow,\n scrollIntoViewIfNeeded,\n Listeners,\n} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.js';\nimport type {Draggable} from '../../entities/index.js';\nimport {AutoScroller} from '../../plugins/index.js';\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}\n\nconst DEFAULT_KEYBOARD_CODES: KeyboardCodes = {\n start: ['Space', 'Enter'],\n cancel: ['Escape'],\n end: ['Space', 'Enter'],\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 (event instanceof KeyboardEvent) {\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 (!(event.target instanceof Element)) {\n return;\n }\n\n if (source.disabled || !source.element) {\n return;\n }\n\n const {keyboardCodes = DEFAULT_KEYBOARD_CODES} = 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 this.handleStart(event, source, options);\n };\n\n protected handleStart(\n event: KeyboardEvent,\n source: Draggable,\n options: KeyboardSensorOptions | undefined\n ) {\n const {element} = source;\n\n if (!element) {\n throw new Error('Source draggable does not have an associated element');\n }\n\n event.preventDefault();\n event.stopImmediatePropagation();\n\n scrollIntoViewIfNeeded(element);\n\n const {center} = new DOMRectangle(element);\n\n batch(() => {\n this.manager.actions.setDragSource(source.id);\n this.manager.actions.start({\n event,\n coordinates: {\n x: center.x,\n y: center.y,\n },\n });\n });\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(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(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(canceled: boolean) {\n this.manager.actions.stop({\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 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 }\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 {batch, 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 {getDocument, Listeners} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.js';\nimport type {Draggable} from '../../entities/index.js';\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 protected listeners = new Listeners();\n\n protected cleanup: CleanupFunction | undefined;\n\n protected initialCoordinates: Coordinates | undefined;\n\n #clearTimeout: CleanupFunction | undefined;\n\n #document: Document | undefined;\n\n constructor(\n public manager: DragDropManager,\n public options?: PointerSensorOptions\n ) {\n super(manager);\n\n // Adding a non-capture and non-passive `touchmove` listener in order\n // to force `event.preventDefault()` calls to work in dynamically added\n // touchmove event handlers. This is required for iOS Safari.\n this.listeners.bind(window, {\n type: 'touchmove',\n listener() {},\n options: {\n capture: false,\n passive: false,\n },\n });\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 (event instanceof PointerEvent) {\n this.handlePointerDown(event, source, options);\n }\n };\n\n if (target) {\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 (this.disabled) {\n return;\n }\n\n if (\n !event.isPrimary ||\n event.button !== 0 ||\n !(event.target instanceof Element)\n ) {\n return;\n }\n\n if (source.disabled) {\n return;\n }\n\n this.initialCoordinates = {\n x: event.clientX,\n y: event.clientY,\n };\n\n const {activationConstraints} = options;\n const constraints =\n typeof activationConstraints === 'function'\n ? activationConstraints(event, source)\n : activationConstraints;\n\n if (!constraints?.delay && !constraints?.distance) {\n this.handleStart(source, event);\n event.stopImmediatePropagation();\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 this.#document = ownerDocument;\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.bind(this),\n },\n {\n // Prevent scrolling on touch devices\n type: 'touchmove',\n listener: preventDefault,\n options: {\n passive: false,\n },\n },\n {\n // Cancel activation if there is a competing Drag and Drop interaction\n type: 'dragstart',\n listener: this.handleCancel.bind(this),\n },\n {\n type: 'keydown',\n listener: this.handleKeyDown.bind(this),\n },\n ]);\n\n this.cleanup = () => {\n unbindListeners();\n\n this.#clearTimeout?.();\n this.initialCoordinates = undefined;\n };\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 if (this.manager.dragOperation.status.dragging) {\n event.preventDefault();\n event.stopPropagation();\n\n this.manager.actions.move({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();\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();\n }\n }\n }\n\n private handlePointerUp(event: PointerEvent) {\n // Prevent the default behaviour of the event\n event.preventDefault();\n event.stopPropagation();\n\n // End the drag and drop operation\n const {status} = this.manager.dragOperation;\n\n if (!status.idle) {\n const canceled = !status.initialized;\n this.manager.actions.stop({canceled});\n }\n\n // Remove the pointer move and up event listeners\n this.cleanup?.();\n }\n\n protected handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.handleCancel();\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.initialized) {\n return;\n }\n\n batch(() => {\n manager.actions.setDragSource(source.id);\n manager.actions.start({coordinates: initialCoordinates, event});\n });\n }\n\n protected handleCancel() {\n const {dragOperation} = this.manager;\n\n if (dragOperation.status.initialized) {\n this.manager.actions.stop({canceled: true});\n }\n\n // Remove the pointer move and up event listeners\n this.cleanup?.();\n }\n\n public destroy() {\n // Remove all event listeners\n this.listeners.clear();\n }\n\n static configure = configurator(PointerSensor);\n}\n\nfunction preventDefault(event: Event) {\n event.preventDefault();\n}\n","import {\n Draggable as AbstractDraggable,\n Sensor,\n descriptor,\n} from '@dnd-kit/abstract';\nimport type {\n Data,\n DraggableInput,\n DragDropManager as AbstractDragDropManager,\n} from '@dnd-kit/abstract';\nimport {effect, reactive} from '@dnd-kit/state';\n\nimport type {Sensors} from '../../sensors/index.js';\n\nexport type FeedbackType = 'default' | 'move' | 'clone' | 'none';\n\nexport interface Input<T extends Data = Data>\n extends DraggableInput<T, Draggable<T>> {\n handle?: Element;\n element?: Element;\n feedback?: FeedbackType;\n sensors?: Sensors;\n}\n\nexport class Draggable<T extends Data = Data> extends AbstractDraggable<T> {\n @reactive\n public handle: Element | undefined;\n\n @reactive\n public element: Element | undefined;\n\n @reactive\n public feedback: FeedbackType;\n\n @reactive\n public sensors: Sensors | undefined;\n\n constructor(\n input: Input<T>,\n public manager: AbstractDragDropManager<any, any>\n ) {\n const {feedback = 'default'} = input;\n const config = {...input, feedback};\n\n super(config, manager);\n\n this.feedback = feedback;\n\n const cleanupEffect = effect(() => {\n const sensors = this.sensors?.map(descriptor) ?? [...manager.sensors];\n const unbindFunctions = sensors.map((entry) => {\n const sensorInstance =\n entry instanceof Sensor\n ? entry\n : manager.registry.register(entry.plugin);\n const options = 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 const {destroy} = this;\n\n this.destroy = () => {\n cleanupEffect();\n destroy();\n };\n }\n}\n","import {Droppable as AbstractDroppable} from '@dnd-kit/abstract';\nimport type {\n Data,\n DroppableInput as AbstractDroppableInput,\n DragDropManager as AbstractDragDropManager,\n} from '@dnd-kit/abstract';\nimport {defaultCollisionDetection} from '@dnd-kit/collision';\nimport type {CollisionDetector} from '@dnd-kit/collision';\nimport {Signal, effects, reactive, signal, untracked} from '@dnd-kit/state';\nimport type {Shape} from '@dnd-kit/geometry';\nimport {\n DOMRectangle,\n getDocument,\n scheduler,\n getFirstScrollableAncestor,\n} from '@dnd-kit/dom/utilities';\n\ntype OptionalInput = 'collisionDetector';\n\nexport interface Input<T extends Data = Data>\n extends Omit<AbstractDroppableInput<T, Droppable<T>>, OptionalInput> {\n collisionDetector?: CollisionDetector;\n element?: Element;\n}\n\nexport class Droppable<T extends Data = Data> extends AbstractDroppable<T> {\n constructor(\n {element, ...input}: Input<T>,\n public manager: AbstractDragDropManager<any, any>\n ) {\n const {collisionDetector = defaultCollisionDetection} = input;\n\n super({...input, collisionDetector}, manager);\n\n const {destroy} = this;\n\n this.internal = {\n element: signal(element),\n };\n this.refreshShape = this.refreshShape.bind(this);\n\n /*\n * If a droppable target mounts during a drag operation, assume it is visible\n * so that we can update its shape immediately.\n */\n if (manager.dragOperation.status.initialized) {\n this.visible = true;\n }\n\n const cleanup = effects(\n () => {\n const {element} = this;\n const {dragOperation} = manager;\n\n if (element && dragOperation.status.initialized) {\n const scrollableAncestor = getFirstScrollableAncestor(element);\n const doc = getDocument(element);\n const root =\n scrollableAncestor === doc.scrollingElement\n ? doc\n : scrollableAncestor;\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n const [entry] = entries.slice(-1);\n const {width, height} = entry.boundingClientRect;\n\n if (!width && !height) {\n return;\n }\n\n this.visible = entry.isIntersecting;\n },\n {\n root: root ?? doc,\n rootMargin: '40%',\n }\n );\n\n const mutationObserver = new MutationObserver(() =>\n scheduler.schedule(this.refreshShape)\n );\n\n const resizeObserver = new ResizeObserver(() =>\n scheduler.schedule(this.refreshShape)\n );\n\n if (element.parentElement) {\n mutationObserver.observe(element.parentElement, {\n childList: true,\n });\n }\n\n resizeObserver.observe(element);\n intersectionObserver.observe(element);\n\n return () => {\n this.shape = undefined;\n this.visible = undefined;\n resizeObserver.disconnect();\n mutationObserver.disconnect();\n intersectionObserver.disconnect();\n };\n }\n },\n () => {\n const {dragOperation} = manager;\n const {status} = dragOperation;\n const source = untracked(() => dragOperation.source);\n\n if (status.initialized) {\n if (source?.type != null && !this.accepts(source)) {\n return;\n }\n\n scheduler.schedule(this.refreshShape);\n }\n },\n () => {\n if (manager.dragOperation.status.initialized) {\n return () => {\n this.shape = undefined;\n };\n }\n }\n );\n\n this.destroy = () => {\n cleanup();\n destroy();\n };\n }\n\n @reactive\n visible: Boolean | undefined;\n\n @reactive\n public placeholder: Element | undefined;\n\n public set element(value: Element | undefined) {\n this.internal.element.value = value;\n }\n\n public get element() {\n return this.placeholder ?? this.internal?.element.value;\n }\n\n public refreshShape(ignoreTransform?: boolean): Shape | undefined {\n const {element} = this;\n\n if (!element || this.visible === false) {\n this.shape = undefined;\n return undefined;\n }\n\n const {shape} = this;\n const updatedShape = new DOMRectangle(element, ignoreTransform);\n\n if (updatedShape && shape?.equals(updatedShape)) {\n return shape;\n }\n\n this.shape = updatedShape;\n\n return updatedShape;\n }\n\n internal: {\n element: Signal<Element | undefined>;\n };\n}\n"]}
package/index.d.cts ADDED
@@ -0,0 +1,189 @@
1
+ import * as _dnd_kit_abstract from '@dnd-kit/abstract';
2
+ import { Sensor, Sensors as Sensors$1, Data, DraggableInput, Draggable as Draggable$1, DragDropManager as DragDropManager$1, DroppableInput, Droppable as Droppable$1, DragDropManagerInput, Plugins, DragDropEvents, Plugin, CorePlugin } from '@dnd-kit/abstract';
3
+ import { CollisionDetector } from '@dnd-kit/collision';
4
+ import { CleanupFunction, Signal } from '@dnd-kit/state';
5
+ import { Coordinates, Distance, Shape } from '@dnd-kit/geometry';
6
+ import { Listeners } from '@dnd-kit/dom/utilities';
7
+
8
+ type KeyCode = KeyboardEvent['code'];
9
+ type KeyboardCodes = {
10
+ start: KeyCode[];
11
+ cancel: KeyCode[];
12
+ end: KeyCode[];
13
+ up: KeyCode[];
14
+ down: KeyCode[];
15
+ left: KeyCode[];
16
+ right: KeyCode[];
17
+ };
18
+ interface KeyboardSensorOptions {
19
+ keyboardCodes?: KeyboardCodes;
20
+ }
21
+ /**
22
+ * The KeyboardSensor class is an input sensor that handles Keyboard events.
23
+ */
24
+ declare class KeyboardSensor extends Sensor<DragDropManager, KeyboardSensorOptions> {
25
+ #private;
26
+ manager: DragDropManager;
27
+ options?: KeyboardSensorOptions | undefined;
28
+ constructor(manager: DragDropManager, options?: KeyboardSensorOptions | undefined);
29
+ protected listeners: Listeners;
30
+ bind(source: Draggable, options?: KeyboardSensorOptions | undefined): () => void;
31
+ protected handleSourceKeyDown: (event: KeyboardEvent, source: Draggable, options: KeyboardSensorOptions | undefined) => void;
32
+ protected handleStart(event: KeyboardEvent, source: Draggable, options: KeyboardSensorOptions | undefined): void;
33
+ protected handleKeyDown(event: KeyboardEvent, _source: Draggable, options: KeyboardSensorOptions | undefined): void;
34
+ protected handleEnd(canceled: boolean): void;
35
+ protected handleMove(direction: 'up' | 'down' | 'left' | 'right', event: KeyboardEvent): void;
36
+ private sideEffects;
37
+ protected cleanup(): void;
38
+ destroy(): void;
39
+ }
40
+
41
+ interface DelayConstraint {
42
+ value: number;
43
+ tolerance: Distance;
44
+ }
45
+ interface DistanceConstraint {
46
+ value: Distance;
47
+ tolerance?: Distance;
48
+ }
49
+ interface ActivationConstraints {
50
+ distance?: DistanceConstraint;
51
+ delay?: DelayConstraint;
52
+ }
53
+ interface PointerSensorOptions {
54
+ activationConstraints?: ActivationConstraints | ((event: PointerEvent, source: Draggable) => ActivationConstraints | undefined);
55
+ }
56
+ /**
57
+ * The PointerSensor class is an input sensor that handles Pointer events,
58
+ * such as mouse, touch and pen interactions.
59
+ */
60
+ declare class PointerSensor extends Sensor<DragDropManager, PointerSensorOptions> {
61
+ #private;
62
+ manager: DragDropManager;
63
+ options?: PointerSensorOptions | undefined;
64
+ protected listeners: Listeners;
65
+ protected cleanup: CleanupFunction | undefined;
66
+ protected initialCoordinates: Coordinates | undefined;
67
+ constructor(manager: DragDropManager, options?: PointerSensorOptions | undefined);
68
+ bind(source: Draggable, options?: PointerSensorOptions | undefined): () => void;
69
+ protected handlePointerDown(event: PointerEvent, source: Draggable, options?: PointerSensorOptions): void;
70
+ protected handlePointerMove(event: PointerEvent, source: Draggable, options: PointerSensorOptions): void;
71
+ private handlePointerUp;
72
+ protected handleKeyDown(event: KeyboardEvent): void;
73
+ protected handleStart(source: Draggable, event: PointerEvent): void;
74
+ protected handleCancel(): void;
75
+ destroy(): void;
76
+ static configure: (options: PointerSensorOptions) => _dnd_kit_abstract.PluginDescriptor<any, any, typeof PointerSensor>;
77
+ }
78
+
79
+ type Sensors = Sensors$1<DragDropManager>;
80
+
81
+ type FeedbackType = 'default' | 'move' | 'clone' | 'none';
82
+ interface Input$2<T extends Data = Data> extends DraggableInput<T, Draggable<T>> {
83
+ handle?: Element;
84
+ element?: Element;
85
+ feedback?: FeedbackType;
86
+ sensors?: Sensors;
87
+ }
88
+ declare class Draggable<T extends Data = Data> extends Draggable$1<T> {
89
+ manager: DragDropManager$1<any, any>;
90
+ handle: Element | undefined;
91
+ element: Element | undefined;
92
+ feedback: FeedbackType;
93
+ sensors: Sensors | undefined;
94
+ constructor(input: Input$2<T>, manager: DragDropManager$1<any, any>);
95
+ }
96
+
97
+ type OptionalInput = 'collisionDetector';
98
+ interface Input$1<T extends Data = Data> extends Omit<DroppableInput<T, Droppable<T>>, OptionalInput> {
99
+ collisionDetector?: CollisionDetector;
100
+ element?: Element;
101
+ }
102
+ declare class Droppable<T extends Data = Data> extends Droppable$1<T> {
103
+ manager: DragDropManager$1<any, any>;
104
+ constructor({ element, ...input }: Input$1<T>, manager: DragDropManager$1<any, any>);
105
+ visible: Boolean | undefined;
106
+ placeholder: Element | undefined;
107
+ set element(value: Element | undefined);
108
+ get element(): Element | undefined;
109
+ refreshShape(ignoreTransform?: boolean): Shape | undefined;
110
+ internal: {
111
+ element: Signal<Element | undefined>;
112
+ };
113
+ }
114
+
115
+ interface Input extends DragDropManagerInput<any> {
116
+ }
117
+ declare const defaultPreset: {
118
+ plugins: Plugins<DragDropManager>;
119
+ sensors: Sensors$1<DragDropManager>;
120
+ };
121
+ declare class DragDropManager<T extends Draggable = Draggable, U extends Droppable = Droppable> extends DragDropManager$1<Draggable, Droppable> {
122
+ constructor(input?: Input);
123
+ }
124
+
125
+ type GetAnnouncementForEvent<Key extends keyof DragDropEvents<any, any, any>> = (event: Parameters<DragDropEvents<Draggable, Droppable, DragDropManager>[Key]>[0], manager: DragDropManager) => string | undefined;
126
+ interface Announcements {
127
+ dragstart: GetAnnouncementForEvent<'dragstart'>;
128
+ dragmove?: GetAnnouncementForEvent<'dragmove'>;
129
+ dragover?: GetAnnouncementForEvent<'dragover'>;
130
+ dragend: GetAnnouncementForEvent<'dragend'>;
131
+ }
132
+ interface ScreenReaderInstructions {
133
+ draggable: string;
134
+ }
135
+
136
+ interface Options$1 {
137
+ id?: string;
138
+ idPrefix?: {
139
+ description?: string;
140
+ announcement?: string;
141
+ };
142
+ announcements?: Announcements;
143
+ screenReaderInstructions?: ScreenReaderInstructions;
144
+ }
145
+ declare class Accessibility extends Plugin<DragDropManager> {
146
+ constructor(manager: DragDropManager, options?: Options$1);
147
+ }
148
+
149
+ declare class Feedback extends Plugin<DragDropManager> {
150
+ constructor(manager: DragDropManager);
151
+ }
152
+
153
+ interface Transition {
154
+ /**
155
+ * The duration of the transition in milliseconds.
156
+ * @default 250
157
+ */
158
+ duration?: number;
159
+ /**
160
+ * The easing function to use for the transition.
161
+ * @default 'ease-in-out'
162
+ */
163
+ easing?: string;
164
+ }
165
+
166
+ declare class Scroller extends CorePlugin<DragDropManager> {
167
+ #private;
168
+ getScrollableElements: () => Element[] | null;
169
+ private scrollIntentTracker;
170
+ constructor(manager: DragDropManager);
171
+ scroll: (options?: {
172
+ by: Coordinates;
173
+ }) => boolean;
174
+ }
175
+
176
+ interface Options {
177
+ }
178
+ declare class AutoScroller extends Plugin<DragDropManager> {
179
+ destroy: CleanupFunction;
180
+ constructor(manager: DragDropManager, _options?: Options);
181
+ }
182
+
183
+ declare class ScrollListener extends CorePlugin<DragDropManager> {
184
+ #private;
185
+ constructor(manager: DragDropManager);
186
+ private handleScroll;
187
+ }
188
+
189
+ export { Accessibility, AutoScroller, DragDropManager, type Input as DragDropManagerInput, Draggable, type Input$2 as DraggableInput, Droppable, type Input$1 as DroppableInput, Feedback, type FeedbackType, KeyboardSensor, PointerSensor, ScrollListener, Scroller, type Sensors, type Transition, defaultPreset };
package/index.d.ts ADDED
@@ -0,0 +1,189 @@
1
+ import * as _dnd_kit_abstract from '@dnd-kit/abstract';
2
+ import { Sensor, Sensors as Sensors$1, Data, DraggableInput, Draggable as Draggable$1, DragDropManager as DragDropManager$1, DroppableInput, Droppable as Droppable$1, DragDropManagerInput, Plugins, DragDropEvents, Plugin, CorePlugin } from '@dnd-kit/abstract';
3
+ import { CollisionDetector } from '@dnd-kit/collision';
4
+ import { CleanupFunction, Signal } from '@dnd-kit/state';
5
+ import { Coordinates, Distance, Shape } from '@dnd-kit/geometry';
6
+ import { Listeners } from '@dnd-kit/dom/utilities';
7
+
8
+ type KeyCode = KeyboardEvent['code'];
9
+ type KeyboardCodes = {
10
+ start: KeyCode[];
11
+ cancel: KeyCode[];
12
+ end: KeyCode[];
13
+ up: KeyCode[];
14
+ down: KeyCode[];
15
+ left: KeyCode[];
16
+ right: KeyCode[];
17
+ };
18
+ interface KeyboardSensorOptions {
19
+ keyboardCodes?: KeyboardCodes;
20
+ }
21
+ /**
22
+ * The KeyboardSensor class is an input sensor that handles Keyboard events.
23
+ */
24
+ declare class KeyboardSensor extends Sensor<DragDropManager, KeyboardSensorOptions> {
25
+ #private;
26
+ manager: DragDropManager;
27
+ options?: KeyboardSensorOptions | undefined;
28
+ constructor(manager: DragDropManager, options?: KeyboardSensorOptions | undefined);
29
+ protected listeners: Listeners;
30
+ bind(source: Draggable, options?: KeyboardSensorOptions | undefined): () => void;
31
+ protected handleSourceKeyDown: (event: KeyboardEvent, source: Draggable, options: KeyboardSensorOptions | undefined) => void;
32
+ protected handleStart(event: KeyboardEvent, source: Draggable, options: KeyboardSensorOptions | undefined): void;
33
+ protected handleKeyDown(event: KeyboardEvent, _source: Draggable, options: KeyboardSensorOptions | undefined): void;
34
+ protected handleEnd(canceled: boolean): void;
35
+ protected handleMove(direction: 'up' | 'down' | 'left' | 'right', event: KeyboardEvent): void;
36
+ private sideEffects;
37
+ protected cleanup(): void;
38
+ destroy(): void;
39
+ }
40
+
41
+ interface DelayConstraint {
42
+ value: number;
43
+ tolerance: Distance;
44
+ }
45
+ interface DistanceConstraint {
46
+ value: Distance;
47
+ tolerance?: Distance;
48
+ }
49
+ interface ActivationConstraints {
50
+ distance?: DistanceConstraint;
51
+ delay?: DelayConstraint;
52
+ }
53
+ interface PointerSensorOptions {
54
+ activationConstraints?: ActivationConstraints | ((event: PointerEvent, source: Draggable) => ActivationConstraints | undefined);
55
+ }
56
+ /**
57
+ * The PointerSensor class is an input sensor that handles Pointer events,
58
+ * such as mouse, touch and pen interactions.
59
+ */
60
+ declare class PointerSensor extends Sensor<DragDropManager, PointerSensorOptions> {
61
+ #private;
62
+ manager: DragDropManager;
63
+ options?: PointerSensorOptions | undefined;
64
+ protected listeners: Listeners;
65
+ protected cleanup: CleanupFunction | undefined;
66
+ protected initialCoordinates: Coordinates | undefined;
67
+ constructor(manager: DragDropManager, options?: PointerSensorOptions | undefined);
68
+ bind(source: Draggable, options?: PointerSensorOptions | undefined): () => void;
69
+ protected handlePointerDown(event: PointerEvent, source: Draggable, options?: PointerSensorOptions): void;
70
+ protected handlePointerMove(event: PointerEvent, source: Draggable, options: PointerSensorOptions): void;
71
+ private handlePointerUp;
72
+ protected handleKeyDown(event: KeyboardEvent): void;
73
+ protected handleStart(source: Draggable, event: PointerEvent): void;
74
+ protected handleCancel(): void;
75
+ destroy(): void;
76
+ static configure: (options: PointerSensorOptions) => _dnd_kit_abstract.PluginDescriptor<any, any, typeof PointerSensor>;
77
+ }
78
+
79
+ type Sensors = Sensors$1<DragDropManager>;
80
+
81
+ type FeedbackType = 'default' | 'move' | 'clone' | 'none';
82
+ interface Input$2<T extends Data = Data> extends DraggableInput<T, Draggable<T>> {
83
+ handle?: Element;
84
+ element?: Element;
85
+ feedback?: FeedbackType;
86
+ sensors?: Sensors;
87
+ }
88
+ declare class Draggable<T extends Data = Data> extends Draggable$1<T> {
89
+ manager: DragDropManager$1<any, any>;
90
+ handle: Element | undefined;
91
+ element: Element | undefined;
92
+ feedback: FeedbackType;
93
+ sensors: Sensors | undefined;
94
+ constructor(input: Input$2<T>, manager: DragDropManager$1<any, any>);
95
+ }
96
+
97
+ type OptionalInput = 'collisionDetector';
98
+ interface Input$1<T extends Data = Data> extends Omit<DroppableInput<T, Droppable<T>>, OptionalInput> {
99
+ collisionDetector?: CollisionDetector;
100
+ element?: Element;
101
+ }
102
+ declare class Droppable<T extends Data = Data> extends Droppable$1<T> {
103
+ manager: DragDropManager$1<any, any>;
104
+ constructor({ element, ...input }: Input$1<T>, manager: DragDropManager$1<any, any>);
105
+ visible: Boolean | undefined;
106
+ placeholder: Element | undefined;
107
+ set element(value: Element | undefined);
108
+ get element(): Element | undefined;
109
+ refreshShape(ignoreTransform?: boolean): Shape | undefined;
110
+ internal: {
111
+ element: Signal<Element | undefined>;
112
+ };
113
+ }
114
+
115
+ interface Input extends DragDropManagerInput<any> {
116
+ }
117
+ declare const defaultPreset: {
118
+ plugins: Plugins<DragDropManager>;
119
+ sensors: Sensors$1<DragDropManager>;
120
+ };
121
+ declare class DragDropManager<T extends Draggable = Draggable, U extends Droppable = Droppable> extends DragDropManager$1<Draggable, Droppable> {
122
+ constructor(input?: Input);
123
+ }
124
+
125
+ type GetAnnouncementForEvent<Key extends keyof DragDropEvents<any, any, any>> = (event: Parameters<DragDropEvents<Draggable, Droppable, DragDropManager>[Key]>[0], manager: DragDropManager) => string | undefined;
126
+ interface Announcements {
127
+ dragstart: GetAnnouncementForEvent<'dragstart'>;
128
+ dragmove?: GetAnnouncementForEvent<'dragmove'>;
129
+ dragover?: GetAnnouncementForEvent<'dragover'>;
130
+ dragend: GetAnnouncementForEvent<'dragend'>;
131
+ }
132
+ interface ScreenReaderInstructions {
133
+ draggable: string;
134
+ }
135
+
136
+ interface Options$1 {
137
+ id?: string;
138
+ idPrefix?: {
139
+ description?: string;
140
+ announcement?: string;
141
+ };
142
+ announcements?: Announcements;
143
+ screenReaderInstructions?: ScreenReaderInstructions;
144
+ }
145
+ declare class Accessibility extends Plugin<DragDropManager> {
146
+ constructor(manager: DragDropManager, options?: Options$1);
147
+ }
148
+
149
+ declare class Feedback extends Plugin<DragDropManager> {
150
+ constructor(manager: DragDropManager);
151
+ }
152
+
153
+ interface Transition {
154
+ /**
155
+ * The duration of the transition in milliseconds.
156
+ * @default 250
157
+ */
158
+ duration?: number;
159
+ /**
160
+ * The easing function to use for the transition.
161
+ * @default 'ease-in-out'
162
+ */
163
+ easing?: string;
164
+ }
165
+
166
+ declare class Scroller extends CorePlugin<DragDropManager> {
167
+ #private;
168
+ getScrollableElements: () => Element[] | null;
169
+ private scrollIntentTracker;
170
+ constructor(manager: DragDropManager);
171
+ scroll: (options?: {
172
+ by: Coordinates;
173
+ }) => boolean;
174
+ }
175
+
176
+ interface Options {
177
+ }
178
+ declare class AutoScroller extends Plugin<DragDropManager> {
179
+ destroy: CleanupFunction;
180
+ constructor(manager: DragDropManager, _options?: Options);
181
+ }
182
+
183
+ declare class ScrollListener extends CorePlugin<DragDropManager> {
184
+ #private;
185
+ constructor(manager: DragDropManager);
186
+ private handleScroll;
187
+ }
188
+
189
+ export { Accessibility, AutoScroller, DragDropManager, type Input as DragDropManagerInput, Draggable, type Input$2 as DraggableInput, Droppable, type Input$1 as DroppableInput, Feedback, type FeedbackType, KeyboardSensor, PointerSensor, ScrollListener, Scroller, type Sensors, type Transition, defaultPreset };