import CoreGraphics import Data import Observation @Observable public final class HabitDragCoordinator { public var draggedHabit: Habit? public var dragLocation: CGPoint = .zero public var pendingDrop = false public var isActive: Bool { draggedHabit != nil } public init() {} public func begin(habit: Habit, at location: CGPoint) { draggedHabit = habit dragLocation = location pendingDrop = false } public func move(to location: CGPoint) { dragLocation = location } public func drop() { pendingDrop = true } public func end() { draggedHabit = nil dragLocation = .zero pendingDrop = false } }