/**
 * Type-safe event handlers for form inputs.
 * These helpers extract values from DOM events in a way that satisfies TypeScript.
 */

/**
 * Extract the string value from an input event.
 */
export const getInputValue = (event: Event): string => {
  const target = event.target as HTMLInputElement | null
  return target?.value ?? ''
}

/**
 * Extract the numeric value from an input event.
 */
export const getInputNumber = (event: Event): number => {
  const target = event.target as HTMLInputElement | null
  const value = target?.value ?? ''
  const parsed = parseFloat(value)
  return Number.isNaN(parsed) ? 0 : parsed
}

/**
 * Extract the checked state from a checkbox event.
 */
export const getCheckboxValue = (event: Event): boolean => {
  const target = event.target as HTMLInputElement | null
  return target?.checked ?? false
}

/**
 * Extract an optional numeric value from an input event (empty string = undefined).
 */
export const getOptionalNumber = (event: Event): number | undefined => {
  const target = event.target as HTMLInputElement | null
  const value = target?.value ?? ''
  if (value.trim() === '') return undefined
  const parsed = parseFloat(value)
  return Number.isNaN(parsed) ? undefined : parsed
}
