{"version":3,"file":"use-checkbox-status.mjs","names":[],"sources":["../../../../../../../packages/components/checkbox/src/composables/use-checkbox-status.ts"],"sourcesContent":["import { computed, inject, ref, toRaw } from 'vue'\nimport { isEqual } from 'lodash-unified'\nimport { useFormSize } from '@element-plus/components/form'\nimport { isArray, isBoolean, isObject, isPropAbsent } from '@element-plus/utils'\nimport { checkboxGroupContextKey } from '../constants'\n\nimport type { ComponentInternalInstance } from 'vue'\nimport type { CheckboxProps } from '../checkbox'\nimport type { CheckboxModel } from '../composables'\n\nexport const useCheckboxStatus = (\n  props: CheckboxProps,\n  slots: ComponentInternalInstance['slots'],\n  { model }: Pick<CheckboxModel, 'model'>\n) => {\n  const checkboxGroup = inject(checkboxGroupContextKey, undefined)\n  const isFocused = ref(false)\n  const actualValue = computed(() => {\n    // In version 2.x, if there's no props.value, props.label will act as props.value\n    // In version 3.x, remove this computed value, use props.value instead.\n    if (!isPropAbsent(props.value)) {\n      return props.value\n    }\n    return props.label\n  })\n  const isChecked = computed<boolean>(() => {\n    const value = model.value\n    if (isBoolean(value)) {\n      return value\n    } else if (isArray(value)) {\n      if (isObject(actualValue.value)) {\n        return value.map(toRaw).some((o) => isEqual(o, actualValue.value))\n      } else {\n        return value.map(toRaw).includes(actualValue.value)\n      }\n    } else if (value !== null && value !== undefined) {\n      return value === props.trueValue || value === props.trueLabel\n    } else {\n      return !!value\n    }\n  })\n\n  const checkboxButtonSize = useFormSize(\n    computed(() => checkboxGroup?.size?.value),\n    {\n      prop: true,\n    }\n  )\n  const checkboxSize = useFormSize(computed(() => checkboxGroup?.size?.value))\n\n  const hasOwnLabel = computed<boolean>(() => {\n    return !!slots.default || !isPropAbsent(actualValue.value)\n  })\n\n  return {\n    checkboxButtonSize,\n    isChecked,\n    isFocused,\n    checkboxSize,\n    hasOwnLabel,\n    actualValue,\n  }\n}\n\nexport type CheckboxStatus = ReturnType<typeof useCheckboxStatus>\n"],"mappings":";;;;;;;AAUA,MAAa,qBACX,OACA,OACA,EAAE,YACC;CACH,MAAM,gBAAgB,OAAO,yBAAyB,OAAU;CAChE,MAAM,YAAY,IAAI,MAAM;CAC5B,MAAM,cAAc,eAAe;AAGjC,MAAI,CAAC,aAAa,MAAM,MAAM,CAC5B,QAAO,MAAM;AAEf,SAAO,MAAM;GACb;CACF,MAAM,YAAY,eAAwB;EACxC,MAAM,QAAQ,MAAM;AACpB,MAAI,UAAU,MAAM,CAClB,QAAO;WACE,QAAQ,MAAM,CACvB,KAAI,SAAS,YAAY,MAAM,CAC7B,QAAO,MAAM,IAAI,MAAM,CAAC,MAAM,MAAM,QAAQ,GAAG,YAAY,MAAM,CAAC;MAElE,QAAO,MAAM,IAAI,MAAM,CAAC,SAAS,YAAY,MAAM;WAE5C,UAAU,QAAQ,UAAU,OACrC,QAAO,UAAU,MAAM,aAAa,UAAU,MAAM;MAEpD,QAAO,CAAC,CAAC;GAEX;AAcF,QAAO;EACL,oBAbyB,YACzB,eAAe,eAAe,MAAM,MAAM,EAC1C,EACE,MAAM,MACP,CACF;EASC;EACA;EACA,cAVmB,YAAY,eAAe,eAAe,MAAM,MAAM,CAAC;EAW1E,aATkB,eAAwB;AAC1C,UAAO,CAAC,CAAC,MAAM,WAAW,CAAC,aAAa,YAAY,MAAM;IAC1D;EAQA;EACD"}