{"version":3,"file":"use-checkbox-event.mjs","sources":["../../../../../../../packages/components/checkbox/src/composables/use-checkbox-event.ts"],"sourcesContent":["import { getCurrentInstance, nextTick } from 'vue'\n\nimport type { useFormItemInputId } from '@bigin/hooks'\nimport type { CheckboxProps } from '../checkbox'\nimport type {\n  CheckboxDisabled,\n  CheckboxModel,\n  CheckboxStatus,\n} from '../composables'\n\nexport const useCheckboxEvent = (\n  props: CheckboxProps,\n  {\n    model,\n    isLimitExceeded,\n    hasOwnLabel,\n    isDisabled,\n    isLabeledByFormItem,\n  }: Pick<CheckboxModel, 'model' | 'isLimitExceeded'> &\n    Pick<CheckboxStatus, 'hasOwnLabel'> &\n    Pick<CheckboxDisabled, 'isDisabled'> &\n    Pick<ReturnType<typeof useFormItemInputId>, 'isLabeledByFormItem'>\n) => {\n  const { emit } = getCurrentInstance()!\n\n  function getLabeledValue(value: string | number | boolean) {\n    return value === props.trueValue || value === true\n      ? props.trueValue ?? true\n      : props.falseValue ?? false\n  }\n\n  function emitChangeEvent(\n    checked: string | number | boolean,\n    e: InputEvent | MouseEvent\n  ) {\n    emit('change', getLabeledValue(checked), e)\n  }\n\n  function handleChange(e: Event) {\n    if (isLimitExceeded.value) return\n\n    const target = e.target as HTMLInputElement\n    emit('change', getLabeledValue(target.checked), e)\n  }\n\n  async function onClickRoot(e: MouseEvent) {\n    if (isLimitExceeded.value) return\n\n    if (!hasOwnLabel.value && !isDisabled.value && isLabeledByFormItem.value) {\n      const eventTargets: EventTarget[] = e.composedPath()\n      const hasLabel = eventTargets.some(\n        (item) => (item as HTMLElement).tagName === 'LABEL'\n      )\n      if (!hasLabel) {\n        model.value = getLabeledValue(\n          [false, props.falseValue].includes(model.value)\n        )\n        await nextTick()\n        emitChangeEvent(model.value, e)\n      }\n    }\n  }\n\n  return {\n    handleChange,\n    onClickRoot,\n  }\n}\n"],"names":[],"mappings":";;AAUa,MAAA,gBAAA,GAAmB,CAC9B,KACA,EAAA;AAAA,EACE,KAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,mBAAA;AACF,CAIG,KAAA;AACH,EAAM,MAAA,EAAE,IAAK,EAAA,GAAI,kBAAmB,EAAA,CAAA;AAEpC,EAAA,SAAS,gBAAgB,KAAkC,EAAA;AACzD,IAAO,OAAA,KAAA,KAAU,MAAM,SAAa,IAAA,KAAA,KAAU,OAC1C,KAAM,CAAA,SAAA,IAAa,IACnB,GAAA,KAAA,CAAM,UAAc,IAAA,KAAA,CAAA;AAAA,GAC1B;AAEA,EAAS,SAAA,eAAA,CACP,SACA,CACA,EAAA;AACA,IAAA,IAAA,CAAK,QAAU,EAAA,eAAA,CAAgB,OAAO,CAAA,EAAG,CAAC,CAAA,CAAA;AAAA,GAC5C;AAEA,EAAA,SAAS,aAAa,CAAU,EAAA;AAC9B,IAAA,IAAI,eAAgB,CAAA,KAAA;AAAO,MAAA,OAAA;AAE3B,IAAA,MAAM,SAAS,CAAE,CAAA,MAAA,CAAA;AACjB,IAAA,IAAA,CAAK,QAAU,EAAA,eAAA,CAAgB,MAAO,CAAA,OAAO,GAAG,CAAC,CAAA,CAAA;AAAA,GACnD;AAEA,EAAA,eAAe,YAAY,CAAe,EAAA;AACxC,IAAA,IAAI,eAAgB,CAAA,KAAA;AAAO,MAAA,OAAA;AAE3B,IAAA,IAAI,CAAC,WAAY,CAAA,KAAA,IAAS,CAAC,UAAW,CAAA,KAAA,IAAS,oBAAoB,KAAO,EAAA;AACxE,MAAM,MAAA,YAAA,GAA8B,EAAE,YAAa,EAAA,CAAA;AACnD,MAAA,MAAM,WAAW,YAAa,CAAA,IAAA;AAAA,QAC5B,CAAC,IAAU,KAAA,IAAA,CAAqB,OAAY,KAAA,OAAA;AAAA,OAC9C,CAAA;AACA,MAAA,IAAI,CAAC,QAAU,EAAA;AACb,QAAA,KAAA,CAAM,KAAQ,GAAA,eAAA;AAAA,UACZ,CAAC,KAAO,EAAA,KAAA,CAAM,UAAU,CAAE,CAAA,QAAA,CAAS,MAAM,KAAK,CAAA;AAAA,SAChD,CAAA;AACA,QAAA,MAAM,QAAS,EAAA,CAAA;AACf,QAAgB,eAAA,CAAA,KAAA,CAAM,OAAO,CAAC,CAAA,CAAA;AAAA,OAChC;AAAA,KACF;AAAA,GACF;AAEA,EAAO,OAAA;AAAA,IACL,YAAA;AAAA,IACA,WAAA;AAAA,GACF,CAAA;AACF;;;;"}