{"version":3,"file":"use-radio.mjs","sources":["../../../../../../packages/components/radio/src/use-radio.ts"],"sourcesContent":["import { computed, inject, ref } from 'vue'\nimport { UPDATE_MODEL_EVENT } from '@bigin/constants'\nimport { radioGroupKey } from '@bigin/tokens'\nimport { useDisabled, useSize } from '@bigin/hooks'\nimport type { SetupContext } from 'vue'\nimport type { RadioEmits, RadioProps } from './radio'\n\nexport const useRadio = (\n  props: { label: RadioProps['label']; modelValue?: RadioProps['modelValue'] },\n  emit?: SetupContext<RadioEmits>['emit']\n) => {\n  const radioRef = ref<HTMLInputElement>()\n  const radioGroup = inject(radioGroupKey, undefined)\n  const isGroup = computed(() => !!radioGroup)\n  const modelValue = computed<RadioProps['modelValue']>({\n    get() {\n      return isGroup.value ? radioGroup!.modelValue : props.modelValue!\n    },\n    set(val) {\n      if (isGroup.value) {\n        radioGroup!.changeEvent(val)\n      } else {\n        emit && emit(UPDATE_MODEL_EVENT, val)\n      }\n      radioRef.value!.checked = props.modelValue === props.label\n    },\n  })\n\n  const size = useSize(\n    computed(\n      () =>\n        (radioGroup?.large && 'large') ||\n        (radioGroup?.small && 'small') ||\n        radioGroup?.size\n    )\n  )\n  const large = radioGroup?.large\n  const small = radioGroup?.small\n  const disabled = useDisabled(computed(() => radioGroup?.disabled))\n  const focus = ref(false)\n  const tabIndex = computed(() => {\n    return disabled.value || (isGroup.value && modelValue.value !== props.label)\n      ? -1\n      : 0\n  })\n  const segment = radioGroup?.segment\n\n  return {\n    radioRef,\n    isGroup,\n    radioGroup,\n    focus,\n    size,\n    disabled,\n    tabIndex,\n    modelValue,\n    large,\n    small,\n    segment,\n  }\n}\n"],"names":[],"mappings":";;;;;;;;AAOa,MAAA,QAAA,GAAW,CACtB,KAAA,EACA,IACG,KAAA;AACH,EAAA,MAAM,WAAW,GAAsB,EAAA,CAAA;AACvC,EAAM,MAAA,UAAA,GAAa,MAAO,CAAA,aAAA,EAAe,KAAS,CAAA,CAAA,CAAA;AAClD,EAAA,MAAM,OAAU,GAAA,QAAA,CAAS,MAAM,CAAC,CAAC,UAAU,CAAA,CAAA;AAC3C,EAAA,MAAM,aAAa,QAAmC,CAAA;AAAA,IACpD,GAAM,GAAA;AACJ,MAAA,OAAO,OAAQ,CAAA,KAAA,GAAQ,UAAY,CAAA,UAAA,GAAa,KAAM,CAAA,UAAA,CAAA;AAAA,KACxD;AAAA,IACA,IAAI,GAAK,EAAA;AACP,MAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,QAAA,UAAA,CAAY,YAAY,GAAG,CAAA,CAAA;AAAA,OACtB,MAAA;AACL,QAAQ,IAAA,IAAA,IAAA,CAAK,oBAAoB,GAAG,CAAA,CAAA;AAAA,OACtC;AACA,MAAA,QAAA,CAAS,KAAO,CAAA,OAAA,GAAU,KAAM,CAAA,UAAA,KAAe,KAAM,CAAA,KAAA,CAAA;AAAA,KACvD;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,IAAO,GAAA,OAAA;AAAA,IACX,QAAA;AAAA,MACE,MACG,UAAY,EAAA,KAAA,IAAS,WACrB,UAAY,EAAA,KAAA,IAAS,WACtB,UAAY,EAAA,IAAA;AAAA,KAChB;AAAA,GACF,CAAA;AACA,EAAA,MAAM,QAAQ,UAAY,EAAA,KAAA,CAAA;AAC1B,EAAA,MAAM,QAAQ,UAAY,EAAA,KAAA,CAAA;AAC1B,EAAA,MAAM,WAAW,WAAY,CAAA,QAAA,CAAS,MAAM,UAAA,EAAY,QAAQ,CAAC,CAAA,CAAA;AACjE,EAAM,MAAA,KAAA,GAAQ,IAAI,KAAK,CAAA,CAAA;AACvB,EAAM,MAAA,QAAA,GAAW,SAAS,MAAM;AAC9B,IAAO,OAAA,QAAA,CAAS,SAAU,OAAQ,CAAA,KAAA,IAAS,WAAW,KAAU,KAAA,KAAA,CAAM,QAClE,CACA,CAAA,GAAA,CAAA,CAAA;AAAA,GACL,CAAA,CAAA;AACD,EAAA,MAAM,UAAU,UAAY,EAAA,OAAA,CAAA;AAE5B,EAAO,OAAA;AAAA,IACL,QAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,GACF,CAAA;AACF;;;;"}