const require_rolldown_runtime = require('../rolldown-runtime.cjs'); const require_shared_useForwardExpose = require('../shared/useForwardExpose.cjs'); const require_Primitive_Primitive = require('../Primitive/Primitive.cjs'); const require_Field_FieldRoot = require('./FieldRoot.cjs'); const vue = require_rolldown_runtime.__toESM(require("vue")); //#region src/Field/FieldControl.vue?vue&type=script&setup=true&lang.ts var FieldControl_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ inheritAttrs: false, __name: "FieldControl", props: { id: { type: String, required: false }, modelValue: { type: [String, Number], required: false, default: void 0 }, defaultValue: { type: [String, Number], required: false, default: void 0 }, asChild: { type: Boolean, required: false }, as: { type: null, required: false, default: "input" } }, emits: ["update:modelValue"], setup(__props, { emit: __emit }) { const props = __props; const emits = __emit; const fieldContext = require_Field_FieldRoot.injectFieldRootContext(); const attrs = (0, vue.useAttrs)(); const { forwardRef, currentElement } = require_shared_useForwardExpose.useForwardExpose(); const controlId = (0, vue.computed)(() => props.id ?? fieldContext.fieldId.value); function isAttrSet(value) { return value !== void 0 && value !== false && value !== "false"; } function mergeIds(consumerValue, fieldValue) { return [consumerValue, fieldValue].filter(Boolean).join(" ") || void 0; } function getBindings() { const { "aria-describedby": describedBy, "aria-labelledby": labelledBy, "aria-invalid": ariaInvalid, name, disabled, required,...rest } = attrs; const isDisabled = fieldContext.disabled.value || isAttrSet(disabled); return { ...fieldContext.dataAttributes.value, ...rest, ...valueBinding.value, "name": fieldContext.name.value ?? name, "disabled": isDisabled || void 0, "required": fieldContext.required.value || isAttrSet(required) || void 0, "aria-labelledby": mergeIds(labelledBy, fieldContext.labelId.value), "aria-describedby": mergeIds(describedBy, fieldContext.describedBy.value), "aria-invalid": ariaInvalid ?? (fieldContext.invalid.value && !isDisabled || void 0) }; } const isControlled = (0, vue.computed)(() => props.modelValue !== void 0); const valueBinding = (0, vue.computed)(() => { if (isControlled.value) return { value: props.modelValue }; if (props.defaultValue !== void 0) return { value: props.defaultValue }; return {}; }); function getElement() { const element = currentElement.value; return element && [ "INPUT", "TEXTAREA", "SELECT" ].includes(element.tagName) ? element : void 0; } function handleInput() { const element = getElement(); if (element) emits("update:modelValue", element.value); if (!isControlled.value) fieldContext.handleControlInput(); } (0, vue.watch)(() => props.modelValue, (value, previous) => { if (value !== void 0 && value !== previous) fieldContext.handleControlInput({ value: String(value) }); }, { flush: "post" }); let unregister; (0, vue.onMounted)(() => { unregister = fieldContext.registerControl({ id: () => controlId.value, element: () => currentElement.value, getValue: () => getElement()?.value, validityElement: getElement }); }); (0, vue.onBeforeUnmount)(() => unregister?.()); return (_ctx, _cache) => { return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(require_Primitive_Primitive.Primitive), (0, vue.mergeProps)({ id: controlId.value, ref: (0, vue.unref)(forwardRef) }, getBindings(), { as: __props.as, "as-child": __props.asChild, onFocus: _cache[0] || (_cache[0] = ($event) => (0, vue.unref)(fieldContext).handleControlFocus()), onBlur: _cache[1] || (_cache[1] = ($event) => (0, vue.unref)(fieldContext).handleControlBlur()), onInput: handleInput }), { default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]), _: 3 }, 16, [ "id", "as", "as-child" ]); }; } }); //#endregion //#region src/Field/FieldControl.vue var FieldControl_default = FieldControl_vue_vue_type_script_setup_true_lang_default; //#endregion Object.defineProperty(exports, 'FieldControl_default', { enumerable: true, get: function () { return FieldControl_default; } }); //# sourceMappingURL=FieldControl.cjs.map