{"version":3,"sources":["src/core/context/context.ts","src/core/context/renderer.ts","src/core/context/DragDropProvider.tsx","src/core/hooks/useDragDropManager.ts","src/core/hooks/useInstance.ts","src/core/draggable/useDraggable.ts","src/core/draggable/DragOverlay.tsx","../geometry/dist/index.mjs","../collision/dist/index.js","src/core/droppable/useDroppable.ts","src/core/hooks/useDragDropMonitor.ts","src/core/hooks/useDragOperation.ts"],"names":["DragDropManager","createContext","memo","forwardRef","useState","useRef","useMemo","_a","startTransition","useIsomorphicLayoutEffect","useImperativeHandle","deepEqual","resolveCustomizable","defaultPreset","useLatest","useEffect","useOnValueChange","jsxs","jsx","useInsertionEffect","useContext","Draggable","currentValue","useDeepSignal","useOnElementChange","handle","element","useCallback","useComputed","Feedback","createElement","__defProp","__defNormalProp","ValueHistory","derived","batch","CollisionType","CollisionPriority","CollisionType2","CollisionPriority2","Droppable"],"mappings":"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","file":"index.cjs","sourcesContent":["'use client';\n\nimport {createContext} from 'react';\nimport {DragDropManager} from '@dnd-kit/dom';\n\nexport const defaultManager = new DragDropManager();\n\nexport const DragDropContext = createContext<DragDropManager | null>(\n  defaultManager\n);\n","import {\n  forwardRef,\n  memo,\n  startTransition,\n  useImperativeHandle,\n  useState,\n  useRef,\n  useMemo,\n} from 'react';\nimport type {Renderer as AbstractRenderer} from '@dnd-kit/abstract';\nimport {useIsomorphicLayoutEffect} from '@dnd-kit/react/hooks';\n\nexport type ReactRenderer = {\n  renderer: AbstractRenderer;\n  trackRendering: (callback: () => void) => void;\n};\n\nexport const Renderer = memo(\n  forwardRef<ReactRenderer, {children: React.ReactNode}>(({children}, ref) => {\n    const [transitionCount, setTransitionCount] = useState(0);\n    const rendering = useRef<Promise<void> | null>(null);\n    const resolver = useRef<(() => void) | null>(null);\n    const renderer = useMemo<ReactRenderer>(\n      () => ({\n        renderer: {\n          get rendering() {\n            return rendering.current ?? Promise.resolve();\n          },\n        },\n        trackRendering(callback: () => void) {\n          if (!rendering.current) {\n            rendering.current = new Promise<void>((resolve) => {\n              resolver.current = resolve;\n            });\n          }\n\n          startTransition(() => {\n            callback();\n            setTransitionCount((count) => count + 1);\n          });\n        },\n      }),\n      []\n    );\n\n    useIsomorphicLayoutEffect(() => {\n      resolver.current?.();\n      rendering.current = null;\n    }, [children, transitionCount]);\n\n    useImperativeHandle(ref, () => renderer);\n\n    return null;\n  })\n);\n","'use client';\n\nimport {\n  useEffect,\n  useRef,\n  useInsertionEffect,\n  type PropsWithChildren,\n} from 'react';\nimport type {Data, DragDropEventHandlers} from '@dnd-kit/abstract';\nimport {\n  DragDropManager,\n  defaultPreset,\n  resolveCustomizable,\n} from '@dnd-kit/dom';\nimport type {DragDropManagerInput, Draggable, Droppable} from '@dnd-kit/dom';\nimport {useLatest, useOnValueChange} from '@dnd-kit/react/hooks';\nimport {deepEqual} from '@dnd-kit/state';\n\nimport {DragDropContext} from './context.ts';\nimport {Renderer, type ReactRenderer} from './renderer.ts';\n\nexport type Events<\n  T extends Data = Data,\n  U extends Draggable<T> = Draggable<T>,\n  V extends Droppable<T> = Droppable<T>,\n  W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n> = DragDropEventHandlers<U, V, W>;\n\nexport interface Props<\n  T extends Data = Data,\n  U extends Draggable<T> = Draggable<T>,\n  V extends Droppable<T> = Droppable<T>,\n  W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n> extends DragDropManagerInput,\n    PropsWithChildren {\n  manager?: W;\n  onBeforeDragStart?: Events<T, U, V, W>['beforedragstart'];\n  onCollision?: Events<T, U, V, W>['collision'];\n  onDragStart?: Events<T, U, V, W>['dragstart'];\n  onDragMove?: Events<T, U, V, W>['dragmove'];\n  onDragOver?: Events<T, U, V, W>['dragover'];\n  onDragEnd?: Events<T, U, V, W>['dragend'];\n}\n\nconst options = [undefined, deepEqual] as const;\n\nexport function DragDropProvider<\n  T extends Data = Data,\n  U extends Draggable<T> = Draggable<T>,\n  V extends Droppable<T> = Droppable<T>,\n  W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n>({\n  children,\n  onCollision,\n  onBeforeDragStart,\n  onDragStart,\n  onDragMove,\n  onDragOver,\n  onDragEnd,\n  ...input\n}: Props<T, U, V, W>) {\n  const rendererRef = useRef<ReactRenderer | null>(null);\n  const {\n    plugins: pluginsInput,\n    modifiers: modifiersInput,\n    sensors: sensorsInput,\n  } = input;\n  const plugins = resolveCustomizable(pluginsInput, defaultPreset.plugins);\n  const sensors = resolveCustomizable(sensorsInput, defaultPreset.sensors);\n  const modifiers = resolveCustomizable(\n    modifiersInput,\n    defaultPreset.modifiers\n  );\n  const handleBeforeDragStart = useLatest(onBeforeDragStart);\n  const handleDragStart = useLatest(onDragStart);\n  const handleDragOver = useLatest(onDragOver);\n  const handleDragMove = useLatest(onDragMove);\n  const handleDragEnd = useLatest(onDragEnd);\n  const handleCollision = useLatest(onCollision);\n  const manager = useStableInstance<W>(() => {\n    return input.manager ?? (new DragDropManager<T, U, V>(input) as W);\n  });\n\n  useEffect(() => {\n    if (!rendererRef.current) throw new Error('Renderer not found');\n\n    const {renderer, trackRendering} = rendererRef.current;\n    const {monitor} = manager;\n\n    manager.renderer = renderer;\n\n    const listeners = [\n      monitor.addEventListener('beforedragstart', (event) => {\n        const callback = handleBeforeDragStart.current;\n\n        if (callback) {\n          trackRendering(() => callback(event, manager));\n        }\n      }),\n      monitor.addEventListener('dragstart', (event) =>\n        handleDragStart.current?.(event, manager)\n      ),\n      monitor.addEventListener('dragover', (event) => {\n        const callback = handleDragOver.current;\n\n        if (callback) {\n          trackRendering(() => callback(event, manager));\n        }\n      }),\n      monitor.addEventListener('dragmove', (event) => {\n        const callback = handleDragMove.current;\n\n        if (callback) {\n          trackRendering(() => callback(event, manager));\n        }\n      }),\n      monitor.addEventListener('dragend', (event) => {\n        const callback = handleDragEnd.current;\n\n        if (callback) {\n          trackRendering(() => callback(event, manager));\n        }\n      }),\n      monitor.addEventListener('collision', (event) =>\n        handleCollision.current?.(event, manager)\n      ),\n    ];\n\n    return () => listeners.forEach((dispose) => dispose());\n  }, [manager]);\n\n  useOnValueChange(\n    plugins,\n    () => manager && (manager.plugins = plugins),\n    ...options\n  );\n  useOnValueChange(\n    sensors,\n    () => manager && (manager.sensors = sensors),\n    ...options\n  );\n  useOnValueChange(\n    modifiers,\n    () => manager && (manager.modifiers = modifiers),\n    ...options\n  );\n\n  return (\n    <DragDropContext.Provider value={manager as any}>\n      <Renderer ref={rendererRef}>{children}</Renderer>\n      {children}\n    </DragDropContext.Provider>\n  );\n}\n\nfunction useStableInstance<T extends {destroy(): void}>(create: () => T): T {\n  const ref = useRef<T | null>(null);\n\n  if (!ref.current) {\n    ref.current = create();\n  }\n\n  useInsertionEffect(() => {\n    return () => ref.current?.destroy();\n  }, []);\n\n  return ref.current;\n}\n","import {useContext} from 'react';\nimport type {Data} from '@dnd-kit/abstract';\nimport type {DragDropManager, Draggable, Droppable} from '@dnd-kit/dom';\n\nimport {DragDropContext} from '../context/context.ts';\n\nexport function useDragDropManager<\n  T extends Data = Data,\n  U extends Draggable<T> = Draggable<T>,\n  V extends Droppable<T> = Droppable<T>,\n  W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n>(): W | null {\n  return useContext(DragDropContext) as W | null;\n}\n","import {useState} from 'react';\nimport type {DragDropManager} from '@dnd-kit/abstract';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport {useIsomorphicLayoutEffect} from '@dnd-kit/react/hooks';\n\nimport {useDragDropManager} from './useDragDropManager.ts';\n\nexport interface Instance<\n  T extends DragDropManager<any, any> = DragDropManager<any, any>,\n> {\n  manager: T | undefined;\n  register(): CleanupFunction | void;\n}\n\nexport function useInstance<T extends Instance>(\n  initializer: (manager: DragDropManager<any, any> | undefined) => T\n): T {\n  const manager = useDragDropManager() ?? undefined;\n  const [instance] = useState<T>(() => initializer(manager));\n\n  if (instance.manager !== manager) {\n    instance.manager = manager;\n  }\n\n  useIsomorphicLayoutEffect(instance.register, [manager, instance]);\n\n  return instance;\n}\n","import {useCallback} from 'react';\nimport type {Data} from '@dnd-kit/abstract';\nimport {deepEqual} from '@dnd-kit/state';\nimport {Draggable} from '@dnd-kit/dom';\nimport type {DraggableInput} from '@dnd-kit/dom';\nimport {\n  useOnValueChange,\n  useOnElementChange,\n  useDeepSignal,\n} from '@dnd-kit/react/hooks';\nimport {currentValue, type RefOrValue} from '@dnd-kit/react/utilities';\n\nimport {useInstance} from '../hooks/useInstance.ts';\n\nexport interface UseDraggableInput<T extends Data = Data>\n  extends Omit<DraggableInput<T>, 'handle' | 'element'> {\n  handle?: RefOrValue<Element>;\n  element?: RefOrValue<Element>;\n}\n\nexport function useDraggable<T extends Data = Data>(\n  input: UseDraggableInput<T>\n) {\n  const {disabled, data, element, handle, id, modifiers, sensors, plugins} =\n    input;\n  const draggable = useInstance(\n    (manager) =>\n      new Draggable(\n        {\n          ...input,\n          register: false,\n          handle: currentValue(handle),\n          element: currentValue(element),\n        },\n        manager\n      )\n  );\n  const trackedDraggable = useDeepSignal(draggable, shouldUpdateSynchronously);\n\n  useOnValueChange(id, () => (draggable.id = id));\n  useOnElementChange(handle, (handle) => (draggable.handle = handle));\n  useOnElementChange(element, (element) => (draggable.element = element));\n  useOnValueChange(data, () => data && (draggable.data = data));\n  useOnValueChange(disabled, () => (draggable.disabled = disabled === true));\n  useOnValueChange(\n    sensors,\n    () => (draggable.sensors = sensors),\n    undefined,\n    deepEqual\n  );\n  useOnValueChange(\n    modifiers,\n    () => (draggable.modifiers = modifiers),\n    undefined,\n    deepEqual\n  );\n  useOnValueChange(\n    plugins,\n    () => (draggable.plugins = plugins),\n    undefined,\n    deepEqual\n  );\n  useOnValueChange(\n    input.alignment,\n    () => (draggable.alignment = input.alignment)\n  );\n\n  return {\n    draggable: trackedDraggable,\n    get isDragging() {\n      return trackedDraggable.isDragging;\n    },\n    get isDropping() {\n      return trackedDraggable.isDropping;\n    },\n    get isDragSource() {\n      return trackedDraggable.isDragSource;\n    },\n    handleRef: useCallback(\n      (element: Element | null) => {\n        draggable.handle = element ?? undefined;\n      },\n      [draggable]\n    ),\n    ref: useCallback(\n      (element: Element | null) => {\n        if (\n          !element &&\n          draggable.element?.isConnected &&\n          !draggable.manager?.dragOperation.status.idle\n        ) {\n          return;\n        }\n\n        draggable.element = element ?? undefined;\n      },\n      [draggable]\n    ),\n  };\n}\n\nfunction shouldUpdateSynchronously(key: string, oldValue: any, newValue: any) {\n  // Update synchronously after drop animation\n  if (key === 'isDragSource' && !newValue && oldValue) return true;\n\n  return false;\n}\n","import {createElement, useEffect, useMemo, useRef, type ReactNode} from 'react';\nimport {useComputed, useDeepSignal} from '@dnd-kit/react/hooks';\nimport {DragDropManager, Draggable, Feedback} from '@dnd-kit/dom';\nimport type {DropAnimation} from '@dnd-kit/dom';\nimport {Data} from '@dnd-kit/abstract';\n\nimport {useDragDropManager} from '../hooks/useDragDropManager.ts';\nimport {DragDropContext} from '../context/context.ts';\n\nexport interface Props<T extends Data, U extends Draggable<T>> {\n  className?: string;\n  children: ReactNode | ((source: U) => ReactNode);\n  /**\n   * Customize or disable the drop animation that plays when a drag operation ends.\n   *\n   * - `undefined` – use the default animation (250ms ease)\n   * - `null` – disable the drop animation entirely\n   * - `{duration, easing}` – customize the animation timing\n   * - `(context) => Promise<void> | void` – provide a fully custom animation function\n   */\n  dropAnimation?: DropAnimation | null;\n  style?: React.CSSProperties;\n  tag?: string;\n  disabled?: boolean | ((source: U | null) => boolean);\n}\n\nexport function DragOverlay<T extends Data, U extends Draggable<T>>({\n  children,\n  className,\n  dropAnimation,\n  style,\n  tag,\n  disabled,\n}: Props<T, U>) {\n  const ref = useRef<HTMLDivElement | null>(null);\n  const manager = useDragDropManager<T, U>();\n  const source =\n    useComputed(() => manager?.dragOperation.source, [manager]).value ?? null;\n  const isDisabled =\n    typeof disabled === 'function' ? disabled(source) : disabled;\n\n  useEffect(() => {\n    if (!ref.current || !manager || isDisabled) return;\n\n    const feedback = manager.plugins.find(\n      (plugin) => plugin instanceof Feedback\n    );\n\n    if (!feedback) return;\n\n    feedback.overlay = ref.current;\n\n    return () => {\n      feedback.overlay = undefined;\n    };\n  }, [manager, isDisabled]);\n\n  useEffect(() => {\n    if (!manager) return;\n\n    const feedback = manager.plugins.find(\n      (plugin) => plugin instanceof Feedback\n    );\n\n    if (!feedback) return;\n\n    feedback.dropAnimation = dropAnimation;\n\n    return () => {\n      feedback.dropAnimation = undefined;\n    };\n  }, [manager, dropAnimation]);\n\n  // Prevent children of the overlay from registering themselves as draggables or droppables\n  const patchedManager = useMemo(() => {\n    if (!manager) return null;\n\n    const patchedRegistry = new Proxy(manager.registry, {\n      get(target, property) {\n        if (property === 'register' || property === 'unregister') {\n          return noop;\n        }\n\n        return target[property as keyof typeof target];\n      },\n    });\n\n    return new Proxy(manager, {\n      get(target, property) {\n        if (property === 'registry') {\n          return patchedRegistry;\n        }\n\n        return target[property as keyof typeof target];\n      },\n    });\n  }, [manager]);\n\n  return (\n    <DragDropContext.Provider value={patchedManager as DragDropManager | null}>\n      {createElement(\n        tag || 'div',\n        {ref, className, style, 'data-dnd-overlay': true},\n\n        renderChildren()\n      )}\n    </DragDropContext.Provider>\n  );\n\n  function renderChildren() {\n    if (!source || isDisabled) return null;\n\n    if (typeof children === 'function') {\n      return <Children source={source}>{children}</Children>;\n    }\n\n    return children;\n  }\n}\n\nfunction noop() {\n  return () => {};\n}\n\nfunction Children<T extends Data, U extends Draggable<T>>({\n  children,\n  source,\n}: {\n  children: (source: U) => ReactNode;\n  source: U;\n}) {\n  return children(useDeepSignal(source));\n}\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\nvar __typeError = (msg) => {\n  throw TypeError(msg);\n};\nvar __pow = Math.pow;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __decoratorStart = (base) => {\n  var _a2;\n  return [, , , __create((_a2 = base == null ? void 0 : base[__knownSymbol(\"metadata\")]) != null ? _a2 : null)];\n};\nvar __decoratorStrings = [\"class\", \"method\", \"getter\", \"setter\", \"accessor\", \"field\", \"value\", \"get\", \"set\"];\nvar __expectFn = (fn) => fn !== void 0 && typeof fn !== \"function\" ? __typeError(\"Function expected\") : fn;\nvar __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError(\"Already initialized\") : fns.push(__expectFn(fn || null)) });\nvar __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol(\"metadata\"), array[3]);\nvar __runInitializers = (array, flags, self, value) => {\n  for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);\n  return value;\n};\nvar __decorateElement = (array, flags, name, decorators, target, extra) => {\n  var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);\n  var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];\n  var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);\n  var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {\n    return __privateGet(this, extra);\n  }, set [name](x) {\n    return __privateSet(this, extra, x);\n  } }, name));\n  k ? p && k < 4 && __name(extra, (k > 2 ? \"set \" : k > 1 ? \"get \" : \"\") + name) : __name(target, name);\n  for (var i = decorators.length - 1; i >= 0; i--) {\n    ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);\n    if (k) {\n      ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };\n      if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];\n      if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;\n    }\n    it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;\n    if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);\n    else if (typeof it !== \"object\" || it === null) __typeError(\"Object expected\");\n    else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);\n  }\n  return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the \"in\" operator on this value') : member.has(obj);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\n\n// src/point/Point.ts\nvar Point = class _Point {\n  /**\n   * @param {number} Coordinate of the point on the horizontal axis\n   * @param {number} Coordinate of the point on the vertical axis\n   */\n  constructor(x, y) {\n    this.x = x;\n    this.y = y;\n  }\n  /**\n   * Returns the delta between this point and another point.\n   *\n   * @param {Point} a - A point\n   * @param {Point} b - Another point\n   */\n  static delta(a, b) {\n    return new _Point(a.x - b.x, a.y - b.y);\n  }\n  /**\n   * Returns the distance (hypotenuse) between this point and another point.\n   *\n   * @param {Point} a - A point\n   * @param {Point} b - Another point\n   */\n  static distance(a, b) {\n    return Math.hypot(a.x - b.x, a.y - b.y);\n  }\n  /**\n   * Returns true if both points are equal.\n   *\n   * @param {Point} a - A point\n   * @param {Point} b - Another point\n   */\n  static equals(a, b) {\n    return a.x === b.x && a.y === b.y;\n  }\n  static from({ x, y }) {\n    return new _Point(x, y);\n  }\n};\n\n// src/shapes/Rectangle.ts\nvar Rectangle = class _Rectangle {\n  constructor(left, top, width, height) {\n    this.left = left;\n    this.top = top;\n    this.width = width;\n    this.height = height;\n    this.scale = {\n      x: 1,\n      y: 1\n    };\n  }\n  get inverseScale() {\n    return {\n      x: 1 / this.scale.x,\n      y: 1 / this.scale.y\n    };\n  }\n  translate(x, y) {\n    const { top, left, width, height, scale } = this;\n    const newShape = new _Rectangle(left + x, top + y, width, height);\n    newShape.scale = __spreadValues({}, scale);\n    return newShape;\n  }\n  get boundingRectangle() {\n    const { width, height, left, top, right, bottom } = this;\n    return { width, height, left, top, right, bottom };\n  }\n  get center() {\n    const { left, top, right, bottom } = this;\n    return new Point((left + right) / 2, (top + bottom) / 2);\n  }\n  get area() {\n    const { width, height } = this;\n    return width * height;\n  }\n  equals(shape) {\n    if (!(shape instanceof _Rectangle)) {\n      return false;\n    }\n    const { left, top, width, height } = this;\n    return left === shape.left && top === shape.top && width === shape.width && height === shape.height;\n  }\n  containsPoint(point) {\n    const { top, left, bottom, right } = this;\n    return top <= point.y && point.y <= bottom && left <= point.x && point.x <= right;\n  }\n  intersectionArea(shape) {\n    if (shape instanceof _Rectangle) {\n      return rectangleRectangleIntersection(this, shape);\n    }\n    return 0;\n  }\n  intersectionRatio(shape) {\n    const { area } = this;\n    const intersectionArea = this.intersectionArea(shape);\n    const intersectionRatio = intersectionArea / (shape.area + area - intersectionArea);\n    return intersectionRatio;\n  }\n  get bottom() {\n    const { top, height } = this;\n    return top + height;\n  }\n  get right() {\n    const { left, width } = this;\n    return left + width;\n  }\n  get aspectRatio() {\n    const { width, height } = this;\n    return width / height;\n  }\n  get corners() {\n    return [\n      { x: this.left, y: this.top },\n      { x: this.right, y: this.top },\n      { x: this.left, y: this.bottom },\n      { x: this.right, y: this.bottom }\n    ];\n  }\n  static from({ top, left, width, height }) {\n    return new _Rectangle(left, top, width, height);\n  }\n  static delta(a, b, alignment = { x: \"center\", y: \"center\" }) {\n    const getCoordinate = (rect, axis) => {\n      const align = alignment[axis];\n      const start = axis === \"x\" ? rect.left : rect.top;\n      const size = axis === \"x\" ? rect.width : rect.height;\n      if (align == \"start\") return start;\n      if (align == \"end\") return start + size;\n      return start + size / 2;\n    };\n    return Point.delta(\n      { x: getCoordinate(a, \"x\"), y: getCoordinate(a, \"y\") },\n      { x: getCoordinate(b, \"x\"), y: getCoordinate(b, \"y\") }\n    );\n  }\n  static intersectionRatio(a, b) {\n    return _Rectangle.from(a).intersectionRatio(_Rectangle.from(b));\n  }\n};\nfunction rectangleRectangleIntersection(a, b) {\n  const top = Math.max(b.top, a.top);\n  const left = Math.max(b.left, a.left);\n  const right = Math.min(b.left + b.width, a.left + a.width);\n  const bottom = Math.min(b.top + b.height, a.top + a.height);\n  const width = right - left;\n  const height = bottom - top;\n  if (left < right && top < bottom) {\n    const intersectionArea = width * height;\n    return intersectionArea;\n  }\n  return 0;\n}\n\n// src/position/position.ts\nimport { batch, derived, ValueHistory } from \"@dnd-kit/state\";\nvar _direction_dec, _delta_dec, _a, _timestamp, _init;\nvar Position = class extends (_a = ValueHistory, _delta_dec = [derived], _direction_dec = [derived], _a) {\n  constructor(initialValue) {\n    const point = Point.from(initialValue);\n    super(point, (a, b) => Point.equals(a, b));\n    __runInitializers(_init, 5, this);\n    __privateAdd(this, _timestamp, 0);\n    this.velocity = { x: 0, y: 0 };\n  }\n  get delta() {\n    return Point.delta(this.current, this.initial);\n  }\n  get direction() {\n    const { current, previous } = this;\n    if (!previous) return null;\n    const delta = {\n      x: current.x - previous.x,\n      y: current.y - previous.y\n    };\n    if (!delta.x && !delta.y) {\n      return null;\n    }\n    if (Math.abs(delta.x) > Math.abs(delta.y)) {\n      return delta.x > 0 ? \"right\" : \"left\";\n    }\n    return delta.y > 0 ? \"down\" : \"up\";\n  }\n  get current() {\n    return super.current;\n  }\n  set current(coordinates) {\n    const { current } = this;\n    const point = Point.from(coordinates);\n    const delta = {\n      x: point.x - current.x,\n      y: point.y - current.y\n    };\n    const timestamp = Date.now();\n    const timeDelta = timestamp - __privateGet(this, _timestamp);\n    const velocity = (delta2) => Math.round(delta2 / timeDelta * 100);\n    batch(() => {\n      __privateSet(this, _timestamp, timestamp);\n      this.velocity = {\n        x: velocity(delta.x),\n        y: velocity(delta.y)\n      };\n      super.current = point;\n    });\n  }\n  reset(coordinates = this.defaultValue) {\n    super.reset(Point.from(coordinates));\n    this.velocity = { x: 0, y: 0 };\n  }\n};\n_init = __decoratorStart(_a);\n_timestamp = new WeakMap();\n__decorateElement(_init, 2, \"delta\", _delta_dec, Position);\n__decorateElement(_init, 2, \"direction\", _direction_dec, Position);\n__decoratorMetadata(_init, Position);\n\n// src/distance/distance.ts\nfunction exceedsDistance({ x, y }, distance) {\n  const dx = Math.abs(x);\n  const dy = Math.abs(y);\n  if (typeof distance === \"number\") {\n    return Math.sqrt(__pow(dx, 2) + __pow(dy, 2)) > distance;\n  }\n  if (\"x\" in distance && \"y\" in distance) {\n    return dx > distance.x && dy > distance.y;\n  }\n  if (\"x\" in distance) {\n    return dx > distance.x;\n  }\n  if (\"y\" in distance) {\n    return dy > distance.y;\n  }\n  return false;\n}\n\n// src/types/axis.ts\nvar Axis = /* @__PURE__ */ ((Axis2) => {\n  Axis2[\"Horizontal\"] = \"x\";\n  Axis2[\"Vertical\"] = \"y\";\n  return Axis2;\n})(Axis || {});\nvar Axes = Object.values(Axis);\nexport {\n  Axes,\n  Axis,\n  Point,\n  Position,\n  Rectangle,\n  exceedsDistance\n};\n","// src/algorithms/pointerIntersection.ts\nimport { CollisionPriority, CollisionType } from \"@dnd-kit/abstract\";\nimport { Point } from \"@dnd-kit/geometry\";\nvar pointerIntersection = ({\n  dragOperation,\n  droppable\n}) => {\n  const pointerCoordinates = dragOperation.position.current;\n  if (!pointerCoordinates) {\n    return null;\n  }\n  const { id } = droppable;\n  if (!droppable.shape) {\n    return null;\n  }\n  if (droppable.shape.containsPoint(pointerCoordinates)) {\n    const distance = Point.distance(droppable.shape.center, pointerCoordinates);\n    return {\n      id,\n      value: 1 / distance,\n      type: CollisionType.PointerIntersection,\n      priority: CollisionPriority.High\n    };\n  }\n  return null;\n};\n\n// src/algorithms/shapeIntersection.ts\nimport { CollisionPriority as CollisionPriority2, CollisionType as CollisionType2 } from \"@dnd-kit/abstract\";\nimport { Point as Point2 } from \"@dnd-kit/geometry\";\nvar shapeIntersection = ({\n  dragOperation,\n  droppable\n}) => {\n  const { shape } = dragOperation;\n  if (!droppable.shape || !(shape == null ? void 0 : shape.current)) {\n    return null;\n  }\n  const intersectionArea = shape.current.intersectionArea(droppable.shape);\n  if (intersectionArea) {\n    const { position } = dragOperation;\n    const distance = Point2.distance(droppable.shape.center, position.current);\n    const intersectionRatio = intersectionArea / (shape.current.area + droppable.shape.area - intersectionArea);\n    const value = intersectionRatio / distance;\n    return {\n      id: droppable.id,\n      value,\n      type: CollisionType2.ShapeIntersection,\n      priority: CollisionPriority2.Normal\n    };\n  }\n  return null;\n};\n\n// src/algorithms/default.ts\nvar defaultCollisionDetection = (args) => {\n  var _a;\n  return (_a = pointerIntersection(args)) != null ? _a : shapeIntersection(args);\n};\n\n// src/algorithms/closestCorners.ts\nimport { CollisionPriority as CollisionPriority3, CollisionType as CollisionType3 } from \"@dnd-kit/abstract\";\nimport { Point as Point3, Rectangle } from \"@dnd-kit/geometry\";\nvar closestCorners = (input) => {\n  const { dragOperation, droppable } = input;\n  const { shape, position } = dragOperation;\n  if (!droppable.shape) {\n    return null;\n  }\n  const shapeCorners = shape ? Rectangle.from(shape.current.boundingRectangle).corners : void 0;\n  const distance = Rectangle.from(\n    droppable.shape.boundingRectangle\n  ).corners.reduce(\n    (acc, corner, index) => {\n      var _a;\n      return acc + Point3.distance(\n        Point3.from(corner),\n        (_a = shapeCorners == null ? void 0 : shapeCorners[index]) != null ? _a : position.current\n      );\n    },\n    0\n  );\n  const value = distance / 4;\n  return {\n    id: droppable.id,\n    value: 1 / value,\n    type: CollisionType3.Collision,\n    priority: CollisionPriority3.Normal\n  };\n};\n\n// src/algorithms/closestCenter.ts\nimport { CollisionPriority as CollisionPriority4, CollisionType as CollisionType4 } from \"@dnd-kit/abstract\";\nimport { Point as Point4 } from \"@dnd-kit/geometry\";\nvar closestCenter = (input) => {\n  var _a;\n  const { dragOperation, droppable } = input;\n  const { shape, position } = dragOperation;\n  if (!droppable.shape) {\n    return null;\n  }\n  const collision = defaultCollisionDetection(input);\n  if (collision) {\n    return collision;\n  }\n  const distance = Point4.distance(\n    droppable.shape.center,\n    (_a = shape == null ? void 0 : shape.current.center) != null ? _a : position.current\n  );\n  const value = 1 / distance;\n  return {\n    id: droppable.id,\n    value,\n    type: CollisionType4.Collision,\n    priority: CollisionPriority4.Normal\n  };\n};\n\n// src/algorithms/directionBiased.ts\nimport { CollisionPriority as CollisionPriority5, CollisionType as CollisionType5 } from \"@dnd-kit/abstract\";\nimport { Point as Point5 } from \"@dnd-kit/geometry\";\nvar directionBiased = ({\n  dragOperation,\n  droppable\n}) => {\n  if (!droppable.shape) {\n    return null;\n  }\n  const { position, shape } = dragOperation;\n  const { direction } = position;\n  if (!shape) {\n    return null;\n  }\n  if (direction === null) {\n    return defaultCollisionDetection({ dragOperation, droppable });\n  }\n  const { center } = shape.current;\n  const rect = droppable.shape.boundingRectangle;\n  const isBelow = rect.bottom >= center.y;\n  const isAbove = rect.top <= center.y;\n  const isLeft = rect.left <= center.x;\n  const isRight = rect.right >= center.x;\n  if (direction === \"down\" && isBelow || direction === \"up\" && isAbove || direction === \"left\" && isLeft || direction === \"right\" && isRight) {\n    const distance = Point5.distance(droppable.shape.center, center);\n    const value = distance === 0 ? 1 : 1 / distance;\n    return {\n      id: droppable.id,\n      value,\n      type: CollisionType5.Collision,\n      priority: CollisionPriority5.Normal\n    };\n  }\n  return null;\n};\n\n// src/algorithms/pointerDistance.ts\nimport { CollisionPriority as CollisionPriority6, CollisionType as CollisionType6 } from \"@dnd-kit/abstract\";\nimport { Point as Point6 } from \"@dnd-kit/geometry\";\nvar pointerDistance = (input) => {\n  const { dragOperation, droppable } = input;\n  const { position } = dragOperation;\n  if (!droppable.shape) {\n    return null;\n  }\n  const distance = Point6.distance(droppable.shape.center, position.current);\n  const value = 1 / distance;\n  return {\n    id: droppable.id,\n    value,\n    type: CollisionType6.Collision,\n    priority: CollisionPriority6.Normal\n  };\n};\nexport {\n  closestCenter,\n  closestCorners,\n  defaultCollisionDetection,\n  directionBiased,\n  pointerDistance,\n  pointerIntersection,\n  shapeIntersection\n};\n","import {useCallback} from 'react';\nimport type {Data} from '@dnd-kit/abstract';\nimport {Droppable} from '@dnd-kit/dom';\nimport {deepEqual} from '@dnd-kit/state';\nimport type {DroppableInput} from '@dnd-kit/dom';\nimport {\n  useComputed,\n  useOnValueChange,\n  useOnElementChange,\n  useDeepSignal,\n} from '@dnd-kit/react/hooks';\nimport {currentValue, type RefOrValue} from '@dnd-kit/react/utilities';\n\nimport {useInstance} from '../hooks/useInstance.ts';\nimport {defaultCollisionDetection} from '@dnd-kit/collision';\n\nexport interface UseDroppableInput<T extends Data = Data>\n  extends Omit<DroppableInput<T>, 'element'> {\n  element?: RefOrValue<Element>;\n}\n\nexport function useDroppable<T extends Data = Data>(\n  input: UseDroppableInput<T>\n) {\n  const {collisionDetector, data, disabled, element, id, accept, type} = input;\n  const droppable = useInstance(\n    (manager) =>\n      new Droppable(\n        {\n          ...input,\n          register: false,\n          element: currentValue(element),\n        },\n        manager\n      )\n  );\n  const trackedDroppalbe = useDeepSignal(droppable);\n\n  useOnValueChange(id, () => (droppable.id = id));\n  useOnElementChange(element, (element) => (droppable.element = element));\n  useOnValueChange(\n    accept,\n    () => (droppable.accept = accept),\n    undefined,\n    deepEqual\n  );\n  useOnValueChange(\n    collisionDetector,\n    () =>\n      (droppable.collisionDetector =\n        collisionDetector ?? defaultCollisionDetection)\n  );\n  useOnValueChange(data, () => data && (droppable.data = data));\n  useOnValueChange(disabled, () => (droppable.disabled = disabled === true));\n  useOnValueChange(type, () => (droppable.type = type));\n\n  return {\n    droppable: trackedDroppalbe,\n    get isDropTarget() {\n      return trackedDroppalbe.isDropTarget;\n    },\n    ref: useCallback(\n      (element: Element | null) => {\n        if (\n          !element &&\n          droppable.element?.isConnected &&\n          !droppable.manager?.dragOperation.status.idle\n        ) {\n          return;\n        }\n\n        droppable.element = element ?? undefined;\n      },\n      [droppable]\n    ),\n  };\n}\n","import {useEffect} from 'react';\nimport type {DragDropEventHandlers, Data} from '@dnd-kit/abstract';\nimport type {Draggable, Droppable, DragDropManager} from '@dnd-kit/dom';\n\nimport {useDragDropManager} from './useDragDropManager.js';\nimport {CleanupFunction} from '@dnd-kit/state';\n\ntype EventNameOverrides = {\n  beforedragstart: 'onBeforeDragStart';\n};\n\ntype EventHandlerName<T extends string> = T extends keyof EventNameOverrides\n  ? EventNameOverrides[T]\n  : T extends `drag${infer Second}${infer Rest}`\n    ? `onDrag${Uppercase<Second>}${Rest}`\n    : `on${Capitalize<T>}`;\n\n/**\n * Type for all possible event handlers\n */\ntype Events<\n  T extends Data,\n  U extends Draggable<T>,\n  V extends Droppable<T>,\n  W extends DragDropManager<T, U, V>,\n> = DragDropEventHandlers<U, V, W>;\n\nexport type EventHandlers<\n  T extends Data = Data,\n  U extends Draggable<T> = Draggable<T>,\n  V extends Droppable<T> = Droppable<T>,\n  W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n> = {\n  [K in keyof Events<T, U, V, W> as EventHandlerName<K>]: Events<T, U, V, W>[K];\n};\n\n/**\n * Hook to monitor drag and drop events anywhere within a DragDropProvider\n * @param handlers Object containing event handlers for drag and drop events\n */\nexport function useDragDropMonitor<\n  T extends Data = Data,\n  U extends Draggable<T> = Draggable<T>,\n  V extends Droppable<T> = Droppable<T>,\n  W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n>(handlers: Partial<EventHandlers<T, U, V, W>>): void {\n  const manager = useDragDropManager<T, U, V, W>();\n\n  useEffect(() => {\n    if (!manager) {\n      if (process.env.NODE_ENV !== 'production') {\n        console.warn(\n          'useDndMonitor hook was called outside of a DragDropProvider. ' +\n            'Make sure your app is wrapped in a DragDropProvider component.'\n        );\n      }\n      return;\n    }\n\n    const cleanupFns = Object.entries(handlers).reduce<CleanupFunction[]>(\n      (acc, [handlerName, handler]) => {\n        if (handler) {\n          // Convert handler name (e.g. 'onDragStart') to event name (e.g. 'dragstart')\n          const eventName = handlerName\n            .replace(/^on/, '')\n            .toLowerCase() as keyof Events<T, U, V, W>;\n\n          const unsubscribe = manager.monitor.addEventListener(\n            eventName,\n            handler as any\n          );\n\n          acc.push(unsubscribe);\n        }\n\n        return acc;\n      },\n      []\n    );\n\n    return () => cleanupFns.forEach((cleanup) => cleanup?.());\n  }, [manager, handlers]);\n}\n","import type {Data} from '@dnd-kit/abstract';\nimport type {Draggable, Droppable, DragDropManager} from '@dnd-kit/dom';\nimport {useComputed} from '@dnd-kit/react/hooks';\n\nimport {useDragDropManager} from './useDragDropManager.ts';\n\nexport function useDragOperation<\n  T extends Data = Data,\n  U extends Draggable<T> = Draggable<T>,\n  V extends Droppable<T> = Droppable<T>,\n  W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n>() {\n  const manager = useDragDropManager<T, U, V, W>();\n  const source = useComputed(() => manager?.dragOperation.source, [manager]);\n  const target = useComputed(() => manager?.dragOperation.target, [manager]);\n\n  return {\n    get source() {\n      return source.value;\n    },\n    get target() {\n      return target.value;\n    },\n  };\n}\n"]}