{"version":3,"file":"useKeyboard.mjs","sources":["../../../../components/radio/hooks/useKeyboard.ts"],"sourcesContent":["import { onBeforeMount, onMounted, Ref } from 'vue';\nimport { isString } from 'lodash-es';\nimport { off, on } from '@tdesign/shared-utils';\nimport { CHECKED_CODE_REG } from '@tdesign/common-js/common';\n\n/** 键盘操作 */\nexport function useKeyboard(\n  radioGroupRef: Ref<HTMLElement>,\n  setInnerValue: (value: any, context: { e: Event }) => void,\n) {\n  const checkRadioInGroup = (e: KeyboardEvent) => {\n    const inputNode = (e.target as HTMLElement).querySelector('input');\n    if (!inputNode) return;\n\n    const isCheckedCode = CHECKED_CODE_REG.test(e.key) || CHECKED_CODE_REG.test(e.code);\n    if (isCheckedCode) {\n      e.preventDefault();\n\n      const data = inputNode.dataset;\n      if (inputNode.checked && data.allowUncheck) {\n        setInnerValue(undefined, { e });\n      } else {\n        // Number\n        let value: number | string | boolean = !isNaN(Number(data.value)) ? Number(data.value) : data.value;\n        // Boolean\n        value = (isString(value) && { true: true, false: false }[value]) || value;\n        // String\n        value = isString(value) && value[0] === \"'\" ? value.replace(/'/g, '') : value;\n        setInnerValue(value, { e });\n      }\n    }\n  };\n\n  onMounted(() => {\n    on(radioGroupRef.value, 'keydown', checkRadioInGroup);\n  });\n\n  onBeforeMount(() => {\n    off(radioGroupRef.value, 'keydown', checkRadioInGroup);\n  });\n}\n"],"names":["useKeyboard","radioGroupRef","setInnerValue","checkRadioInGroup","e","inputNode","target","querySelector","isCheckedCode","CHECKED_CODE_REG","test","key","code","preventDefault","data","dataset","checked","allowUncheck","value","isNaN","Number","isString","replace","onMounted","on","onBeforeMount","off"],"mappings":";;;;;;;;;;;;AAMgB,SAAAA,WAAAA,CACdC,eACAC,aACA,EAAA;AACM,EAAA,IAAAC,iBAAA,GAAoB,SAApBA,iBAAAA,CAAqBC,CAAqB,EAAA;IAC9C,IAAMC,SAAa,GAAAD,CAAA,CAAEE,MAAuB,CAAAC,aAAA,CAAc,OAAO,CAAA,CAAA;IACjE,IAAI,CAACF,SAAA,EAAW,OAAA;AAEV,IAAA,IAAAG,aAAA,GAAgBC,iBAAiBC,IAAK,CAAAN,CAAA,CAAEO,GAAG,CAAK,IAAAF,gBAAA,CAAiBC,IAAK,CAAAN,CAAA,CAAEQ,IAAI,CAAA,CAAA;AAClF,IAAA,IAAIJ,aAAe,EAAA;MACjBJ,CAAA,CAAES,cAAe,EAAA,CAAA;AAEjB,MAAA,IAAMC,OAAOT,SAAU,CAAAU,OAAA,CAAA;AACnB,MAAA,IAAAV,SAAA,CAAUW,OAAW,IAAAF,IAAA,CAAKG,YAAc,EAAA;QAC5Bf,aAAA,CAAA,KAAA,CAAA,EAAW;AAAEE,UAAAA,CAAA,EAAAA,CAAAA;AAAE,SAAC,CAAA,CAAA;AAChC,OAAO,MAAA;QAEL,IAAIc,KAAmC,GAAA,CAACC,KAAM,CAAAC,MAAA,CAAON,IAAK,CAAAI,KAAK,CAAC,CAAA,GAAIE,MAAO,CAAAN,IAAA,CAAKI,KAAK,CAAA,GAAIJ,IAAK,CAAAI,KAAA,CAAA;AAErFA,QAAAA,KAAA,GAAAG,QAAA,CAASH,KAAK,CAAK,IAAA;AAAE,UAAA,MAAA,EAAM,IAAM;UAAA,OAAO,EAAA,KAAA;AAAM,SAAA,CAAEA,KAAW,CAAA,IAAAA,KAAA,CAAA;QAE5DA,KAAA,GAAAG,QAAA,CAASH,KAAK,CAAA,IAAKA,KAAM,CAAA,CAAA,CAAA,KAAO,MAAMA,KAAM,CAAAI,OAAA,CAAQ,IAAM,EAAA,EAAE,CAAI,GAAAJ,KAAA,CAAA;QAC1DhB,aAAA,CAAAgB,KAAA,EAAO;AAAEd,UAAAA,CAAA,EAAAA,CAAAA;AAAE,SAAC,CAAA,CAAA;AAC5B,OAAA;AACF,KAAA;GACF,CAAA;AAEAmB,EAAAA,SAAA,CAAU,YAAM;IACXC,EAAA,CAAAvB,aAAA,CAAciB,KAAO,EAAA,SAAA,EAAWf,iBAAiB,CAAA,CAAA;AACtD,GAAC,CAAA,CAAA;AAEDsB,EAAAA,aAAA,CAAc,YAAM;IACdC,GAAA,CAAAzB,aAAA,CAAciB,KAAO,EAAA,SAAA,EAAWf,iBAAiB,CAAA,CAAA;AACvD,GAAC,CAAA,CAAA;AACH;;;;"}