Spaces:
Sleeping
Sleeping
| import { useEffect } from 'react'; | |
| import { useAttribution } from './attribution.js'; | |
| import { useLeafletContext } from './context.js'; | |
| import { useEventHandlers } from './events.js'; | |
| import { withPane } from './pane.js'; | |
| export function useLayerLifecycle(element, context) { | |
| useEffect(function addLayer() { | |
| const container = context.layerContainer ?? context.map; | |
| container.addLayer(element.instance); | |
| return function removeLayer() { | |
| context.layerContainer?.removeLayer(element.instance); | |
| context.map.removeLayer(element.instance); | |
| }; | |
| }, [ | |
| context, | |
| element | |
| ]); | |
| } | |
| export function createLayerHook(useElement) { | |
| return function useLayer(props) { | |
| const context = useLeafletContext(); | |
| const elementRef = useElement(withPane(props, context), context); | |
| useAttribution(context.map, props.attribution); | |
| useEventHandlers(elementRef.current, props.eventHandlers); | |
| useLayerLifecycle(elementRef.current, context); | |
| return elementRef; | |
| }; | |
| } | |