import { ref, onUnmounted } from 'vue'

// Inline-Bestätigung statt confirm(): erster Klick scharfschalten („Sicher?"),
// zweiter Klick führt aus. Browser-Dialoge können unterdrückt sein (Firefox).
export function useConfirm(timeoutMs = 3000) {
  const pending = ref(null) // aktuell scharfgeschalteter Key
  let timer = null

  function armOrRun(key, action) {
    clearTimeout(timer)
    if (pending.value === key) {
      pending.value = null
      action()
    } else {
      pending.value = key
      timer = setTimeout(() => { pending.value = null }, timeoutMs)
    }
  }

  function isArmed(key) {
    return pending.value === key
  }

  function reset() {
    clearTimeout(timer)
    pending.value = null
  }

  onUnmounted(() => clearTimeout(timer))

  return { pending, isArmed, armOrRun, reset }
}
