{"version":3,"file":"use-checkbox.mjs","sources":["../../../../../../../packages/components/checkbox/src/composables/use-checkbox.ts"],"sourcesContent":["import { computed } from 'vue'\nimport { useFormItem, useFormItemInputId } from '@bigin/hooks'\nimport { isArray } from '@bigin/utils'\n\nimport { useCheckboxModel } from './use-checkbox-model'\nimport { useCheckboxStatus } from './use-checkbox-status'\nimport { useCheckboxEvent } from './use-checkbox-event'\nimport { useCheckboxDisabled } from './use-checkbox-disabled'\nimport type { ComponentInternalInstance } from 'vue'\nimport type { CheckboxProps } from '../checkbox'\nimport type { CheckboxModel } from './use-checkbox-model'\n\nconst setStoreValue = (\n  props: CheckboxProps,\n  { model }: Pick<CheckboxModel, 'model'>\n) => {\n  function addToStore() {\n    if (isArray(model.value) && !model.value.includes(props.label)) {\n      model.value.push(props.label)\n    } else {\n      model.value = props.trueValue || true\n    }\n  }\n  props.checked && addToStore()\n}\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    large,\n    small,\n    vertical,\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 size = computed(\n    () =>\n      (checkboxButtonSize?.value !== 'default' && checkboxButtonSize?.value) ||\n      props.size\n  )\n\n  setStoreValue(props, { model })\n\n  return {\n    inputId,\n    isLabeledByFormItem,\n    isChecked,\n    isDisabled,\n    isFocused,\n    checkboxButtonSize,\n    checkboxSize,\n    hasOwnLabel,\n    model,\n    handleChange,\n    onClickRoot,\n    size,\n    large,\n    small,\n    vertical,\n  }\n}\n"],"names":[],"mappings":";;;;;;;;;;AAYA,MAAM,aAAgB,GAAA,CACpB,KACA,EAAA,EAAE,OACC,KAAA;AACH,EAAA,SAAS,UAAa,GAAA;AACpB,IAAI,IAAA,OAAA,CAAQ,KAAM,CAAA,KAAK,CAAK,IAAA,CAAC,MAAM,KAAM,CAAA,QAAA,CAAS,KAAM,CAAA,KAAK,CAAG,EAAA;AAC9D,MAAM,KAAA,CAAA,KAAA,CAAM,IAAK,CAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAAA,KACvB,MAAA;AACL,MAAM,KAAA,CAAA,KAAA,GAAQ,MAAM,SAAa,IAAA,IAAA,CAAA;AAAA,KACnC;AAAA,GACF;AACA,EAAA,KAAA,CAAM,WAAW,UAAW,EAAA,CAAA;AAC9B,CAAA,CAAA;AAEa,MAAA,WAAA,GAAc,CACzB,KAAA,EACA,KACG,KAAA;AACH,EAAA,MAAM,EAAE,QAAA,EAAU,UAAW,EAAA,GAAI,WAAY,EAAA,CAAA;AAC7C,EAAA,MAAM,EAAE,KAAO,EAAA,OAAA,EAAS,eAAgB,EAAA,GAAI,iBAAiB,KAAK,CAAA,CAAA;AAClE,EAAM,MAAA;AAAA,IACJ,SAAA;AAAA,IACA,SAAA;AAAA,IACA,kBAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,MACE,iBAAkB,CAAA,KAAA,EAAO,KAAO,EAAA,EAAE,OAAO,CAAA,CAAA;AAC7C,EAAA,MAAM,EAAE,UAAW,EAAA,GAAI,oBAAoB,EAAE,KAAA,EAAO,WAAW,CAAA,CAAA;AAC/D,EAAA,MAAM,EAAE,OAAA,EAAS,mBAAoB,EAAA,GAAI,mBAAmB,KAAO,EAAA;AAAA,IACjE,eAAiB,EAAA,UAAA;AAAA,IACjB,mBAAqB,EAAA,WAAA;AAAA,IACrB,mBAAqB,EAAA,OAAA;AAAA,GACtB,CAAA,CAAA;AACD,EAAA,MAAM,EAAE,YAAA,EAAc,WAAY,EAAA,GAAI,iBAAiB,KAAO,EAAA;AAAA,IAC5D,KAAA;AAAA,IACA,eAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,mBAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,IAAO,GAAA,QAAA;AAAA,IACX,MACG,kBAAoB,EAAA,KAAA,KAAU,SAAa,IAAA,kBAAA,EAAoB,SAChE,KAAM,CAAA,IAAA;AAAA,GACV,CAAA;AAEA,EAAc,aAAA,CAAA,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,CAAA;AAE9B,EAAO,OAAA;AAAA,IACL,OAAA;AAAA,IACA,mBAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,kBAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,GACF,CAAA;AACF;;;;"}