@dnd-kit/dom 0.0.7 → 0.0.8-beta-20250202144138

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 CHANGED
@@ -1345,6 +1345,10 @@ var _PointerSensor = class _PointerSensor extends abstract.Sensor {
1345
1345
  {
1346
1346
  type: "keydown",
1347
1347
  listener: this.handleKeyDown
1348
+ },
1349
+ {
1350
+ type: "lostpointercapture",
1351
+ listener: this.handlePointerUp
1348
1352
  }
1349
1353
  ]);
1350
1354
  ownerDocument.body.setPointerCapture(event.pointerId);
package/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["src/core/plugins/accessibility/defaults.ts","src/core/plugins/accessibility/utilities.ts","src/core/plugins/accessibility/HiddenText.ts","src/core/plugins/accessibility/LiveRegion.ts","src/core/plugins/accessibility/Accessibility.ts","src/core/plugins/cursor/Cursor.ts","src/core/plugins/feedback/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":["getWindow","Plugin","generateUniqueId","manager","effects","isSafari","effect","_a","_b","getDocument","getFrameTransform","DOMRectangle","Styles","getComputedStyles","untracked","isKeyboardEvent","parseTranslate","supportsPopover","showPopover","supportsStyle","cleanupEffect","transform","status","element","getFrameElement","options","delta","animateTransform","configurator","cloneElement","ProxiedElements","_dec","reactive","Direction","ScrollDirection","signal","batch","Axes","_init","CorePlugin","canScroll","detectScrollIntent","scheduler","computed","getElementFromPoint","getScrollableAncestors","deepEqual","_c","Sensor","Listeners","isElement","scrollIntoViewIfNeeded","event","isPointerEvent","isHTMLElement","exceedsDistance","AbstractDragDropManager","AbstractDraggable","descriptor","_element_dec","_element","AbstractDroppable","defaultCollisionDetection","PositionObserver"],"mappings":"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","file":"index.cjs","sourcesContent":["import type {Announcements, ScreenReaderInstructions} from './types.ts';\n\nexport const defaultAttributes = {\n role: 'button',\n roleDescription: 'draggable',\n tabIndex: 0,\n};\n\nexport const defaultDescriptionIdPrefix = `dnd-kit-description`;\nexport const defaultAnnouncementIdPrefix = `dnd-kit-announcement`;\n\nexport const defaultScreenReaderInstructions: ScreenReaderInstructions = {\n draggable: `To pick up a draggable item, press the space bar. While dragging, use the arrow keys to move the item in a given direction. Press space again to drop the item in its new position, or press escape to cancel.`,\n};\n\nexport const defaultAnnouncements: Announcements = {\n dragstart({operation: {source}}) {\n if (!source) return;\n\n return `Picked up draggable item ${source.id}.`;\n },\n dragover({operation: {source, target}}) {\n if (!source) 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","import {getWindow} from '@dnd-kit/dom/utilities';\n\nexport function isFocusable(element: Element) {\n const window = getWindow(element);\n\n return (\n element instanceof window.HTMLInputElement ||\n element instanceof window.HTMLSelectElement ||\n element instanceof window.HTMLTextAreaElement ||\n element instanceof window.HTMLAnchorElement ||\n element instanceof window.HTMLButtonElement ||\n element instanceof window.HTMLAreaElement\n );\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 {getWindow, 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 const window = getWindow(activator);\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 instanceof window.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 for (const key of ['aria-pressed', 'aria-grabbed']) {\n activator.setAttribute(key, 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 {Plugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\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 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 {configurator, Plugin} from '@dnd-kit/abstract';\nimport {\n animateTransform,\n cloneElement,\n isKeyboardEvent,\n showPopover,\n getComputedStyles,\n supportsPopover,\n supportsStyle,\n Styles,\n parseTranslate,\n ProxiedElements,\n getWindow,\n generateUniqueId,\n getDocument,\n getFrameTransform,\n DOMRectangle,\n getFrameElement,\n} from '@dnd-kit/dom/utilities';\nimport {Coordinates} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Draggable, Droppable} from '../../entities/index.ts';\n\nconst ATTR_PREFIX = 'data-dnd-';\nconst CSS_PREFIX = '--dnd-';\nconst ATTRIBUTE = `${ATTR_PREFIX}dragging`;\nconst cssRules = `[${ATTRIBUTE}] {position: fixed !important;pointer-events: none !important;touch-action: none !important;z-index: calc(infinity);will-change: translate;top: var(${CSS_PREFIX}top, 0px) !important;left: var(${CSS_PREFIX}left, 0px) !important;right: unset !important;bottom: unset !important;width: var(${CSS_PREFIX}width, auto) !important;height: var(${CSS_PREFIX}height, auto) !important;box-sizing:border-box;}[${ATTRIBUTE}] *{pointer-events: none !important;}[${ATTRIBUTE}][style*=\"${CSS_PREFIX}translate\"] {translate: var(${CSS_PREFIX}translate) !important;}[style*=\"${CSS_PREFIX}transition\"] {transition: var(${CSS_PREFIX}transition) !important;}*:where([${ATTRIBUTE}][popover]){overflow:visible;background:var(${CSS_PREFIX}background);border:var(${CSS_PREFIX}border);margin:unset;padding:unset;color:inherit;}[${ATTRIBUTE}]::backdrop {display: none}html:has([${ATTRIBUTE}]) * {user-select:none;-webkit-user-select:none;}`;\nconst PLACEHOLDER_ATTRIBUTE = `${ATTR_PREFIX}placeholder`;\nconst IGNORED_ATTRIBUTES = [\n ATTRIBUTE,\n PLACEHOLDER_ATTRIBUTE,\n 'popover',\n 'aria-pressed',\n 'aria-grabbing',\n];\nconst IGNORED_STYLES = ['view-transition-name'];\n\nexport interface FeedbackOptions {\n rootElement?: Element | ((source: Draggable) => Element);\n}\n\nexport class Feedback extends Plugin<DragDropManager, FeedbackOptions> {\n constructor(manager: DragDropManager, options?: FeedbackOptions) {\n super(manager);\n\n const styleTags = new Map<Document, HTMLStyleElement>();\n\n let initialSize: {width: number; height: number} | undefined;\n let initialCoordinates: Coordinates | undefined;\n let initialFrameTransform:\n | {x: number; y: number; scaleX: number; scaleY: number}\n | undefined;\n let initialTranslate: Coordinates = {x: 0, y: 0};\n let currentTranslate: Coordinates | undefined;\n let transformOrigin: Coordinates | undefined;\n let moved = false;\n\n const styleInjectionCleanup = effect(() => {\n const {status, source, target} = 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 (!styleTags.has(doc)) {\n const style = document.createElement('style');\n style.innerText = cssRules;\n doc.head.prepend(style);\n styleTags.set(doc, style);\n }\n }\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 currentTranslate = undefined;\n initialCoordinates = undefined;\n initialSize = undefined;\n initialFrameTransform = undefined;\n initialTranslate = {x: 0, y: 0};\n transformOrigin = undefined;\n return;\n }\n\n if (!source) return;\n\n const {element, feedback} = source;\n\n if (!element || feedback === 'none') {\n return;\n }\n\n let cleanup: CleanupFunction | undefined;\n\n const frameTransform = getFrameTransform(element);\n const shape = new DOMRectangle(element, {\n frameTransform: null,\n ignoreTransforms: true,\n });\n const {width, height, top, left} = shape;\n const styles = new Styles(element);\n const {background, border, transition, translate} =\n getComputedStyles(element);\n const clone = feedback === 'clone';\n\n const placeholder =\n feedback !== 'move' ? createPlaceholder(source) : 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) {\n initialTranslate = parsedTranslate;\n }\n }\n\n const relativeTop = top * frameTransform.scaleY + frameTransform.y;\n const relativeLeft = left * frameTransform.scaleX + frameTransform.x;\n\n if (!initialCoordinates) {\n initialCoordinates = {x: relativeLeft, y: relativeTop};\n }\n\n if (!initialSize) {\n initialSize = {width, height};\n }\n\n if (!initialFrameTransform) {\n initialFrameTransform = frameTransform;\n }\n\n if (!transformOrigin) {\n const current = untracked(() => position.current);\n\n 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 coordinatesDelta = {\n x: initialCoordinates.x - relativeLeft,\n y: initialCoordinates.y - relativeTop,\n };\n\n const sizeDelta = {\n width:\n (initialSize.width * initialFrameTransform.scaleX -\n width * frameTransform.scaleX) *\n transformOrigin.x,\n height:\n (initialSize.height * initialFrameTransform.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 element.setAttribute(ATTRIBUTE, 'true');\n\n const transform = untracked(() => dragOperation.transform);\n const translateString = `${transform.x * frameTransform.scaleX + initialTranslate.x}px ${transform.y * frameTransform.scaleY + initialTranslate.y}px 0`;\n\n styles.set(\n {\n width: width,\n height: height,\n top: projected.top,\n left: projected.left,\n background,\n border,\n translate: translateString,\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(element)) {\n if (!element.hasAttribute('popover')) {\n element.setAttribute('popover', '');\n }\n showPopover(element);\n }\n\n const actual = new DOMRectangle(element, {\n ignoreTransforms: true,\n });\n const offset = {\n top: projected.top - actual.top,\n left: projected.left - actual.left,\n };\n\n if (Math.abs(offset.left) > 0.01 || Math.abs(offset.top) > 0.01) {\n styles.set(\n {\n top: actual.top + offset.top,\n left: actual.left + offset.left,\n },\n CSS_PREFIX\n );\n } else {\n // Ignore sub-pixel offsets\n offset.left = 0;\n offset.top = 0;\n }\n\n const resizeObserver = new ResizeObserver(() => {\n if (!placeholder) return;\n\n const placeholderShape = new DOMRectangle(placeholder, {\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 (\n element instanceof window.HTMLTableRowElement &&\n placeholder instanceof window.HTMLTableRowElement\n ) {\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(element);\n source.status = 'dragging';\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 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 documentMutationObserver = new MutationObserver((entries) => {\n for (const entry of entries) {\n const {addedNodes} = entry;\n\n if (\n addedNodes.length > 0 &&\n Array.from(addedNodes).some((node) => node.contains(element))\n ) {\n /* Update the position of the placeholder when the source element is moved */\n element.insertAdjacentElement('afterend', placeholder);\n\n /*\n * Any update in DOM order that affects the source element hides 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\n const cleanupEffect = effect(function updateTransform() {\n const {transform, status} = dragOperation;\n\n if (!transform.x && !transform.y && !moved) {\n return;\n }\n\n if (!moved) {\n moved = true;\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 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(element);\n\n currentTranslate = {\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 (element instanceof HTMLElement) {\n element.focus();\n }\n };\n\n let dropEffectCleanup: CleanupFunction | undefined;\n cleanup = () => {\n elementMutationObserver?.disconnect();\n documentMutationObserver?.disconnect();\n resizeObserver.disconnect();\n\n styles.reset();\n\n if (\n placeholder &&\n (moved || placeholder.parentElement !== element.parentElement) &&\n element.isConnected\n ) {\n placeholder.replaceWith(element);\n }\n\n placeholder?.remove();\n element.removeAttribute(ATTRIBUTE);\n\n if (supportsPopover(element)) {\n element.removeAttribute('popover');\n }\n\n cleanupEffect();\n dropEffectCleanup?.();\n\n source.status = 'idle';\n moved = false;\n };\n\n dropEffectCleanup = effect(function dropAnimation() {\n if (dragOperation.status.dropped) {\n const onComplete = cleanup;\n cleanup = undefined;\n\n source.status = 'dropping';\n\n const transform = currentTranslate;\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 target = placeholder ?? element;\n\n const animations = element.getAnimations();\n\n if (animations.length) {\n animations.forEach((animation) => {\n const {effect} = animation;\n\n if (effect instanceof KeyframeEffect) {\n if (\n effect.getKeyframes().some((keyframe) => keyframe.translate)\n ) {\n animation.finish();\n }\n }\n });\n }\n\n const sameFrame =\n getFrameElement(element) === getFrameElement(target);\n const options = {\n frameTransform: sameFrame ? null : undefined,\n };\n const current = new DOMRectangle(element, options);\n const final = new DOMRectangle(target, options);\n const delta = {\n x: current.center.x - final.center.x,\n y: current.center.y - final.center.y,\n };\n const finalTransform = {\n x: transform.x - delta.x,\n y: transform.y - delta.y,\n };\n const heightKeyframes =\n Math.round(current.height) !== Math.round(final.height)\n ? {\n minHeight: [`${current.height}px`, `${final.height}px`],\n maxHeight: [`${current.height}px`, `${final.height}px`],\n }\n : {};\n const widthKeyframes =\n Math.round(current.width) !== Math.round(final.width)\n ? {\n minWidth: [`${current.width}px`, `${final.width}px`],\n maxWidth: [`${current.width}px`, `${final.width}px`],\n }\n : {};\n\n animateTransform({\n element,\n keyframes: {\n ...heightKeyframes,\n ...widthKeyframes,\n translate: [\n `${transform.x}px ${transform.y}px 0`,\n `${finalTransform.x}px ${finalTransform.y}px 0`,\n ],\n },\n options: {\n duration: moved ? 250 : 0,\n easing: 'ease',\n },\n onReady() {\n styles.remove(['translate'], 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 styleTags.forEach((style) => style.remove());\n };\n }\n\n static configure = configurator(Feedback);\n}\n\nfunction createPlaceholder(source: Draggable) {\n return untracked(() => {\n const {element, manager} = source;\n\n if (!element || !manager) return;\n\n const {droppables} = manager.registry;\n const containedDroppables = new Map<Droppable, string>();\n\n for (const droppable of droppables) {\n if (!droppable.element) continue;\n\n if (\n element === droppable.element ||\n element.contains(droppable.element)\n ) {\n const identifierAttribute = `${ATTR_PREFIX}${generateUniqueId('dom-id')}`;\n\n droppable.element.setAttribute(identifierAttribute, '');\n\n containedDroppables.set(droppable, identifierAttribute);\n }\n }\n\n const cleanup: CleanupFunction[] = [];\n const placeholder = cloneElement(element);\n const {remove} = placeholder;\n\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 let current = droppable.element;\n\n droppable.proxy = clonedElement;\n clonedElement.removeAttribute(identifierAttribute);\n\n ProxiedElements.set(current, clonedElement);\n\n cleanup.push(() => {\n ProxiedElements.delete(current);\n droppable.proxy = undefined;\n });\n }\n\n placeholder.setAttribute('inert', 'true');\n placeholder.setAttribute('tab-index', '-1');\n placeholder.setAttribute('aria-hidden', 'true');\n placeholder.setAttribute(PLACEHOLDER_ATTRIBUTE, '');\n placeholder.remove = () => {\n cleanup.forEach((fn) => fn());\n remove.call(placeholder);\n };\n\n return placeholder;\n });\n}\n","import {reactive} from '@dnd-kit/state';\nimport {ScrollDirection as Direction} from '@dnd-kit/dom/utilities';\n\nconst LOCKED = true;\nconst UNLOCKED = false;\n\nexport class ScrollLock {\n @reactive private accessor [Direction.Forward] = LOCKED;\n @reactive private accessor [Direction.Reverse] = LOCKED;\n\n public isLocked(direction?: Direction): boolean {\n if (direction === Direction.Idle) {\n return false;\n }\n\n if (direction == null) {\n return (\n this[Direction.Forward] === LOCKED && this[Direction.Reverse] === LOCKED\n );\n }\n\n return this[direction] === LOCKED;\n }\n\n public unlock(direction: Direction) {\n if (direction === Direction.Idle) {\n return;\n }\n\n this[direction] = UNLOCKED;\n }\n}\n","import {batch, effect, signal, type Signal} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\nimport {Axes} from '@dnd-kit/geometry';\nimport type {Coordinates} from '@dnd-kit/geometry';\nimport {ScrollDirection} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollLock} from './ScrollLock.ts';\n\nconst DIRECTIONS = [ScrollDirection.Forward, ScrollDirection.Reverse];\n\nclass ScrollIntent {\n public x = new ScrollLock();\n public y = new ScrollLock();\n\n public isLocked(): boolean {\n return this.x.isLocked() && this.y.isLocked();\n }\n}\n\nexport class ScrollIntentTracker extends Plugin<DragDropManager> {\n private signal: Signal<ScrollIntent | null>;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n const scrollIntent = signal<ScrollIntent>(new ScrollIntent());\n let previousDelta: Coordinates | null = null;\n\n this.signal = scrollIntent;\n\n effect(() => {\n const {status} = manager.dragOperation;\n\n if (!status.initialized) {\n previousDelta = null;\n scrollIntent.value = new ScrollIntent();\n return;\n }\n\n const {delta} = manager.dragOperation.position;\n\n if (previousDelta) {\n const directions = {\n x: getDirection(delta.x, previousDelta.x),\n y: getDirection(delta.y, previousDelta.y),\n };\n\n const intent = scrollIntent.peek();\n\n batch(() => {\n for (const axis of Axes) {\n for (const direction of DIRECTIONS) {\n if (directions[axis] === direction) {\n intent[axis].unlock(direction);\n }\n }\n }\n\n scrollIntent.value = intent;\n });\n }\n\n previousDelta = delta;\n });\n }\n\n get current(): ScrollIntent | null {\n return this.signal.peek();\n }\n}\n\nfunction getDirection(a: number, b: number): ScrollDirection {\n return Math.sign(a - b);\n}\n","import {CorePlugin} from '@dnd-kit/abstract';\nimport {computed, deepEqual, reactive} from '@dnd-kit/state';\nimport {\n canScroll,\n detectScrollIntent,\n getScrollableAncestors,\n getElementFromPoint,\n ScrollDirection,\n scheduler,\n isKeyboardEvent,\n getDocument,\n getFrameTransform,\n} from '@dnd-kit/dom/utilities';\nimport {Axes, type Coordinates} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollIntentTracker} from './ScrollIntent.ts';\n\nexport class Scroller extends CorePlugin<DragDropManager> {\n public getScrollableElements: () => Set<Element> | null;\n\n private scrollIntentTracker: ScrollIntentTracker;\n\n @reactive\n public accessor autoScrolling = false;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n let previousElementFromPoint: Element | null = null;\n let previousScrollableElements: Set<Element> | null = null;\n const elementFromPoint = computed(() => {\n const {position} = manager.dragOperation;\n\n if (!position) {\n return null;\n }\n\n const element = getElementFromPoint(document, position.current);\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 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}\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 if (\n (!source.handle && source.element && event.target === source.element) ||\n (source.handle && event.target === source.handle)\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\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 {\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 protected listeners = new Listeners();\n\n protected cleanup: Set<CleanupFunction> = new Set();\n\n protected initialCoordinates: Coordinates | undefined;\n\n #clearTimeout: CleanupFunction | 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 ) {\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 },\n ]);\n\n const cleanup = () => {\n setTimeout(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({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 // 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({canceled});\n }\n\n // Remove the pointer move and up event listeners\n this.cleanup.forEach((cleanup) => cleanup());\n this.cleanup.clear();\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 if (event.defaultPrevented) {\n return;\n }\n\n event.preventDefault();\n\n batch(() => {\n manager.actions.setDragSource(source.id);\n manager.actions.start({coordinates: initialCoordinates, event});\n });\n\n const ownerDocument = getDocument(event.target);\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: 'keydown',\n listener: this.handleKeyDown,\n },\n ]);\n\n ownerDocument.body.setPointerCapture(event.pointerId);\n\n this.cleanup.add(unbind);\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.forEach((cleanup) => cleanup());\n this.cleanup.clear();\n }\n\n public destroy() {\n // Remove all event listeners\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 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 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"]}
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/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":["getWindow","Plugin","generateUniqueId","manager","effects","isSafari","effect","_a","_b","getDocument","getFrameTransform","DOMRectangle","Styles","getComputedStyles","untracked","isKeyboardEvent","parseTranslate","supportsPopover","showPopover","supportsStyle","cleanupEffect","transform","status","element","getFrameElement","options","delta","animateTransform","configurator","cloneElement","ProxiedElements","_dec","reactive","Direction","ScrollDirection","signal","batch","Axes","_init","CorePlugin","canScroll","detectScrollIntent","scheduler","computed","getElementFromPoint","getScrollableAncestors","deepEqual","_c","Sensor","Listeners","isElement","scrollIntoViewIfNeeded","event","isPointerEvent","isHTMLElement","exceedsDistance","AbstractDragDropManager","AbstractDraggable","descriptor","_element_dec","_element","AbstractDroppable","defaultCollisionDetection","PositionObserver"],"mappings":"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","file":"index.cjs","sourcesContent":["import type {Announcements, ScreenReaderInstructions} from './types.ts';\n\nexport const defaultAttributes = {\n role: 'button',\n roleDescription: 'draggable',\n tabIndex: 0,\n};\n\nexport const defaultDescriptionIdPrefix = `dnd-kit-description`;\nexport const defaultAnnouncementIdPrefix = `dnd-kit-announcement`;\n\nexport const defaultScreenReaderInstructions: ScreenReaderInstructions = {\n draggable: `To pick up a draggable item, press the space bar. While dragging, use the arrow keys to move the item in a given direction. Press space again to drop the item in its new position, or press escape to cancel.`,\n};\n\nexport const defaultAnnouncements: Announcements = {\n dragstart({operation: {source}}) {\n if (!source) return;\n\n return `Picked up draggable item ${source.id}.`;\n },\n dragover({operation: {source, target}}) {\n if (!source) 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","import {getWindow} from '@dnd-kit/dom/utilities';\n\nexport function isFocusable(element: Element) {\n const window = getWindow(element);\n\n return (\n element instanceof window.HTMLInputElement ||\n element instanceof window.HTMLSelectElement ||\n element instanceof window.HTMLTextAreaElement ||\n element instanceof window.HTMLAnchorElement ||\n element instanceof window.HTMLButtonElement ||\n element instanceof window.HTMLAreaElement\n );\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 {getWindow, 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 const window = getWindow(activator);\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 instanceof window.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 for (const key of ['aria-pressed', 'aria-grabbed']) {\n activator.setAttribute(key, 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 {Plugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\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 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 {configurator, Plugin} from '@dnd-kit/abstract';\nimport {\n animateTransform,\n cloneElement,\n isKeyboardEvent,\n showPopover,\n getComputedStyles,\n supportsPopover,\n supportsStyle,\n Styles,\n parseTranslate,\n ProxiedElements,\n getWindow,\n generateUniqueId,\n getDocument,\n getFrameTransform,\n DOMRectangle,\n getFrameElement,\n} from '@dnd-kit/dom/utilities';\nimport {Coordinates} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Draggable, Droppable} from '../../entities/index.ts';\n\nconst ATTR_PREFIX = 'data-dnd-';\nconst CSS_PREFIX = '--dnd-';\nconst ATTRIBUTE = `${ATTR_PREFIX}dragging`;\nconst cssRules = `[${ATTRIBUTE}] {position: fixed !important;pointer-events: none !important;touch-action: none !important;z-index: calc(infinity);will-change: translate;top: var(${CSS_PREFIX}top, 0px) !important;left: var(${CSS_PREFIX}left, 0px) !important;right: unset !important;bottom: unset !important;width: var(${CSS_PREFIX}width, auto) !important;height: var(${CSS_PREFIX}height, auto) !important;box-sizing:border-box;}[${ATTRIBUTE}] *{pointer-events: none !important;}[${ATTRIBUTE}][style*=\"${CSS_PREFIX}translate\"] {translate: var(${CSS_PREFIX}translate) !important;}[style*=\"${CSS_PREFIX}transition\"] {transition: var(${CSS_PREFIX}transition) !important;}*:where([${ATTRIBUTE}][popover]){overflow:visible;background:var(${CSS_PREFIX}background);border:var(${CSS_PREFIX}border);margin:unset;padding:unset;color:inherit;}[${ATTRIBUTE}]::backdrop {display: none}html:has([${ATTRIBUTE}]) * {user-select:none;-webkit-user-select:none;}`;\nconst PLACEHOLDER_ATTRIBUTE = `${ATTR_PREFIX}placeholder`;\nconst IGNORED_ATTRIBUTES = [\n ATTRIBUTE,\n PLACEHOLDER_ATTRIBUTE,\n 'popover',\n 'aria-pressed',\n 'aria-grabbing',\n];\nconst IGNORED_STYLES = ['view-transition-name'];\n\nexport interface FeedbackOptions {\n rootElement?: Element | ((source: Draggable) => Element);\n}\n\nexport class Feedback extends Plugin<DragDropManager, FeedbackOptions> {\n constructor(manager: DragDropManager, options?: FeedbackOptions) {\n super(manager);\n\n const styleTags = new Map<Document, HTMLStyleElement>();\n\n let initialSize: {width: number; height: number} | undefined;\n let initialCoordinates: Coordinates | undefined;\n let initialFrameTransform:\n | {x: number; y: number; scaleX: number; scaleY: number}\n | undefined;\n let initialTranslate: Coordinates = {x: 0, y: 0};\n let currentTranslate: Coordinates | undefined;\n let transformOrigin: Coordinates | undefined;\n let moved = false;\n\n const styleInjectionCleanup = effect(() => {\n const {status, source, target} = 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 (!styleTags.has(doc)) {\n const style = document.createElement('style');\n style.innerText = cssRules;\n doc.head.prepend(style);\n styleTags.set(doc, style);\n }\n }\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 currentTranslate = undefined;\n initialCoordinates = undefined;\n initialSize = undefined;\n initialFrameTransform = undefined;\n initialTranslate = {x: 0, y: 0};\n transformOrigin = undefined;\n return;\n }\n\n if (!source) return;\n\n const {element, feedback} = source;\n\n if (!element || feedback === 'none') {\n return;\n }\n\n let cleanup: CleanupFunction | undefined;\n\n const frameTransform = getFrameTransform(element);\n const shape = new DOMRectangle(element, {\n frameTransform: null,\n ignoreTransforms: true,\n });\n const {width, height, top, left} = shape;\n const styles = new Styles(element);\n const {background, border, transition, translate} =\n getComputedStyles(element);\n const clone = feedback === 'clone';\n\n const placeholder =\n feedback !== 'move' ? createPlaceholder(source) : 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) {\n initialTranslate = parsedTranslate;\n }\n }\n\n const relativeTop = top * frameTransform.scaleY + frameTransform.y;\n const relativeLeft = left * frameTransform.scaleX + frameTransform.x;\n\n if (!initialCoordinates) {\n initialCoordinates = {x: relativeLeft, y: relativeTop};\n }\n\n if (!initialSize) {\n initialSize = {width, height};\n }\n\n if (!initialFrameTransform) {\n initialFrameTransform = frameTransform;\n }\n\n if (!transformOrigin) {\n const current = untracked(() => position.current);\n\n 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 coordinatesDelta = {\n x: initialCoordinates.x - relativeLeft,\n y: initialCoordinates.y - relativeTop,\n };\n\n const sizeDelta = {\n width:\n (initialSize.width * initialFrameTransform.scaleX -\n width * frameTransform.scaleX) *\n transformOrigin.x,\n height:\n (initialSize.height * initialFrameTransform.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 element.setAttribute(ATTRIBUTE, 'true');\n\n const transform = untracked(() => dragOperation.transform);\n const translateString = `${transform.x * frameTransform.scaleX + initialTranslate.x}px ${transform.y * frameTransform.scaleY + initialTranslate.y}px 0`;\n\n styles.set(\n {\n width: width,\n height: height,\n top: projected.top,\n left: projected.left,\n background,\n border,\n translate: translateString,\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(element)) {\n if (!element.hasAttribute('popover')) {\n element.setAttribute('popover', '');\n }\n showPopover(element);\n }\n\n const actual = new DOMRectangle(element, {\n ignoreTransforms: true,\n });\n const offset = {\n top: projected.top - actual.top,\n left: projected.left - actual.left,\n };\n\n if (Math.abs(offset.left) > 0.01 || Math.abs(offset.top) > 0.01) {\n styles.set(\n {\n top: actual.top + offset.top,\n left: actual.left + offset.left,\n },\n CSS_PREFIX\n );\n } else {\n // Ignore sub-pixel offsets\n offset.left = 0;\n offset.top = 0;\n }\n\n const resizeObserver = new ResizeObserver(() => {\n if (!placeholder) return;\n\n const placeholderShape = new DOMRectangle(placeholder, {\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 (\n element instanceof window.HTMLTableRowElement &&\n placeholder instanceof window.HTMLTableRowElement\n ) {\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(element);\n source.status = 'dragging';\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 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 documentMutationObserver = new MutationObserver((entries) => {\n for (const entry of entries) {\n const {addedNodes} = entry;\n\n if (\n addedNodes.length > 0 &&\n Array.from(addedNodes).some((node) => node.contains(element))\n ) {\n /* Update the position of the placeholder when the source element is moved */\n element.insertAdjacentElement('afterend', placeholder);\n\n /*\n * Any update in DOM order that affects the source element hides 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\n const cleanupEffect = effect(function updateTransform() {\n const {transform, status} = dragOperation;\n\n if (!transform.x && !transform.y && !moved) {\n return;\n }\n\n if (!moved) {\n moved = true;\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 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(element);\n\n currentTranslate = {\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 (element instanceof HTMLElement) {\n element.focus();\n }\n };\n\n let dropEffectCleanup: CleanupFunction | undefined;\n cleanup = () => {\n elementMutationObserver?.disconnect();\n documentMutationObserver?.disconnect();\n resizeObserver.disconnect();\n\n styles.reset();\n\n if (\n placeholder &&\n (moved || placeholder.parentElement !== element.parentElement) &&\n element.isConnected\n ) {\n placeholder.replaceWith(element);\n }\n\n placeholder?.remove();\n element.removeAttribute(ATTRIBUTE);\n\n if (supportsPopover(element)) {\n element.removeAttribute('popover');\n }\n\n cleanupEffect();\n dropEffectCleanup?.();\n\n source.status = 'idle';\n moved = false;\n };\n\n dropEffectCleanup = effect(function dropAnimation() {\n if (dragOperation.status.dropped) {\n const onComplete = cleanup;\n cleanup = undefined;\n\n source.status = 'dropping';\n\n const transform = currentTranslate;\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 target = placeholder ?? element;\n\n const animations = element.getAnimations();\n\n if (animations.length) {\n animations.forEach((animation) => {\n const {effect} = animation;\n\n if (effect instanceof KeyframeEffect) {\n if (\n effect.getKeyframes().some((keyframe) => keyframe.translate)\n ) {\n animation.finish();\n }\n }\n });\n }\n\n const sameFrame =\n getFrameElement(element) === getFrameElement(target);\n const options = {\n frameTransform: sameFrame ? null : undefined,\n };\n const current = new DOMRectangle(element, options);\n const final = new DOMRectangle(target, options);\n const delta = {\n x: current.center.x - final.center.x,\n y: current.center.y - final.center.y,\n };\n const finalTransform = {\n x: transform.x - delta.x,\n y: transform.y - delta.y,\n };\n const heightKeyframes =\n Math.round(current.height) !== Math.round(final.height)\n ? {\n minHeight: [`${current.height}px`, `${final.height}px`],\n maxHeight: [`${current.height}px`, `${final.height}px`],\n }\n : {};\n const widthKeyframes =\n Math.round(current.width) !== Math.round(final.width)\n ? {\n minWidth: [`${current.width}px`, `${final.width}px`],\n maxWidth: [`${current.width}px`, `${final.width}px`],\n }\n : {};\n\n animateTransform({\n element,\n keyframes: {\n ...heightKeyframes,\n ...widthKeyframes,\n translate: [\n `${transform.x}px ${transform.y}px 0`,\n `${finalTransform.x}px ${finalTransform.y}px 0`,\n ],\n },\n options: {\n duration: moved ? 250 : 0,\n easing: 'ease',\n },\n onReady() {\n styles.remove(['translate'], 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 styleTags.forEach((style) => style.remove());\n };\n }\n\n static configure = configurator(Feedback);\n}\n\nfunction createPlaceholder(source: Draggable) {\n return untracked(() => {\n const {element, manager} = source;\n\n if (!element || !manager) return;\n\n const {droppables} = manager.registry;\n const containedDroppables = new Map<Droppable, string>();\n\n for (const droppable of droppables) {\n if (!droppable.element) continue;\n\n if (\n element === droppable.element ||\n element.contains(droppable.element)\n ) {\n const identifierAttribute = `${ATTR_PREFIX}${generateUniqueId('dom-id')}`;\n\n droppable.element.setAttribute(identifierAttribute, '');\n\n containedDroppables.set(droppable, identifierAttribute);\n }\n }\n\n const cleanup: CleanupFunction[] = [];\n const placeholder = cloneElement(element);\n const {remove} = placeholder;\n\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 let current = droppable.element;\n\n droppable.proxy = clonedElement;\n clonedElement.removeAttribute(identifierAttribute);\n\n ProxiedElements.set(current, clonedElement);\n\n cleanup.push(() => {\n ProxiedElements.delete(current);\n droppable.proxy = undefined;\n });\n }\n\n placeholder.setAttribute('inert', 'true');\n placeholder.setAttribute('tab-index', '-1');\n placeholder.setAttribute('aria-hidden', 'true');\n placeholder.setAttribute(PLACEHOLDER_ATTRIBUTE, '');\n placeholder.remove = () => {\n cleanup.forEach((fn) => fn());\n remove.call(placeholder);\n };\n\n return placeholder;\n });\n}\n","import {reactive} from '@dnd-kit/state';\nimport {ScrollDirection as Direction} from '@dnd-kit/dom/utilities';\n\nconst LOCKED = true;\nconst UNLOCKED = false;\n\nexport class ScrollLock {\n @reactive private accessor [Direction.Forward] = LOCKED;\n @reactive private accessor [Direction.Reverse] = LOCKED;\n\n public isLocked(direction?: Direction): boolean {\n if (direction === Direction.Idle) {\n return false;\n }\n\n if (direction == null) {\n return (\n this[Direction.Forward] === LOCKED && this[Direction.Reverse] === LOCKED\n );\n }\n\n return this[direction] === LOCKED;\n }\n\n public unlock(direction: Direction) {\n if (direction === Direction.Idle) {\n return;\n }\n\n this[direction] = UNLOCKED;\n }\n}\n","import {batch, effect, signal, type Signal} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\nimport {Axes} from '@dnd-kit/geometry';\nimport type {Coordinates} from '@dnd-kit/geometry';\nimport {ScrollDirection} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollLock} from './ScrollLock.ts';\n\nconst DIRECTIONS = [ScrollDirection.Forward, ScrollDirection.Reverse];\n\nclass ScrollIntent {\n public x = new ScrollLock();\n public y = new ScrollLock();\n\n public isLocked(): boolean {\n return this.x.isLocked() && this.y.isLocked();\n }\n}\n\nexport class ScrollIntentTracker extends Plugin<DragDropManager> {\n private signal: Signal<ScrollIntent | null>;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n const scrollIntent = signal<ScrollIntent>(new ScrollIntent());\n let previousDelta: Coordinates | null = null;\n\n this.signal = scrollIntent;\n\n effect(() => {\n const {status} = manager.dragOperation;\n\n if (!status.initialized) {\n previousDelta = null;\n scrollIntent.value = new ScrollIntent();\n return;\n }\n\n const {delta} = manager.dragOperation.position;\n\n if (previousDelta) {\n const directions = {\n x: getDirection(delta.x, previousDelta.x),\n y: getDirection(delta.y, previousDelta.y),\n };\n\n const intent = scrollIntent.peek();\n\n batch(() => {\n for (const axis of Axes) {\n for (const direction of DIRECTIONS) {\n if (directions[axis] === direction) {\n intent[axis].unlock(direction);\n }\n }\n }\n\n scrollIntent.value = intent;\n });\n }\n\n previousDelta = delta;\n });\n }\n\n get current(): ScrollIntent | null {\n return this.signal.peek();\n }\n}\n\nfunction getDirection(a: number, b: number): ScrollDirection {\n return Math.sign(a - b);\n}\n","import {CorePlugin} from '@dnd-kit/abstract';\nimport {computed, deepEqual, reactive} from '@dnd-kit/state';\nimport {\n canScroll,\n detectScrollIntent,\n getScrollableAncestors,\n getElementFromPoint,\n ScrollDirection,\n scheduler,\n isKeyboardEvent,\n getDocument,\n getFrameTransform,\n} from '@dnd-kit/dom/utilities';\nimport {Axes, type Coordinates} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollIntentTracker} from './ScrollIntent.ts';\n\nexport class Scroller extends CorePlugin<DragDropManager> {\n public getScrollableElements: () => Set<Element> | null;\n\n private scrollIntentTracker: ScrollIntentTracker;\n\n @reactive\n public accessor autoScrolling = false;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n let previousElementFromPoint: Element | null = null;\n let previousScrollableElements: Set<Element> | null = null;\n const elementFromPoint = computed(() => {\n const {position} = manager.dragOperation;\n\n if (!position) {\n return null;\n }\n\n const element = getElementFromPoint(document, position.current);\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 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}\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 if (\n (!source.handle && source.element && event.target === source.element) ||\n (source.handle && event.target === source.handle)\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\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 {\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 protected listeners = new Listeners();\n\n protected cleanup: Set<CleanupFunction> = new Set();\n\n protected initialCoordinates: Coordinates | undefined;\n\n #clearTimeout: CleanupFunction | 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 ) {\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 },\n ]);\n\n const cleanup = () => {\n setTimeout(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({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 // 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({canceled});\n }\n\n // Remove the pointer move and up event listeners\n this.cleanup.forEach((cleanup) => cleanup());\n this.cleanup.clear();\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 if (event.defaultPrevented) {\n return;\n }\n\n event.preventDefault();\n\n batch(() => {\n manager.actions.setDragSource(source.id);\n manager.actions.start({coordinates: initialCoordinates, event});\n });\n\n const ownerDocument = getDocument(event.target);\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: 'keydown',\n listener: this.handleKeyDown,\n },\n {\n type: 'lostpointercapture',\n listener: this.handlePointerUp,\n },\n ]);\n\n ownerDocument.body.setPointerCapture(event.pointerId);\n\n this.cleanup.add(unbind);\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.forEach((cleanup) => cleanup());\n this.cleanup.clear();\n }\n\n public destroy() {\n // Remove all event listeners\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 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 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"]}
package/index.js CHANGED
@@ -1343,6 +1343,10 @@ var _PointerSensor = class _PointerSensor extends Sensor {
1343
1343
  {
1344
1344
  type: "keydown",
1345
1345
  listener: this.handleKeyDown
1346
+ },
1347
+ {
1348
+ type: "lostpointercapture",
1349
+ listener: this.handlePointerUp
1346
1350
  }
1347
1351
  ]);
1348
1352
  ownerDocument.body.setPointerCapture(event.pointerId);
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/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","getWindow","Plugin","_a","effect","_b","cleanupEffect","transform","status","element","options","delta","generateUniqueId","_dec","Direction","_init","reactive","Axes","getDocument","isKeyboardEvent","ScrollDirection","canScroll","CorePlugin","_c","DOMRectangle","batch","event","Sensor","Listeners","isElement","getFrameTransform","configurator","AbstractDragDropManager","AbstractDraggable","effects","_element_dec","_element","AbstractDroppable","untracked","signal"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,IAAM,iBAAoB,GAAA;AAAA,EAC/B,IAAM,EAAA,QAAA;AAAA,EACN,eAAiB,EAAA,WAAA;AAAA,EACjB,QAAU,EAAA;AACZ,CAAA;AAEO,IAAM,0BAA6B,GAAA,CAAA,mBAAA,CAAA;AACnC,IAAM,2BAA8B,GAAA,CAAA,oBAAA,CAAA;AAEpC,IAAM,+BAA4D,GAAA;AAAA,EACvE,SAAW,EAAA,CAAA,8MAAA;AACb,CAAA;AAEO,IAAM,oBAAsC,GAAA;AAAA,EACjD,UAAU,EAAC,SAAA,EAAW,EAAC,MAAA,IAAU,EAAA;AAC/B,IAAA,IAAI,CAAC,MAAQ,EAAA;AAEb,IAAO,OAAA,CAAA,yBAAA,EAA4B,OAAO,EAAE,CAAA,CAAA,CAAA;AAAA,GAC9C;AAAA,EACA,SAAS,EAAC,SAAA,EAAW,EAAC,MAAQ,EAAA,MAAA,IAAU,EAAA;AACtC,IAAA,IAAI,CAAC,MAAQ,EAAA;AAEb,IAAA,IAAI,MAAQ,EAAA;AACV,MAAA,OAAO,CAAkB,eAAA,EAAA,MAAA,CAAO,EAAE,CAAA,iCAAA,EAAoC,OAAO,EAAE,CAAA,CAAA,CAAA;AAAA;AAGjF,IAAO,OAAA,CAAA,eAAA,EAAkB,OAAO,EAAE,CAAA,sCAAA,CAAA;AAAA,GACpC;AAAA,EACA,OAAA,CAAQ,EAAC,SAAW,EAAA,EAAC,QAAQ,MAAM,EAAA,EAAG,UAAW,EAAA;AAC/C,IAAA,IAAI,CAAC,MAAQ,EAAA;AAEb,IAAA,IAAI,QAAU,EAAA;AACZ,MAAO,OAAA,CAAA,uCAAA,EAA0C,OAAO,EAAE,CAAA,aAAA,CAAA;AAAA;AAG5D,IAAA,IAAI,MAAQ,EAAA;AACV,MAAA,OAAO,CAAkB,eAAA,EAAA,MAAA,CAAO,EAAE,CAAA,mCAAA,EAAsC,OAAO,EAAE,CAAA,CAAA;AAAA;AAGnF,IAAO,OAAA,CAAA,eAAA,EAAkB,OAAO,EAAE,CAAA,aAAA,CAAA;AAAA;AAEtC,CAAA;ACzCO,SAAS,YAAY,OAAkB,EAAA;AAC5C,EAAM,MAAA,MAAA,GAAS,UAAU,OAAO,CAAA;AAEhC,EAAA,OACE,mBAAmB,MAAO,CAAA,gBAAA,IAC1B,OAAmB,YAAA,MAAA,CAAO,qBAC1B,OAAmB,YAAA,MAAA,CAAO,mBAC1B,IAAA,OAAA,YAAmB,OAAO,iBAC1B,IAAA,OAAA,YAAmB,MAAO,CAAA,iBAAA,IAC1B,mBAAmB,MAAO,CAAA,eAAA;AAE9B;;;ACbO,SAAS,gBAAA,CAAiB,IAAY,KAAe,EAAA;AAC1D,EAAM,MAAA,OAAA,GAAU,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA;AAE5C,EAAA,OAAA,CAAQ,EAAK,GAAA,EAAA;AACb,EAAQ,OAAA,CAAA,KAAA,CAAM,WAAY,CAAA,SAAA,EAAW,MAAM,CAAA;AAC3C,EAAA,OAAA,CAAQ,SAAY,GAAA,KAAA;AAEpB,EAAO,OAAA,OAAA;AACT;;;ACRO,SAAS,iBAAiB,EAAY,EAAA;AAC3C,EAAM,MAAA,OAAA,GAAU,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA;AAE5C,EAAA,OAAA,CAAQ,EAAK,GAAA,EAAA;AACb,EAAQ,OAAA,CAAA,YAAA,CAAa,QAAQ,QAAQ,CAAA;AACrC,EAAQ,OAAA,CAAA,YAAA,CAAa,aAAa,QAAQ,CAAA;AAC1C,EAAQ,OAAA,CAAA,YAAA,CAAa,eAAe,MAAM,CAAA;AAC1C,EAAQ,OAAA,CAAA,KAAA,CAAM,WAAY,CAAA,UAAA,EAAY,OAAO,CAAA;AAC7C,EAAQ,OAAA,CAAA,KAAA,CAAM,WAAY,CAAA,OAAA,EAAS,KAAK,CAAA;AACxC,EAAQ,OAAA,CAAA,KAAA,CAAM,WAAY,CAAA,QAAA,EAAU,KAAK,CAAA;AACzC,EAAQ,OAAA,CAAA,KAAA,CAAM,WAAY,CAAA,QAAA,EAAU,MAAM,CAAA;AAC1C,EAAQ,OAAA,CAAA,KAAA,CAAM,WAAY,CAAA,QAAA,EAAU,GAAG,CAAA;AACvC,EAAQ,OAAA,CAAA,KAAA,CAAM,WAAY,CAAA,SAAA,EAAW,GAAG,CAAA;AACxC,EAAQ,OAAA,CAAA,KAAA,CAAM,WAAY,CAAA,UAAA,EAAY,QAAQ,CAAA;AAC9C,EAAQ,OAAA,CAAA,KAAA,CAAM,WAAY,CAAA,MAAA,EAAQ,eAAe,CAAA;AACjD,EAAQ,OAAA,CAAA,KAAA,CAAM,WAAY,CAAA,WAAA,EAAa,aAAa,CAAA;AACpD,EAAQ,OAAA,CAAA,KAAA,CAAM,WAAY,CAAA,aAAA,EAAe,QAAQ,CAAA;AAEjD,EAAO,OAAA,OAAA;AACT;;;ACQa,IAAA,aAAA,GAAN,cAA4B,MAAwB,CAAA;AAAA,EACzD,WAAA,CAAY,SAA0B,OAAmB,EAAA;AACvD,IAAA,KAAA,CAAM,OAAO,CAAA;AAEb,IAAM,MAAA;AAAA,MACJ,EAAA;AAAA,MACA,QAAU,EAAA;AAAA,QACR,aAAa,iBAAoB,GAAA,0BAAA;AAAA,QACjC,cAAc,kBAAqB,GAAA;AAAA,UACjC,EAAC;AAAA,MACL,aAAgB,GAAA,oBAAA;AAAA,MAChB,wBAA2B,GAAA;AAAA,KAC7B,GAAI,4BAAW,EAAC;AAEhB,IAAM,MAAA,aAAA,GAAgB,KAClB,CAAG,EAAA,iBAAiB,IAAI,EAAE,CAAA,CAAA,GAC1B,iBAAiB,iBAAiB,CAAA;AACtC,IAAM,MAAA,cAAA,GAAiB,KACnB,CAAG,EAAA,kBAAkB,IAAI,EAAE,CAAA,CAAA,GAC3B,iBAAiB,kBAAkB,CAAA;AAEvC,IAAI,IAAA,iBAAA;AACJ,IAAI,IAAA,iBAAA;AAEJ,IAAA,MAAM,cAAiB,GAAA,MAAA,CAAO,OAAQ,CAAA,aAAa,CAAE,CAAA,GAAA;AAAA,MACnD,CAAC,CAAC,SAAW,EAAA,eAAe,CAAM,KAAA;AAChC,QAAO,OAAA,IAAA,CAAK,QAAQ,OAAQ,CAAA,gBAAA;AAAA,UAC1B,SAAA;AAAA,UACA,CAAC,OAAYA,QAA6B,KAAA;AACxC,YAAM,MAAA,YAAA,GAAe,mDAAkB,KAAOA,EAAAA,QAAAA,CAAAA;AAE9C,YAAA,IAAI,gBAAgB,iBAAmB,EAAA;AACrC,cAAA,iBAAA,CAAkB,SAAY,GAAA,YAAA;AAAA;AAChC;AACF,SACF;AAAA;AACF,KACF;AAEA,IAAA,MAAM,aAAa,MAAM;AACvB,MAAoB,iBAAA,GAAA,gBAAA;AAAA,QAClB,aAAA;AAAA,QACA,wBAAyB,CAAA;AAAA,OAC3B;AACA,MAAA,iBAAA,GAAoB,iBAAiB,cAAc,CAAA;AAEnD,MAAS,QAAA,CAAA,IAAA,CAAK,MAAO,CAAA,iBAAA,EAAmB,iBAAiB,CAAA;AAAA,KAC3D;AAEA,IAAM,MAAA,cAAA,GAAiB,QAAQ,MAAM;AACnC,MAAA,KAAA,MAAW,SAAa,IAAA,OAAA,CAAQ,QAAS,CAAA,UAAA,CAAW,KAAO,EAAA;AACzD,QAAM,MAAA,EAAC,OAAS,EAAA,MAAA,EAAU,GAAA,SAAA;AAC1B,QAAA,MAAM,YAAY,MAAU,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA;AAC5B,QAAM,MAAA,MAAA,GAASC,UAAU,SAAS,CAAA;AAElC,QAAA,IAAI,SAAW,EAAA;AACb,UAAI,IAAA,CAAC,iBAAqB,IAAA,CAAC,iBAAmB,EAAA;AAC5C,YAAW,UAAA,EAAA;AAAA;AAGb,UACG,IAAA,CAAA,CAAC,WAAY,CAAA,SAAS,CAAK,IAAA,QAAA,OAC5B,CAAC,SAAA,CAAU,YAAa,CAAA,UAAU,CAClC,EAAA;AACA,YAAU,SAAA,CAAA,YAAA,CAAa,YAAY,GAAG,CAAA;AAAA;AAGxC,UACE,IAAA,CAAC,UAAU,YAAa,CAAA,MAAM,KAC9B,EAAE,SAAA,YAAqB,OAAO,iBAC9B,CAAA,EAAA;AACA,YAAU,SAAA,CAAA,YAAA,CAAa,MAAQ,EAAA,iBAAA,CAAkB,IAAI,CAAA;AAAA;AAGvD,UAAA,IAAI,CAAC,SAAA,CAAU,YAAa,CAAA,kBAAkB,CAAG,EAAA;AAC/C,YAAU,SAAA,CAAA,YAAA;AAAA,cACR,sBAAA;AAAA,cACA,iBAAkB,CAAA;AAAA,aACpB;AAAA;AAGF,UAAA,IAAI,CAAC,SAAA,CAAU,YAAa,CAAA,kBAAkB,CAAG,EAAA;AAC/C,YAAU,SAAA,CAAA,YAAA,CAAa,oBAAoB,aAAa,CAAA;AAAA;AAG1D,UAAA,KAAA,MAAW,GAAO,IAAA,CAAC,cAAgB,EAAA,cAAc,CAAG,EAAA;AAClD,YAAA,SAAA,CAAU,YAAa,CAAA,GAAA,EAAK,MAAO,CAAA,SAAA,CAAU,YAAY,CAAC,CAAA;AAAA;AAG5D,UAAA,SAAA,CAAU,YAAa,CAAA,eAAA,EAAiB,MAAO,CAAA,SAAA,CAAU,QAAQ,CAAC,CAAA;AAAA;AACpE;AAGF,MAAA,IAAA,CAAK,UAAU,MAAM;AACnB,QAAmB,iBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,iBAAA,CAAA,MAAA,EAAA;AACnB,QAAmB,iBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,iBAAA,CAAA,MAAA,EAAA;AACnB,QAAA,cAAA,CAAe,OAAQ,CAAA,CAAC,WAAgB,KAAA,WAAA,EAAa,CAAA;AACrD,QAAe,cAAA,EAAA;AAAA,OACjB;AAAA,KACD,CAAA;AAAA;AAEL;ACnHO,IAAM,MAAA,GAAN,cAAqBC,MAAwB,CAAA;AAAA,EAClD,WAAA,CACS,SACP,OACA,EAAA;AACA,IAAA,KAAA,CAAM,SAAS,OAAO,CAAA;AAHf,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAKP,IAAK,IAAA,CAAA,OAAA,GAAU,OAAO,MAAM;AApBhC,MAAAC,IAAAA,GAAAA;AAqBM,MAAM,MAAA,EAAC,aAAa,EAAA,GAAI,IAAK,CAAA,OAAA;AAC7B,MAAM,MAAA,EAAC,SAAS,UAAU,EAAA,GAAA,CAAIA,MAAA,IAAK,CAAA,OAAA,KAAL,IAAAA,GAAAA,GAAAA,GAAgB,EAAC;AAE/C,MAAI,IAAA,aAAA,CAAc,OAAO,WAAa,EAAA;AACpC,QAAM,MAAA,KAAA,GAAQ,QAAS,CAAA,aAAA,CAAc,OAAO,CAAA;AAC5C,QAAM,KAAA,CAAA,SAAA,GAAY,eAAe,MAAM,CAAA,cAAA,CAAA;AACvC,QAAS,QAAA,CAAA,IAAA,CAAK,YAAY,KAAK,CAAA;AAE/B,QAAA,OAAO,MAAM;AACX,UAAA,KAAA,CAAM,MAAO,EAAA;AAAA,SACf;AAAA;AACF,KACD,CAAA;AAAA;AAEL,CAAA;ACVA,IAAM,WAAc,GAAA,WAAA;AACpB,IAAM,UAAa,GAAA,QAAA;AACnB,IAAM,SAAA,GAAY,GAAG,WAAW,CAAA,QAAA,CAAA;AAChC,IAAM,QAAW,GAAA,CAAA,CAAA,EAAI,SAAS,CAAA,oJAAA,EAAuJ,UAAU,CAAkC,+BAAA,EAAA,UAAU,CAAqF,kFAAA,EAAA,UAAU,CAAuC,oCAAA,EAAA,UAAU,CAAoD,iDAAA,EAAA,SAAS,yCAAyC,SAAS,CAAA,UAAA,EAAa,UAAU,CAAA,4BAAA,EAA+B,UAAU,CAAA,gCAAA,EAAmC,UAAU,CAAA,8BAAA,EAAiC,UAAU,CAAoC,iCAAA,EAAA,SAAS,CAA+C,4CAAA,EAAA,UAAU,CAA0B,uBAAA,EAAA,UAAU,CAAsD,mDAAA,EAAA,SAAS,wCAAwC,SAAS,CAAA,iDAAA,CAAA;AAC53B,IAAM,qBAAA,GAAwB,GAAG,WAAW,CAAA,WAAA,CAAA;AAC5C,IAAM,kBAAqB,GAAA;AAAA,EACzB,SAAA;AAAA,EACA,qBAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA;AACA,IAAM,cAAA,GAAiB,CAAC,sBAAsB,CAAA;AAMvC,IAAM,SAAA,GAAN,MAAM,SAAA,SAAiBD,MAAyC,CAAA;AAAA,EACrE,WAAA,CAAY,SAA0B,OAA2B,EAAA;AAC/D,IAAA,KAAA,CAAM,OAAO,CAAA;AAEb,IAAM,MAAA,SAAA,uBAAgB,GAAgC,EAAA;AAEtD,IAAI,IAAA,WAAA;AACJ,IAAI,IAAA,kBAAA;AACJ,IAAI,IAAA,qBAAA;AAGJ,IAAA,IAAI,gBAAgC,GAAA,EAAC,CAAG,EAAA,CAAA,EAAG,GAAG,CAAC,EAAA;AAC/C,IAAI,IAAA,gBAAA;AACJ,IAAI,IAAA,eAAA;AACJ,IAAA,IAAI,KAAQ,GAAA,KAAA;AAEZ,IAAM,MAAA,qBAAA,GAAwBE,OAAO,MAAM;AA3D/C,MAAA,IAAAD,GAAAE,EAAAA,GAAAA;AA4DM,MAAA,MAAM,EAAC,MAAA,EAAQ,MAAQ,EAAA,MAAA,KAAU,OAAQ,CAAA,aAAA;AAEzC,MAAA,IAAI,OAAO,WAAa,EAAA;AACtB,QAAA,MAAM,iBAAiB,WAAYF,CAAAA,CAAAA,GAAAA,GAAA,iCAAQ,OAAR,KAAA,IAAA,GAAAA,MAAmB,IAAI,CAAA;AAC1D,QAAA,MAAM,iBAAiB,WAAYE,CAAAA,CAAAA,GAAAA,GAAA,iCAAQ,OAAR,KAAA,IAAA,GAAAA,MAAmB,IAAI,CAAA;AAC1D,QAAA,MAAM,4BAAgB,IAAA,GAAA,CAAI,CAAC,cAAA,EAAgB,cAAc,CAAC,CAAA;AAE1D,QAAA,KAAA,MAAW,OAAO,SAAW,EAAA;AAC3B,UAAA,IAAI,CAAC,SAAA,CAAU,GAAI,CAAA,GAAG,CAAG,EAAA;AACvB,YAAM,MAAA,KAAA,GAAQ,QAAS,CAAA,aAAA,CAAc,OAAO,CAAA;AAC5C,YAAA,KAAA,CAAM,SAAY,GAAA,QAAA;AAClB,YAAI,GAAA,CAAA,IAAA,CAAK,QAAQ,KAAK,CAAA;AACtB,YAAU,SAAA,CAAA,GAAA,CAAI,KAAK,KAAK,CAAA;AAAA;AAC1B;AAGF,QAAO,OAAA,qBAAA;AAAA;AACT,KACD,CAAA;AAED,IAAM,MAAA,aAAA,GAAgBD,OAAO,MAAM;AAhFvC,MAAAD,IAAAA,GAAAA;AAiFM,MAAM,MAAA,EAAC,eAAiB,GAAA,OAAA;AACxB,MAAA,MAAM,EAAC,QAAA,EAAU,MAAQ,EAAA,MAAA,EAAU,GAAA,aAAA;AAEnC,MAAA,IAAI,OAAO,IAAM,EAAA;AACf,QAAmB,gBAAA,GAAA,KAAA,CAAA;AACnB,QAAqB,kBAAA,GAAA,KAAA,CAAA;AACrB,QAAc,WAAA,GAAA,KAAA,CAAA;AACd,QAAwB,qBAAA,GAAA,KAAA,CAAA;AACxB,QAAA,gBAAA,GAAmB,EAAC,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,CAAC,EAAA;AAC9B,QAAkB,eAAA,GAAA,KAAA,CAAA;AAClB,QAAA;AAAA;AAGF,MAAA,IAAI,CAAC,MAAQ,EAAA;AAEb,MAAM,MAAA,EAAC,OAAS,EAAA,QAAA,EAAY,GAAA,MAAA;AAE5B,MAAI,IAAA,CAAC,OAAW,IAAA,QAAA,KAAa,MAAQ,EAAA;AACnC,QAAA;AAAA;AAGF,MAAI,IAAA,OAAA;AAEJ,MAAM,MAAA,cAAA,GAAiB,kBAAkB,OAAO,CAAA;AAChD,MAAM,MAAA,KAAA,GAAQ,IAAI,YAAA,CAAa,OAAS,EAAA;AAAA,QACtC,cAAgB,EAAA,IAAA;AAAA,QAChB,gBAAkB,EAAA;AAAA,OACnB,CAAA;AACD,MAAA,MAAM,EAAC,KAAA,EAAO,MAAQ,EAAA,GAAA,EAAK,MAAQ,GAAA,KAAA;AACnC,MAAM,MAAA,MAAA,GAAS,IAAI,MAAA,CAAO,OAAO,CAAA;AACjC,MAAA,MAAM,EAAC,UAAY,EAAA,MAAA,EAAQ,YAAY,SAAS,EAAA,GAC9C,kBAAkB,OAAO,CAAA;AAC3B,MAAA,MAAM,QAAQ,QAAa,KAAA,OAAA;AAE3B,MAAA,MAAM,WACJ,GAAA,QAAA,KAAa,MAAS,GAAA,iBAAA,CAAkB,MAAM,CAAI,GAAA,IAAA;AACpD,MAAA,MAAM,mBAAsB,GAAA,SAAA;AAAA,QAAU,MACpC,eAAA,CAAgB,OAAQ,CAAA,aAAA,CAAc,cAAc;AAAA,OACtD;AAEA,MAAA,IAAI,cAAc,MAAQ,EAAA;AACxB,QAAM,MAAA,eAAA,GAAkB,eAAe,SAAS,CAAA;AAEhD,QAAA,IAAI,eAAiB,EAAA;AACnB,UAAmB,gBAAA,GAAA,eAAA;AAAA;AACrB;AAGF,MAAA,MAAM,WAAc,GAAA,GAAA,GAAM,cAAe,CAAA,MAAA,GAAS,cAAe,CAAA,CAAA;AACjE,MAAA,MAAM,YAAe,GAAA,IAAA,GAAO,cAAe,CAAA,MAAA,GAAS,cAAe,CAAA,CAAA;AAEnE,MAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,QAAA,kBAAA,GAAqB,EAAC,CAAA,EAAG,YAAc,EAAA,CAAA,EAAG,WAAW,EAAA;AAAA;AAGvD,MAAA,IAAI,CAAC,WAAa,EAAA;AAChB,QAAc,WAAA,GAAA,EAAC,OAAO,MAAM,EAAA;AAAA;AAG9B,MAAA,IAAI,CAAC,qBAAuB,EAAA;AAC1B,QAAwB,qBAAA,GAAA,cAAA;AAAA;AAG1B,MAAA,IAAI,CAAC,eAAiB,EAAA;AACpB,QAAA,MAAM,OAAU,GAAA,SAAA,CAAU,MAAM,QAAA,CAAS,OAAO,CAAA;AAEhD,QAAkB,eAAA,GAAA;AAAA,UAChB,CAAA,EAAA,CACG,QAAQ,CAAI,GAAA,IAAA,GAAO,eAAe,MAAS,GAAA,cAAA,CAAe,CAC1D,KAAA,KAAA,GAAQ,cAAe,CAAA,MAAA,CAAA;AAAA,UAC1B,CAAA,EAAA,CACG,QAAQ,CAAI,GAAA,GAAA,GAAM,eAAe,MAAS,GAAA,cAAA,CAAe,CACzD,KAAA,MAAA,GAAS,cAAe,CAAA,MAAA;AAAA,SAC7B;AAAA;AAGF,MAAA,MAAM,gBAAmB,GAAA;AAAA,QACvB,CAAA,EAAG,mBAAmB,CAAI,GAAA,YAAA;AAAA,QAC1B,CAAA,EAAG,mBAAmB,CAAI,GAAA;AAAA,OAC5B;AAEA,MAAA,MAAM,SAAY,GAAA;AAAA,QAChB,KAAA,EAAA,CACG,YAAY,KAAQ,GAAA,qBAAA,CAAsB,SACzC,KAAQ,GAAA,cAAA,CAAe,UACzB,eAAgB,CAAA,CAAA;AAAA,QAClB,MAAA,EAAA,CACG,YAAY,MAAS,GAAA,qBAAA,CAAsB,SAC1C,MAAS,GAAA,cAAA,CAAe,UAC1B,eAAgB,CAAA;AAAA,OACpB;AAEA,MAAA,MAAM,KAAQ,GAAA;AAAA,QACZ,CAAG,EAAA,gBAAA,CAAiB,CAAI,GAAA,cAAA,CAAe,SAAS,SAAU,CAAA,KAAA;AAAA,QAC1D,CAAG,EAAA,gBAAA,CAAiB,CAAI,GAAA,cAAA,CAAe,SAAS,SAAU,CAAA;AAAA,OAC5D;AAEA,MAAA,MAAM,SAAY,GAAA;AAAA,QAChB,IAAA,EAAM,OAAO,KAAM,CAAA,CAAA;AAAA,QACnB,GAAA,EAAK,MAAM,KAAM,CAAA;AAAA,OACnB;AAEA,MAAQ,OAAA,CAAA,YAAA,CAAa,WAAW,MAAM,CAAA;AAEtC,MAAA,MAAM,SAAY,GAAA,SAAA,CAAU,MAAM,aAAA,CAAc,SAAS,CAAA;AACzD,MAAA,MAAM,eAAkB,GAAA,CAAA,EAAG,SAAU,CAAA,CAAA,GAAI,eAAe,MAAS,GAAA,gBAAA,CAAiB,CAAC,CAAA,GAAA,EAAM,SAAU,CAAA,CAAA,GAAI,cAAe,CAAA,MAAA,GAAS,iBAAiB,CAAC,CAAA,IAAA,CAAA;AAEjJ,MAAO,MAAA,CAAA,GAAA;AAAA,QACL;AAAA,UACE,KAAA;AAAA,UACA,MAAA;AAAA,UACA,KAAK,SAAU,CAAA,GAAA;AAAA,UACf,MAAM,SAAU,CAAA,IAAA;AAAA,UAChB,UAAA;AAAA,UACA,MAAA;AAAA,UACA,SAAW,EAAA;AAAA,SACb;AAAA,QACA;AAAA,OACF;AAEA,MAAA,IAAI,WAAa,EAAA;AACf,QAAQ,OAAA,CAAA,qBAAA,CAAsB,YAAY,WAAW,CAAA;AAErD,QAAA,IAAI,mCAAS,WAAa,EAAA;AACxB,UAAM,MAAA,IAAA,GACJ,OAAO,OAAQ,CAAA,WAAA,KAAgB,aAC3B,OAAQ,CAAA,WAAA,CAAY,MAAM,CAAA,GAC1B,OAAQ,CAAA,WAAA;AAEd,UAAA,IAAA,CAAK,YAAY,OAAO,CAAA;AAAA;AAC1B;AAGF,MAAI,IAAA,eAAA,CAAgB,OAAO,CAAG,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAA,CAAQ,YAAa,CAAA,SAAS,CAAG,EAAA;AACpC,UAAQ,OAAA,CAAA,YAAA,CAAa,WAAW,EAAE,CAAA;AAAA;AAEpC,QAAA,WAAA,CAAY,OAAO,CAAA;AAAA;AAGrB,MAAM,MAAA,MAAA,GAAS,IAAI,YAAA,CAAa,OAAS,EAAA;AAAA,QACvC,gBAAkB,EAAA;AAAA,OACnB,CAAA;AACD,MAAA,MAAM,MAAS,GAAA;AAAA,QACb,GAAA,EAAK,SAAU,CAAA,GAAA,GAAM,MAAO,CAAA,GAAA;AAAA,QAC5B,IAAA,EAAM,SAAU,CAAA,IAAA,GAAO,MAAO,CAAA;AAAA,OAChC;AAEA,MAAI,IAAA,IAAA,CAAK,GAAI,CAAA,MAAA,CAAO,IAAI,CAAA,GAAI,IAAQ,IAAA,IAAA,CAAK,GAAI,CAAA,MAAA,CAAO,GAAG,CAAA,GAAI,IAAM,EAAA;AAC/D,QAAO,MAAA,CAAA,GAAA;AAAA,UACL;AAAA,YACE,GAAA,EAAK,MAAO,CAAA,GAAA,GAAM,MAAO,CAAA,GAAA;AAAA,YACzB,IAAA,EAAM,MAAO,CAAA,IAAA,GAAO,MAAO,CAAA;AAAA,WAC7B;AAAA,UACA;AAAA,SACF;AAAA,OACK,MAAA;AAEL,QAAA,MAAA,CAAO,IAAO,GAAA,CAAA;AACd,QAAA,MAAA,CAAO,GAAM,GAAA,CAAA;AAAA;AAGf,MAAM,MAAA,cAAA,GAAiB,IAAI,cAAA,CAAe,MAAM;AAC9C,QAAA,IAAI,CAAC,WAAa,EAAA;AAElB,QAAM,MAAA,gBAAA,GAAmB,IAAI,YAAA,CAAa,WAAa,EAAA;AAAA,UACrD,gBAAkB,EAAA;AAAA,SACnB,CAAA;AACD,QAAA,MAAM,SAAS,eAAmB,IAAA,IAAA,GAAA,eAAA,GAAA,EAAC,CAAG,EAAA,CAAA,EAAG,GAAG,CAAC,EAAA;AAC7C,QAAA,MAAM,MAAM,KAAQ,GAAA,gBAAA,CAAiB,KAAS,IAAA,MAAA,CAAO,IAAI,KAAM,CAAA,CAAA;AAC/D,QAAA,MAAM,MAAM,MAAS,GAAA,gBAAA,CAAiB,MAAU,IAAA,MAAA,CAAO,IAAI,KAAM,CAAA,CAAA;AAEjE,QAAO,MAAA,CAAA,GAAA;AAAA,UACL;AAAA,YACE,OAAO,gBAAiB,CAAA,KAAA;AAAA,YACxB,QAAQ,gBAAiB,CAAA,MAAA;AAAA,YACzB,KAAK,GAAM,GAAA,EAAA;AAAA,YACX,MAAM,IAAO,GAAA;AAAA,WACf;AAAA,UACA;AAAA,SACF;AAEA,QAAM,MAAA,MAAA,GAASF,UAAU,OAAO,CAAA;AAGhC,QAAA,IACE,OAAmB,YAAA,MAAA,CAAO,mBAC1B,IAAA,WAAA,YAAuB,OAAO,mBAC9B,EAAA;AACA,UAAA,MAAM,KAAQ,GAAA,KAAA,CAAM,IAAK,CAAA,OAAA,CAAQ,KAAK,CAAA;AACtC,UAAA,MAAM,gBAAmB,GAAA,KAAA,CAAM,IAAK,CAAA,WAAA,CAAY,KAAK,CAAA;AAErD,UAAA,KAAA,MAAW,CAAC,KAAO,EAAA,IAAI,CAAK,IAAA,KAAA,CAAM,SAAW,EAAA;AAC3C,YAAM,MAAA,eAAA,GAAkB,iBAAiB,KAAK,CAAA;AAE9C,YAAA,IAAA,CAAK,KAAM,CAAA,KAAA,GAAQ,CAAG,EAAA,eAAA,CAAgB,WAAW,CAAA,EAAA,CAAA;AAAA;AACnD;AAGF,QAAc,aAAA,CAAA,KAAA,GAAQ,IAAI,YAAA,CAAa,OAAO,CAAA;AAAA,OAC/C,CAAA;AAGD,MAAc,aAAA,CAAA,KAAA,GAAQ,IAAI,YAAA,CAAa,OAAO,CAAA;AAC9C,MAAA,MAAA,CAAO,MAAS,GAAA,UAAA;AAEhB,MAAI,IAAA,uBAAA;AACJ,MAAI,IAAA,wBAAA;AAEJ,MAAA,IAAI,WAAa,EAAA;AACf,QAAA,cAAA,CAAe,QAAQ,WAAW,CAAA;AAElC,QAA0B,uBAAA,GAAA,IAAI,iBAAiB,MAAM;AACnD,UAAA,KAAA,MAAW,SAAa,IAAA,KAAA,CAAM,IAAK,CAAA,OAAA,CAAQ,UAAU,CAAG,EAAA;AACtD,YACE,IAAA,SAAA,CAAU,KAAK,UAAW,CAAA,OAAO,KACjC,kBAAmB,CAAA,QAAA,CAAS,SAAU,CAAA,IAAI,CAC1C,EAAA;AACA,cAAA;AAAA;AAGF,YAAI,IAAA,SAAA,CAAU,SAAS,OAAS,EAAA;AAC9B,cAAA,IAAI,aAAc,CAAA,OAAO,CAAK,IAAA,aAAA,CAAc,WAAW,CAAG,EAAA;AACxD,gBAAA,WAAA,CAAY,YAAa,CAAA,OAAA,EAAS,KAAQ,GAAA,EAAA,GAAK,aAAa,CAAA;AAC5D,gBAAY,WAAA,CAAA,KAAA,CAAM,WAAY,CAAA,YAAA,EAAc,MAAM,CAAA;AAElD,gBAAA,KAAA,MAAW,GAAO,IAAA,MAAA,CAAO,MAAO,CAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;AAC9C,kBAAA,IACE,IAAI,UAAW,CAAA,UAAU,KACzB,cAAe,CAAA,QAAA,CAAS,GAAG,CAC3B,EAAA;AACA,oBAAA;AAAA;AAGF,kBAAA,WAAA,CAAY,KAAM,CAAA,WAAA;AAAA,oBAChB,GAAA;AAAA,oBACA,OAAA,CAAQ,KAAM,CAAA,gBAAA,CAAiB,GAAG;AAAA,mBACpC;AAAA;AACF;AAEF,cAAA;AAAA;AAGF,YAAA,WAAA,CAAY,YAAa,CAAA,SAAA,CAAU,IAAM,EAAA,SAAA,CAAU,KAAK,CAAA;AAAA;AAG1D,UAAA,IAAI,KAAO,EAAA;AACT,YAAA,WAAA,CAAY,YAAY,OAAQ,CAAA,SAAA;AAAA;AAClC,SACD,CAAA;AAED,QAAA,uBAAA,CAAwB,QAAQ,OAAS,EAAA;AAAA,UACvC,UAAY,EAAA,IAAA;AAAA,UACZ,OAAS,EAAA;AAAA,SACV,CAAA;AAED,QAA2B,wBAAA,GAAA,IAAI,gBAAiB,CAAA,CAAC,OAAY,KAAA;AAC3D,UAAA,KAAA,MAAW,SAAS,OAAS,EAAA;AAC3B,YAAM,MAAA,EAAC,YAAc,GAAA,KAAA;AAErB,YAAA,IACE,UAAW,CAAA,MAAA,GAAS,CACpB,IAAA,KAAA,CAAM,KAAK,UAAU,CAAA,CAAE,IAAK,CAAA,CAAC,IAAS,KAAA,IAAA,CAAK,QAAS,CAAA,OAAO,CAAC,CAC5D,EAAA;AAEA,cAAQ,OAAA,CAAA,qBAAA,CAAsB,YAAY,WAAW,CAAA;AAMrD,cAAA,WAAA,CAAY,OAAO,CAAA;AACnB,cAAA;AAAA;AACF;AACF,SACD,CAAA;AAGD,QAAyB,wBAAA,CAAA,OAAA,CAAQ,OAAQ,CAAA,aAAA,CAAc,IAAM,EAAA;AAAA,UAC3D,SAAW,EAAA,IAAA;AAAA,UACX,OAAS,EAAA;AAAA,SACV,CAAA;AAAA;AAGH,MAAMK,MAAAA,cAAAA,GAAgBF,MAAO,CAAA,SAAS,eAAkB,GAAA;AACtD,QAAA,MAAM,EAAC,SAAA,EAAAG,UAAW,EAAA,MAAA,EAAAC,SAAU,GAAA,aAAA;AAE5B,QAAA,IAAI,CAACD,UAAU,CAAA,CAAA,IAAK,CAACA,UAAU,CAAA,CAAA,IAAK,CAAC,KAAO,EAAA;AAC1C,UAAA;AAAA;AAGF,QAAA,IAAI,CAAC,KAAO,EAAA;AACV,UAAQ,KAAA,GAAA,IAAA;AAAA;AAGV,QAAA,IAAIC,QAAO,QAAU,EAAA;AACnB,UAAM,MAAA,mBAAA,GAAsB,sBACxB,qCACA,GAAA,YAAA;AAEJ,UAAA,MAAM,CAAID,GAAAA,UAAAA,CAAU,CAAI,GAAA,cAAA,CAAe,SAAS,gBAAiB,CAAA,CAAA;AACjE,UAAA,MAAM,CAAIA,GAAAA,UAAAA,CAAU,CAAI,GAAA,cAAA,CAAe,SAAS,gBAAiB,CAAA,CAAA;AAEjE,UAAO,MAAA,CAAA,GAAA;AAAA,YACL;AAAA,cACE,UAAY,EAAA,CAAA,EAAG,UAAU,CAAA,YAAA,EAAe,mBAAmB,CAAA,CAAA;AAAA,cAC3D,SAAW,EAAA,CAAA,EAAG,CAAC,CAAA,GAAA,EAAM,CAAC,CAAA,IAAA;AAAA,aACxB;AAAA,YACA;AAAA,WACF;AAEA,UAAc,aAAA,CAAA,KAAA,GAAQ,IAAI,YAAA,CAAa,OAAO,CAAA;AAE9C,UAAmB,gBAAA,GAAA;AAAA,YACjB,CAAA;AAAA,YACA;AAAA,WACF;AAAA;AACF,OACD,CAAA;AAED,MAAA,MAAM,MAAKJ,GAAA,GAAA,OAAA,CAAQ,aAAc,CAAA,MAAA,KAAtB,gBAAAA,GAA8B,CAAA,EAAA;AAEzC,MAAA,MAAM,eAAe,MAAM;AAnZjC,QAAAA,IAAAA,GAAAA;AAoZQ,QAAI,IAAA,CAAC,mBAAuB,IAAA,EAAA,IAAM,IAAM,EAAA;AACtC,UAAA;AAAA;AAGF,QAAA,MAAM,SAAY,GAAA,OAAA,CAAQ,QAAS,CAAA,UAAA,CAAW,IAAI,EAAE,CAAA;AACpD,QAAA,MAAMM,YAAUN,GAAA,GAAA,SAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAW,MAAX,KAAA,IAAA,GAAAA,MAAqB,SAAW,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAA,OAAA;AAEhD,QAAA,IAAIM,oBAAmB,WAAa,EAAA;AAClC,UAAAA,SAAQ,KAAM,EAAA;AAAA;AAChB,OACF;AAEA,MAAI,IAAA,iBAAA;AACJ,MAAA,OAAA,GAAU,MAAM;AACd,QAAyB,uBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,uBAAA,CAAA,UAAA,EAAA;AACzB,QAA0B,wBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,wBAAA,CAAA,UAAA,EAAA;AAC1B,QAAA,cAAA,CAAe,UAAW,EAAA;AAE1B,QAAA,MAAA,CAAO,KAAM,EAAA;AAEb,QAAA,IACE,gBACC,KAAS,IAAA,WAAA,CAAY,kBAAkB,OAAQ,CAAA,aAAA,CAAA,IAChD,QAAQ,WACR,EAAA;AACA,UAAA,WAAA,CAAY,YAAY,OAAO,CAAA;AAAA;AAGjC,QAAa,WAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAA,MAAA,EAAA;AACb,QAAA,OAAA,CAAQ,gBAAgB,SAAS,CAAA;AAEjC,QAAI,IAAA,eAAA,CAAgB,OAAO,CAAG,EAAA;AAC5B,UAAA,OAAA,CAAQ,gBAAgB,SAAS,CAAA;AAAA;AAGnC,QAAAH,cAAc,EAAA;AACd,QAAA,iBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,iBAAA,EAAA;AAEA,QAAA,MAAA,CAAO,MAAS,GAAA,MAAA;AAChB,QAAQ,KAAA,GAAA,KAAA;AAAA,OACV;AAEA,MAAoBF,iBAAAA,GAAAA,MAAAA,CAAO,SAAS,aAAgB,GAAA;AAClD,QAAI,IAAA,aAAA,CAAc,OAAO,OAAS,EAAA;AAChC,UAAA,MAAM,UAAa,GAAA,OAAA;AACnB,UAAU,OAAA,GAAA,KAAA,CAAA;AAEV,UAAA,MAAA,CAAO,MAAS,GAAA,UAAA;AAEhB,UAAA,MAAMG,UAAY,GAAA,gBAAA;AAElB,UAAA,IAAI,CAACA,UAAW,EAAA;AACd,YAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,EAAA;AACA,YAAA;AAAA;AAGF,UAAQ,OAAA,CAAA,QAAA,CAAS,SAAU,CAAA,IAAA,CAAK,MAAM;AAEpC,YAAA,WAAA,CAAY,OAAO,CAAA;AAEnB,YAAA,MAAM,SAAS,WAAe,IAAA,IAAA,GAAA,WAAA,GAAA,OAAA;AAE9B,YAAM,MAAA,UAAA,GAAa,QAAQ,aAAc,EAAA;AAEzC,YAAA,IAAI,WAAW,MAAQ,EAAA;AACrB,cAAW,UAAA,CAAA,OAAA,CAAQ,CAAC,SAAc,KAAA;AAChC,gBAAM,MAAA,EAAC,MAAAH,EAAAA,OAAAA,EAAU,GAAA,SAAA;AAEjB,gBAAA,IAAIA,mBAAkB,cAAgB,EAAA;AACpC,kBACEA,IAAAA,OAAAA,CAAO,cAAe,CAAA,IAAA,CAAK,CAAC,QAAa,KAAA,QAAA,CAAS,SAAS,CAC3D,EAAA;AACA,oBAAA,SAAA,CAAU,MAAO,EAAA;AAAA;AACnB;AACF,eACD,CAAA;AAAA;AAGH,YAAA,MAAM,SACJ,GAAA,eAAA,CAAgB,OAAO,CAAA,KAAM,gBAAgB,MAAM,CAAA;AACrD,YAAA,MAAMM,QAAU,GAAA;AAAA,cACd,cAAA,EAAgB,YAAY,IAAO,GAAA,KAAA;AAAA,aACrC;AACA,YAAA,MAAM,OAAU,GAAA,IAAI,YAAa,CAAA,OAAA,EAASA,QAAO,CAAA;AACjD,YAAA,MAAM,KAAQ,GAAA,IAAI,YAAa,CAAA,MAAA,EAAQA,QAAO,CAAA;AAC9C,YAAA,MAAMC,MAAQ,GAAA;AAAA,cACZ,CAAG,EAAA,OAAA,CAAQ,MAAO,CAAA,CAAA,GAAI,MAAM,MAAO,CAAA,CAAA;AAAA,cACnC,CAAG,EAAA,OAAA,CAAQ,MAAO,CAAA,CAAA,GAAI,MAAM,MAAO,CAAA;AAAA,aACrC;AACA,YAAA,MAAM,cAAiB,GAAA;AAAA,cACrB,CAAA,EAAGJ,UAAU,CAAA,CAAA,GAAII,MAAM,CAAA,CAAA;AAAA,cACvB,CAAA,EAAGJ,UAAU,CAAA,CAAA,GAAII,MAAM,CAAA;AAAA,aACzB;AACA,YAAM,MAAA,eAAA,GACJ,IAAK,CAAA,KAAA,CAAM,OAAQ,CAAA,MAAM,MAAM,IAAK,CAAA,KAAA,CAAM,KAAM,CAAA,MAAM,CAClD,GAAA;AAAA,cACE,SAAA,EAAW,CAAC,CAAG,EAAA,OAAA,CAAQ,MAAM,CAAM,EAAA,CAAA,EAAA,CAAA,EAAG,KAAM,CAAA,MAAM,CAAI,EAAA,CAAA,CAAA;AAAA,cACtD,SAAA,EAAW,CAAC,CAAG,EAAA,OAAA,CAAQ,MAAM,CAAM,EAAA,CAAA,EAAA,CAAA,EAAG,KAAM,CAAA,MAAM,CAAI,EAAA,CAAA;AAAA,gBAExD,EAAC;AACP,YAAM,MAAA,cAAA,GACJ,IAAK,CAAA,KAAA,CAAM,OAAQ,CAAA,KAAK,MAAM,IAAK,CAAA,KAAA,CAAM,KAAM,CAAA,KAAK,CAChD,GAAA;AAAA,cACE,QAAA,EAAU,CAAC,CAAG,EAAA,OAAA,CAAQ,KAAK,CAAM,EAAA,CAAA,EAAA,CAAA,EAAG,KAAM,CAAA,KAAK,CAAI,EAAA,CAAA,CAAA;AAAA,cACnD,QAAA,EAAU,CAAC,CAAG,EAAA,OAAA,CAAQ,KAAK,CAAM,EAAA,CAAA,EAAA,CAAA,EAAG,KAAM,CAAA,KAAK,CAAI,EAAA,CAAA;AAAA,gBAErD,EAAC;AAEP,YAAiB,gBAAA,CAAA;AAAA,cACf,OAAA;AAAA,cACA,SAAA,EAAW,aACN,CAAA,cAAA,CAAA,cAAA,CAAA,EAAA,EAAA,eAAA,CAAA,EACA,cAFM,CAAA,EAAA;AAAA,gBAGT,SAAW,EAAA;AAAA,kBACT,CAAGJ,EAAAA,UAAAA,CAAU,CAAC,CAAA,GAAA,EAAMA,WAAU,CAAC,CAAA,IAAA,CAAA;AAAA,kBAC/B,CAAG,EAAA,cAAA,CAAe,CAAC,CAAA,GAAA,EAAM,eAAe,CAAC,CAAA,IAAA;AAAA;AAC3C,eACF,CAAA;AAAA,cACA,OAAS,EAAA;AAAA,gBACP,QAAA,EAAU,QAAQ,GAAM,GAAA,CAAA;AAAA,gBACxB,MAAQ,EAAA;AAAA,eACV;AAAA,cACA,OAAU,GAAA;AACR,gBAAA,MAAA,CAAO,MAAO,CAAA,CAAC,WAAW,CAAA,EAAG,UAAU,CAAA;AAAA,eACzC;AAAA,cACA,QAAW,GAAA;AACT,gBAAA,qBAAA,CAAsB,YAAY,CAAA;AAClC,gBAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,EAAA;AAAA;AACF,aACD,CAAA;AAAA,WACF,CAAA;AAAA;AACH,OACD,CAAA;AAED,MAAA,OAAO,MAAM,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,EAAA;AAAA,KACd,CAAA;AAED,IAAA,IAAA,CAAK,UAAU,MAAM;AACnB,MAAsB,qBAAA,EAAA;AACtB,MAAc,aAAA,EAAA;AACd,MAAA,SAAA,CAAU,OAAQ,CAAA,CAAC,KAAU,KAAA,KAAA,CAAM,QAAQ,CAAA;AAAA,KAC7C;AAAA;AAIJ,CAAA;AA1fa,SAyfJ,CAAA,SAAA,GAAY,aAAa,SAAQ,CAAA;AAzfnC,IAAM,QAAN,GAAA;AA4fP,SAAS,kBAAkB,MAAmB,EAAA;AAC5C,EAAA,OAAO,UAAU,MAAM;AAxiBzB,IAAAJ,IAAAA,GAAAA;AAyiBI,IAAM,MAAA,EAAC,OAAS,EAAA,OAAA,EAAW,GAAA,MAAA;AAE3B,IAAI,IAAA,CAAC,OAAW,IAAA,CAAC,OAAS,EAAA;AAE1B,IAAM,MAAA,EAAC,UAAU,EAAA,GAAI,OAAQ,CAAA,QAAA;AAC7B,IAAM,MAAA,mBAAA,uBAA0B,GAAuB,EAAA;AAEvD,IAAA,KAAA,MAAW,aAAa,UAAY,EAAA;AAClC,MAAI,IAAA,CAAC,UAAU,OAAS,EAAA;AAExB,MAAA,IACE,YAAY,SAAU,CAAA,OAAA,IACtB,QAAQ,QAAS,CAAA,SAAA,CAAU,OAAO,CAClC,EAAA;AACA,QAAA,MAAM,sBAAsB,CAAG,EAAA,WAAW,CAAGS,EAAAA,gBAAAA,CAAiB,QAAQ,CAAC,CAAA,CAAA;AAEvE,QAAU,SAAA,CAAA,OAAA,CAAQ,YAAa,CAAA,mBAAA,EAAqB,EAAE,CAAA;AAEtD,QAAoB,mBAAA,CAAA,GAAA,CAAI,WAAW,mBAAmB,CAAA;AAAA;AACxD;AAGF,IAAA,MAAM,UAA6B,EAAC;AACpC,IAAM,MAAA,WAAA,GAAc,aAAa,OAAO,CAAA;AACxC,IAAM,MAAA,EAAC,QAAU,GAAA,WAAA;AAEjB,IAAA,KAAA,MAAW,CAAC,SAAA,EAAW,mBAAmB,CAAA,IAAK,mBAAqB,EAAA;AAClE,MAAI,IAAA,CAAC,UAAU,OAAS,EAAA;AAExB,MAAM,MAAA,QAAA,GAAW,IAAI,mBAAmB,CAAA,CAAA,CAAA;AACxC,MAAM,MAAA,aAAA,GAAgB,YAAY,OAAQ,CAAA,QAAQ,IAC9C,WACA,GAAA,WAAA,CAAY,cAAc,QAAQ,CAAA;AAEtC,MAAA,CAAAT,GAAA,GAAA,SAAA,CAAU,OAAV,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAmB,eAAgB,CAAA,mBAAA,CAAA;AAEnC,MAAA,IAAI,CAAC,aAAe,EAAA;AAEpB,MAAA,IAAI,UAAU,SAAU,CAAA,OAAA;AAExB,MAAA,SAAA,CAAU,KAAQ,GAAA,aAAA;AAClB,MAAA,aAAA,CAAc,gBAAgB,mBAAmB,CAAA;AAEjD,MAAgB,eAAA,CAAA,GAAA,CAAI,SAAS,aAAa,CAAA;AAE1C,MAAA,OAAA,CAAQ,KAAK,MAAM;AACjB,QAAA,eAAA,CAAgB,OAAO,OAAO,CAAA;AAC9B,QAAA,SAAA,CAAU,KAAQ,GAAA,KAAA,CAAA;AAAA,OACnB,CAAA;AAAA;AAGH,IAAY,WAAA,CAAA,YAAA,CAAa,SAAS,MAAM,CAAA;AACxC,IAAY,WAAA,CAAA,YAAA,CAAa,aAAa,IAAI,CAAA;AAC1C,IAAY,WAAA,CAAA,YAAA,CAAa,eAAe,MAAM,CAAA;AAC9C,IAAY,WAAA,CAAA,YAAA,CAAa,uBAAuB,EAAE,CAAA;AAClD,IAAA,WAAA,CAAY,SAAS,MAAM;AACzB,MAAA,OAAA,CAAQ,OAAQ,CAAA,CAAC,EAAO,KAAA,EAAA,EAAI,CAAA;AAC5B,MAAA,MAAA,CAAO,KAAK,WAAW,CAAA;AAAA,KACzB;AAEA,IAAO,OAAA,WAAA;AAAA,GACR,CAAA;AACH;ACpmBA,IAAM,MAAS,GAAA,IAAA;AACf,IAAM,QAAW,GAAA,KAAA;AAJjB,IAAA,IAAA,EAAA,EAAA,EAAAU,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,GAAA,EAAA,GAAA;AAOE,EAAA,IAAAA,QAAA,CAAC,QAAA,CAAA,EAA2BC,gBAAU,OACtC,CAAA,EAAA,EAAA,IAAA,IAAA,GAAA,CAAC,WAA2BA,eAAU,CAAA,OAAA,CAAA;AAFjC,IAAM,aAAN,MAAiB;AAAA,EAAjB,WAAA,GAAA;AACK,IAAV,YAAA,CAAA,IAAA,EAAA,GAAA,EAAiD,iBAAvC,CAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAuC,MAAvC,CAAA,CAAA,EAAA,iBAAA,CAAA,KAAA,EAAA,EAAA,EAAA,IAAA,CAAA;AACA,IAAV,YAAA,CAAA,IAAA,EAAA,GAAA,EAAiD,iBAAvC,CAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAuC,MAAvC,CAAA,CAAA,EAAA,iBAAA,CAAA,KAAA,EAAA,EAAA,EAAA,IAAA,CAAA;AAAA;AAAA,EAEH,SAAS,SAAgC,EAAA;AAC9C,IAAI,IAAA,SAAA,KAAcA,gBAAU,IAAM,EAAA;AAChC,MAAO,OAAA,KAAA;AAAA;AAGT,IAAA,IAAI,aAAa,IAAM,EAAA;AACrB,MACE,OAAA,IAAA,CAAKA,gBAAU,OAAO,CAAA,KAAM,UAAU,IAAK,CAAAA,eAAA,CAAU,OAAO,CAAM,KAAA,MAAA;AAAA;AAItE,IAAO,OAAA,IAAA,CAAK,SAAS,CAAM,KAAA,MAAA;AAAA;AAC7B,EAEO,OAAO,SAAsB,EAAA;AAClC,IAAI,IAAA,SAAA,KAAcA,gBAAU,IAAM,EAAA;AAChC,MAAA;AAAA;AAGF,IAAA,IAAA,CAAK,SAAS,CAAI,GAAA,QAAA;AAAA;AAEtB,CAAA;AAzBO,KAAA,GAAA,gBAAA,CAAA,IAAA,CAAA;AACL,GAAA,GAAA,IAAA,OAAA,EAAA;AACA,GAAA,GAAA,IAAA,OAAA,EAAA;AADU,iBAAV,CAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAAD,OADW,UACX,EAAA,GAAA,CAAA;AACU,iBAAA,CAAA,KAAA,EAAA,CAAA,EAAV,UAFW,UAEX,EAAA,GAAA,CAAA;AAFK,mBAAM,CAAA,KAAA,EAAA,UAAA,CAAA;;;ACIb,IAAM,UAAa,GAAA,CAAC,eAAgB,CAAA,OAAA,EAAS,gBAAgB,OAAO,CAAA;AAEpE,IAAM,eAAN,MAAmB;AAAA,EAAnB,WAAA,GAAA;AACE,IAAO,IAAA,CAAA,CAAA,GAAI,IAAI,UAAW,EAAA;AAC1B,IAAO,IAAA,CAAA,CAAA,GAAI,IAAI,UAAW,EAAA;AAAA;AAAA,EAEnB,QAAoB,GAAA;AACzB,IAAA,OAAO,KAAK,CAAE,CAAA,QAAA,EAAc,IAAA,IAAA,CAAK,EAAE,QAAS,EAAA;AAAA;AAEhD,CAAA;AAEO,IAAM,mBAAA,GAAN,cAAkCX,MAAwB,CAAA;AAAA,EAG/D,YAAY,OAA0B,EAAA;AACpC,IAAA,KAAA,CAAM,OAAO,CAAA;AAEb,IAAA,MAAM,YAAe,GAAA,MAAA,CAAqB,IAAI,YAAA,EAAc,CAAA;AAC5D,IAAA,IAAI,aAAoC,GAAA,IAAA;AAExC,IAAA,IAAA,CAAK,MAAS,GAAA,YAAA;AAEd,IAAAE,OAAO,MAAM;AACX,MAAM,MAAA,EAAC,MAAM,EAAA,GAAI,OAAQ,CAAA,aAAA;AAEzB,MAAI,IAAA,CAAC,OAAO,WAAa,EAAA;AACvB,QAAgB,aAAA,GAAA,IAAA;AAChB,QAAa,YAAA,CAAA,KAAA,GAAQ,IAAI,YAAa,EAAA;AACtC,QAAA;AAAA;AAGF,MAAA,MAAM,EAAC,KAAA,EAAS,GAAA,OAAA,CAAQ,aAAc,CAAA,QAAA;AAEtC,MAAA,IAAI,aAAe,EAAA;AACjB,QAAA,MAAM,UAAa,GAAA;AAAA,UACjB,CAAG,EAAA,YAAA,CAAa,KAAM,CAAA,CAAA,EAAG,cAAc,CAAC,CAAA;AAAA,UACxC,CAAG,EAAA,YAAA,CAAa,KAAM,CAAA,CAAA,EAAG,cAAc,CAAC;AAAA,SAC1C;AAEA,QAAM,MAAA,MAAA,GAAS,aAAa,IAAK,EAAA;AAEjC,QAAA,KAAA,CAAM,MAAM;AACV,UAAA,KAAA,MAAW,QAAQ,IAAM,EAAA;AACvB,YAAA,KAAA,MAAW,aAAa,UAAY,EAAA;AAClC,cAAI,IAAA,UAAA,CAAW,IAAI,CAAA,KAAM,SAAW,EAAA;AAClC,gBAAO,MAAA,CAAA,IAAI,CAAE,CAAA,MAAA,CAAO,SAAS,CAAA;AAAA;AAC/B;AACF;AAGF,UAAA,YAAA,CAAa,KAAQ,GAAA,MAAA;AAAA,SACtB,CAAA;AAAA;AAGH,MAAgB,aAAA,GAAA,KAAA;AAAA,KACjB,CAAA;AAAA;AACH,EAEA,IAAI,OAA+B,GAAA;AACjC,IAAO,OAAA,IAAA,CAAK,OAAO,IAAK,EAAA;AAAA;AAE5B,CAAA;AAEA,SAAS,YAAA,CAAa,GAAW,CAA4B,EAAA;AAC3D,EAAO,OAAA,IAAA,CAAK,IAAK,CAAA,CAAA,GAAI,CAAC,CAAA;AACxB;;;AC3EA,IAAA,kBAAA,EAAAD,KAAAY,MAAA,EAAA,cAAA,EAAA,KAAA,EAAA,OAAA;AAmBO,IAAM,WAAN,eAAuBZ,GAAAA,GAAA,UAK5B,EAAA,kBAAA,GAAA,CAACa,WAL2Bb,GAA4B,EAAA;AAAA,EAQxD,YAAY,OAA0B,EAAA;AACpC,IAAA,KAAA,CAAM,OAAO,CAAA;AAHf,IAAA,YAAA,CAAA,IAAA,EAAgB,gBAAgB,iBAAhCY,CAAAA,MAAAA,EAAA,CAAgC,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA,EAAhC,kBAAAA,MAAA,EAAA,EAAA,EAAA,IAAA,CAAA;AAsFA,IAAA,YAAA,CAAA,IAAA,EAAA,KAAA,CAAA;AAEA,IAAA,YAAA,CAAA,IAAA,EAAA,OAAA,EAAU,MAAM;AACd,MAAI,IAAA,CAAC,mBAAK,KAAO,CAAA,EAAA;AACf,QAAA;AAAA;AAGF,MAAA,MAAM,EAAC,OAAA,EAAS,EAAE,EAAA,GAAI,YAAK,CAAA,IAAA,EAAA,KAAA,CAAA;AAE3B,MAAA,IAAI,EAAG,CAAA,CAAA,EAAW,OAAA,CAAA,SAAA,IAAa,EAAG,CAAA,CAAA;AAClC,MAAA,IAAI,EAAG,CAAA,CAAA,EAAW,OAAA,CAAA,UAAA,IAAc,EAAG,CAAA,CAAA;AAAA,KACrC,CAAA;AAEA,IAAO,IAAA,CAAA,MAAA,GAAS,CAAC,OAAyC,KAAA;AA5H5D,MAAAZ,IAAAA,GAAAA;AA6HI,MAAA,IAAI,KAAK,QAAU,EAAA;AACjB,QAAO,OAAA,KAAA;AAAA;AAGT,MAAM,MAAA,QAAA,GAAW,KAAK,qBAAsB,EAAA;AAE5C,MAAA,IAAI,CAAC,QAAU,EAAA;AACb,QAAA,YAAA,CAAA,IAAA,EAAK,KAAQ,EAAA,KAAA,CAAA,CAAA;AACb,QAAO,OAAA,KAAA;AAAA;AAGT,MAAA,MAAM,EAAC,QAAA,EAAY,GAAA,IAAA,CAAK,OAAQ,CAAA,aAAA;AAChC,MAAA,MAAM,kBAAkB,QAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,OAAA;AAElC,MAAA,IAAI,eAAiB,EAAA;AACnB,QAAA,MAAM,EAAC,EAAA,EAAM,GAAA,OAAA,IAAA,IAAA,GAAA,OAAA,GAAW,EAAC;AACzB,QAAA,MAAM,SAAS,EACX,GAAA;AAAA,UACE,CAAA,EAAG,eAAgB,CAAA,EAAA,CAAG,CAAC,CAAA;AAAA,UACvB,CAAA,EAAG,eAAgB,CAAA,EAAA,CAAG,CAAC;AAAA,SAEzB,GAAA,KAAA,CAAA;AACJ,QAAA,MAAM,YAAe,GAAA,MAAA,GACjB,KACA,CAAA,GAAA,IAAA,CAAK,mBAAoB,CAAA,OAAA;AAE7B,QAAA,IAAI,6CAAc,QAAY,EAAA,EAAA;AAC5B,UAAO,OAAA,KAAA;AAAA;AAGT,QAAA,KAAA,MAAW,qBAAqB,QAAU,EAAA;AACxC,UAAM,MAAA,gBAAA,GAAmB,SAAU,CAAA,iBAAA,EAAmB,EAAE,CAAA;AAExD,UAAI,IAAA,gBAAA,CAAiB,CAAK,IAAA,gBAAA,CAAiB,CAAG,EAAA;AAC5C,YAAM,MAAA,EAAC,KAAO,EAAA,SAAA,EAAa,GAAA,kBAAA;AAAA,cACzB,iBAAA;AAAA,cACA,eAAA;AAAA,cACA;AAAA,aACF;AAEA,YAAA,IAAI,YAAc,EAAA;AAChB,cAAA,KAAA,MAAW,QAAQc,IAAM,EAAA;AACvB,gBAAA,IAAI,aAAa,IAAI,CAAA,CAAE,SAAS,SAAU,CAAA,IAAI,CAAC,CAAG,EAAA;AAChD,kBAAA,KAAA,CAAM,IAAI,CAAI,GAAA,CAAA;AACd,kBAAA,SAAA,CAAU,IAAI,CAAI,GAAA,CAAA;AAAA;AACpB;AACF;AAGF,YAAI,IAAA,SAAA,CAAU,CAAK,IAAA,SAAA,CAAU,CAAG,EAAA;AAC9B,cAAA,MAAM,EAAC,CAAA,EAAG,CAAC,EAAA,GAAI,EAAM,IAAA,IAAA,GAAA,EAAA,GAAA,SAAA;AACrB,cAAM,MAAA,YAAA,GAAe,IAAI,KAAM,CAAA,CAAA;AAC/B,cAAM,MAAA,WAAA,GAAc,IAAI,KAAM,CAAA,CAAA;AAE9B,cAAA,IAAI,gBAAgB,WAAa,EAAA;AAC/B,gBAAA,MAAM,gBAAmBd,GAAAA,CAAAA,GAAAA,GAAA,YAAK,CAAA,IAAA,EAAA,KAAA,CAAA,KAAL,gBAAAA,GAAY,CAAA,EAAA;AAErC,gBAAI,IAAA,IAAA,CAAK,iBAAiB,gBAAkB,EAAA;AAC1C,kBAAA,MAAM,uBACH,gBAAiB,CAAA,CAAA,IAAK,CAAC,YACvB,IAAA,gBAAA,CAAiB,KAAK,CAAC,WAAA;AAE1B,kBAAA,IAAI,oBAAsB,EAAA;AAAA;AAG5B,gBAAA,YAAA,CAAA,IAAA,EAAK,KAAQ,EAAA;AAAA,kBACX,OAAS,EAAA,iBAAA;AAAA,kBACT,EAAI,EAAA;AAAA,oBACF,CAAG,EAAA,YAAA;AAAA,oBACH,CAAG,EAAA;AAAA;AACL,iBACF,CAAA;AAEA,gBAAU,SAAA,CAAA,QAAA,CAAS,mBAAK,OAAO,CAAA,CAAA;AAE/B,gBAAO,OAAA,IAAA;AAAA;AACT;AACF;AACF;AACF;AAGF,MAAA,YAAA,CAAA,IAAA,EAAK,KAAQ,EAAA,KAAA,CAAA,CAAA;AACb,MAAO,OAAA,KAAA;AAAA,KACT;AAnLE,IAAA,IAAI,wBAA2C,GAAA,IAAA;AAC/C,IAAA,IAAI,0BAAkD,GAAA,IAAA;AACtD,IAAM,MAAA,gBAAA,GAAmB,SAAS,MAAM;AACtC,MAAM,MAAA,EAAC,QAAQ,EAAA,GAAI,OAAQ,CAAA,aAAA;AAE3B,MAAA,IAAI,CAAC,QAAU,EAAA;AACb,QAAO,OAAA,IAAA;AAAA;AAGT,MAAA,MAAM,OAAU,GAAA,mBAAA,CAAoB,QAAU,EAAA,QAAA,CAAS,OAAO,CAAA;AAE9D,MAAA,IAAI,OAAS,EAAA;AACX,QAA2B,wBAAA,GAAA,OAAA;AAAA;AAG7B,MAAA,OAAO,OAAW,IAAA,IAAA,GAAA,OAAA,GAAA,wBAAA;AAAA,KACnB,CAAA;AACD,IAAM,MAAA,kBAAA,GAAqB,SAAS,MAAM;AACxC,MAAA,MAAM,UAAU,gBAAiB,CAAA,KAAA;AACjC,MAAA,MAAM,EAAC,eAAA,EAAmBe,GAAAA,WAAAA,CAAY,OAAO,CAAA;AAE7C,MAAI,IAAA,CAAC,OAAW,IAAA,OAAA,KAAY,eAAiB,EAAA;AAC3C,QAAM,MAAA,EAAC,MAAM,EAAA,GAAI,OAAQ,CAAA,aAAA;AACzB,QAAA,MAAM,gBAAgB,MAAQ,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,OAAA;AAE9B,QAAA,IAAI,aAAe,EAAA;AACjB,UAAM,MAAA,QAAA,GAAW,uBAAuB,aAAe,EAAA;AAAA,YACrD,cAAgB,EAAA;AAAA,WACjB,CAAA;AACD,UAA6B,0BAAA,GAAA,QAAA;AAE7B,UAAO,OAAA,QAAA;AAAA;AACT;AAGF,MAAA,IAAI,OAAS,EAAA;AACX,QAAM,MAAA,QAAA,GAAW,uBAAuB,OAAS,EAAA;AAAA,UAC/C,cAAgB,EAAA;AAAA,SACjB,CAAA;AAED,QAAA,IACE,KAAK,aACL,IAAA,0BAAA,IACA,QAAS,CAAA,IAAA,IAAO,yEAA4B,IAC5C,CAAA,EAAA;AACA,UAAO,OAAA,0BAAA;AAAA;AAGT,QAA6B,0BAAA,GAAA,QAAA;AAE7B,QAAO,OAAA,QAAA;AAAA;AAGT,MAA6B,0BAAA,GAAA,IAAA;AAE7B,MAAO,OAAA,IAAA;AAAA,OACN,SAAS,CAAA;AAEZ,IAAA,IAAA,CAAK,wBAAwB,MAAM;AACjC,MAAA,OAAO,kBAAmB,CAAA,KAAA;AAAA,KAC5B;AAEA,IAAK,IAAA,CAAA,mBAAA,GAAsB,IAAI,mBAAA,CAAoB,OAAO,CAAA;AAE1D,IAAA,IAAA,CAAK,UAAU,OAAQ,CAAA,OAAA,CAAQ,gBAAiB,CAAA,UAAA,EAAY,CAAC,KAAU,KAAA;AACrE,MAAA,IACE,IAAK,CAAA,QAAA,IACL,KAAM,CAAA,gBAAA,IACN,CAACC,eAAAA,CAAgB,OAAQ,CAAA,aAAA,CAAc,cAAc,CAAA,IACrD,CAAC,KAAA,CAAM,EACP,EAAA;AACA,QAAA;AAAA;AAIF,MAAA,IAAI,KAAK,MAAO,CAAA,EAAC,IAAI,KAAM,CAAA,EAAA,EAAG,CAAG,EAAA;AAC/B,QAAA,KAAA,CAAM,cAAe,EAAA;AAAA;AACvB,KACD,CAAA;AAAA;AAsGL;AA/LOJ,MAAAA,GAAA,gBAAAZ,CAAAA,GAAAA,CAAAA;AAMW,cAAA,GAAA,IAAA,OAAA,EAAA;AAsFhB,KAAA,GAAA,IAAA,OAAA,EAAA;AAEA,OAAA,GAAA,IAAA,OAAA,EAAA;AAxFA,iBAAA,CAAAY,MAAA,EAAA,CAAA,EAAgB,eADhB,EAAA,kBAAA,EALW,QAMK,EAAA,cAAA,CAAA;AANX,mBAAA,CAAAA,MAAM,EAAA,QAAA,CAAA;AAiMb,SAAS,gBAAgB,KAAe,EAAA;AACtC,EAAA,IAAI,QAAQ,CAAG,EAAA;AACb,IAAA,OAAOK,eAAgB,CAAA,OAAA;AAAA;AAGzB,EAAA,IAAI,QAAQ,CAAG,EAAA;AACb,IAAA,OAAOA,eAAgB,CAAA,OAAA;AAAA;AAGzB,EAAA,OAAOA,eAAgB,CAAA,IAAA;AACzB;ACrNA,IAAM,mBAAsB,GAAA,EAAA;AAEf,IAAA,YAAA,GAAN,cAA2BlB,MAAwB,CAAA;AAAA,EAGxD,WAAA,CAAY,SAA0B,QAAoB,EAAA;AACxD,IAAA,KAAA,CAAM,OAAO,CAAA;AAEb,IAAA,MAAM,QAAW,GAAA,OAAA,CAAQ,QAAS,CAAA,OAAA,CAAQ,IAAI,QAAQ,CAAA;AAEtD,IAAA,IAAI,CAAC,QAAU,EAAA;AACb,MAAM,MAAA,IAAI,MAAM,gDAAgD,CAAA;AAAA;AAGlE,IAAK,IAAA,CAAA,OAAA,GAAUE,OAAO,MAAM;AAC1B,MAAA,IAAI,KAAK,QAAU,EAAA;AACjB,QAAA;AAAA;AAKF,MAAA,MAAM,EAAC,QAAA,EAAU,CAAG,EAAA,MAAA,KAAU,OAAQ,CAAA,aAAA;AAEtC,MAAA,IAAI,OAAO,QAAU,EAAA;AACnB,QAAMiB,MAAAA,UAAAA,GAAY,SAAS,MAAO,EAAA;AAElC,QAAA,IAAIA,UAAW,EAAA;AACb,UAAA,QAAA,CAAS,aAAgB,GAAA,IAAA;AACzB,UAAA,MAAM,QAAW,GAAA,WAAA,CAAY,QAAS,CAAA,MAAA,EAAQ,mBAAmB,CAAA;AAEjE,UAAA,OAAO,MAAM;AACX,YAAA,aAAA,CAAc,QAAQ,CAAA;AAAA,WACxB;AAAA,SACK,MAAA;AACL,UAAA,QAAA,CAAS,aAAgB,GAAA,KAAA;AAAA;AAC3B;AACF,KACD,CAAA;AAAA;AAEL;AC3CA,IAAM,eAA2C,GAAA;AAAA,EAC/C,OAAS,EAAA,IAAA;AAAA,EACT,OAAS,EAAA;AACX,CAAA;AARA,IAAA,QAAA;AAUa,IAAA,cAAA,GAAN,cAA6BC,UAA4B,CAAA;AAAA,EAG9D,YAAY,OAA0B,EAAA;AACpC,IAAA,KAAA,CAAM,OAAO,CAAA;AAHf,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AA0BA,IAAA,IAAA,CAAQ,eAAe,MAAM;AAC3B,MAAI,IAAA,YAAA,CAAA,IAAA,EAAK,aAAY,IAAM,EAAA;AACzB,QAAK,YAAA,CAAA,IAAA,EAAA,QAAA,EAAW,WAAW,MAAM;AAC/B,UAAK,IAAA,CAAA,OAAA,CAAQ,iBAAkB,CAAA,WAAA,CAAY,KAAK,CAAA;AAChD,UAAA,YAAA,CAAA,IAAA,EAAK,QAAW,EAAA,KAAA,CAAA,CAAA;AAAA,WACf,EAAE,CAAA,CAAA;AAAA;AACP,KACF;AA5BE,IAAM,MAAA,EAAC,aAAa,EAAA,GAAI,IAAK,CAAA,OAAA;AAE7B,IAAK,IAAA,CAAA,OAAA,GAAUlB,OAAO,MAAM;AAlBhC,MAAA,IAAAD,KAAAE,GAAAkB,EAAAA,GAAAA;AAmBM,MAAM,MAAA,OAAA,GAAU,cAAc,MAAO,CAAA,QAAA;AAErC,MAAA,IAAI,OAAS,EAAA;AACX,QAAA,MAAM,IAAOA,GAAAA,CAAAA,GAAAA,GAAAA,CAAAlB,GAAAF,GAAAA,CAAAA,GAAAA,GAAA,aAAc,CAAA,MAAA,KAAd,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAsB,OAAtB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAE,GAA+B,CAAA,aAAA,KAA/B,OAAAkB,GAAgD,GAAA,QAAA;AAE7D,QAAA,IAAA,CAAK,gBAAiB,CAAA,QAAA,EAAU,IAAK,CAAA,YAAA,EAAc,eAAe,CAAA;AAElE,QAAA,OAAO,MAAM;AACX,UAAK,IAAA,CAAA,mBAAA;AAAA,YACH,QAAA;AAAA,YACA,IAAK,CAAA,YAAA;AAAA,YACL;AAAA,WACF;AAAA,SACF;AAAA;AACF,KACD,CAAA;AAAA;AAWL;AAlCE,QAAA,GAAA,IAAA,OAAA,EAAA;ACNK,IAAM,gBAAA,GAAN,cAA+BrB,MAAwB,CAAA;AAAA,EAC5D,YAAmB,OAA0B,EAAA;AAC3C,IAAA,KAAA,CAAM,OAAO,CAAA;AADI,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAGjB,IAAK,IAAA,CAAA,OAAA,GAAUE,OAAO,MAAM;AAC1B,MAAM,MAAA,EAAC,aAAa,EAAA,GAAI,IAAK,CAAA,OAAA;AAE7B,MAAI,IAAA,aAAA,CAAc,OAAO,WAAa,EAAA;AACpC,QAAM,MAAA,KAAA,GAAQ,QAAS,CAAA,aAAA,CAAc,OAAO,CAAA;AAC5C,QAAA,KAAA,CAAM,SAAY,GAAA,CAAA,0EAAA,CAAA;AAClB,QAAS,QAAA,CAAA,IAAA,CAAK,YAAY,KAAK,CAAA;AAE/B,QAAS,QAAA,CAAA,gBAAA,CAAiB,mBAAmB,eAAiB,EAAA;AAAA,UAC5D,OAAS,EAAA;AAAA,SACV,CAAA;AAED,QAAA,OAAO,MAAM;AACX,UAAS,QAAA,CAAA,mBAAA,CAAoB,mBAAmB,eAAiB,EAAA;AAAA,YAC/D,OAAS,EAAA;AAAA,WACV,CAAA;AACD,UAAA,KAAA,CAAM,MAAO,EAAA;AAAA,SACf;AAAA;AACF,KACD,CAAA;AAAA;AAEL,CAAA;AAEA,SAAS,eAAkB,GAAA;AAhC3B,EAAAD,IAAAA,GAAAA;AAiCE,EAAA,CAAAA,GAAA,GAAA,QAAA,CAAS,YAAa,EAAA,KAAtB,gBAAAA,GAAyB,CAAA,eAAA,EAAA;AAC3B;ACDA,IAAM,sBAAwC,GAAA;AAAA,EAC5C,KAAA,EAAO,CAAC,OAAA,EAAS,OAAO,CAAA;AAAA,EACxB,MAAA,EAAQ,CAAC,QAAQ,CAAA;AAAA,EACjB,GAAK,EAAA,CAAC,OAAS,EAAA,OAAA,EAAS,KAAK,CAAA;AAAA,EAC7B,EAAA,EAAI,CAAC,SAAS,CAAA;AAAA,EACd,IAAA,EAAM,CAAC,WAAW,CAAA;AAAA,EAClB,IAAA,EAAM,CAAC,WAAW,CAAA;AAAA,EAClB,KAAA,EAAO,CAAC,YAAY;AACtB,CAAA;AAEA,IAAM,cAAiB,GAAA,EAAA;AA3CvB,IAAA,iBAAA;AAgDa,IAAA,cAAA,GAAN,cAA6B,MAGlC,CAAA;AAAA,EACA,WAAA,CACS,SACA,OACP,EAAA;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAHN,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAKT,IAAA,YAAA,CAAA,IAAA,EAAA,iBAAA,EAAuC,EAAC,CAAA;AAExC,IAAU,IAAA,CAAA,SAAA,GAAY,IAAI,SAAU,EAAA;AAuBpC,IAAA,IAAA,CAAU,mBAAsB,GAAA,CAC9B,KACA,EAAA,MAAA,EACA,OACG,KAAA;AACH,MAAI,IAAA,IAAA,CAAK,QAAY,IAAA,KAAA,CAAM,gBAAkB,EAAA;AAC3C,QAAA;AAAA;AAGF,MAAA,IAAI,CAAC,SAAA,CAAU,KAAM,CAAA,MAAM,CAAG,EAAA;AAC5B,QAAA;AAAA;AAGF,MAAA,IAAI,OAAO,QAAU,EAAA;AACnB,QAAA;AAAA;AAGF,MAAA,IACG,CAAC,MAAA,CAAO,MAAU,IAAA,MAAA,CAAO,WAAW,KAAM,CAAA,MAAA,KAAW,MAAO,CAAA,OAAA,IAC5D,MAAO,CAAA,MAAA,IAAU,KAAM,CAAA,MAAA,KAAW,OAAO,MAC1C,EAAA;AACA,QAAA,MAAM,EAAC,aAAA,GAAgB,sBAAsB,EAAA,GAAI,4BAAW,EAAC;AAE7D,QAAA,IAAI,CAAC,aAAc,CAAA,KAAA,CAAM,QAAS,CAAA,KAAA,CAAM,IAAI,CAAG,EAAA;AAC7C,UAAA;AAAA;AAGF,QAAA,IAAI,CAAC,IAAA,CAAK,OAAQ,CAAA,aAAA,CAAc,OAAO,IAAM,EAAA;AAC3C,UAAA;AAAA;AAGF,QAAK,IAAA,CAAA,WAAA,CAAY,KAAO,EAAA,MAAA,EAAQ,OAAO,CAAA;AAAA;AACzC,KACF;AAAA;AA5DA,EAMO,IAAK,CAAA,MAAA,EAAmB,OAAU,GAAA,IAAA,CAAK,OAAS,EAAA;AACrD,IAAM,MAAA,MAAA,GAASC,OAAO,MAAM;AAhEhC,MAAAD,IAAAA,GAAAA;AAiEM,MAAA,MAAM,UAASA,GAAA,GAAA,MAAA,CAAO,MAAP,KAAA,IAAA,GAAAA,MAAiB,MAAO,CAAA,OAAA;AACvC,MAAM,MAAA,QAAA,GAA0B,CAAC,KAAiB,KAAA;AAChD,QAAIgB,IAAAA,eAAAA,CAAgB,KAAK,CAAG,EAAA;AAC1B,UAAK,IAAA,CAAA,mBAAA,CAAoB,KAAO,EAAA,MAAA,EAAQ,OAAO,CAAA;AAAA;AACjD,OACF;AAEA,MAAA,IAAI,MAAQ,EAAA;AACV,QAAO,MAAA,CAAA,gBAAA,CAAiB,WAAW,QAAQ,CAAA;AAE3C,QAAA,OAAO,MAAM;AACX,UAAO,MAAA,CAAA,mBAAA,CAAoB,WAAW,QAAQ,CAAA;AAAA,SAChD;AAAA;AACF,KACD,CAAA;AAED,IAAO,OAAA,MAAA;AAAA;AACT,EAqCU,WAAA,CACR,KACA,EAAA,MAAA,EACA,OACA,EAAA;AACA,IAAM,MAAA,EAAC,SAAW,GAAA,MAAA;AAElB,IAAA,IAAI,CAAC,OAAS,EAAA;AACZ,MAAM,MAAA,IAAI,MAAM,sDAAsD,CAAA;AAAA;AAGxE,IAAA,KAAA,CAAM,cAAe,EAAA;AACrB,IAAA,KAAA,CAAM,wBAAyB,EAAA;AAE/B,IAAA,sBAAA,CAAuB,OAAO,CAAA;AAE9B,IAAA,MAAM,EAAC,MAAA,EAAU,GAAA,IAAIK,aAAa,OAAO,CAAA;AAEzC,IAAAC,MAAM,MAAM;AACV,MAAA,IAAA,CAAK,OAAQ,CAAA,OAAA,CAAQ,aAAc,CAAA,MAAA,CAAO,EAAE,CAAA;AAC5C,MAAK,IAAA,CAAA,OAAA,CAAQ,QAAQ,KAAM,CAAA;AAAA,QACzB,KAAA;AAAA,QACA,WAAa,EAAA;AAAA,UACX,GAAG,MAAO,CAAA,CAAA;AAAA,UACV,GAAG,MAAO,CAAA;AAAA;AACZ,OACD,CAAA;AAAA,KACF,CAAA;AAED,IAAA,IAAA,CAAK,WAAY,EAAA;AAEjB,IAAM,MAAA,cAAA,GAAiBP,YAAY,OAAO,CAAA;AAC1C,IAAM,MAAA,YAAA,GAAejB,UAAU,cAAc,CAAA;AAE7C,IAAA,MAAM,SAAY,GAAA;AAAA,MAChB,IAAA,CAAK,SAAU,CAAA,IAAA,CAAK,cAAgB,EAAA;AAAA,QAClC;AAAA,UACE,IAAM,EAAA,SAAA;AAAA,UACN,UAAU,CAACyB,MAAAA,KACT,KAAK,aAAcA,CAAAA,MAAAA,EAAO,QAAQ,OAAO,CAAA;AAAA,UAC3C,OAAA,EAAS,EAAC,OAAA,EAAS,IAAI;AAAA;AACzB,OACD,CAAA;AAAA,MACD,IAAA,CAAK,SAAU,CAAA,IAAA,CAAK,YAAc,EAAA;AAAA,QAChC,EAAC,MAAM,QAAU,EAAA,QAAA,EAAU,MAAM,IAAK,CAAA,SAAA,CAAU,IAAI,CAAC;AAAA,OACtD;AAAA,KACH;AAEA,IAAK,YAAA,CAAA,IAAA,EAAA,iBAAA,CAAA,CAAkB,IAAK,CAAA,GAAG,SAAS,CAAA;AAAA;AAC1C,EAEU,aAAA,CACR,KACA,EAAA,OAAA,EACA,OACA,EAAA;AACA,IAAA,MAAM,EAAC,aAAA,GAAgB,sBAAsB,EAAA,GAAI,4BAAW,EAAC;AAE7D,IAAI,IAAA,SAAA,CAAU,KAAO,EAAA,CAAC,GAAG,aAAA,CAAc,KAAK,GAAG,aAAA,CAAc,MAAM,CAAC,CAAG,EAAA;AACrE,MAAA,KAAA,CAAM,cAAe,EAAA;AACrB,MAAA,MAAM,QAAW,GAAA,SAAA,CAAU,KAAO,EAAA,aAAA,CAAc,MAAM,CAAA;AAEtD,MAAA,IAAA,CAAK,UAAU,QAAQ,CAAA;AACvB,MAAA;AAAA;AAGF,IAAA,IAAI,SAAU,CAAA,KAAA,EAAO,aAAc,CAAA,EAAE,CAAG,EAAA;AACtC,MAAK,IAAA,CAAA,UAAA,CAAW,MAAM,KAAK,CAAA;AAAA,KAClB,MAAA,IAAA,SAAA,CAAU,KAAO,EAAA,aAAA,CAAc,IAAI,CAAG,EAAA;AAC/C,MAAK,IAAA,CAAA,UAAA,CAAW,QAAQ,KAAK,CAAA;AAAA;AAG/B,IAAA,IAAI,SAAU,CAAA,KAAA,EAAO,aAAc,CAAA,IAAI,CAAG,EAAA;AACxC,MAAK,IAAA,CAAA,UAAA,CAAW,QAAQ,KAAK,CAAA;AAAA,KACpB,MAAA,IAAA,SAAA,CAAU,KAAO,EAAA,aAAA,CAAc,KAAK,CAAG,EAAA;AAChD,MAAK,IAAA,CAAA,UAAA,CAAW,SAAS,KAAK,CAAA;AAAA;AAChC;AACF,EAEU,UAAU,QAAmB,EAAA;AACrC,IAAK,IAAA,CAAA,OAAA,CAAQ,QAAQ,IAAK,CAAA;AAAA,MACxB;AAAA,KACD,CAAA;AAED,IAAA,IAAA,CAAK,OAAQ,EAAA;AAAA;AACf,EAEU,UAAA,CACR,WACA,KACA,EAAA;AACA,IAAA,MAAM,EAAC,KAAA,EAAS,GAAA,IAAA,CAAK,OAAQ,CAAA,aAAA;AAC7B,IAAM,MAAA,MAAA,GAAS,KAAM,CAAA,QAAA,GAAW,CAAI,GAAA,CAAA;AACpC,IAAA,IAAI,MAAS,GAAA;AAAA,MACX,CAAG,EAAA,CAAA;AAAA,MACH,CAAG,EAAA;AAAA,KACL;AAEA,IAAA,IAAI,CAAC,KAAO,EAAA;AACV,MAAA;AAAA;AAGF,IAAA,QAAQ,SAAW;AAAA,MACjB,KAAK,IAAA;AACH,QAAA,MAAA,GAAS,EAAC,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAC,iBAAiB,MAAM,EAAA;AAC3C,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,MAAA,GAAS,EAAC,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,iBAAiB,MAAM,EAAA;AAC1C,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,MAAA,GAAS,EAAC,CAAG,EAAA,CAAC,cAAiB,GAAA,MAAA,EAAQ,GAAG,CAAC,EAAA;AAC3C,QAAA;AAAA,MACF,KAAK,OAAA;AACH,QAAA,MAAA,GAAS,EAAC,CAAA,EAAG,cAAiB,GAAA,MAAA,EAAQ,GAAG,CAAC,EAAA;AAC1C,QAAA;AAAA;AAGJ,IAAI,IAAA,CAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,CAAK,MAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,CAAG,CAAA,EAAA;AAC1B,MAAA,KAAA,CAAM,cAAe,EAAA;AAErB,MAAK,IAAA,CAAA,OAAA,CAAQ,QAAQ,IAAK,CAAA;AAAA,QACxB,EAAI,EAAA;AAAA,OACL,CAAA;AAAA;AACH;AACF,EAEQ,WAAc,GAAA;AACpB,IAAA,MAAM,eAAe,IAAK,CAAA,OAAA,CAAQ,QAAS,CAAA,OAAA,CAAQ,IAAI,YAAmB,CAAA;AAE1E,IAAI,IAAA,CAAA,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAc,cAAa,KAAO,EAAA;AACpC,MAAA,YAAA,CAAa,OAAQ,EAAA;AAErB,MAAK,YAAA,CAAA,IAAA,EAAA,iBAAA,CAAA,CAAkB,KAAK,MAAM;AAChC,QAAA,YAAA,CAAa,MAAO,EAAA;AAAA,OACrB,CAAA;AAAA;AACH;AACF,EAEU,OAAU,GAAA;AAClB,IAAA,YAAA,CAAA,IAAA,EAAK,iBAAkB,CAAA,CAAA,OAAA,CAAQ,CAAC,OAAA,KAAY,SAAS,CAAA;AAAA;AACvD,EAEO,OAAU,GAAA;AACf,IAAA,IAAA,CAAK,OAAQ,EAAA;AAEb,IAAA,IAAA,CAAK,UAAU,KAAM,EAAA;AAAA;AAEzB;AA/ME,iBAAA,GAAA,IAAA,OAAA,EAAA;AAiNF,SAAS,SAAA,CAAU,OAAsB,KAAkB,EAAA;AACzD,EAAO,OAAA,KAAA,CAAM,QAAS,CAAA,KAAA,CAAM,IAAI,CAAA;AAClC;AC9QA,IAAA,aAAA;AAgDO,IAAM,cAAA,GAAN,MAAM,cAAA,SAAsBC,MAGjC,CAAA;AAAA,EASA,WAAA,CACS,SACA,OACP,EAAA;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAHN,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAVT,IAAU,IAAA,CAAA,SAAA,GAAY,IAAIC,SAAU,EAAA;AAEpC,IAAU,IAAA,CAAA,OAAA,uBAAoC,GAAI,EAAA;AAIlD,IAAA,YAAA,CAAA,IAAA,EAAA,aAAA,CAAA;AAQE,IAAA,IAAA,CAAK,YAAe,GAAA,IAAA,CAAK,YAAa,CAAA,IAAA,CAAK,IAAI,CAAA;AAC/C,IAAA,IAAA,CAAK,eAAkB,GAAA,IAAA,CAAK,eAAgB,CAAA,IAAA,CAAK,IAAI,CAAA;AACrD,IAAA,IAAA,CAAK,aAAgB,GAAA,IAAA,CAAK,aAAc,CAAA,IAAA,CAAK,IAAI,CAAA;AAAA;AACnD,EAEO,IAAK,CAAA,MAAA,EAAmB,OAAU,GAAA,IAAA,CAAK,OAAS,EAAA;AACrD,IAAM,MAAA,MAAA,GAASxB,OAAO,MAAM;AAxEhC,MAAAD,IAAAA,GAAAA;AAyEM,MAAA,MAAM,UAASA,GAAA,GAAA,MAAA,CAAO,MAAP,KAAA,IAAA,GAAAA,MAAiB,MAAO,CAAA,OAAA;AACvC,MAAM,MAAA,QAAA,GAA0B,CAAC,KAAiB,KAAA;AAChD,QAAI,IAAA,cAAA,CAAe,KAAK,CAAG,EAAA;AACzB,UAAK,IAAA,CAAA,iBAAA,CAAkB,KAAO,EAAA,MAAA,EAAQ,OAAO,CAAA;AAAA;AAC/C,OACF;AAEA,MAAA,IAAI,MAAQ,EAAA;AACV,QAAY,WAAA,CAAA,MAAA,CAAO,cAAc,WAAW,CAAA;AAE5C,QAAO,MAAA,CAAA,gBAAA,CAAiB,eAAe,QAAQ,CAAA;AAE/C,QAAA,OAAO,MAAM;AACX,UAAO,MAAA,CAAA,mBAAA,CAAoB,eAAe,QAAQ,CAAA;AAAA,SACpD;AAAA;AACF,KACD,CAAA;AAED,IAAO,OAAA,MAAA;AAAA;AACT,EAEU,iBACR,CAAA,KAAA,EACA,MACA,EAAA,OAAA,GAAgC,EAChC,EAAA;AACA,IAAA,IACE,KAAK,QACL,IAAA,CAAC,KAAM,CAAA,SAAA,IACP,MAAM,MAAW,KAAA,CAAA,IACjB,CAAC0B,SAAAA,CAAU,MAAM,MAAM,CAAA,IACvB,OAAO,QACP,IAAA,kBAAA,CAAmB,KAAK,CACxB,EAAA;AACA,MAAA;AAAA;AAGF,IAAM,MAAA,EAAC,QAAU,GAAA,KAAA;AACjB,IAAM,MAAA,iBAAA,GACJ,cAAc,MAAM,CAAA,IACpB,OAAO,SACP,IAAA,MAAA,CAAO,YAAa,CAAA,WAAW,CAAM,KAAA,MAAA;AAEvC,IAAM,MAAA,MAAA,GAASC,iBAAkB,CAAA,MAAA,CAAO,OAAO,CAAA;AAE/C,IAAA,IAAA,CAAK,kBAAqB,GAAA;AAAA,MACxB,CAAG,EAAA,KAAA,CAAM,OAAU,GAAA,MAAA,CAAO,SAAS,MAAO,CAAA,CAAA;AAAA,MAC1C,CAAG,EAAA,KAAA,CAAM,OAAU,GAAA,MAAA,CAAO,SAAS,MAAO,CAAA;AAAA,KAC5C;AAEA,IAAM,MAAA,EAAC,uBAAyB,GAAA,OAAA;AAChC,IAAA,MAAM,cACJ,OAAO,qBAAA,KAA0B,aAC7B,qBAAsB,CAAA,KAAA,EAAO,MAAM,CACnC,GAAA,qBAAA;AAEN,IAAC,MAAc,MAAS,GAAA,IAAA;AAExB,IAAA,IAAI,EAAC,WAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAa,KAAS,CAAA,IAAA,EAAC,2CAAa,QAAU,CAAA,EAAA;AACjD,MAAK,IAAA,CAAA,WAAA,CAAY,QAAQ,KAAK,CAAA;AAAA,KACzB,MAAA;AACL,MAAM,MAAA,EAAC,OAAS,GAAA,WAAA;AAEhB,MAAA,IAAI,KAAO,EAAA;AACT,QAAA,MAAM,OAAU,GAAA,UAAA;AAAA,UACd,MAAM,IAAA,CAAK,WAAY,CAAA,MAAA,EAAQ,KAAK,CAAA;AAAA,UACpC,KAAM,CAAA;AAAA,SACR;AAEA,QAAA,YAAA,CAAA,IAAA,EAAK,eAAgB,MAAM;AACzB,UAAA,YAAA,CAAa,OAAO,CAAA;AACpB,UAAA,YAAA,CAAA,IAAA,EAAK,aAAgB,EAAA,KAAA,CAAA,CAAA;AAAA,SACvB,CAAA;AAAA;AACF;AAGF,IAAM,MAAA,aAAA,GAAgBZ,WAAY,CAAA,KAAA,CAAM,MAAM,CAAA;AAE9C,IAAA,MAAM,eAAkB,GAAA,IAAA,CAAK,SAAU,CAAA,IAAA,CAAK,aAAe,EAAA;AAAA,MACzD;AAAA,QACE,IAAM,EAAA,aAAA;AAAA,QACN,UAAU,CAACQ,MAAAA,KACT,KAAK,iBAAkBA,CAAAA,MAAAA,EAAO,QAAQ,OAAO;AAAA,OACjD;AAAA,MACA;AAAA,QACE,IAAM,EAAA,WAAA;AAAA,QACN,UAAU,IAAK,CAAA,eAAA;AAAA,QACf,OAAS,EAAA;AAAA,UACP,OAAS,EAAA;AAAA;AACX,OACF;AAAA,MACA;AAAA;AAAA,QAEE,IAAM,EAAA,WAAA;AAAA,QACN,QAAA,EAAU,iBAAoB,GAAA,IAAA,CAAK,YAAe,GAAA;AAAA;AACpD,KACD,CAAA;AAED,IAAA,MAAM,UAAU,MAAM;AA3K1B,MAAAvB,IAAAA,GAAAA;AA4KM,MAAA,UAAA,CAAW,eAAe,CAAA;AAC1B,MAAA,CAAAA,GAAA,GAAA,YAAA,CAAA,IAAA,EAAK,aAAL,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,GAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AACA,MAAA,IAAA,CAAK,kBAAqB,GAAA,KAAA,CAAA;AAAA,KAC5B;AAEA,IAAK,IAAA,CAAA,OAAA,CAAQ,IAAI,OAAO,CAAA;AAAA;AAC1B,EAEU,iBAAA,CACR,KACA,EAAA,MAAA,EACA,OACA,EAAA;AACA,IAAA,MAAM,WAAc,GAAA;AAAA,MAClB,GAAG,KAAM,CAAA,OAAA;AAAA,MACT,GAAG,KAAM,CAAA;AAAA,KACX;AAEA,IAAM,MAAA,MAAA,GAAS2B,iBAAkB,CAAA,MAAA,CAAO,OAAO,CAAA;AAE/C,IAAA,WAAA,CAAY,CAAI,GAAA,WAAA,CAAY,CAAI,GAAA,MAAA,CAAO,SAAS,MAAO,CAAA,CAAA;AACvD,IAAA,WAAA,CAAY,CAAI,GAAA,WAAA,CAAY,CAAI,GAAA,MAAA,CAAO,SAAS,MAAO,CAAA,CAAA;AAEvD,IAAA,IAAI,IAAK,CAAA,OAAA,CAAQ,aAAc,CAAA,MAAA,CAAO,QAAU,EAAA;AAC9C,MAAA,KAAA,CAAM,cAAe,EAAA;AACrB,MAAA,KAAA,CAAM,eAAgB,EAAA;AAEtB,MAAA,IAAA,CAAK,QAAQ,OAAQ,CAAA,IAAA,CAAK,EAAC,EAAA,EAAI,aAAY,CAAA;AAC3C,MAAA;AAAA;AAGF,IAAI,IAAA,CAAC,KAAK,kBAAoB,EAAA;AAC5B,MAAA;AAAA;AAGF,IAAA,MAAM,KAAQ,GAAA;AAAA,MACZ,CAAG,EAAA,WAAA,CAAY,CAAI,GAAA,IAAA,CAAK,kBAAmB,CAAA,CAAA;AAAA,MAC3C,CAAG,EAAA,WAAA,CAAY,CAAI,GAAA,IAAA,CAAK,kBAAmB,CAAA;AAAA,KAC7C;AACA,IAAM,MAAA,EAAC,uBAAyB,GAAA,OAAA;AAChC,IAAA,MAAM,cACJ,OAAO,qBAAA,KAA0B,aAC7B,qBAAsB,CAAA,KAAA,EAAO,MAAM,CACnC,GAAA,qBAAA;AACN,IAAA,MAAM,EAAC,QAAA,EAAU,KAAK,EAAA,GAAI,oCAAe,EAAC;AAE1C,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,IACE,SAAS,SAAa,IAAA,IAAA,IACtB,gBAAgB,KAAO,EAAA,QAAA,CAAS,SAAS,CACzC,EAAA;AACA,QAAA,OAAO,KAAK,YAAa,EAAA;AAAA;AAE3B,MAAA,IAAI,eAAgB,CAAA,KAAA,EAAO,QAAS,CAAA,KAAK,CAAG,EAAA;AAC1C,QAAO,OAAA,IAAA,CAAK,WAAY,CAAA,MAAA,EAAQ,KAAK,CAAA;AAAA;AACvC;AAGF,IAAA,IAAI,KAAO,EAAA;AACT,MAAA,IAAI,eAAgB,CAAA,KAAA,EAAO,KAAM,CAAA,SAAS,CAAG,EAAA;AAC3C,QAAA,OAAO,KAAK,YAAa,EAAA;AAAA;AAC3B;AACF;AACF,EAEQ,gBAAgB,KAAqB,EAAA;AAE3C,IAAA,MAAM,EAAC,MAAA,EAAU,GAAA,IAAA,CAAK,OAAQ,CAAA,aAAA;AAE9B,IAAI,IAAA,CAAC,OAAO,IAAM,EAAA;AAEhB,MAAA,KAAA,CAAM,cAAe,EAAA;AACrB,MAAA,KAAA,CAAM,eAAgB,EAAA;AAEtB,MAAM,MAAA,QAAA,GAAW,CAAC,MAAO,CAAA,WAAA;AACzB,MAAA,IAAA,CAAK,OAAQ,CAAA,OAAA,CAAQ,IAAK,CAAA,EAAC,UAAS,CAAA;AAAA;AAItC,IAAA,IAAA,CAAK,OAAQ,CAAA,OAAA,CAAQ,CAAC,OAAA,KAAY,SAAS,CAAA;AAC3C,IAAA,IAAA,CAAK,QAAQ,KAAM,EAAA;AAAA;AACrB,EAEU,cAAc,KAAsB,EAAA;AAC5C,IAAI,IAAA,KAAA,CAAM,QAAQ,QAAU,EAAA;AAC1B,MAAA,KAAA,CAAM,cAAe,EAAA;AACrB,MAAA,IAAA,CAAK,YAAa,EAAA;AAAA;AACpB;AACF,EAEU,WAAA,CAAY,QAAmB,KAAqB,EAAA;AAtQhE,IAAA3B,IAAAA,GAAAA;AAuQI,IAAM,MAAA,EAAC,OAAS,EAAA,kBAAA,EAAsB,GAAA,IAAA;AAEtC,IAAA,CAAAA,GAAA,GAAA,YAAA,CAAA,IAAA,EAAK,aAAL,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,GAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AAEA,IAAA,IAAI,CAAC,kBAAA,IAAsB,OAAQ,CAAA,aAAA,CAAc,OAAO,WAAa,EAAA;AACnE,MAAA;AAAA;AAGF,IAAA,IAAI,MAAM,gBAAkB,EAAA;AAC1B,MAAA;AAAA;AAGF,IAAA,KAAA,CAAM,cAAe,EAAA;AAErB,IAAAsB,MAAM,MAAM;AACV,MAAQ,OAAA,CAAA,OAAA,CAAQ,aAAc,CAAA,MAAA,CAAO,EAAE,CAAA;AACvC,MAAA,OAAA,CAAQ,QAAQ,KAAM,CAAA,EAAC,WAAa,EAAA,kBAAA,EAAoB,OAAM,CAAA;AAAA,KAC/D,CAAA;AAED,IAAM,MAAA,aAAA,GAAgBP,WAAY,CAAA,KAAA,CAAM,MAAM,CAAA;AAC9C,IAAA,MAAM,MAAS,GAAA,IAAA,CAAK,SAAU,CAAA,IAAA,CAAK,aAAe,EAAA;AAAA,MAChD;AAAA;AAAA,QAEE,IAAM,EAAA,WAAA;AAAA,QACN,QAAU,EAAA,cAAA;AAAA,QACV,OAAS,EAAA;AAAA,UACP,OAAS,EAAA;AAAA;AACX,OACF;AAAA,MACA;AAAA;AAAA,QAEE,IAAM,EAAA,OAAA;AAAA,QACN,QAAU,EAAA;AAAA,OACZ;AAAA,MACA;AAAA,QACE,IAAM,EAAA,SAAA;AAAA,QACN,UAAU,IAAK,CAAA;AAAA;AACjB,KACD,CAAA;AAED,IAAc,aAAA,CAAA,IAAA,CAAK,iBAAkB,CAAA,KAAA,CAAM,SAAS,CAAA;AAEpD,IAAK,IAAA,CAAA,OAAA,CAAQ,IAAI,MAAM,CAAA;AAAA;AACzB,EAEU,YAAe,GAAA;AACvB,IAAM,MAAA,EAAC,aAAa,EAAA,GAAI,IAAK,CAAA,OAAA;AAE7B,IAAI,IAAA,aAAA,CAAc,OAAO,WAAa,EAAA;AACpC,MAAA,IAAA,CAAK,QAAQ,OAAQ,CAAA,IAAA,CAAK,EAAC,QAAA,EAAU,MAAK,CAAA;AAAA;AAI5C,IAAA,IAAA,CAAK,OAAQ,CAAA,OAAA,CAAQ,CAAC,OAAA,KAAY,SAAS,CAAA;AAC3C,IAAA,IAAA,CAAK,QAAQ,KAAM,EAAA;AAAA;AACrB,EAEO,OAAU,GAAA;AAEf,IAAA,IAAA,CAAK,UAAU,KAAM,EAAA;AAAA;AAIzB,CAAA;AA5QE,aAAA,GAAA,IAAA,OAAA,EAAA;AAVW,cAqRJ,CAAA,SAAA,GAAYa,aAAa,cAAa,CAAA;AArRxC,IAAM,aAAN,GAAA;AAwRP,SAAS,mBAAmB,KAAc,EAAA;AACxC,EAAA,OAAO,QAAY,IAAA,KAAA;AACrB;AAEA,SAAS,eAAe,KAAc,EAAA;AACpC,EAAA,KAAA,CAAM,cAAe,EAAA;AACvB;AAEA,SAAS,IAAO,GAAA;AAAC;AAEjB,IAAM,OAAA,uBAAc,OAAgB,EAAA;AAEpC,SAAS,YAAY,MAAuB,EAAA;AAC1C,EAAA,IAAI,CAAC,MAAA,IAAU,OAAQ,CAAA,GAAA,CAAI,MAAM,CAAG,EAAA;AAClC,IAAA;AAAA;AAGF,EAAO,MAAA,CAAA,gBAAA,CAAiB,aAAa,IAAM,EAAA;AAAA,IACzC,OAAS,EAAA,KAAA;AAAA,IACT,OAAS,EAAA;AAAA,GACV,CAAA;AACD,EAAA,OAAA,CAAQ,IAAI,MAAM,CAAA;AACpB;;;ACvUO,IAAM,aAIT,GAAA;AAAA,EACF,WAAW,EAAC;AAAA,EACZ,SAAS,CAAC,aAAA,EAAe,YAAc,EAAA,MAAA,EAAQ,UAAU,gBAAgB,CAAA;AAAA,EACzE,OAAS,EAAA;AAAA,IACP,cAAc,SAAU,CAAA;AAAA,MACtB,qBAAA,CAAsB,OAAO,MAAQ,EAAA;AAhC3C,QAAA5B,IAAAA,GAAAA;AAiCQ,QAAM,MAAA,EAAC,WAAa,EAAA,MAAA,EAAU,GAAA,KAAA;AAE9B,QAAA,IACE,WAAgB,KAAA,OAAA,IAChB0B,SAAU,CAAA,MAAM,MACf,MAAO,CAAA,MAAA,KAAW,MAAU1B,KAAAA,CAAAA,GAAAA,GAAA,MAAO,CAAA,MAAA,KAAP,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAe,SAAS,MACrD,CAAA,CAAA,CAAA,EAAA;AACA,UAAO,OAAA,KAAA,CAAA;AAAA;AAGT,QAAO,OAAA;AAAA,UACL,KAAO,EAAA,EAAC,KAAO,EAAA,GAAA,EAAK,WAAW,EAAE,EAAA;AAAA,UACjC,QAAA,EAAU,EAAC,KAAA,EAAO,CAAC;AAAA,SACrB;AAAA;AACF,KACD,CAAA;AAAA,IACD;AAAA;AAEJ;AAEa,IAAA,eAAA,GAAN,cAGG6B,iBAA8C,CAAA;AAAA,EACtD,WAAA,CAAY,KAAe,GAAA,EAAI,EAAA;AAC7B,IAAM,MAAA;AAAA,MACJ,UAAU,aAAc,CAAA,OAAA;AAAA,MACxB,UAAU,aAAc,CAAA,OAAA;AAAA,MACxB,YAAY;AAAC,KACX,GAAA,KAAA;AAEJ,IAAA,KAAA,CAAM,iCACD,KADC,CAAA,EAAA;AAAA,MAEJ,OAAS,EAAA,CAAC,cAAgB,EAAA,QAAA,EAAU,GAAG,OAAO,CAAA;AAAA,MAC9C,OAAA;AAAA,MACA;AAAA,KACD,CAAA,CAAA;AAAA;AAEL;ACvEA,IAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,EAAA,EAAAjB,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA;AAoBa,IAAA,SAAA,GAAN,eAA+C,EAqDpD,GAAAkB,WAAA,EAAA,WAAA,GAAA,CAACjB,WAGD,YAACA,GAAAA,CAAAA,QAAAA,CAAAA,EAGD,aAACA,GAAAA,CAAAA,QAAAA,CAAAA,EA3DmD,EAGpD,EAAA;AAAA,EACA,WAAA,CACEb,KAOA,OACA,EAAA;AARA,IAAA,IAAAE,MAAAF,GACE,EAAA;AAAA,MAAA,OAAA;AAAA,MACA,OAAA,EAAA+B,QAAU,GAAA,MAAM,EAAC;AAAA,MACjB,MAAA;AAAA,MACA,QAAW,GAAA;AAAA,KA7BjB,GAyBI7B,GAKK,EAAA,KAAA,GAAA,SAAA,CALLA,GAKK,EAAA;AAAA,MAJH,SAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KAAA,CAAA;AAKF,IAAA,KAAA;AAAA,MACE,cAAA,CAAA;AAAA,QACE,SAAS,MAAM;AAAA,UACb,GAAG6B,QAAQ,EAAA;AAAA,UACX,MAAM;AAtChB,YAAA,IAAA/B,GAAAE,EAAAA,GAAAA;AAuCY,YAAM,MAAA,EAAC,OAAAL,EAAAA,QAAAA,EAAW,GAAA,IAAA;AAElB,YAAA,IAAI,CAACA,QAAS,EAAA;AAEd,YAAM,MAAA,OAAA,GAAA,CAAUK,GAAAF,GAAAA,CAAAA,GAAAA,GAAA,IAAK,CAAA,OAAA,KAAL,gBAAAA,GAAc,CAAA,GAAA,CAAI,UAAlB,CAAA,KAAA,IAAA,GAAAE,GAAiC,GAAA;AAAA,cAC/C,GAAGL,QAAQ,CAAA;AAAA,aACb;AACA,YAAA,MAAM,eAAkB,GAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,KAAU,KAAA;AAC7C,cAAM,MAAA,cAAA,GACJ,iBAAiB2B,MACb,GAAA,KAAA,GACA3B,SAAQ,QAAS,CAAA,QAAA,CAAS,MAAM,MAAM,CAAA;AAC5C,cAAA,MAAM,OACJ,GAAA,KAAA,YAAiB2B,MAAS,GAAA,KAAA,CAAA,GAAY,KAAM,CAAA,OAAA;AAE9C,cAAA,MAAM,MAAS,GAAA,cAAA,CAAe,IAAK,CAAA,IAAA,EAAM,OAAO,CAAA;AAChD,cAAO,OAAA,MAAA;AAAA,aACR,CAAA;AAED,YAAA,OAAO,SAAS,OAAU,GAAA;AACxB,cAAA,eAAA,CAAgB,OAAQ,CAAA,CAAC,MAAW,KAAA,MAAA,EAAQ,CAAA;AAAA,aAC9C;AAAA;AACF;AACF,OACG,EAAA,KAAA,CAAA;AAAA,MAEL;AAAA,KACF;AAQF,IAAA,YAAA,CAAA,IAAA,EAAgB,OAAhB,EAAA,iBAAA,CAAAZ,MAAA,EAAA,CAAA,EAAA,IAAA,CAAA,CAAA,EAAA,iBAAA,CAAAA,MAAA,EAAA,EAAA,EAAA,IAAA,CAAA;AAGA,IAAA,YAAA,CAAA,IAAA,EAAgB,QAAhB,EAAA,iBAAA,CAAAA,MAAA,EAAA,EAAA,EAAA,IAAA,CAAA,CAAA,EAAA,iBAAA,CAAAA,MAAA,EAAA,EAAA,EAAA,IAAA,CAAA;AAGA,IAAA,YAAA,CAAA,IAAA,EAAgB,SAAhB,EAAA,iBAAA,CAAAA,MAAA,EAAA,EAAA,EAAA,IAAA,CAAA,CAAA,EAAA,iBAAA,CAAAA,MAAA,EAAA,EAAA,EAAA,IAAA,CAAA;AAZE,IAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AACf,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA;AACd,IAAA,IAAA,CAAK,QAAW,GAAA,QAAA;AAAA;AAWpB;AA7DOA,MAAA,GAAA,gBAAA,CAAA,EAAA,CAAA;AAsDW,OAAA,GAAA,IAAA,OAAA,EAAA;AAGA,QAAA,GAAA,IAAA,OAAA,EAAA;AAGA,SAAA,GAAA,IAAA,OAAA,EAAA;AANhB,iBAAA,CAAAA,MAAA,EAAA,CAAA,EAAgB,QADhB,EAAA,WAAA,EArDW,SAsDK,EAAA,OAAA,CAAA;AAGhB,iBAAA,CAAAA,MAAA,EAAA,CAAA,EAAgB,SADhB,EAAA,YAAA,EAxDW,SAyDK,EAAA,QAAA,CAAA;AAGhB,iBAAA,CAAAA,MAAA,EAAA,CAAA,EAAgB,UADhB,EAAA,aAAA,EA3DW,SA4DK,EAAA,SAAA,CAAA;AA5DX,mBAAA,CAAAA,MAAM,EAAA,SAAA,CAAA;ACpBb,IAAAoB,UAAAA,EAAAA,aAAAA,EAAAZ,GAAAR,EAAAA,MAAAA,EAAAqB,SAAA,EAAA,EAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,MAAA;AAqBa,IAAA,SAAA,GAAN,eAA+Cb,GAAA,GAAAc,WAAA,EAqFpDF,gBAAA,CAACnB,QAAAA,CAAAA,EAGD,UAACA,GAAAA,CAAAA,QAAAA,CAAAA,EAxFmDO,GAGpD,EAAA;AAAA,EACA,WAAA,CACEpB,KACA,OACA,EAAA;AAFA,IAAA,IAAAE,GAAAF,GAAAA,GAAAA,EAAC,EAAS,OAAA,EAAA,OAAA,EAAA+B,QAAU,GAAA,MAAM,EAAC,EAA3B7B,GAAAA,GAAAA,EAAiC,KAAjCA,GAAAA,SAAAA,CAAAA,GAAAA,EAAiC,CAAhC,SAAS,EAAA,SAAA,CAAA,CAAA;AAGV,IAAM,MAAA,EAAC,iBAAoB,GAAA,yBAAA,EAA6B,GAAA,KAAA;AACxD,IAAM,MAAA,WAAA,GAAc,CAAC,kBAAkD,KAAA;AACrE,MAAA,MAAM,EAAC,OAAA,EAAAL,QAAS,EAAA,OAAA,EAAAS,UAAW,GAAA,IAAA;AAE3B,MAAI,IAAA,CAACA,QAAW,IAAA,kBAAA,KAAuB,IAAM,EAAA;AAC3C,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA,CAAA;AACb,QAAO,OAAA,KAAA,CAAA;AAAA;AAGT,MAAA,IAAI,CAACT,QAAS,EAAA;AAEd,MAAM,MAAA,YAAA,GAAe,IAAIwB,YAAAA,CAAaf,QAAO,CAAA;AAE7C,MAAA,MAAM,KAAQ6B,GAAAA,SAAAA,CAAU,MAAM,IAAA,CAAK,KAAK,CAAA;AACxC,MAAI,IAAA,YAAA,KAAgB,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,MAAA,CAAO,YAAe,CAAA,CAAA,EAAA;AAC/C,QAAO,OAAA,KAAA;AAAA;AAGT,MAAA,IAAA,CAAK,KAAQ,GAAA,YAAA;AAEb,MAAO,OAAA,YAAA;AAAA,KACT;AAEA,IAAM,MAAA,eAAA,GAAkBC,OAAO,KAAK,CAAA;AAEpC,IAAA,KAAA;AAAA,MACE,iCACK,KADL,CAAA,EAAA;AAAA,QAEE,iBAAA;AAAA,QACA,SAAS,MAAM;AAAA,UACb,GAAGL,QAAQ,EAAA;AAAA,UACX,MAAM;AACJ,YAAA,MAAM,EAAC,OAAA,EAAAzB,QAAS,EAAA,OAAA,EAAAT,UAAW,GAAA,IAAA;AAC3B,YAAA,IAAI,CAACA,QAAS,EAAA;AAEd,YAAM,MAAA,EAAC,eAAiBA,GAAAA,QAAAA;AACxB,YAAM,MAAA,EAAC,QAAU,GAAA,aAAA;AAEjB,YAAA,eAAA,CAAgB,KAAQ,GAAA,OAAA;AAAA,cACtB,MAAA,IACE,aAAc,CAAA,MAAA,CAAO,WACrBS,IAAAA,QAAAA,IACA,CAAC,IAAK,CAAA,QAAA,IACN,IAAK,CAAA,OAAA,CAAQ,MAAM;AAAA,aACvB;AAAA,WACF;AAAA,UACA,MAAM;AACJ,YAAM,MAAA,EAAC,OAAAA,EAAAA,QAAAA,EAAW,GAAA,IAAA;AAElB,YAAI,IAAA,eAAA,CAAgB,SAASA,QAAS,EAAA;AACpC,cAAA,MAAM,mBAAmB,IAAI,gBAAA;AAAA,gBAC3BA,QAAAA;AAAA,gBACA;AAAA,eACF;AAEA,cAAA,OAAO,MAAM;AACX,gBAAA,gBAAA,CAAiB,UAAW,EAAA;AAC5B,gBAAA,IAAA,CAAK,KAAQ,GAAA,KAAA,CAAA;AAAA,eACf;AAAA;AACF,WACF;AAAA,UACA,MAAM;AA1FhB,YAAAN,IAAAA,GAAAA;AA2FY,YAAA,IAAA,CAAIA,MAAA,IAAK,CAAA,OAAA,KAAL,gBAAAA,GAAc,CAAA,aAAA,CAAc,OAAO,WAAa,EAAA;AAClD,cAAA,OAAO,MAAM;AACX,gBAAA,IAAA,CAAK,KAAQ,GAAA,KAAA,CAAA;AAAA,eACf;AAAA;AACF;AACF;AACF,OACF,CAAA;AAAA,MACA;AAAA,KACF;AA/EG,IAAA,YAAA,CAAA,IAAA,EAAA,oBAAA,CAAA;AAsFL,IAAA,YAAA,CAAA,IAAA,EAASiC,SAAT,EAAA,iBAAA,CAAArB,MAAA,EAAA,CAAA,EAAA,IAAA,CAAA,CAAA,EAAA,iBAAA,CAAAA,MAAA,EAAA,EAAA,EAAA,IAAA,CAAA;AAGA,IAAA,YAAA,CAAA,IAAA,EAAgB,MAAhB,EAAA,iBAAA,CAAAA,MAAA,EAAA,EAAA,EAAA,IAAA,CAAA,CAAA,EAAA,iBAAA,CAAAA,MAAA,EAAA,EAAA,EAAA,IAAA,CAAA;AARE,IAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AACf,IAAK,IAAA,CAAA,YAAA,GAAe,MAAM,WAAY,EAAA;AAAA;AACxC,EAQA,IAAI,QAAQ,OAA8B,EAAA;AACxC,IAAA,YAAA,CAAA,IAAA,EAAK,sBAAW,OAAX,EAAA,WAAA,CAAA;AAAA;AACP,EAEA,IAAI,OAAU,GAAA;AApHhB,IAAAZ,IAAAA,GAAAA;AAqHI,IAAA,OAAA,CAAOA,GAAA,GAAA,IAAA,CAAK,KAAL,KAAA,IAAA,GAAAA,MAAc,YAAK,CAAA,IAAA,EAAA,oBAAA,EAAA,WAAA,CAAA;AAAA;AAI9B;AApGOY,MAAAA,GAAA,gBAAAQ,CAAAA,GAAAA,CAAAA;AAsFIa,SAAA,GAAA,IAAA,OAAA,EAAA;AAtFJ,oBAAA,GAAA,IAAA,OAAA,EAAA;AAyFW,MAAA,GAAA,IAAA,OAAA,EAAA;AAHhB,EAAA,GAAA,iBAAA,CAAArB,QAAA,EADAoB,EAAAA,UAAAA,EAAAA,aAAAA,EACS,sBAAAC,SAAA,CAAA,EAAA,WAAA,GAAT,QAAS,WAAT,GAAA,EAAA,CAAA,GAAA;AAGA,iBAAA,CAAArB,MAAA,EAAA,CAAA,EAAgB,OADhB,EAAA,UAAA,EAxFW,SAyFK,EAAA,MAAA,CAAA;AAzFX,mBAAA,CAAAA,MAAM,EAAA,SAAA,CAAA","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","import {getWindow} from '@dnd-kit/dom/utilities';\n\nexport function isFocusable(element: Element) {\n const window = getWindow(element);\n\n return (\n element instanceof window.HTMLInputElement ||\n element instanceof window.HTMLSelectElement ||\n element instanceof window.HTMLTextAreaElement ||\n element instanceof window.HTMLAnchorElement ||\n element instanceof window.HTMLButtonElement ||\n element instanceof window.HTMLAreaElement\n );\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 {getWindow, 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 const window = getWindow(activator);\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 instanceof window.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 for (const key of ['aria-pressed', 'aria-grabbed']) {\n activator.setAttribute(key, 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 {Plugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\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 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 {configurator, Plugin} from '@dnd-kit/abstract';\nimport {\n animateTransform,\n cloneElement,\n isKeyboardEvent,\n showPopover,\n getComputedStyles,\n supportsPopover,\n supportsStyle,\n Styles,\n parseTranslate,\n ProxiedElements,\n getWindow,\n generateUniqueId,\n getDocument,\n getFrameTransform,\n DOMRectangle,\n getFrameElement,\n} from '@dnd-kit/dom/utilities';\nimport {Coordinates} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Draggable, Droppable} from '../../entities/index.ts';\n\nconst ATTR_PREFIX = 'data-dnd-';\nconst CSS_PREFIX = '--dnd-';\nconst ATTRIBUTE = `${ATTR_PREFIX}dragging`;\nconst cssRules = `[${ATTRIBUTE}] {position: fixed !important;pointer-events: none !important;touch-action: none !important;z-index: calc(infinity);will-change: translate;top: var(${CSS_PREFIX}top, 0px) !important;left: var(${CSS_PREFIX}left, 0px) !important;right: unset !important;bottom: unset !important;width: var(${CSS_PREFIX}width, auto) !important;height: var(${CSS_PREFIX}height, auto) !important;box-sizing:border-box;}[${ATTRIBUTE}] *{pointer-events: none !important;}[${ATTRIBUTE}][style*=\"${CSS_PREFIX}translate\"] {translate: var(${CSS_PREFIX}translate) !important;}[style*=\"${CSS_PREFIX}transition\"] {transition: var(${CSS_PREFIX}transition) !important;}*:where([${ATTRIBUTE}][popover]){overflow:visible;background:var(${CSS_PREFIX}background);border:var(${CSS_PREFIX}border);margin:unset;padding:unset;color:inherit;}[${ATTRIBUTE}]::backdrop {display: none}html:has([${ATTRIBUTE}]) * {user-select:none;-webkit-user-select:none;}`;\nconst PLACEHOLDER_ATTRIBUTE = `${ATTR_PREFIX}placeholder`;\nconst IGNORED_ATTRIBUTES = [\n ATTRIBUTE,\n PLACEHOLDER_ATTRIBUTE,\n 'popover',\n 'aria-pressed',\n 'aria-grabbing',\n];\nconst IGNORED_STYLES = ['view-transition-name'];\n\nexport interface FeedbackOptions {\n rootElement?: Element | ((source: Draggable) => Element);\n}\n\nexport class Feedback extends Plugin<DragDropManager, FeedbackOptions> {\n constructor(manager: DragDropManager, options?: FeedbackOptions) {\n super(manager);\n\n const styleTags = new Map<Document, HTMLStyleElement>();\n\n let initialSize: {width: number; height: number} | undefined;\n let initialCoordinates: Coordinates | undefined;\n let initialFrameTransform:\n | {x: number; y: number; scaleX: number; scaleY: number}\n | undefined;\n let initialTranslate: Coordinates = {x: 0, y: 0};\n let currentTranslate: Coordinates | undefined;\n let transformOrigin: Coordinates | undefined;\n let moved = false;\n\n const styleInjectionCleanup = effect(() => {\n const {status, source, target} = 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 (!styleTags.has(doc)) {\n const style = document.createElement('style');\n style.innerText = cssRules;\n doc.head.prepend(style);\n styleTags.set(doc, style);\n }\n }\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 currentTranslate = undefined;\n initialCoordinates = undefined;\n initialSize = undefined;\n initialFrameTransform = undefined;\n initialTranslate = {x: 0, y: 0};\n transformOrigin = undefined;\n return;\n }\n\n if (!source) return;\n\n const {element, feedback} = source;\n\n if (!element || feedback === 'none') {\n return;\n }\n\n let cleanup: CleanupFunction | undefined;\n\n const frameTransform = getFrameTransform(element);\n const shape = new DOMRectangle(element, {\n frameTransform: null,\n ignoreTransforms: true,\n });\n const {width, height, top, left} = shape;\n const styles = new Styles(element);\n const {background, border, transition, translate} =\n getComputedStyles(element);\n const clone = feedback === 'clone';\n\n const placeholder =\n feedback !== 'move' ? createPlaceholder(source) : 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) {\n initialTranslate = parsedTranslate;\n }\n }\n\n const relativeTop = top * frameTransform.scaleY + frameTransform.y;\n const relativeLeft = left * frameTransform.scaleX + frameTransform.x;\n\n if (!initialCoordinates) {\n initialCoordinates = {x: relativeLeft, y: relativeTop};\n }\n\n if (!initialSize) {\n initialSize = {width, height};\n }\n\n if (!initialFrameTransform) {\n initialFrameTransform = frameTransform;\n }\n\n if (!transformOrigin) {\n const current = untracked(() => position.current);\n\n 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 coordinatesDelta = {\n x: initialCoordinates.x - relativeLeft,\n y: initialCoordinates.y - relativeTop,\n };\n\n const sizeDelta = {\n width:\n (initialSize.width * initialFrameTransform.scaleX -\n width * frameTransform.scaleX) *\n transformOrigin.x,\n height:\n (initialSize.height * initialFrameTransform.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 element.setAttribute(ATTRIBUTE, 'true');\n\n const transform = untracked(() => dragOperation.transform);\n const translateString = `${transform.x * frameTransform.scaleX + initialTranslate.x}px ${transform.y * frameTransform.scaleY + initialTranslate.y}px 0`;\n\n styles.set(\n {\n width: width,\n height: height,\n top: projected.top,\n left: projected.left,\n background,\n border,\n translate: translateString,\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(element)) {\n if (!element.hasAttribute('popover')) {\n element.setAttribute('popover', '');\n }\n showPopover(element);\n }\n\n const actual = new DOMRectangle(element, {\n ignoreTransforms: true,\n });\n const offset = {\n top: projected.top - actual.top,\n left: projected.left - actual.left,\n };\n\n if (Math.abs(offset.left) > 0.01 || Math.abs(offset.top) > 0.01) {\n styles.set(\n {\n top: actual.top + offset.top,\n left: actual.left + offset.left,\n },\n CSS_PREFIX\n );\n } else {\n // Ignore sub-pixel offsets\n offset.left = 0;\n offset.top = 0;\n }\n\n const resizeObserver = new ResizeObserver(() => {\n if (!placeholder) return;\n\n const placeholderShape = new DOMRectangle(placeholder, {\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 (\n element instanceof window.HTMLTableRowElement &&\n placeholder instanceof window.HTMLTableRowElement\n ) {\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(element);\n source.status = 'dragging';\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 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 documentMutationObserver = new MutationObserver((entries) => {\n for (const entry of entries) {\n const {addedNodes} = entry;\n\n if (\n addedNodes.length > 0 &&\n Array.from(addedNodes).some((node) => node.contains(element))\n ) {\n /* Update the position of the placeholder when the source element is moved */\n element.insertAdjacentElement('afterend', placeholder);\n\n /*\n * Any update in DOM order that affects the source element hides 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\n const cleanupEffect = effect(function updateTransform() {\n const {transform, status} = dragOperation;\n\n if (!transform.x && !transform.y && !moved) {\n return;\n }\n\n if (!moved) {\n moved = true;\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 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(element);\n\n currentTranslate = {\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 (element instanceof HTMLElement) {\n element.focus();\n }\n };\n\n let dropEffectCleanup: CleanupFunction | undefined;\n cleanup = () => {\n elementMutationObserver?.disconnect();\n documentMutationObserver?.disconnect();\n resizeObserver.disconnect();\n\n styles.reset();\n\n if (\n placeholder &&\n (moved || placeholder.parentElement !== element.parentElement) &&\n element.isConnected\n ) {\n placeholder.replaceWith(element);\n }\n\n placeholder?.remove();\n element.removeAttribute(ATTRIBUTE);\n\n if (supportsPopover(element)) {\n element.removeAttribute('popover');\n }\n\n cleanupEffect();\n dropEffectCleanup?.();\n\n source.status = 'idle';\n moved = false;\n };\n\n dropEffectCleanup = effect(function dropAnimation() {\n if (dragOperation.status.dropped) {\n const onComplete = cleanup;\n cleanup = undefined;\n\n source.status = 'dropping';\n\n const transform = currentTranslate;\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 target = placeholder ?? element;\n\n const animations = element.getAnimations();\n\n if (animations.length) {\n animations.forEach((animation) => {\n const {effect} = animation;\n\n if (effect instanceof KeyframeEffect) {\n if (\n effect.getKeyframes().some((keyframe) => keyframe.translate)\n ) {\n animation.finish();\n }\n }\n });\n }\n\n const sameFrame =\n getFrameElement(element) === getFrameElement(target);\n const options = {\n frameTransform: sameFrame ? null : undefined,\n };\n const current = new DOMRectangle(element, options);\n const final = new DOMRectangle(target, options);\n const delta = {\n x: current.center.x - final.center.x,\n y: current.center.y - final.center.y,\n };\n const finalTransform = {\n x: transform.x - delta.x,\n y: transform.y - delta.y,\n };\n const heightKeyframes =\n Math.round(current.height) !== Math.round(final.height)\n ? {\n minHeight: [`${current.height}px`, `${final.height}px`],\n maxHeight: [`${current.height}px`, `${final.height}px`],\n }\n : {};\n const widthKeyframes =\n Math.round(current.width) !== Math.round(final.width)\n ? {\n minWidth: [`${current.width}px`, `${final.width}px`],\n maxWidth: [`${current.width}px`, `${final.width}px`],\n }\n : {};\n\n animateTransform({\n element,\n keyframes: {\n ...heightKeyframes,\n ...widthKeyframes,\n translate: [\n `${transform.x}px ${transform.y}px 0`,\n `${finalTransform.x}px ${finalTransform.y}px 0`,\n ],\n },\n options: {\n duration: moved ? 250 : 0,\n easing: 'ease',\n },\n onReady() {\n styles.remove(['translate'], 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 styleTags.forEach((style) => style.remove());\n };\n }\n\n static configure = configurator(Feedback);\n}\n\nfunction createPlaceholder(source: Draggable) {\n return untracked(() => {\n const {element, manager} = source;\n\n if (!element || !manager) return;\n\n const {droppables} = manager.registry;\n const containedDroppables = new Map<Droppable, string>();\n\n for (const droppable of droppables) {\n if (!droppable.element) continue;\n\n if (\n element === droppable.element ||\n element.contains(droppable.element)\n ) {\n const identifierAttribute = `${ATTR_PREFIX}${generateUniqueId('dom-id')}`;\n\n droppable.element.setAttribute(identifierAttribute, '');\n\n containedDroppables.set(droppable, identifierAttribute);\n }\n }\n\n const cleanup: CleanupFunction[] = [];\n const placeholder = cloneElement(element);\n const {remove} = placeholder;\n\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 let current = droppable.element;\n\n droppable.proxy = clonedElement;\n clonedElement.removeAttribute(identifierAttribute);\n\n ProxiedElements.set(current, clonedElement);\n\n cleanup.push(() => {\n ProxiedElements.delete(current);\n droppable.proxy = undefined;\n });\n }\n\n placeholder.setAttribute('inert', 'true');\n placeholder.setAttribute('tab-index', '-1');\n placeholder.setAttribute('aria-hidden', 'true');\n placeholder.setAttribute(PLACEHOLDER_ATTRIBUTE, '');\n placeholder.remove = () => {\n cleanup.forEach((fn) => fn());\n remove.call(placeholder);\n };\n\n return placeholder;\n });\n}\n","import {reactive} from '@dnd-kit/state';\nimport {ScrollDirection as Direction} from '@dnd-kit/dom/utilities';\n\nconst LOCKED = true;\nconst UNLOCKED = false;\n\nexport class ScrollLock {\n @reactive private accessor [Direction.Forward] = LOCKED;\n @reactive private accessor [Direction.Reverse] = LOCKED;\n\n public isLocked(direction?: Direction): boolean {\n if (direction === Direction.Idle) {\n return false;\n }\n\n if (direction == null) {\n return (\n this[Direction.Forward] === LOCKED && this[Direction.Reverse] === LOCKED\n );\n }\n\n return this[direction] === LOCKED;\n }\n\n public unlock(direction: Direction) {\n if (direction === Direction.Idle) {\n return;\n }\n\n this[direction] = UNLOCKED;\n }\n}\n","import {batch, effect, signal, type Signal} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\nimport {Axes} from '@dnd-kit/geometry';\nimport type {Coordinates} from '@dnd-kit/geometry';\nimport {ScrollDirection} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollLock} from './ScrollLock.ts';\n\nconst DIRECTIONS = [ScrollDirection.Forward, ScrollDirection.Reverse];\n\nclass ScrollIntent {\n public x = new ScrollLock();\n public y = new ScrollLock();\n\n public isLocked(): boolean {\n return this.x.isLocked() && this.y.isLocked();\n }\n}\n\nexport class ScrollIntentTracker extends Plugin<DragDropManager> {\n private signal: Signal<ScrollIntent | null>;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n const scrollIntent = signal<ScrollIntent>(new ScrollIntent());\n let previousDelta: Coordinates | null = null;\n\n this.signal = scrollIntent;\n\n effect(() => {\n const {status} = manager.dragOperation;\n\n if (!status.initialized) {\n previousDelta = null;\n scrollIntent.value = new ScrollIntent();\n return;\n }\n\n const {delta} = manager.dragOperation.position;\n\n if (previousDelta) {\n const directions = {\n x: getDirection(delta.x, previousDelta.x),\n y: getDirection(delta.y, previousDelta.y),\n };\n\n const intent = scrollIntent.peek();\n\n batch(() => {\n for (const axis of Axes) {\n for (const direction of DIRECTIONS) {\n if (directions[axis] === direction) {\n intent[axis].unlock(direction);\n }\n }\n }\n\n scrollIntent.value = intent;\n });\n }\n\n previousDelta = delta;\n });\n }\n\n get current(): ScrollIntent | null {\n return this.signal.peek();\n }\n}\n\nfunction getDirection(a: number, b: number): ScrollDirection {\n return Math.sign(a - b);\n}\n","import {CorePlugin} from '@dnd-kit/abstract';\nimport {computed, deepEqual, reactive} from '@dnd-kit/state';\nimport {\n canScroll,\n detectScrollIntent,\n getScrollableAncestors,\n getElementFromPoint,\n ScrollDirection,\n scheduler,\n isKeyboardEvent,\n getDocument,\n getFrameTransform,\n} from '@dnd-kit/dom/utilities';\nimport {Axes, type Coordinates} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollIntentTracker} from './ScrollIntent.ts';\n\nexport class Scroller extends CorePlugin<DragDropManager> {\n public getScrollableElements: () => Set<Element> | null;\n\n private scrollIntentTracker: ScrollIntentTracker;\n\n @reactive\n public accessor autoScrolling = false;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n let previousElementFromPoint: Element | null = null;\n let previousScrollableElements: Set<Element> | null = null;\n const elementFromPoint = computed(() => {\n const {position} = manager.dragOperation;\n\n if (!position) {\n return null;\n }\n\n const element = getElementFromPoint(document, position.current);\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 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}\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 if (\n (!source.handle && source.element && event.target === source.element) ||\n (source.handle && event.target === source.handle)\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\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 {\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 protected listeners = new Listeners();\n\n protected cleanup: Set<CleanupFunction> = new Set();\n\n protected initialCoordinates: Coordinates | undefined;\n\n #clearTimeout: CleanupFunction | 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 ) {\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 },\n ]);\n\n const cleanup = () => {\n setTimeout(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({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 // 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({canceled});\n }\n\n // Remove the pointer move and up event listeners\n this.cleanup.forEach((cleanup) => cleanup());\n this.cleanup.clear();\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 if (event.defaultPrevented) {\n return;\n }\n\n event.preventDefault();\n\n batch(() => {\n manager.actions.setDragSource(source.id);\n manager.actions.start({coordinates: initialCoordinates, event});\n });\n\n const ownerDocument = getDocument(event.target);\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: 'keydown',\n listener: this.handleKeyDown,\n },\n ]);\n\n ownerDocument.body.setPointerCapture(event.pointerId);\n\n this.cleanup.add(unbind);\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.forEach((cleanup) => cleanup());\n this.cleanup.clear();\n }\n\n public destroy() {\n // Remove all event listeners\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 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 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"]}
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/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","getWindow","Plugin","_a","effect","_b","cleanupEffect","transform","status","element","options","delta","generateUniqueId","_dec","Direction","_init","reactive","Axes","getDocument","isKeyboardEvent","ScrollDirection","canScroll","CorePlugin","_c","DOMRectangle","batch","event","Sensor","Listeners","isElement","getFrameTransform","configurator","AbstractDragDropManager","AbstractDraggable","effects","_element_dec","_element","AbstractDroppable","untracked","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","import {getWindow} from '@dnd-kit/dom/utilities';\n\nexport function isFocusable(element: Element) {\n const window = getWindow(element);\n\n return (\n element instanceof window.HTMLInputElement ||\n element instanceof window.HTMLSelectElement ||\n element instanceof window.HTMLTextAreaElement ||\n element instanceof window.HTMLAnchorElement ||\n element instanceof window.HTMLButtonElement ||\n element instanceof window.HTMLAreaElement\n );\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 {getWindow, 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 const window = getWindow(activator);\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 instanceof window.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 for (const key of ['aria-pressed', 'aria-grabbed']) {\n activator.setAttribute(key, 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 {Plugin} from '@dnd-kit/abstract';\nimport {effect} from '@dnd-kit/state';\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 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 {configurator, Plugin} from '@dnd-kit/abstract';\nimport {\n animateTransform,\n cloneElement,\n isKeyboardEvent,\n showPopover,\n getComputedStyles,\n supportsPopover,\n supportsStyle,\n Styles,\n parseTranslate,\n ProxiedElements,\n getWindow,\n generateUniqueId,\n getDocument,\n getFrameTransform,\n DOMRectangle,\n getFrameElement,\n} from '@dnd-kit/dom/utilities';\nimport {Coordinates} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\nimport type {Draggable, Droppable} from '../../entities/index.ts';\n\nconst ATTR_PREFIX = 'data-dnd-';\nconst CSS_PREFIX = '--dnd-';\nconst ATTRIBUTE = `${ATTR_PREFIX}dragging`;\nconst cssRules = `[${ATTRIBUTE}] {position: fixed !important;pointer-events: none !important;touch-action: none !important;z-index: calc(infinity);will-change: translate;top: var(${CSS_PREFIX}top, 0px) !important;left: var(${CSS_PREFIX}left, 0px) !important;right: unset !important;bottom: unset !important;width: var(${CSS_PREFIX}width, auto) !important;height: var(${CSS_PREFIX}height, auto) !important;box-sizing:border-box;}[${ATTRIBUTE}] *{pointer-events: none !important;}[${ATTRIBUTE}][style*=\"${CSS_PREFIX}translate\"] {translate: var(${CSS_PREFIX}translate) !important;}[style*=\"${CSS_PREFIX}transition\"] {transition: var(${CSS_PREFIX}transition) !important;}*:where([${ATTRIBUTE}][popover]){overflow:visible;background:var(${CSS_PREFIX}background);border:var(${CSS_PREFIX}border);margin:unset;padding:unset;color:inherit;}[${ATTRIBUTE}]::backdrop {display: none}html:has([${ATTRIBUTE}]) * {user-select:none;-webkit-user-select:none;}`;\nconst PLACEHOLDER_ATTRIBUTE = `${ATTR_PREFIX}placeholder`;\nconst IGNORED_ATTRIBUTES = [\n ATTRIBUTE,\n PLACEHOLDER_ATTRIBUTE,\n 'popover',\n 'aria-pressed',\n 'aria-grabbing',\n];\nconst IGNORED_STYLES = ['view-transition-name'];\n\nexport interface FeedbackOptions {\n rootElement?: Element | ((source: Draggable) => Element);\n}\n\nexport class Feedback extends Plugin<DragDropManager, FeedbackOptions> {\n constructor(manager: DragDropManager, options?: FeedbackOptions) {\n super(manager);\n\n const styleTags = new Map<Document, HTMLStyleElement>();\n\n let initialSize: {width: number; height: number} | undefined;\n let initialCoordinates: Coordinates | undefined;\n let initialFrameTransform:\n | {x: number; y: number; scaleX: number; scaleY: number}\n | undefined;\n let initialTranslate: Coordinates = {x: 0, y: 0};\n let currentTranslate: Coordinates | undefined;\n let transformOrigin: Coordinates | undefined;\n let moved = false;\n\n const styleInjectionCleanup = effect(() => {\n const {status, source, target} = 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 (!styleTags.has(doc)) {\n const style = document.createElement('style');\n style.innerText = cssRules;\n doc.head.prepend(style);\n styleTags.set(doc, style);\n }\n }\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 currentTranslate = undefined;\n initialCoordinates = undefined;\n initialSize = undefined;\n initialFrameTransform = undefined;\n initialTranslate = {x: 0, y: 0};\n transformOrigin = undefined;\n return;\n }\n\n if (!source) return;\n\n const {element, feedback} = source;\n\n if (!element || feedback === 'none') {\n return;\n }\n\n let cleanup: CleanupFunction | undefined;\n\n const frameTransform = getFrameTransform(element);\n const shape = new DOMRectangle(element, {\n frameTransform: null,\n ignoreTransforms: true,\n });\n const {width, height, top, left} = shape;\n const styles = new Styles(element);\n const {background, border, transition, translate} =\n getComputedStyles(element);\n const clone = feedback === 'clone';\n\n const placeholder =\n feedback !== 'move' ? createPlaceholder(source) : 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) {\n initialTranslate = parsedTranslate;\n }\n }\n\n const relativeTop = top * frameTransform.scaleY + frameTransform.y;\n const relativeLeft = left * frameTransform.scaleX + frameTransform.x;\n\n if (!initialCoordinates) {\n initialCoordinates = {x: relativeLeft, y: relativeTop};\n }\n\n if (!initialSize) {\n initialSize = {width, height};\n }\n\n if (!initialFrameTransform) {\n initialFrameTransform = frameTransform;\n }\n\n if (!transformOrigin) {\n const current = untracked(() => position.current);\n\n 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 coordinatesDelta = {\n x: initialCoordinates.x - relativeLeft,\n y: initialCoordinates.y - relativeTop,\n };\n\n const sizeDelta = {\n width:\n (initialSize.width * initialFrameTransform.scaleX -\n width * frameTransform.scaleX) *\n transformOrigin.x,\n height:\n (initialSize.height * initialFrameTransform.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 element.setAttribute(ATTRIBUTE, 'true');\n\n const transform = untracked(() => dragOperation.transform);\n const translateString = `${transform.x * frameTransform.scaleX + initialTranslate.x}px ${transform.y * frameTransform.scaleY + initialTranslate.y}px 0`;\n\n styles.set(\n {\n width: width,\n height: height,\n top: projected.top,\n left: projected.left,\n background,\n border,\n translate: translateString,\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(element)) {\n if (!element.hasAttribute('popover')) {\n element.setAttribute('popover', '');\n }\n showPopover(element);\n }\n\n const actual = new DOMRectangle(element, {\n ignoreTransforms: true,\n });\n const offset = {\n top: projected.top - actual.top,\n left: projected.left - actual.left,\n };\n\n if (Math.abs(offset.left) > 0.01 || Math.abs(offset.top) > 0.01) {\n styles.set(\n {\n top: actual.top + offset.top,\n left: actual.left + offset.left,\n },\n CSS_PREFIX\n );\n } else {\n // Ignore sub-pixel offsets\n offset.left = 0;\n offset.top = 0;\n }\n\n const resizeObserver = new ResizeObserver(() => {\n if (!placeholder) return;\n\n const placeholderShape = new DOMRectangle(placeholder, {\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 (\n element instanceof window.HTMLTableRowElement &&\n placeholder instanceof window.HTMLTableRowElement\n ) {\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(element);\n source.status = 'dragging';\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 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 documentMutationObserver = new MutationObserver((entries) => {\n for (const entry of entries) {\n const {addedNodes} = entry;\n\n if (\n addedNodes.length > 0 &&\n Array.from(addedNodes).some((node) => node.contains(element))\n ) {\n /* Update the position of the placeholder when the source element is moved */\n element.insertAdjacentElement('afterend', placeholder);\n\n /*\n * Any update in DOM order that affects the source element hides 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\n const cleanupEffect = effect(function updateTransform() {\n const {transform, status} = dragOperation;\n\n if (!transform.x && !transform.y && !moved) {\n return;\n }\n\n if (!moved) {\n moved = true;\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 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(element);\n\n currentTranslate = {\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 (element instanceof HTMLElement) {\n element.focus();\n }\n };\n\n let dropEffectCleanup: CleanupFunction | undefined;\n cleanup = () => {\n elementMutationObserver?.disconnect();\n documentMutationObserver?.disconnect();\n resizeObserver.disconnect();\n\n styles.reset();\n\n if (\n placeholder &&\n (moved || placeholder.parentElement !== element.parentElement) &&\n element.isConnected\n ) {\n placeholder.replaceWith(element);\n }\n\n placeholder?.remove();\n element.removeAttribute(ATTRIBUTE);\n\n if (supportsPopover(element)) {\n element.removeAttribute('popover');\n }\n\n cleanupEffect();\n dropEffectCleanup?.();\n\n source.status = 'idle';\n moved = false;\n };\n\n dropEffectCleanup = effect(function dropAnimation() {\n if (dragOperation.status.dropped) {\n const onComplete = cleanup;\n cleanup = undefined;\n\n source.status = 'dropping';\n\n const transform = currentTranslate;\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 target = placeholder ?? element;\n\n const animations = element.getAnimations();\n\n if (animations.length) {\n animations.forEach((animation) => {\n const {effect} = animation;\n\n if (effect instanceof KeyframeEffect) {\n if (\n effect.getKeyframes().some((keyframe) => keyframe.translate)\n ) {\n animation.finish();\n }\n }\n });\n }\n\n const sameFrame =\n getFrameElement(element) === getFrameElement(target);\n const options = {\n frameTransform: sameFrame ? null : undefined,\n };\n const current = new DOMRectangle(element, options);\n const final = new DOMRectangle(target, options);\n const delta = {\n x: current.center.x - final.center.x,\n y: current.center.y - final.center.y,\n };\n const finalTransform = {\n x: transform.x - delta.x,\n y: transform.y - delta.y,\n };\n const heightKeyframes =\n Math.round(current.height) !== Math.round(final.height)\n ? {\n minHeight: [`${current.height}px`, `${final.height}px`],\n maxHeight: [`${current.height}px`, `${final.height}px`],\n }\n : {};\n const widthKeyframes =\n Math.round(current.width) !== Math.round(final.width)\n ? {\n minWidth: [`${current.width}px`, `${final.width}px`],\n maxWidth: [`${current.width}px`, `${final.width}px`],\n }\n : {};\n\n animateTransform({\n element,\n keyframes: {\n ...heightKeyframes,\n ...widthKeyframes,\n translate: [\n `${transform.x}px ${transform.y}px 0`,\n `${finalTransform.x}px ${finalTransform.y}px 0`,\n ],\n },\n options: {\n duration: moved ? 250 : 0,\n easing: 'ease',\n },\n onReady() {\n styles.remove(['translate'], 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 styleTags.forEach((style) => style.remove());\n };\n }\n\n static configure = configurator(Feedback);\n}\n\nfunction createPlaceholder(source: Draggable) {\n return untracked(() => {\n const {element, manager} = source;\n\n if (!element || !manager) return;\n\n const {droppables} = manager.registry;\n const containedDroppables = new Map<Droppable, string>();\n\n for (const droppable of droppables) {\n if (!droppable.element) continue;\n\n if (\n element === droppable.element ||\n element.contains(droppable.element)\n ) {\n const identifierAttribute = `${ATTR_PREFIX}${generateUniqueId('dom-id')}`;\n\n droppable.element.setAttribute(identifierAttribute, '');\n\n containedDroppables.set(droppable, identifierAttribute);\n }\n }\n\n const cleanup: CleanupFunction[] = [];\n const placeholder = cloneElement(element);\n const {remove} = placeholder;\n\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 let current = droppable.element;\n\n droppable.proxy = clonedElement;\n clonedElement.removeAttribute(identifierAttribute);\n\n ProxiedElements.set(current, clonedElement);\n\n cleanup.push(() => {\n ProxiedElements.delete(current);\n droppable.proxy = undefined;\n });\n }\n\n placeholder.setAttribute('inert', 'true');\n placeholder.setAttribute('tab-index', '-1');\n placeholder.setAttribute('aria-hidden', 'true');\n placeholder.setAttribute(PLACEHOLDER_ATTRIBUTE, '');\n placeholder.remove = () => {\n cleanup.forEach((fn) => fn());\n remove.call(placeholder);\n };\n\n return placeholder;\n });\n}\n","import {reactive} from '@dnd-kit/state';\nimport {ScrollDirection as Direction} from '@dnd-kit/dom/utilities';\n\nconst LOCKED = true;\nconst UNLOCKED = false;\n\nexport class ScrollLock {\n @reactive private accessor [Direction.Forward] = LOCKED;\n @reactive private accessor [Direction.Reverse] = LOCKED;\n\n public isLocked(direction?: Direction): boolean {\n if (direction === Direction.Idle) {\n return false;\n }\n\n if (direction == null) {\n return (\n this[Direction.Forward] === LOCKED && this[Direction.Reverse] === LOCKED\n );\n }\n\n return this[direction] === LOCKED;\n }\n\n public unlock(direction: Direction) {\n if (direction === Direction.Idle) {\n return;\n }\n\n this[direction] = UNLOCKED;\n }\n}\n","import {batch, effect, signal, type Signal} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\nimport {Axes} from '@dnd-kit/geometry';\nimport type {Coordinates} from '@dnd-kit/geometry';\nimport {ScrollDirection} from '@dnd-kit/dom/utilities';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollLock} from './ScrollLock.ts';\n\nconst DIRECTIONS = [ScrollDirection.Forward, ScrollDirection.Reverse];\n\nclass ScrollIntent {\n public x = new ScrollLock();\n public y = new ScrollLock();\n\n public isLocked(): boolean {\n return this.x.isLocked() && this.y.isLocked();\n }\n}\n\nexport class ScrollIntentTracker extends Plugin<DragDropManager> {\n private signal: Signal<ScrollIntent | null>;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n const scrollIntent = signal<ScrollIntent>(new ScrollIntent());\n let previousDelta: Coordinates | null = null;\n\n this.signal = scrollIntent;\n\n effect(() => {\n const {status} = manager.dragOperation;\n\n if (!status.initialized) {\n previousDelta = null;\n scrollIntent.value = new ScrollIntent();\n return;\n }\n\n const {delta} = manager.dragOperation.position;\n\n if (previousDelta) {\n const directions = {\n x: getDirection(delta.x, previousDelta.x),\n y: getDirection(delta.y, previousDelta.y),\n };\n\n const intent = scrollIntent.peek();\n\n batch(() => {\n for (const axis of Axes) {\n for (const direction of DIRECTIONS) {\n if (directions[axis] === direction) {\n intent[axis].unlock(direction);\n }\n }\n }\n\n scrollIntent.value = intent;\n });\n }\n\n previousDelta = delta;\n });\n }\n\n get current(): ScrollIntent | null {\n return this.signal.peek();\n }\n}\n\nfunction getDirection(a: number, b: number): ScrollDirection {\n return Math.sign(a - b);\n}\n","import {CorePlugin} from '@dnd-kit/abstract';\nimport {computed, deepEqual, reactive} from '@dnd-kit/state';\nimport {\n canScroll,\n detectScrollIntent,\n getScrollableAncestors,\n getElementFromPoint,\n ScrollDirection,\n scheduler,\n isKeyboardEvent,\n getDocument,\n getFrameTransform,\n} from '@dnd-kit/dom/utilities';\nimport {Axes, type Coordinates} from '@dnd-kit/geometry';\n\nimport type {DragDropManager} from '../../manager/index.ts';\n\nimport {ScrollIntentTracker} from './ScrollIntent.ts';\n\nexport class Scroller extends CorePlugin<DragDropManager> {\n public getScrollableElements: () => Set<Element> | null;\n\n private scrollIntentTracker: ScrollIntentTracker;\n\n @reactive\n public accessor autoScrolling = false;\n\n constructor(manager: DragDropManager) {\n super(manager);\n\n let previousElementFromPoint: Element | null = null;\n let previousScrollableElements: Set<Element> | null = null;\n const elementFromPoint = computed(() => {\n const {position} = manager.dragOperation;\n\n if (!position) {\n return null;\n }\n\n const element = getElementFromPoint(document, position.current);\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 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}\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 if (\n (!source.handle && source.element && event.target === source.element) ||\n (source.handle && event.target === source.handle)\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\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 {\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 protected listeners = new Listeners();\n\n protected cleanup: Set<CleanupFunction> = new Set();\n\n protected initialCoordinates: Coordinates | undefined;\n\n #clearTimeout: CleanupFunction | 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 ) {\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 },\n ]);\n\n const cleanup = () => {\n setTimeout(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({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 // 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({canceled});\n }\n\n // Remove the pointer move and up event listeners\n this.cleanup.forEach((cleanup) => cleanup());\n this.cleanup.clear();\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 if (event.defaultPrevented) {\n return;\n }\n\n event.preventDefault();\n\n batch(() => {\n manager.actions.setDragSource(source.id);\n manager.actions.start({coordinates: initialCoordinates, event});\n });\n\n const ownerDocument = getDocument(event.target);\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: 'keydown',\n listener: this.handleKeyDown,\n },\n {\n type: 'lostpointercapture',\n listener: this.handlePointerUp,\n },\n ]);\n\n ownerDocument.body.setPointerCapture(event.pointerId);\n\n this.cleanup.add(unbind);\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.forEach((cleanup) => cleanup());\n this.cleanup.clear();\n }\n\n public destroy() {\n // Remove all event listeners\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 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 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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dnd-kit/dom",
3
- "version": "0.0.7",
3
+ "version": "0.0.8-beta-20250202144138",
4
4
  "type": "module",
5
5
  "main": "./index.cjs",
6
6
  "module": "./index.js",
@@ -74,10 +74,10 @@
74
74
  "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
75
75
  },
76
76
  "dependencies": {
77
- "@dnd-kit/abstract": "^0.0.7",
78
- "@dnd-kit/collision": "^0.0.7",
79
- "@dnd-kit/geometry": "^0.0.7",
80
- "@dnd-kit/state": "^0.0.7",
77
+ "@dnd-kit/abstract": "0.0.8-beta-20250202144138",
78
+ "@dnd-kit/collision": "0.0.8-beta-20250202144138",
79
+ "@dnd-kit/geometry": "0.0.8-beta-20250202144138",
80
+ "@dnd-kit/state": "0.0.8-beta-20250202144138",
81
81
  "tslib": "^2.6.2"
82
82
  },
83
83
  "devDependencies": {