import { useEffect, useRef } from 'react';
import { useLeafletContext } from './context.js';
import { useEventHandlers } from './events.js';
import { useLayerLifecycle } from './layer.js';
import { withPane } from './pane.js';
export function usePathOptions(element, props) {
    const optionsRef = useRef(undefined);
    useEffect(function updatePathOptions() {
        if (props.pathOptions !== optionsRef.current) {
            const options = props.pathOptions ?? {};
            element.instance.setStyle(options);
            optionsRef.current = options;
        }
    }, [
        element,
        props
    ]);
}
export function createPathHook(useElement) {
    return function usePath(props) {
        const context = useLeafletContext();
        const elementRef = useElement(withPane(props, context), context);
        useEventHandlers(elementRef.current, props.eventHandlers);
        useLayerLifecycle(elementRef.current, context);
        usePathOptions(elementRef.current, props);
        return elementRef;
    };
}
