{"version":3,"sources":["src/sortable/utilities.ts","src/sortable/plugins/SortableKeyboardPlugin.ts","../helpers/dist/index.js","src/sortable/plugins/OptimisticSortingPlugin.helpers.ts","src/sortable/plugins/OptimisticSortingPlugin.ts","src/sortable/sortable.ts"],"names":["Plugin","effect","isKeyboardEvent","Scroller","manager","batch","id","DOMRectangle","getVisibleBoundingRectangle","closestCorners","source","target","scrollIntoViewIfNeeded","Rectangle","__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","__spreadProps","state","WeakStore","reactive","Sortable","resolveCustomizable","_a","_b","untracked","index","group","Feedback","getComputedStyles","computeTranslate","prefersReducedMotion","getWindow","animateTransform","ProxiedElements","defaultCollisionDetection","Draggable","Droppable"],"mappings":"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","file":"sortable.cjs","sourcesContent":["import type {DragOperation} from '@dnd-kit/abstract';\nimport type {Droppable, Draggable} from '@dnd-kit/dom';\n\nimport {SortableDroppable, SortableDraggable} from './sortable.ts';\n\nexport function isSortable(\n  element: Draggable | null\n): element is SortableDraggable<any>;\nexport function isSortable(\n  element: Droppable | null\n): element is SortableDroppable<any>;\nexport function isSortable(\n  element: Draggable | Droppable | null\n): element is SortableDroppable<any> | SortableDraggable<any> {\n  return (\n    element instanceof SortableDroppable || element instanceof SortableDraggable\n  );\n}\n\nexport function isSortableOperation(\n  operation: DragOperation<Draggable, Droppable>\n): operation is DragOperation<SortableDraggable<any>, SortableDroppable<any>> {\n  return isSortable(operation.source) && isSortable(operation.target);\n}\n","import {batch, CleanupFunction, effect} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\nimport {closestCorners} from '@dnd-kit/collision';\nimport {\n  DOMRectangle,\n  getVisibleBoundingRectangle,\n  isKeyboardEvent,\n  scrollIntoViewIfNeeded,\n} from '@dnd-kit/dom/utilities';\nimport {Rectangle, type Coordinates} from '@dnd-kit/geometry';\nimport {Scroller} from '@dnd-kit/dom';\nimport type {DragDropManager, Droppable} from '@dnd-kit/dom';\n\nimport {isSortable} from '../utilities.ts';\n\nconst TOLERANCE = 10;\n\nexport class SortableKeyboardPlugin extends Plugin<DragDropManager> {\n  constructor(manager: DragDropManager) {\n    super(manager);\n\n    const cleanupEffect = effect(() => {\n      const {dragOperation} = manager;\n\n      if (!isKeyboardEvent(dragOperation.activatorEvent)) {\n        return;\n      }\n\n      if (!isSortable(dragOperation.source)) {\n        return;\n      }\n\n      if (dragOperation.status.initialized) {\n        const scroller = manager.registry.plugins.get(Scroller);\n\n        if (scroller) {\n          scroller.disable();\n\n          return () => scroller.enable();\n        }\n      }\n    });\n\n    const unsubscribe = manager.monitor.addEventListener(\n      'dragmove',\n      (event, manager: DragDropManager) => {\n        queueMicrotask(() => {\n          if (this.disabled || event.defaultPrevented || !event.nativeEvent) {\n            return;\n          }\n\n          const {dragOperation} = manager;\n\n          if (!isKeyboardEvent(event.nativeEvent)) {\n            return;\n          }\n\n          if (!isSortable(dragOperation.source)) {\n            return;\n          }\n\n          if (!dragOperation.shape) {\n            return;\n          }\n\n          const {actions, collisionObserver, registry} = manager;\n          const {by} = event;\n\n          if (!by) {\n            return;\n          }\n\n          const direction = getDirection(by);\n          const {source, target} = dragOperation;\n          const {center} = dragOperation.shape.current;\n          const potentialTargets: Droppable[] = [];\n          const cleanup: CleanupFunction[] = [];\n\n          batch(() => {\n            for (const droppable of registry.droppables) {\n              const {id} = droppable;\n\n              if (\n                !droppable.accepts(source) ||\n                (id === target?.id && isSortable(droppable)) ||\n                !droppable.element\n              ) {\n                continue;\n              }\n\n              let previousShape = droppable.shape;\n              const shape = new DOMRectangle(droppable.element, {\n                getBoundingClientRect: (element) =>\n                  getVisibleBoundingRectangle(element, undefined, 0.2),\n              });\n\n              if (!shape.height || !shape.width) continue;\n\n              if (\n                (direction == 'down' &&\n                  center.y + TOLERANCE < shape.center.y) ||\n                (direction == 'up' && center.y - TOLERANCE > shape.center.y) ||\n                (direction == 'left' &&\n                  center.x - TOLERANCE > shape.center.x) ||\n                (direction == 'right' && center.x + TOLERANCE < shape.center.x)\n              ) {\n                potentialTargets.push(droppable);\n                droppable.shape = shape;\n                cleanup.push(() => (droppable.shape = previousShape));\n              }\n            }\n          });\n\n          event.preventDefault();\n          collisionObserver.disable();\n\n          const collisions = collisionObserver.computeCollisions(\n            potentialTargets,\n            closestCorners\n          );\n          batch(() => cleanup.forEach((clean) => clean()));\n\n          const [firstCollision] = collisions;\n\n          if (!firstCollision) {\n            return;\n          }\n\n          const {id} = firstCollision;\n          const {index, group} = source.sortable;\n\n          actions.setDropTarget(id).then(() => {\n            // Wait until optimistic sorting has a chance to update the DOM\n            const {source, target, shape} = dragOperation;\n\n            if (!source || !isSortable(source) || !shape) {\n              return;\n            }\n\n            const {\n              index: newIndex,\n              group: newGroup,\n              target: targetElement,\n            } = source.sortable;\n            const updated = index !== newIndex || group !== newGroup;\n\n            const element = updated ? targetElement : target?.element;\n\n            if (!element) return;\n\n            scrollIntoViewIfNeeded(element);\n            const updatedShape = new DOMRectangle(element);\n\n            if (!updatedShape) {\n              return;\n            }\n\n            const delta = Rectangle.delta(\n              updatedShape,\n              Rectangle.from(shape.current.boundingRectangle),\n              source.alignment\n            );\n\n            actions.move({\n              by: delta,\n            });\n\n            if (updated) {\n              actions\n                .setDropTarget(source.id)\n                .then(() => collisionObserver.enable());\n            } else {\n              collisionObserver.enable();\n            }\n          });\n        });\n      }\n    );\n\n    this.destroy = () => {\n      unsubscribe();\n      cleanupEffect();\n    };\n  }\n}\n\nfunction getDirection(delta: Coordinates) {\n  const {x, y} = delta;\n\n  if (x > 0) {\n    return 'right';\n  } else if (x < 0) {\n    return 'left';\n  } else if (y > 0) {\n    return 'down';\n  } else if (y < 0) {\n    return 'up';\n  }\n}\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\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 __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\n\n// src/move.ts\nfunction arrayMove(array, from, to) {\n  if (from === to) {\n    return array;\n  }\n  const newArray = array.slice();\n  newArray.splice(to, 0, newArray.splice(from, 1)[0]);\n  return newArray;\n}\nfunction arraySwap(array, from, to) {\n  if (from === to) {\n    return array;\n  }\n  const newArray = array.slice();\n  const item = newArray[from];\n  newArray[from] = newArray[to];\n  newArray[to] = item;\n  return newArray;\n}\nfunction getRecordKey(items, id) {\n  const key = String(id);\n  return Object.prototype.hasOwnProperty.call(items, key) ? key : void 0;\n}\nfunction hasSortableIndices(source) {\n  return \"initialIndex\" in source && typeof source.initialIndex === \"number\" && \"index\" in source && typeof source.index === \"number\";\n}\nfunction mutate(items, event, mutation) {\n  var _a, _b;\n  const { source, target, canceled } = event.operation;\n  if (!source || !target || canceled) {\n    if (\"preventDefault\" in event) event.preventDefault();\n    return items;\n  }\n  const findIndex = (item, id) => item === id || item !== null && typeof item === \"object\" && \"id\" in item && item.id === id;\n  if (Array.isArray(items)) {\n    const sourceIndex2 = items.findIndex((item) => findIndex(item, source.id));\n    const targetIndex2 = items.findIndex((item) => findIndex(item, target.id));\n    if (sourceIndex2 === -1 || targetIndex2 === -1) {\n      if (hasSortableIndices(source)) {\n        const from = source.initialIndex;\n        const to = source.index;\n        if (from === to || from < 0 || from >= items.length) {\n          if (\"preventDefault\" in event) event.preventDefault();\n          return items;\n        }\n        return mutation(items, from, to);\n      }\n      return items;\n    }\n    if (!canceled && \"index\" in source && typeof source.index === \"number\") {\n      const projectedSourceIndex = source.index;\n      if (projectedSourceIndex !== sourceIndex2) {\n        return mutation(items, sourceIndex2, projectedSourceIndex);\n      }\n    }\n    return mutation(items, sourceIndex2, targetIndex2);\n  }\n  const entries = Object.entries(items);\n  let sourceIndex = -1;\n  let sourceParent;\n  let targetIndex = -1;\n  let targetParent;\n  for (const [id, children] of entries) {\n    if (sourceIndex === -1) {\n      sourceIndex = children.findIndex((item) => findIndex(item, source.id));\n      if (sourceIndex !== -1) {\n        sourceParent = id;\n      }\n    }\n    if (targetIndex === -1) {\n      targetIndex = children.findIndex((item) => findIndex(item, target.id));\n      if (targetIndex !== -1) {\n        targetParent = id;\n      }\n    }\n    if (sourceIndex !== -1 && targetIndex !== -1) {\n      break;\n    }\n  }\n  if (sourceIndex === -1 && hasSortableIndices(source)) {\n    const srcParent = source.initialGroup == null ? void 0 : getRecordKey(items, source.initialGroup);\n    const srcIndex = source.initialIndex;\n    const tgtParent = source.group == null ? void 0 : getRecordKey(items, source.group);\n    const tgtIndex = source.index;\n    if (srcParent == null || tgtParent == null) {\n      if (\"preventDefault\" in event) event.preventDefault();\n      return items;\n    }\n    if (srcParent === tgtParent && srcIndex === tgtIndex) {\n      if (\"preventDefault\" in event) event.preventDefault();\n      return items;\n    }\n    if (srcParent === tgtParent) {\n      return __spreadProps(__spreadValues({}, items), {\n        [srcParent]: mutation(items[srcParent], srcIndex, tgtIndex)\n      });\n    }\n    const sourceItem2 = items[srcParent][srcIndex];\n    return __spreadProps(__spreadValues({}, items), {\n      [srcParent]: [\n        ...items[srcParent].slice(0, srcIndex),\n        ...items[srcParent].slice(srcIndex + 1)\n      ],\n      [tgtParent]: [\n        ...items[tgtParent].slice(0, tgtIndex),\n        sourceItem2,\n        ...items[tgtParent].slice(tgtIndex)\n      ]\n    });\n  }\n  if (!source.manager) return items;\n  const { dragOperation } = source.manager;\n  const position = (_b = (_a = dragOperation.shape) == null ? void 0 : _a.current.center) != null ? _b : dragOperation.position.current;\n  if (targetParent == null) {\n    const targetKey = getRecordKey(items, target.id);\n    if (targetKey != null) {\n      const insertionIndex = target.shape && position.y > target.shape.center.y ? items[targetKey].length : 0;\n      targetParent = targetKey;\n      targetIndex = insertionIndex;\n    }\n  }\n  if (sourceParent == null || targetParent == null || sourceParent === targetParent && sourceIndex === targetIndex) {\n    if (sourceParent != null && sourceParent === targetParent && sourceIndex === targetIndex && hasSortableIndices(source)) {\n      const sourceGroupParent = source.group == null ? void 0 : getRecordKey(items, source.group);\n      const hasGroupChanged = source.group != null && sourceGroupParent !== sourceParent;\n      const hasIndexChanged = source.index !== sourceIndex;\n      if (hasGroupChanged || hasIndexChanged) {\n        const reconciledTargetParent = source.group == null ? sourceParent : sourceGroupParent;\n        if (reconciledTargetParent != null) {\n          if (sourceParent === reconciledTargetParent) {\n            return __spreadProps(__spreadValues({}, items), {\n              [sourceParent]: mutation(\n                items[sourceParent],\n                sourceIndex,\n                source.index\n              )\n            });\n          }\n          const sourceItem2 = items[sourceParent][sourceIndex];\n          return __spreadProps(__spreadValues({}, items), {\n            [sourceParent]: [\n              ...items[sourceParent].slice(0, sourceIndex),\n              ...items[sourceParent].slice(sourceIndex + 1)\n            ],\n            [reconciledTargetParent]: [\n              ...items[reconciledTargetParent].slice(0, source.index),\n              sourceItem2,\n              ...items[reconciledTargetParent].slice(source.index)\n            ]\n          });\n        }\n      }\n    }\n    if (\"preventDefault\" in event) event.preventDefault();\n    return items;\n  }\n  if (sourceParent === targetParent) {\n    return __spreadProps(__spreadValues({}, items), {\n      [sourceParent]: mutation(items[sourceParent], sourceIndex, targetIndex)\n    });\n  }\n  const isBelowTarget = target.shape && Math.round(position.y) > Math.round(target.shape.center.y);\n  const modifier = isBelowTarget ? 1 : 0;\n  const sourceItem = items[sourceParent][sourceIndex];\n  return __spreadProps(__spreadValues({}, items), {\n    [sourceParent]: [\n      ...items[sourceParent].slice(0, sourceIndex),\n      ...items[sourceParent].slice(sourceIndex + 1)\n    ],\n    [targetParent]: [\n      ...items[targetParent].slice(0, targetIndex + modifier),\n      sourceItem,\n      ...items[targetParent].slice(targetIndex + modifier)\n    ]\n  });\n}\nfunction move(items, event) {\n  return mutate(items, event, arrayMove);\n}\nfunction swap(items, event) {\n  return mutate(items, event, arraySwap);\n}\nexport {\n  arrayMove,\n  arraySwap,\n  move,\n  swap\n};\n","import type {UniqueIdentifier} from '@dnd-kit/abstract';\n\nimport type {Sortable} from '../sortable.ts';\n\nexport type SortableInstances = Map<\n  UniqueIdentifier | undefined,\n  Set<Sortable>\n>;\nexport type SortableIndices = Map<UniqueIdentifier, number>;\n\nexport function getSortableIndices(\n  instances: SortableInstances\n): SortableIndices {\n  const sortableIndices: SortableIndices = new Map();\n\n  for (const [, group] of instances) {\n    for (const sortable of group) {\n      sortableIndices.set(sortable.id, sortable.index);\n    }\n  }\n\n  return sortableIndices;\n}\n\nexport function hasChanged(\n  snapshotIndices: SortableIndices,\n  instances: SortableInstances,\n  newInstances: SortableInstances\n): boolean {\n  for (const [group, sortables] of instances) {\n    for (const sortable of sortables) {\n      const index = snapshotIndices.get(sortable.id);\n\n      if (\n        sortable.index !== index ||\n        sortable.group !== group ||\n        !newInstances.get(group)?.has(sortable)\n      ) {\n        return true;\n      }\n    }\n  }\n\n  return false;\n}\n","import {Plugin} from '@dnd-kit/abstract';\nimport type {DragDropManager} from '@dnd-kit/dom';\nimport {move} from '@dnd-kit/helpers';\nimport {batch} from '@dnd-kit/state';\n\nimport {Sortable, SortableDroppable} from '../sortable.ts';\nimport {isSortable} from '../utilities.ts';\nimport {\n  getSortableIndices,\n  hasChanged,\n  type SortableInstances,\n} from './OptimisticSortingPlugin.helpers.ts';\n\nconst defaultGroup = '__default__';\n\nexport class OptimisticSortingPlugin extends Plugin<DragDropManager> {\n  constructor(manager: DragDropManager) {\n    super(manager);\n\n    const getSortableInstances = () => {\n      const sortableInstances: SortableInstances = new Map();\n\n      for (const droppable of manager.registry.droppables) {\n        if (droppable instanceof SortableDroppable) {\n          const {sortable} = droppable;\n          const {group} = sortable;\n\n          let instances = sortableInstances.get(group);\n\n          if (!instances) {\n            instances = new Set();\n            sortableInstances.set(group, instances);\n          }\n\n          instances.add(sortable);\n        }\n      }\n\n      return sortableInstances;\n    };\n\n    const unsubscribe = [\n      manager.monitor.addEventListener('dragover', (event, manager) => {\n        if (this.disabled) {\n          return;\n        }\n\n        const {dragOperation} = manager;\n        const {source, target} = dragOperation;\n\n        if (!isSortable(source) || !isSortable(target)) {\n          return;\n        }\n\n        if (source.sortable === target.sortable) {\n          return;\n        }\n\n        const instances = getSortableInstances();\n        const sortableIndices = getSortableIndices(instances);\n        const sameGroup = source.sortable.group === target.sortable.group;\n        const sourceInstances = instances.get(source.sortable.group);\n        const targetInstances = sameGroup\n          ? sourceInstances\n          : instances.get(target.sortable.group);\n\n        if (!sourceInstances || !targetInstances) return;\n\n        queueMicrotask(() => {\n          if (event.defaultPrevented) return;\n\n          // Wait for the renderer to handle the event before attempting to optimistically update\n          manager.renderer.rendering.then(() => {\n            const newInstances = getSortableInstances();\n\n            if (hasChanged(sortableIndices, instances, newInstances)) {\n              // At least one index or group was changed so we should abort optimistic updates\n              return;\n            }\n\n            const sourceElement = source.sortable.element;\n            const targetElement = target.sortable.element;\n\n            if (!targetElement || !sourceElement) {\n              return;\n            }\n\n            if (!sameGroup && target.id === source.sortable.group) {\n              return;\n            }\n\n            const orderedSourceSortables = sort(sourceInstances);\n            const orderedTargetSortables = sameGroup\n              ? orderedSourceSortables\n              : sort(targetInstances);\n            const sourceGroup = source.sortable.group ?? defaultGroup;\n            const targetGroup = target.sortable.group ?? defaultGroup;\n            const state = {\n              [sourceGroup]: orderedSourceSortables,\n              [targetGroup]: orderedTargetSortables,\n            };\n            const newState = move(state, event);\n\n            if (state === newState) return;\n\n            const sourceIndex = newState[targetGroup].indexOf(source.sortable);\n            const targetIndex = newState[targetGroup].indexOf(target.sortable);\n\n            manager.collisionObserver.disable();\n\n            reorder(sourceElement, sourceIndex, targetElement, targetIndex);\n\n            batch(() => {\n              for (const [index, sortable] of newState[sourceGroup].entries()) {\n                sortable.index = index;\n              }\n\n              if (!sameGroup) {\n                for (const [index, sortable] of newState[\n                  targetGroup\n                ].entries()) {\n                  sortable.group = target.sortable.group;\n                  sortable.index = index;\n                }\n              }\n            });\n\n            manager.actions\n              .setDropTarget(source.id)\n              .then(() => manager.collisionObserver.enable());\n          });\n        });\n      }),\n      manager.monitor.addEventListener('dragend', (event, manager) => {\n        if (!event.canceled) {\n          return;\n        }\n\n        const {dragOperation} = manager;\n        const {source} = dragOperation;\n\n        if (!isSortable(source)) {\n          return;\n        }\n\n        if (\n          source.sortable.initialIndex === source.sortable.index &&\n          source.sortable.initialGroup === source.sortable.group\n        ) {\n          return;\n        }\n\n        queueMicrotask(() => {\n          const instances = getSortableInstances();\n          const sortableIndices = getSortableIndices(instances);\n          const initialGroupInstances = instances.get(\n            source.sortable.initialGroup\n          );\n\n          if (!initialGroupInstances) return;\n\n          // Wait for the renderer to handle the event before attempting to optimistically update\n          manager.renderer.rendering.then(() => {\n            const newInstances = getSortableInstances();\n\n            if (hasChanged(sortableIndices, instances, newInstances)) {\n              // At least one index or group was changed so we should abort optimistic updates\n              return;\n            }\n\n            const currentSortables = sort(initialGroupInstances);\n            const initialSortables = sort(\n              initialGroupInstances,\n              sortByInitialIndex\n            );\n            const sourceElement = source.sortable.element;\n            const initialPosition = initialSortables.indexOf(source.sortable);\n            const target = currentSortables[initialPosition];\n            const targetElement = target?.element;\n\n            if (!target || !targetElement || !sourceElement) {\n              return;\n            }\n\n            reorder(sourceElement, target.index, targetElement, source.index);\n\n            batch(() => {\n              for (const sortableInstances of instances.values()) {\n                const entries = Array.from(sortableInstances).values();\n\n                for (const sortable of entries) {\n                  sortable.index = sortable.initialIndex;\n                  sortable.group = sortable.initialGroup;\n                }\n              }\n            });\n          });\n        });\n      }),\n    ];\n\n    this.destroy = () => {\n      for (const unsubscribeListener of unsubscribe) {\n        unsubscribeListener();\n      }\n    };\n  }\n}\n\nfunction reorder(\n  sourceElement: Element,\n  sourceIndex: number,\n  targetElement: Element,\n  targetIndex: number\n) {\n  const position = targetIndex < sourceIndex ? 'afterend' : 'beforebegin';\n\n  targetElement.insertAdjacentElement(position, sourceElement);\n}\n\nfunction sortByIndex(a: Sortable, b: Sortable) {\n  return a.index - b.index;\n}\n\nfunction sortByInitialIndex(a: Sortable, b: Sortable) {\n  return a.initialIndex - b.initialIndex;\n}\n\nfunction sort(instances: Set<Sortable>, sortFn = sortByIndex) {\n  return Array.from(instances).sort(sortFn);\n}\n","import {batch, reactive, untracked, WeakStore} from '@dnd-kit/state';\nimport type {CollisionPriority, Customizable, Modifiers, Plugins} from '@dnd-kit/abstract';\nimport type {\n  Data,\n  PluginConstructor,\n  Type,\n  UniqueIdentifier,\n} from '@dnd-kit/abstract';\nimport {resolveCustomizable} from '@dnd-kit/abstract';\nimport {\n  defaultCollisionDetection,\n  type CollisionDetector,\n} from '@dnd-kit/collision';\nimport type {Alignment} from '@dnd-kit/geometry';\nimport {Draggable, Droppable, Feedback} from '@dnd-kit/dom';\nimport type {\n  DraggableInput,\n  DroppableInput,\n  Sensors,\n  DragDropManager,\n} from '@dnd-kit/dom';\nimport {\n  animateTransform,\n  getComputedStyles,\n  getWindow,\n  computeTranslate,\n  prefersReducedMotion,\n  ProxiedElements,\n} from '@dnd-kit/dom/utilities';\n\nimport {SortableKeyboardPlugin} from './plugins/SortableKeyboardPlugin.ts';\nimport {OptimisticSortingPlugin} from './plugins/OptimisticSortingPlugin.ts';\n\nexport interface SortableTransition {\n  /**\n   * The duration of the transition in milliseconds.\n   * @default 300\n   */\n  duration?: number;\n  /**\n   * The easing function to use for the transition.\n   * @default 'cubic-bezier(0.25, 1, 0.5, 1)'\n   */\n  easing?: string;\n  /**\n   * Whether the sortable item should transition when its index changes,\n   * but there is no drag operation in progress.\n   * @default false\n   **/\n  idle?: boolean;\n}\n\nexport interface SortableDisabled {\n  draggable?: boolean;\n  droppable?: boolean;\n}\n\ntype SortableDisabledValue = boolean | SortableDisabled;\n\nconst defaultPlugins: PluginConstructor[] = [\n  SortableKeyboardPlugin,\n  OptimisticSortingPlugin,\n];\n\nexport interface SortableInput<T extends Data>\n  extends Omit<DraggableInput<T>, 'disabled' | 'plugins'>,\n    Omit<DroppableInput<T>, 'disabled'> {\n  /**\n   * Whether the sortable item should be disabled.\n   *\n   * Passing a boolean disables dragging and dropping.\n   * Use the object form to disable dragging and dropping independently.\n   */\n  disabled?: boolean | SortableDisabled;\n\n  /**\n   * The index of the sortable item within its group.\n   */\n  index: number;\n\n  /**\n   * The element that should be used as the droppable target for this sortable item.\n   */\n  target?: Element;\n\n  /**\n   * The optional unique identifier of the group that the sortable item belongs to.\n   */\n  group?: UniqueIdentifier;\n  /**\n   * The transition configuration to use when the index of the sortable item changes.\n   */\n  transition?: SortableTransition | null;\n  /**\n   * Plugins to register or configure per-entity.\n   *\n   * Bare constructors are registered globally (e.g. sortable-specific plugins).\n   * Descriptors from `Plugin.configure()` are applied as per-entity plugin config.\n   *\n   * Can be provided as an array (replaces defaults) or a function that receives\n   * the default plugins and returns a new array (extends defaults).\n   *\n   * @default [SortableKeyboardPlugin, OptimisticSortingPlugin]\n   *\n   * @example\n   * // Extend defaults\n   * plugins: (defaults) => [...defaults, Feedback.configure({feedback: 'clone'})]\n   *\n   * // Replace defaults\n   * plugins: [MyPlugin]\n   */\n  plugins?: Customizable<Plugins>;\n}\n\nexport const defaultSortableTransition: SortableTransition = {\n  duration: 250,\n  easing: 'cubic-bezier(0.25, 1, 0.5, 1)',\n  idle: false,\n};\n\nfunction normalizeDisabled(\n  disabled: SortableDisabledValue | undefined\n): Required<SortableDisabled> {\n  if (typeof disabled === 'boolean') {\n    return {\n      draggable: disabled,\n      droppable: disabled,\n    };\n  }\n\n  return {\n    draggable: disabled?.draggable ?? false,\n    droppable: disabled?.droppable ?? false,\n  };\n}\n\ninterface TemporaryState {\n  initialIndex: number;\n  initialGroup: UniqueIdentifier | undefined;\n}\n\nconst store = new WeakStore<\n  DragDropManager,\n  UniqueIdentifier,\n  TemporaryState\n>();\n\nexport class Sortable<T extends Data = Data> {\n  public draggable: Draggable<T>;\n  public droppable: Droppable<T>;\n\n  @reactive\n  public accessor index: number;\n\n  #previousGroup: UniqueIdentifier | undefined;\n\n  #previousIndex: number;\n\n  get initialIndex() {\n    return store.get(this.manager, this.id)?.initialIndex ?? this.index;\n  }\n\n  get initialGroup() {\n    return store.get(this.manager, this.id)?.initialGroup ?? this.group;\n  }\n\n  @reactive\n  public accessor group: UniqueIdentifier | undefined;\n\n  transition: SortableTransition | null;\n\n  constructor(\n    {\n      effects: inputEffects = () => [],\n      disabled,\n      group,\n      index,\n      sensors,\n      type,\n      transition = defaultSortableTransition,\n      plugins: pluginsInput,\n      ...input\n    }: SortableInput<T>,\n    manager: DragDropManager<any, any> | undefined\n  ) {\n    const plugins = resolveCustomizable(pluginsInput, defaultPlugins);\n    const disabledState = normalizeDisabled(disabled);\n\n    this.droppable = new SortableDroppable<T>(\n      {...input, disabled: disabledState.droppable},\n      manager,\n      this\n    );\n    this.draggable = new SortableDraggable<T>(\n      {\n        ...input,\n        disabled: disabledState.draggable,\n        plugins,\n        effects: () => [\n          () => {\n            const status = this.manager?.dragOperation.status;\n\n            if (\n              status?.initializing &&\n              this.id === this.manager?.dragOperation.source?.id\n            ) {\n              store.clear(this.manager);\n            }\n\n            if (status?.dragging) {\n              store.set(\n                this.manager,\n                this.id,\n                untracked(() => ({\n                  initialIndex: this.index,\n                  initialGroup: this.group,\n                }))\n              );\n            }\n          },\n          () => {\n            const {index, group, manager: _} = this;\n            const previousIndex = this.#previousIndex;\n            const previousGroup = this.#previousGroup;\n\n            // Re-run this effect whenever the index changes\n            if (index !== previousIndex || group !== previousGroup) {\n              this.#previousIndex = index;\n              this.#previousGroup = group;\n\n              this.animate();\n            }\n          },\n          () => {\n            const {target} = this;\n            const {isDragSource} = this.draggable;\n            const feedback =\n              this.draggable.pluginConfig(Feedback)?.feedback ?? 'default';\n\n            if (feedback === 'move' && isDragSource) {\n              this.droppable.disabled = !target;\n            }\n          },\n          ...inputEffects(),\n        ],\n        type,\n        sensors,\n      },\n      manager,\n      this\n    );\n\n    this.#element = input.element;\n    this.manager = manager;\n    this.index = index;\n    this.#previousIndex = index;\n    this.group = group;\n    this.#previousGroup = group;\n    this.type = type;\n    this.transition = transition;\n  }\n\n  protected animate() {\n    untracked(() => {\n      const {manager, transition} = this;\n      const {shape} = this.droppable;\n\n      if (!manager) return;\n\n      const {idle} = manager.dragOperation.status;\n\n      if (!shape || !transition || (idle && !transition.idle)) {\n        return;\n      }\n\n      manager.renderer.rendering.then(() => {\n        const {element} = this;\n\n        if (!element) {\n          return;\n        }\n\n        // Cancel CSS transitions on transform-related properties before measuring.\n        // These transitions (e.g. `transition: transform` from user CSS) would cause\n        // getBoundingClientRect() to return the mid-transition position rather than\n        // the element's final resting position, resulting in an incorrect delta.\n        for (const animation of element.getAnimations()) {\n          if (\n            'transitionProperty' in animation &&\n            (animation.transitionProperty === 'transform' ||\n              animation.transitionProperty === 'translate' ||\n              animation.transitionProperty === 'scale')\n          ) {\n            animation.cancel();\n          }\n        }\n\n        const updatedShape = this.refreshShape();\n\n        if (!updatedShape) {\n          return;\n        }\n\n        const delta = {\n          x: shape.boundingRectangle.left - updatedShape.boundingRectangle.left,\n          y: shape.boundingRectangle.top - updatedShape.boundingRectangle.top,\n        };\n\n        const {translate} = getComputedStyles(element);\n        const currentTranslate = computeTranslate(element, translate, false);\n        const finalTranslate = computeTranslate(element, translate);\n\n        if (delta.x || delta.y) {\n          const resolvedTransition = prefersReducedMotion(getWindow(element))\n            ? {...transition, duration: 0}\n            : transition;\n\n          animateTransform({\n            element,\n            keyframes: {\n              translate: [\n                `${currentTranslate.x + delta.x}px ${currentTranslate.y + delta.y}px ${currentTranslate.z}`,\n                `${finalTranslate.x}px ${finalTranslate.y}px ${finalTranslate.z}`,\n              ],\n            },\n            options: resolvedTransition,\n          }).then(() => {\n            if (!manager.dragOperation.status.dragging) {\n              this.droppable.shape = undefined;\n            }\n          });\n        }\n      });\n    });\n  }\n\n  public get manager(): DragDropManager<any, any> | undefined {\n    return this.draggable.manager as any;\n  }\n\n  public set manager(manager: DragDropManager<any, any> | undefined) {\n    batch(() => {\n      this.draggable.manager = manager as any;\n      this.droppable.manager = manager as any;\n    });\n  }\n\n  #element: Element | undefined;\n\n  public set element(element: Element | undefined) {\n    batch(() => {\n      const previousElement = this.#element;\n      const droppableElement = this.droppable.element;\n      const draggableElement = this.draggable.element;\n\n      if (!droppableElement || droppableElement === previousElement) {\n        this.droppable.element = element;\n      }\n\n      if (!draggableElement || draggableElement === previousElement) {\n        this.draggable.element = element;\n      }\n\n      this.#element = element;\n    });\n  }\n\n  public get element() {\n    const element = this.#element;\n\n    if (!element) return;\n\n    return ProxiedElements.get(element) ?? element ?? this.droppable.element;\n  }\n\n  public set target(target: Element | undefined) {\n    this.droppable.element = target;\n  }\n\n  public get target() {\n    return this.droppable.element;\n  }\n\n  public set source(source: Element | undefined) {\n    this.draggable.element = source;\n  }\n\n  public get source() {\n    return this.draggable.element;\n  }\n\n  public get disabled(): boolean | SortableDisabled {\n    const {disabled: draggable} = this.draggable;\n    const {disabled: droppable} = this.droppable;\n\n    return draggable === droppable ? draggable : {draggable, droppable};\n  }\n\n  public set plugins(value: Customizable<Plugins> | undefined) {\n    this.draggable.plugins = resolveCustomizable(value, defaultPlugins);\n  }\n\n  public set disabled(value: SortableDisabledValue) {\n    const disabled = normalizeDisabled(value);\n\n    batch(() => {\n      this.droppable.disabled = disabled.droppable;\n      this.draggable.disabled = disabled.draggable;\n    });\n  }\n\n  public set data(data: T) {\n    batch(() => {\n      this.droppable.data = data;\n      this.draggable.data = data;\n    });\n  }\n\n  public set handle(handle: Element | undefined) {\n    this.draggable.handle = handle;\n  }\n\n  public set id(id: UniqueIdentifier) {\n    this.droppable.id = id;\n    this.draggable.id = id;\n  }\n\n  public get id() {\n    return this.droppable.id;\n  }\n\n  public set sensors(value: Sensors | undefined) {\n    this.draggable.sensors = value;\n  }\n\n  public set modifiers(value: Modifiers | undefined) {\n    this.draggable.modifiers = value;\n  }\n\n  public set collisionPriority(value: CollisionPriority | number | undefined) {\n    this.droppable.collisionPriority = value;\n  }\n\n  public set collisionDetector(value: CollisionDetector | undefined) {\n    this.droppable.collisionDetector = value ?? defaultCollisionDetection;\n  }\n\n  public set alignment(value: Alignment | undefined) {\n    this.draggable.alignment = value;\n  }\n\n  public get alignment() {\n    return this.draggable.alignment;\n  }\n\n  public set type(type: Type | undefined) {\n    batch(() => {\n      this.droppable.type = type;\n      this.draggable.type = type;\n    });\n  }\n\n  public get type() {\n    return this.draggable.type;\n  }\n\n  public set accept(value: Droppable['accept']) {\n    this.droppable.accept = value;\n  }\n\n  public get accept() {\n    return this.droppable.accept;\n  }\n\n  public get isDropTarget() {\n    return this.droppable.isDropTarget;\n  }\n\n  /**\n   * A boolean indicating whether the sortable item is the source of a drag operation.\n   */\n  public get isDragSource() {\n    return this.draggable.isDragSource;\n  }\n\n  /**\n   * A boolean indicating whether the sortable item is being dragged.\n   */\n  public get isDragging() {\n    return this.draggable.isDragging;\n  }\n\n  /**\n   * A boolean indicating whether the sortable item is being dropped.\n   */\n  public get isDropping() {\n    return this.draggable.isDropping;\n  }\n\n  public get status() {\n    return this.draggable.status;\n  }\n\n  public refreshShape() {\n    return this.droppable.refreshShape();\n  }\n\n  public accepts(draggable: Draggable): boolean {\n    return this.droppable.accepts(draggable);\n  }\n\n  public register = () => {\n    batch(() => {\n      this.manager?.registry.register(this.droppable);\n      this.manager?.registry.register(this.draggable);\n    });\n\n    return () => this.unregister();\n  };\n\n  public unregister = () => {\n    batch(() => {\n      this.manager?.registry.unregister(this.droppable);\n      this.manager?.registry.unregister(this.draggable);\n    });\n  };\n\n  public destroy = () => {\n    batch(() => {\n      this.droppable.destroy();\n      this.draggable.destroy();\n    });\n  };\n}\n\nexport class SortableDraggable<T extends Data> extends Draggable<T> {\n  constructor(\n    input: DraggableInput<T>,\n    manager: DragDropManager | undefined,\n    public sortable: Sortable<T>\n  ) {\n    super(input, manager);\n  }\n\n  get index() {\n    return this.sortable.index;\n  }\n\n  get initialIndex() {\n    return this.sortable.initialIndex;\n  }\n\n  get group() {\n    return this.sortable.group;\n  }\n\n  get initialGroup() {\n    return this.sortable.initialGroup;\n  }\n}\n\nexport class SortableDroppable<T extends Data> extends Droppable<T> {\n  constructor(\n    input: DraggableInput<T>,\n    manager: DragDropManager | undefined,\n    public sortable: Sortable<T>\n  ) {\n    super(input, manager);\n  }\n\n  get index() {\n    return this.sortable.index;\n  }\n\n  get group() {\n    return this.sortable.group;\n  }\n}\n"]}