{"version":3,"file":"radio2.mjs","sources":["../../../../../../packages/components/radio/src/radio.vue"],"sourcesContent":["<template>\r\n  <label\r\n    class=\"sg-radio\"\r\n    :class=\"{\r\n      [`sg-radio--${size || ''}`]: size,\r\n      'is-disabled': disabled,\r\n      'is-checked': modelValue === label,\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    <span\r\n      class=\"sg-radio__input\"\r\n      :class=\"{\r\n        'is-disabled': disabled,\r\n        'is-checked': modelValue === label,\r\n      }\"\r\n    >\r\n      <input\r\n        ref=\"radioRef\"\r\n        v-model=\"modelValue\"\r\n        class=\"sg-radio__original\"\r\n        :value=\"label\"\r\n        type=\"radio\"\r\n        v-bind=\"attrs\"\r\n        aria-hidden=\"true\"\r\n        :disabled=\"disabled\"\r\n        @focus=\"focus = true\"\r\n        @blur=\"focus = false\"\r\n        @change=\"handleChange\"\r\n      />\r\n    </span>\r\n    <span class=\"sg-radio__label\" @keydown.stop>\r\n      <slot>\r\n        {{ label }}\r\n      </slot>\r\n    </span>\r\n  </label>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, nextTick } from 'vue'\r\nimport { isPromise } from '@vue/shared'\r\nimport { isBool } from '@sgui-plus/utils/util'\r\nimport { throwError, debugWarn } from '@sgui-plus/utils/error'\r\nimport { useRadio, radioEmits, radioProps } from './radio'\r\nexport default defineComponent({\r\n  name: 'SgRadio',\r\n  props: radioProps,\r\n  emits: radioEmits,\r\n\r\n  setup(props, { emit, attrs }) {\r\n    const { radioRef, isGroup, focus, size, disabled, tabIndex, type, modelValue, 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      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\r\n    function handleChange() {\r\n      nextTick(() => emit('onChange', modelValue.value))\r\n    }\r\n\r\n    return {\r\n      focus,\r\n      isGroup,\r\n      modelValue,\r\n      tabIndex,\r\n      size,\r\n      disabled,\r\n      radioRef,\r\n      attrs,\r\n      type,\r\n      changeValue,\r\n      handleChange,\r\n    }\r\n  },\r\n})\r\n</script>\r\n"],"names":["_openBlock","_createElementBlock","_normalizeClass","_withKeys","_withModifiers","_createElementVNode"],"mappings":";;;;;;AAES,SAAA,WAAA,CAAA,IAAA,EAAA,MAAA,EAAC,MAAU,EAAA,MAAA,EAAA,KAAA,EAAA,QAAA,EAAA;AACe,EAAA,OAAAA,SAAA,EAAA,EAAAC,kBAAA,CAAe,OAAI,EAAA;AAAA,IAAA,KAAA,EAAAC,cAAA,CAAwB,CAAQ,UAAA,EAAA;AAAA,MAAA,CAAA,CAAA,UAAA,EAAuB,IAAe,CAAA,IAAA,IAAA,EAAA,CAAA,CAAA,GAAA,IAAA,CAAA,IAAA;AAAA,MAAA,aAAA,EAAA,IAAA,CAAA,QAAA;MAKxH,YAAY,EAAA,IAAA,CAAA,UAAA,KAAA,IAAA,CAAA,KAAA;AAAA,KACX,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;IAEN,OAoBO,EAAA,MAAA,CAAA,CAAA,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;AAlB6B,IAAAC,kBAAA,CAAA,MAAA,EAAA;AAAA,MAAA,KAAA,EAAAH,cAAA,CAAiC,CAAe,iBAAA,EAAA;AAAA,QAAA,aAAA,EAAA,IAAA,CAAA,QAAA;;;;;QAQhF,GAAK,EAAA,UAAA;AAAA,QACJ,qBAAY,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAAA,KAAA,IAAA,CAAA,UAAA,GAAA,MAAA,CAAA;AAAA,QACb,KAAK,EAAA,oBAAA;AAAA,QAAA,KAAA,EACG,IAAK,CAAA,KAAA;AAAA,QACb,IAAA,EAAA,OAAA;AAAA,OAAA,EACC,IAAU,CAAA,KAAA,EAAA;AAAA,QACV,aAAK,EAAA,MAAA;AAAA,QACL,QAAI,EAAA,IAAA,CAAA,QAAA;AAAA,QACJ,SAAM,MAAE,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAAA,KAAA,IAAA,CAAA,KAAA,GAAA,IAAA,CAAA;AAAA,QAAA,MAAA,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAAA,KAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;yBATA,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,OAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,UAAA,CAAA,EAAA;;AAYvB,OAAA,CAAA;AAAA,KAAA,EAAM,CAAM,CAAA;AAAA,IAA0BG,kBAAA,CAAA,MAAA,EAAA;AAAA,MAAA,KAAA,EAAA,iBAAA;MACpC,SAEO,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAAD,aAAA,CAAA,MAAA;AAAA,OAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA;AAAA,KAAA,EAAA;;;;;;;;;;;"}