@@ -13,6 +13,8 @@ interface MarkerProps extends PigeonProps {
13
13
style ?: React . CSSProperties
14
14
className ?: string
15
15
16
+ children ?: JSX . Element
17
+
16
18
// callbacks
17
19
onClick ?: ( { event : HTMLMouseEvent , anchor : Point , payload : any } ) => void
18
20
onContextMenu ?: ( { event : HTMLMouseEvent , anchor : Point , payload : any } ) => void
@@ -38,7 +40,7 @@ export function Marker(props: MarkerProps): JSX.Element {
38
40
const color = props . color || '#93C0D0'
39
41
40
42
// what do you expect to get back with the event
41
- const eventParameters = ( event : React . MouseEvent < SVGElement > ) => ( {
43
+ const eventParameters = ( event : React . MouseEvent ) => ( {
42
44
event,
43
45
anchor : props . anchor ,
44
46
payload : props . payload ,
@@ -55,30 +57,30 @@ export function Marker(props: MarkerProps): JSX.Element {
55
57
...( props . style || { } ) ,
56
58
} }
57
59
className = { props . className ? `${ props . className } pigeon-click-block` : 'pigeon-click-block' }
60
+ onClick = { props . onClick ? ( event ) => props . onClick ( eventParameters ( event ) ) : null }
61
+ onContextMenu = { props . onContextMenu ? ( event ) => props . onContextMenu ( eventParameters ( event ) ) : null }
62
+ onMouseOver = { ( event ) => {
63
+ props . onMouseOver && props . onMouseOver ( eventParameters ( event ) )
64
+ setInternalHover ( true )
65
+ } }
66
+ onMouseOut = { ( event ) => {
67
+ props . onMouseOut && props . onMouseOut ( eventParameters ( event ) )
68
+ setInternalHover ( false )
69
+ } }
58
70
>
59
- < svg width = { width } height = { height } viewBox = "0 0 61 71" fill = "none" xmlns = "http://www.w3.org/2000/svg" >
60
- < g
61
- style = { { pointerEvents : 'auto' } }
62
- onClick = { props . onClick ? ( event ) => props . onClick ( eventParameters ( event ) ) : null }
63
- onContextMenu = { props . onContextMenu ? ( event ) => props . onContextMenu ( eventParameters ( event ) ) : null }
64
- onMouseOver = { ( event ) => {
65
- props . onMouseOver && props . onMouseOver ( eventParameters ( event ) )
66
- setInternalHover ( true )
67
- } }
68
- onMouseOut = { ( event ) => {
69
- props . onMouseOut && props . onMouseOut ( eventParameters ( event ) )
70
- setInternalHover ( false )
71
- } }
72
- >
73
- < path
74
- d = "M52 31.5C52 36.8395 49.18 42.314 45.0107 47.6094C40.8672 52.872 35.619 57.678 31.1763 61.6922C30.7916 62.0398 30.2084 62.0398 29.8237 61.6922C25.381 57.678 20.1328 52.872 15.9893 47.6094C11.82 42.314 9 36.8395 9 31.5C9 18.5709 18.6801 9 30.5 9C42.3199 9 52 18.5709 52 31.5Z"
75
- fill = { color }
76
- stroke = "white"
77
- strokeWidth = "4"
78
- />
79
- < circle cx = "30.5" cy = "30.5" r = "8.5" fill = "white" opacity = { hover ? 0.98 : 0.6 } />
80
- </ g >
81
- </ svg >
71
+ { props . children || (
72
+ < svg width = { width } height = { height } viewBox = "0 0 61 71" fill = "none" xmlns = "http://www.w3.org/2000/svg" >
73
+ < g style = { { pointerEvents : 'auto' } } >
74
+ < path
75
+ d = "M52 31.5C52 36.8395 49.18 42.314 45.0107 47.6094C40.8672 52.872 35.619 57.678 31.1763 61.6922C30.7916 62.0398 30.2084 62.0398 29.8237 61.6922C25.381 57.678 20.1328 52.872 15.9893 47.6094C11.82 42.314 9 36.8395 9 31.5C9 18.5709 18.6801 9 30.5 9C42.3199 9 52 18.5709 52 31.5Z"
76
+ fill = { color }
77
+ stroke = "white"
78
+ strokeWidth = "4"
79
+ />
80
+ < circle cx = "30.5" cy = "30.5" r = "8.5" fill = "white" opacity = { hover ? 0.98 : 0.6 } />
81
+ </ g >
82
+ </ svg >
83
+ ) }
82
84
</ div >
83
85
)
84
86
}
0 commit comments