// src/client/features/tasks/model/useDragState.ts
// Global drag state - single source of truth for the currently dragged task ID.
// Fixes the browser security limitation where dataTransfer.getData() returns ""
// during dragover events. Without this, TaskItems can't know WHAT is being dragged.

import { ref } from 'vue';

// Global singleton state (shared across all TaskItem and TaskCard instances)
const draggedTaskId = ref<string | null>(null);
const dragSourceCardId = ref<string | null>(null);

export function useDragState() {
  const startDrag = (taskId: string, cardId?: string) => {
    draggedTaskId.value = taskId;
    dragSourceCardId.value = cardId ?? null;
  };

  const endDrag = () => {
    draggedTaskId.value = null;
    dragSourceCardId.value = null;
  };

  return {
    /** ID задачи, которую сейчас перетаскивают (reactive, global) */
    draggedTaskId,
    /** ID карточки, откуда начался drag */
    dragSourceCardId,
    startDrag,
    endDrag,
  };
}