{"version":3,"file":"index.vue.mjs","sources":["../../../../../../components/radio/src/index.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, useAttrs } from 'vue'\nimport { useNamespace } from '@fusion-ui-vue/utils'\nimport { UPDATE_MODEL_EVENT, iconSize } from '@fusion-ui-vue/constants'\nimport { useRadio } from '@fusion-ui-vue/hooks'\nimport FnRipple from '../../ripple'\nimport FnIcon from '../../icon'\nimport { radioProps } from './radio'\n\nconst props = defineProps(radioProps)\nconst emits = defineEmits<{\n  (e: 'update:modelValue', v: string | number | boolean): void\n}>()\nconst attrs = useAttrs()\nconst ns = useNamespace('radio')\nconst cssClass = useRadio(props, ns)\n\nconst checked = computed<string | number | boolean>({\n  get() {\n    return props.modelValue as any\n  },\n  set(newVal) {\n    emits(UPDATE_MODEL_EVENT, newVal)\n  },\n})\n\nconst icon = computed<string>(() =>\n  props.modelValue === attrs.value\n    ? 'mdi:radiobox-marked'\n    : 'mdi:radiobox-blank'\n)\n</script>\n\n<template>\n  <span :class=\"[ns.b(), ns.m(props.size), cssClass]\">\n    <fn-icon\n      :class=\"[ns.e('icon')]\"\n      :icon=\"icon\"\n      :size=\"iconSize[props.size]\"\n    />\n    <!-- eslint-disable vue/html-self-closing -->\n    <input\n      v-bind=\"$attrs\"\n      v-model=\"checked\"\n      :class=\"[ns.e('input')]\"\n      type=\"radio\"\n    />\n    <fn-ripple :color=\"props.color\" center />\n  </span>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAaA,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AACjB,IAAA,MAAA,EAAA,GAAK,aAAa,OAAO,CAAA,CAAA;AACzB,IAAA,MAAA,QAAA,GAAW,QAAS,CAAA,KAAA,EAAO,EAAE,CAAA,CAAA;AAEnC,IAAA,MAAM,UAAU,QAAoC,CAAA;AAAA,MAClD,GAAM,GAAA;AACJ,QAAA,OAAO,KAAM,CAAA,UAAA,CAAA;AAAA,OACf;AAAA,MACA,IAAI,MAAQ,EAAA;AACV,QAAA,KAAA,CAAM,oBAAoB,MAAM,CAAA,CAAA;AAAA,OAClC;AAAA,KACD,CAAA,CAAA;AAED,IAAA,MAAM,IAAO,GAAA,QAAA;AAAA,MAAiB,MAC5B,KAAA,CAAM,UAAe,KAAA,KAAA,CAAM,QACvB,qBACA,GAAA,oBAAA;AAAA,KACN,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}