{"version":3,"file":"radio-button2.mjs","sources":["../../../../../../packages/components/radio/src/radio-button.vue"],"sourcesContent":["<template>\r\n  <label\r\n    class=\"sg-radio-button\"\r\n    :class=\"[\r\n      size ? 'sg-radio-button--' + size : '',\r\n      {\r\n        'is-active': modelValue === label,\r\n        'is-disabled': disabled,\r\n        'is-focus': focus,\r\n      },\r\n    ]\"\r\n    role=\"radio\"\r\n    :aria-checked=\"modelValue === label\"\r\n    :aria-disabled=\"disabled\"\r\n    :tabindex=\"tabIndex\"\r\n    @keydown.space.stop.prevent=\"modelValue = disabled ? modelValue : label\"\r\n    @click.prevent=\"changeValue\"\r\n  >\r\n    <input\r\n      ref=\"radioRef\"\r\n      v-model=\"modelValue\"\r\n      class=\"sg-radio-button__original-radio\"\r\n      :value=\"label\"\r\n      type=\"radio\"\r\n      v-bind=\"attrs\"\r\n      :disabled=\"disabled\"\r\n      tabindex=\"-1\"\r\n      @focus=\"focus = true\"\r\n      @blur=\"focus = false\"\r\n      @change=\"handleChange\"\r\n    />\r\n    <span\r\n      class=\"sg-radio-button__inner\"\r\n      @keydown.stop\r\n    >\r\n      <slot>\r\n        {{ label }}\r\n      </slot>\r\n    </span>\r\n  </label>\r\n</template>\r\n<script lang=\"ts\">\r\nimport { defineComponent, nextTick } from 'vue'\r\nimport { useRadio } from './radio'\r\nimport { isPromise } from '@vue/shared'\r\nimport { isBool } from '@sgui-plus/utils/util'\r\nimport { radioButtonProps, radioButtonEmits } from './radio-button'\r\nimport { throwError, debugWarn } from '@sgui-plus/utils/error'\r\nexport default defineComponent({\r\n  name: 'SgRadioButton',\r\n  props: radioButtonProps,\r\n  emits: radioButtonEmits,\r\n  setup(props, { emit, attrs }) {\r\n    const {\r\n      radioRef,\r\n      isGroup,\r\n      focus,\r\n      size,\r\n      disabled,\r\n      tabIndex,\r\n      modelValue,\r\n      beforeChange\r\n    } = useRadio(props, emit)\r\n    const changeValue = () => {\r\n      if(disabled.value) return\r\n      if(props.label === modelValue.value) return\r\n\r\n      if (!beforeChange) {\r\n        modelValue.value = props.label\r\n        handleChange()\r\n        return\r\n      }\r\n\r\n      const shouldChange = beforeChange()\r\n      const isExpectType = [isPromise(shouldChange), isBool(shouldChange)].some(\r\n        (i) => i\r\n      )\r\n      if (!isExpectType) {\r\n        throwError(\r\n          'SgRadio',\r\n          'beforeChange must return type `Promise<boolean>` or `boolean`'\r\n        )\r\n      }\r\n\r\n      if (isPromise(shouldChange)) {\r\n        shouldChange\r\n          .then((result) => {\r\n            if (result) {\r\n              modelValue.value = props.label\r\n              handleChange()\r\n            }\r\n          })\r\n          .catch((e) => {\r\n            debugWarn('SgRadio', `some error occurred: ${e}`)\r\n          })\r\n      } else if (shouldChange) {\r\n        modelValue.value = props.label\r\n        handleChange()\r\n      }\r\n    }\r\n\r\n    function handleChange() {\r\n      nextTick(() => emit('onChange', modelValue.value))\r\n    }\r\n\r\n    return {\r\n      attrs,\r\n      isGroup,\r\n      size,\r\n      disabled,\r\n      tabIndex,\r\n      modelValue,\r\n      focus,\r\n      radioRef,\r\n      changeValue,\r\n      handleChange\r\n    }\r\n  },\r\n})\r\n</script>\r\n"],"names":["_openBlock","_normalizeClass","_withKeys","_withModifiers","_vModelRadio","_createElementVNode"],"mappings":";;;;;;AAES,SAAA,WAAA,CAAA,IAAA,EAAA,MAAA,EAAC,MAAiB,EAAA,MAAA,EAAA,KAAA,EAAA,QAAA,EAAA;AACN,EAAA,OAAAA,SAAA,uBAA6B,OAAI,EAAA;AAAA,IAAA,KAAA,EAAAC,cAAA,CAAA,CAAA,iBAAA,EAAA;AAAgD,MAAA,IAAA,CAAA,IAAA,GAAA,mBAAA,GAAA,IAAA,CAAK,IAAK,GAAA,EAAA;AAAA,MAAA;qBAAyD,IAAK,CAAA,UAAA,KAAA,IAAA,CAAA,KAAA;AAAA,QAAA,aAAA,EAAA,IAAA,CAAA,QAAA;;AAQ1K,OAAA;AAAA,KACC,CAAA,CAAA;AAAA,IACA,IAAA,EAAA,OAAA;AAAA,IACA,gBAAU,IAAQ,CAAA,UAAA,KAAA,IAAA,CAAA,KAAA;AAAA,IAClB,eAAO,EAAA,IAAA,CAAA,QAAA;AAAA,IACP,QAAK,EAAA,IAAA,CAAA,QAAA;AAAA,IAAA,SAAA,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAAC,QAAA,CAAAC,aAAA,CAAA,CAAA,MAAA,KAAA,IAAA,CAAA,UAAA,GAAA,IAAA,CAAA,QAAA,GAAA,IAAA,CAAA,UAAA,GAAA,IAAA,CAAA,KAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA,CAAA;oBAEN,CAYE,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAAA,aAAA,CAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,WAAA,IAAA,IAAA,CAAA,WAAA,CAAA,GAAA,IAAA,CAAA,EAAA,CAAA,SAAA,CAAA,CAAA,CAAA;AAAA,GAAA,EAAA;;MATA,GAAK,EAAA,UAAA;AAAA,MACJ,qBAAY,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAAA,KAAA,IAAA,CAAA,UAAA,GAAA,MAAA,CAAA;AAAA,MACb,KAAK,EAAA,iCAAA;AAAA,MAAA,KAAA,EACG,IAAK,CAAA,KAAA;AAAA,MACZ,IAAA,EAAA,OAAA;AAAA,KAAA,EACD,IAAS,CAAA,KAAA,EAAA;AAAA,MACR,QAAK,EAAA,IAAA,CAAA,QAAA;AAAA,MACL,QAAI,EAAA,IAAA;AAAA,MACJ,SAAM,MAAE,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAAA,KAAA,IAAA,CAAA,KAAA,GAAA,IAAA,CAAA;AAAA,MAAA,MAAA,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAAA,KAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;uBATA,CAAU,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,YAAA,IAAA,IAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,KAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,UAAA,CAAA,EAAA;MAWrB,CAOOC,WAAA,EAAA,IAAA,CAAA,UAAA,CAAA;AAAA,KAAA,CAAA;AALG,IAAAC,kBAAA,CAAA,MAAA,EAAA;AAAA,MAAA,KAAA,EAAA,wBAAA;MAER,SAEO,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAAF,aAAA,CAAA,MAAA;AAAA,OAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA;AAAA,KAAA,EAAA;;;;;;;;;;;"}