{"version":3,"file":"use-checkbox.mjs","names":[],"sources":["../../../../../../../packages/components/checkbox/src/composables/use-checkbox.ts"],"sourcesContent":["import { computed } from 'vue'\nimport { useFormItem, useFormItemInputId } from '@element-plus/components/form'\nimport { isArray, isPropAbsent } from '@element-plus/utils'\nimport { useDeprecated } from '@element-plus/hooks'\nimport { useCheckboxDisabled } from './use-checkbox-disabled'\nimport { useCheckboxEvent } from './use-checkbox-event'\nimport { useCheckboxModel } from './use-checkbox-model'\nimport { useCheckboxStatus } from './use-checkbox-status'\n\nimport type { ComponentInternalInstance } from 'vue'\nimport type { CheckboxProps } from '../checkbox'\n\nexport const useCheckbox = (\n  props: CheckboxProps,\n  slots: ComponentInternalInstance['slots']\n) => {\n  const { formItem: elFormItem } = useFormItem()\n  const { model, isGroup, isLimitExceeded } = useCheckboxModel(props)\n  const {\n    isFocused,\n    isChecked,\n    checkboxButtonSize,\n    checkboxSize,\n    hasOwnLabel,\n    actualValue,\n  } = useCheckboxStatus(props, slots, { model })\n  const { isDisabled } = useCheckboxDisabled({ model, isChecked })\n  const { inputId, isLabeledByFormItem } = useFormItemInputId(props, {\n    formItemContext: elFormItem,\n    disableIdGeneration: hasOwnLabel,\n    disableIdManagement: isGroup,\n  })\n  const { handleChange, onClickRoot } = useCheckboxEvent(props, {\n    model,\n    isLimitExceeded,\n    hasOwnLabel,\n    isDisabled,\n    isLabeledByFormItem,\n  })\n\n  const setStoreValue = () => {\n    function addToStore() {\n      if (isArray(model.value) && !model.value.includes(actualValue.value)) {\n        model.value.push(actualValue.value)\n      } else {\n        model.value = props.trueValue ?? props.trueLabel ?? true\n      }\n    }\n    props.checked && addToStore()\n  }\n\n  setStoreValue()\n\n  useDeprecated(\n    {\n      from: 'label act as value',\n      replacement: 'value',\n      version: '3.0.0',\n      scope: 'el-checkbox',\n      ref: 'https://element-plus.org/en-US/component/checkbox.html',\n    },\n    computed(() => isGroup.value && isPropAbsent(props.value))\n  )\n\n  useDeprecated(\n    {\n      from: 'true-label',\n      replacement: 'true-value',\n      version: '3.0.0',\n      scope: 'el-checkbox',\n      ref: 'https://element-plus.org/en-US/component/checkbox.html',\n    },\n    computed(() => !!props.trueLabel)\n  )\n\n  useDeprecated(\n    {\n      from: 'false-label',\n      replacement: 'false-value',\n      version: '3.0.0',\n      scope: 'el-checkbox',\n      ref: 'https://element-plus.org/en-US/component/checkbox.html',\n    },\n    computed(() => !!props.falseLabel)\n  )\n\n  return {\n    inputId,\n    isLabeledByFormItem,\n    isChecked,\n    isDisabled,\n    isFocused,\n    checkboxButtonSize,\n    checkboxSize,\n    hasOwnLabel,\n    model,\n    actualValue,\n    handleChange,\n    onClickRoot,\n  }\n}\n"],"mappings":";;;;;;;;;AAYA,MAAa,eACX,OACA,UACG;CACH,MAAM,EAAE,UAAU,eAAe,YAAY;CAC7C,MAAM,EAAE,OAAO,SAAS,oBAAoB,iBAAiB,KAAK;CAClE,MAAM,EACJ,WACA,WACA,oBACA,cACA,aACA,gBACE,kBAAkB,OAAO,OAAO,EAAE,MAAM,CAAC;CAC7C,MAAM,EAAE,eAAe,oBAAoB;EAAE;EAAO;CAAU,CAAC;CAC/D,MAAM,EAAE,SAAS,wBAAwB,mBAAmB,OAAO;EACjE,iBAAiB;EACjB,qBAAqB;EACrB,qBAAqB;CACvB,CAAC;CACD,MAAM,EAAE,cAAc,gBAAgB,iBAAiB,OAAO;EAC5D;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,sBAAsB;EAC1B,SAAS,aAAa;GACpB,IAAI,QAAQ,MAAM,KAAK,KAAK,CAAC,MAAM,MAAM,SAAS,YAAY,KAAK,GACjE,MAAM,MAAM,KAAK,YAAY,KAAK;QAElC,MAAM,QAAQ,MAAM,aAAa,MAAM,aAAa;EAExD;EACA,MAAM,WAAW,WAAW;CAC9B;CAEA,cAAc;CAEd,cACE;EACE,MAAM;EACN,aAAa;EACb,SAAS;EACT,OAAO;EACP,KAAK;CACP,GACA,eAAe,QAAQ,SAAS,aAAa,MAAM,KAAK,CAAC,CAC3D;CAEA,cACE;EACE,MAAM;EACN,aAAa;EACb,SAAS;EACT,OAAO;EACP,KAAK;CACP,GACA,eAAe,CAAC,CAAC,MAAM,SAAS,CAClC;CAEA,cACE;EACE,MAAM;EACN,aAAa;EACb,SAAS;EACT,OAAO;EACP,KAAK;CACP,GACA,eAAe,CAAC,CAAC,MAAM,UAAU,CACnC;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}