import { useEffect, useRef } from 'functional-mini/component';
import { mountComponent } from '../../_util/component';
import { useComponentEvent } from '../../_util/hooks/useComponentEvent';
import { useHandleCustomEvent } from '../../_util/hooks/useHandleCustomEvent';
import { useFormItem } from '../use-form-item';
import { FormTextareaDefaultProps } from './props';
var FormTextarea = function (props) {
    var _a = useFormItem(props), formData = _a.formData, emit = _a.emit;
    var triggerEvent = useComponentEvent(props).triggerEvent;
    var inputRef = useRef();
    useHandleCustomEvent('handleRef', function (input) {
        inputRef.current = input;
    });
    useEffect(function () {
        if (inputRef.current) {
            inputRef.current.update(formData.value);
        }
    }, [formData]);
    useHandleCustomEvent('onChange', function (value, e) {
        emit('onChange', value);
        triggerEvent('change', value, e);
    });
    useHandleCustomEvent('onBlur', function (value, e) {
        triggerEvent('blur', value, e);
    });
    useHandleCustomEvent('onFocus', function (value, e) {
        triggerEvent('focus', value, e);
    });
    useHandleCustomEvent('onConfirm', function (value, e) {
        triggerEvent('confirm', value, e);
    });
    return {
        formData: formData,
    };
};
mountComponent(FormTextarea, FormTextareaDefaultProps);