MCPcopy
hub / github.com/PaulLeCam/react-leaflet / createControlHook

Function createControlHook

packages/core/src/control.ts:7–40  ·  view source on GitHub ↗
(
  useElement: ElementHook<E, P>,
)

Source from the content-addressed store, hash-verified

5import type { ElementHook } from './element.js'
6
7export function createControlHook<E extends Control, P extends ControlOptions>(
8 useElement: ElementHook<E, P>,
9) {
10 return function useLeafletControl(props: P): ReturnType<ElementHook<E, P>> {
11 const context = useLeafletContext()
12 const elementRef = useElement(props, context)
13 const { instance } = elementRef.current
14 const positionRef = useRef(props.position)
15 const { position } = props
16
17 useEffect(
18 function addControl() {
19 instance.addTo(context.map)
20
21 return function removeControl() {
22 instance.remove()
23 }
24 },
25 [context.map, instance],
26 )
27
28 useEffect(
29 function updateControl() {
30 if (position != null && position !== positionRef.current) {
31 instance.setPosition(position)
32 positionRef.current = position
33 }
34 },
35 [instance, position],
36 )
37
38 return elementRef
39 }
40}

Callers 3

control.tsFile · 0.90
LayersControl.tsxFile · 0.90
createControlComponentFunction · 0.85

Calls 1

useLeafletContextFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…