{"version":3,"sources":["../src/plugins/debug/debug.ts"],"names":["Plugin","effects","getFixedPositionOffset","hidePopover","showPopover"],"mappings":"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","file":"debug.cjs","sourcesContent":["import {effects} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\nimport type {UniqueIdentifier} from '@dnd-kit/abstract';\nimport type {DragDropManager} from '@dnd-kit/dom';\nimport {showPopover, hidePopover, getFixedPositionOffset} from '@dnd-kit/dom/utilities';\n\nexport class Debug extends Plugin<DragDropManager> {\n  constructor(manager: DragDropManager) {\n    super(manager);\n\n    const elements = new Map<UniqueIdentifier, HTMLElement>();\n    let draggableElement: HTMLElement | null = null;\n    let positionElement: HTMLElement | null = null;\n\n    const cleanup = effects(() => {\n      const {dragOperation} = manager;\n      const {x, y} = dragOperation.position.current;\n      const {current: _, idle} = dragOperation.status;\n      const {collisions} = manager.collisionObserver;\n      const draggable = dragOperation.source;\n      const topCollisions = collisions.slice(1, 3);\n      const collidingIds = topCollisions.map(({id}) => id);\n\n      if (draggable && dragOperation.shape) {\n        const element = draggableElement ?? createDebugElement();\n        const {boundingRectangle} = dragOperation.shape.current;\n\n        if (!draggableElement) {\n          draggableElement = element;\n\n          const style = document.createElement('style');\n          style.textContent = `dialog[data-dnd-kit-debug]::backdrop {display: none;}`;\n\n          element.textContent = `${draggable.id}`;\n          element.setAttribute('data-dnd-kit-debug', '');\n          element.appendChild(style);\n          element.style.backgroundColor = 'rgba(118, 190, 250, 0.5)';\n          element.style.color = 'rgba(0,0,0,0.9)';\n\n          document.body.appendChild(element);\n        }\n\n        const draggableOffset = getFixedPositionOffset();\n        element.style.top = `${boundingRectangle.top + draggableOffset.y}px`;\n        element.style.left = `${boundingRectangle.left + draggableOffset.x}px`;\n        element.style.width = `${boundingRectangle.width}px`;\n        element.style.height = `${boundingRectangle.height}px`;\n\n        hidePopover(element);\n        showPopover(element);\n      } else {\n        draggableElement?.remove();\n        draggableElement = null;\n      }\n\n      for (const [id, element] of elements) {\n        if (!manager.registry.droppables.has(id)) {\n          element.remove();\n          elements.delete(id);\n        }\n      }\n\n      for (const droppable of manager.registry.droppables) {\n        const element = elements.get(droppable.id);\n\n        if (droppable.shape) {\n          const {boundingRectangle} = droppable.shape;\n          const debugElement = element ?? createDebugElement();\n\n          if (!element) {\n            elements.set(droppable.id, debugElement);\n            document.body.appendChild(debugElement);\n          }\n\n          debugElement.style.backgroundColor = droppable.isDropTarget\n            ? 'rgba(13, 210, 36, 0.6)'\n            : collidingIds.includes(droppable.id)\n              ? 'rgba(255, 193, 7, 0.5)'\n              : 'rgba(0, 0, 0, 0.1)';\n\n          const droppableOffset = getFixedPositionOffset();\n          debugElement.style.top = `${boundingRectangle.top + droppableOffset.y}px`;\n          debugElement.style.left = `${boundingRectangle.left + droppableOffset.x}px`;\n          debugElement.style.width = `${boundingRectangle.width}px`;\n          debugElement.style.height = `${boundingRectangle.height}px`;\n          debugElement.textContent = `${droppable.id}`;\n        } else if (element) {\n          element.remove();\n          elements.delete(droppable.id);\n        }\n      }\n\n      if (!idle) {\n        if (!positionElement) {\n          positionElement = createDebugElement();\n\n          const horizontal = document.createElement('div');\n          const vertical = document.createElement('div');\n\n          horizontal.style.position = 'absolute';\n          horizontal.style.width = '25px';\n          horizontal.style.height = '1px';\n          horizontal.style.backgroundColor = '#000';\n\n          vertical.style.position = 'absolute';\n          vertical.style.width = '1px';\n          vertical.style.height = '25px';\n          vertical.style.backgroundColor = '#000';\n\n          positionElement.appendChild(horizontal);\n          positionElement.appendChild(vertical);\n          document.body.appendChild(positionElement);\n        }\n\n        const posOffset = getFixedPositionOffset();\n        positionElement.style.top = `${y + posOffset.y}px`;\n        positionElement.style.left = `${x + posOffset.x}px`;\n\n        hidePopover(positionElement);\n        // Only one element can be promoted to the top layer per call stack\n        queueMicrotask(() => positionElement && showPopover(positionElement));\n      } else {\n        positionElement?.remove();\n        positionElement = null;\n      }\n    });\n\n    this.destroy = () => {\n      positionElement?.remove();\n      draggableElement?.remove();\n      elements.forEach((element) => element.remove());\n      cleanup();\n    };\n  }\n}\n\nfunction createDebugElement(tagName = 'div') {\n  const element = document.createElement(tagName);\n\n  element.setAttribute('popover', 'manual');\n  element.style.all = 'initial';\n  element.style.position = 'fixed';\n  element.style.display = 'flex';\n  element.style.alignItems = 'center';\n  element.style.justifyContent = 'center';\n  element.style.border = '1px solid rgba(0, 0, 0, 0.1)';\n  element.style.boxSizing = 'border-box';\n  element.style.pointerEvents = 'none';\n  element.style.zIndex = 'calc(infinity)';\n  element.style.color = 'rgba(0,0,0,0.5)';\n  element.style.fontFamily = 'sans-serif';\n  element.style.textShadow = '0 0 3px rgba(255,255,255,0.8)';\n  element.style.pointerEvents = 'none';\n\n  return element;\n}\n"]}