export const dateMobileToggle =
  ({ state, props }) =>
  (visible) => {
    if (props.readonly || state.pickerDisabled || state.dateMobileOption.visible === visible) return

    if (visible) {
      state.dateMobileOption.value = props.modelValue
    }

    state.dateMobileOption.visible = visible
  }

export const timeMobileToggle =
  ({ state, props, api }) =>
  (visible) => {
    if (props.readonly || state.pickerDisabled || state.timeMobileOption.visible === visible) return

    if (visible) {
      state.timeMobileOption.value = api.dateToTimeArray(props.modelValue)
      state.timeMobileOption.defaultValue = api.dateToTimeArray(props.defaultValue)
    }

    state.timeMobileOption.visible = visible
  }

export const timeMobileConfirm =
  ({ state, api }) =>
  () => {
    api.emitInput(api.timeArrayToDate(state.timeMobileOption.value))
  }

export const dateToTimeArray = (value) => {
  const date = new Date(value)

  if (isNaN(date.getTime())) {
    return []
  } else {
    return [date.getHours(), date.getMinutes(), date.getSeconds()]
  }
}

export const timeArrayToDate =
  ({ props }) =>
  (value) => {
    const timeArr = value
    let date = new Date(props.modelValue)
    if (isNaN(date.getTime())) {
      date = new Date()
    }
    date.setHours(timeArr[0])
    date.setMinutes(timeArr[1])
    date.setSeconds(timeArr[2])

    return date
  }