import { FieldGroupApi, functionalUpdate } from '@tanstack/form-core';
import { useStore } from '@tanstack/solid-store';
import { onCleanup, onMount } from 'solid-js';
export function createFieldGroup(opts) {
    const options = opts();
    const api = new FieldGroupApi(options);
    const form = options.form instanceof FieldGroupApi
        ? options.form.form
        : options.form;
    const extendedApi = api;
    extendedApi.AppForm = (appFormProps) => <form.AppForm {...appFormProps}/>;
    extendedApi.AppField = (props) => (<form.AppField {...api.getFormFieldOptions(props)}/>);
    extendedApi.Field = (props) => (<form.Field {...api.getFormFieldOptions(props)}/>);
    extendedApi.Subscribe = (props) => {
        const data = useStore(api.store, props.selector);
        return functionalUpdate(props.children, data());
    };
    let mounted = false;
    onMount(() => {
        const cleanupFn = api.mount();
        mounted = true;
        onCleanup(() => {
            cleanupFn();
            mounted = false;
        });
    });
    return Object.assign(extendedApi, {
        ...options.formComponents,
    });
}
//# sourceMappingURL=createFieldGroup.jsx.map