import { inject, getCurrentInstance, nextTick, computed, watch } from 'vue'; import '../../../form/index.mjs'; import '../../../../utils/index.mjs'; import { checkboxGroupContextKey } from '../constants.mjs'; import { useFormItem } from '../../../form/src/hooks/use-form-item.mjs'; import { debugWarn } from '../../../../utils/error.mjs'; const useCheckboxEvent = (props, { model, isLimitExceeded, hasOwnLabel, isDisabled, isLabeledByFormItem }) => { const checkboxGroup = inject(checkboxGroupContextKey, void 0); const { formItem } = useFormItem(); const { emit } = getCurrentInstance(); function getLabeledValue(value) { var _a, _b, _c, _d; return [true, props.trueValue, props.trueLabel].includes(value) ? (_b = (_a = props.trueValue) != null ? _a : props.trueLabel) != null ? _b : true : (_d = (_c = props.falseValue) != null ? _c : props.falseLabel) != null ? _d : false; } function emitChangeEvent(checked, e) { emit("change", getLabeledValue(checked), e); } function handleChange(e) { if (isLimitExceeded.value) return; const target = e.target; emit("change", getLabeledValue(target.checked), e); } async function onClickRoot(e) { if (isLimitExceeded.value) return; if (!hasOwnLabel.value && !isDisabled.value && isLabeledByFormItem.value) { const eventTargets = e.composedPath(); const hasLabel = eventTargets.some((item) => item.tagName === "LABEL"); if (!hasLabel) { model.value = getLabeledValue([false, props.falseValue, props.falseLabel].includes(model.value)); await nextTick(); emitChangeEvent(model.value, e); } } } const validateEvent = computed(() => (checkboxGroup == null ? void 0 : checkboxGroup.validateEvent) || props.validateEvent); watch(() => props.modelValue, () => { if (validateEvent.value) { formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn(err)); } }); return { handleChange, onClickRoot }; }; export { useCheckboxEvent }; //# sourceMappingURL=use-checkbox-event.mjs.map