import { navigator } from "@hotwired/turbo"
const { adapter } = navigator.delegate

export function showProgressBar() {
  adapter.progressBar.setValue(0)
  adapter.progressBar.show()
}

export function hideProgressBar() {
  adapter.progressBar.setValue(1)
  adapter.progressBar.hide()
}

export function setDisableWithText(element) {
  if (element instanceof HTMLButtonElement) {
    element.olderInnerHTML = element.innerHTML
    element.innerHTML = element.dataset.disableWith
  } else if (element instanceof HTMLInputElement) {
    element.olderValue = element.value
    element.value = element.dataset.disableWith
  }
}

export function undoDisableWithText(element) {
  if (element instanceof HTMLButtonElement) {
    element.innerHTML = element.olderInnerHTML
  } else if (element instanceof HTMLInputElement) {
    element.value = element.olderValue
  }
}

export function enableSubmits(submits) {
  submits.forEach(element => {
    if (element.dataset.disableWith) {
      undoDisableWithText(element)
    }

    element.disabled = false
  })
}

export function disableSubmits(submits) {
  submits.forEach(element => {
    if (element.dataset.disableWith) {
      setDisableWithText(element)
    }

    element.disabled = true
  })
}

export function toggleSubmitDisabled(form, toggle) {
  const submits = [...form.querySelectorAll("button[type=submit], input[type=submit]")]

  if (toggle) {
    disableSubmits(submits)
  } else {
    enableSubmits(submits)
  }
}