Spaces:
Sleeping
Sleeping
| 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; | |
| }; | |
| } | |