import type { InjectionKey } from 'vue'
import { inject, provide } from 'vue'

import type { RadioGroupContext, RadioOptionTypeContextProps } from './interface'

const radioGroupContextKey: InjectionKey<RadioGroupContext> = Symbol('radioGroupContextKey')
export const useProvideRadioGroupContext = (props: RadioGroupContext) => {
  provide(radioGroupContextKey, props)
}

export const useInjectRadioGroupContext = () => {
  return inject(radioGroupContextKey, undefined)
}

const radioOptionTypeContextKey: InjectionKey<RadioOptionTypeContextProps> = Symbol(
  'radioOptionTypeContextKey',
)
export const useProvideRadioOptionTypeContext = (props: RadioOptionTypeContextProps) => {
  provide(radioOptionTypeContextKey, props)
}

export const useInjectRadioOptionTypeContext = () => {
  return inject(radioOptionTypeContextKey, undefined)
}
