{"version":3,"file":"useCheckbox.mjs","sources":["../../../../../packages/components/checkbox/src/useCheckbox.ts"],"sourcesContent":["import { useFormItem, useSize } from '@element-ultra/hooks'\nimport { computed, inject, shallowRef } from 'vue'\nimport type { CheckboxEmit, CheckboxProps } from './checkbox'\nimport { checkboxGroupInjectionKey } from './token'\n\nexport const useCheckbox = (props: CheckboxProps, emit: CheckboxEmit) => {\n  const {\n    isGroup,\n    groupProps,\n    groupCheckedSet,\n    handleItemChange,\n    groupDisabled\n  } = inject(checkboxGroupInjectionKey, undefined) || {}\n\n  const { form, formItem } = useFormItem(!isGroup)\n\n  const isDisabled = computed(() => {\n    const { max } = groupProps || {}\n    const maxDisabled =\n      max !== undefined &&\n      groupCheckedSet &&\n      groupCheckedSet.value.size >= max &&\n      !groupCheckedSet.value.has(props.value!)\n\n    return (\n      props.disabled ||\n      groupDisabled?.value ||\n      form?.props.disabled ||\n      maxDisabled\n    )\n  })\n\n  const isChecked = computed(() => {\n    // 首先最优先级的时checked属性， 其次时modelValue值\n    return (\n      props.checked ||\n      props.trueValue === props.modelValue ||\n      (props.value !== undefined && groupCheckedSet?.value.has(props.value))\n    )\n  })\n  const checkboxSize = useSize({ props })\n\n  let focus = shallowRef(false)\n\n  const labelRef = shallowRef<HTMLLabElement>()\n\n  /**\n   * 复选框状态改变\n   * @param e\n   */\n  const handleChange = (e: Event) => {\n    const target = e.target as HTMLInputElement\n    const modelValue = target.checked ? props.trueValue : props.falseValue\n    const label = labelRef.value?.innerText ?? props.value ?? ''\n\n    emit('update:modelValue', modelValue)\n    emit('change', target.checked)\n    formItem?.validate()\n\n    if (handleItemChange && props.value !== undefined) {\n      handleItemChange(target.checked, props.value, label)\n    }\n  }\n\n  return {\n    isDisabled,\n    isChecked,\n    checkboxSize,\n    focus,\n    labelRef,\n    handleChange\n  }\n}\n"],"names":[],"mappings":";;;;;;AAKa,MAAA,WAAA,GAAc,CAAC,KAAA,EAAsB,IAAuB,KAAA;AACvE,EAAM,MAAA;AAAA,IACJ,OAAA;AAAA,IACA,UAAA;AAAA,IACA,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,aAAA;AAAA,GACE,GAAA,MAAA,CAAO,yBAA2B,EAAA,KAAA,CAAS,KAAK,EAAC,CAAA;AAErD,EAAA,MAAM,EAAE,IAAM,EAAA,QAAA,EAAa,GAAA,WAAA,CAAY,CAAC,OAAO,CAAA,CAAA;AAE/C,EAAM,MAAA,UAAA,GAAa,SAAS,MAAM;AAChC,IAAA,MAAM,EAAE,GAAA,EAAQ,GAAA,UAAA,IAAc,EAAC,CAAA;AAC/B,IAAA,MAAM,WACJ,GAAA,GAAA,KAAQ,KACR,CAAA,IAAA,eAAA,IACA,eAAgB,CAAA,KAAA,CAAM,IAAQ,IAAA,GAAA,IAC9B,CAAC,eAAA,CAAgB,KAAM,CAAA,GAAA,CAAI,MAAM,KAAM,CAAA,CAAA;AAEzC,IAAA,OACE,MAAM,QACN,KAAA,aAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAe,KACf,CAAA,KAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAM,MAAM,QACZ,CAAA,IAAA,WAAA,CAAA;AAAA,GAEH,CAAA,CAAA;AAED,EAAM,MAAA,SAAA,GAAY,SAAS,MAAM;AAE/B,IAAA,OACE,KAAM,CAAA,OAAA,IACN,KAAM,CAAA,SAAA,KAAc,KAAM,CAAA,UAAA,IACzB,KAAM,CAAA,KAAA,KAAU,KAAa,CAAA,KAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAiB,KAAM,CAAA,GAAA,CAAI,KAAM,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA,GAElE,CAAA,CAAA;AACD,EAAA,MAAM,YAAe,GAAA,OAAA,CAAQ,EAAE,KAAA,EAAO,CAAA,CAAA;AAEtC,EAAI,IAAA,KAAA,GAAQ,WAAW,KAAK,CAAA,CAAA;AAE5B,EAAA,MAAM,WAAW,UAA2B,EAAA,CAAA;AAM5C,EAAM,MAAA,YAAA,GAAe,CAAC,CAAa,KAAA;AAlDrC,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAmDI,IAAA,MAAM,SAAS,CAAE,CAAA,MAAA,CAAA;AACjB,IAAA,MAAM,UAAa,GAAA,MAAA,CAAO,OAAU,GAAA,KAAA,CAAM,YAAY,KAAM,CAAA,UAAA,CAAA;AAC5D,IAAM,MAAA,KAAA,GAAA,CAAQ,0BAAS,KAAT,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgB,cAAhB,IAA6B,GAAA,EAAA,GAAA,KAAA,CAAM,UAAnC,IAA4C,GAAA,EAAA,GAAA,EAAA,CAAA;AAE1D,IAAA,IAAA,CAAK,qBAAqB,UAAU,CAAA,CAAA;AACpC,IAAK,IAAA,CAAA,QAAA,EAAU,OAAO,OAAO,CAAA,CAAA;AAC7B,IAAU,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,QAAA,EAAA,CAAA;AAEV,IAAI,IAAA,gBAAA,IAAoB,KAAM,CAAA,KAAA,KAAU,KAAW,CAAA,EAAA;AACjD,MAAA,gBAAA,CAAiB,MAAO,CAAA,OAAA,EAAS,KAAM,CAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AAAA,KACrD;AAAA,GACF,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,GACF,CAAA;AACF;;;;"}