forked from PaulLeCam/react-leaflet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTooltip.js
61 lines (49 loc) · 1.45 KB
/
Tooltip.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// @flow
import { Tooltip as LeafletTooltip } from 'leaflet'
import { withLeaflet } from './context'
import DivOverlay from './DivOverlay'
import type { DivOverlayProps } from './types'
type LeafletElement = LeafletTooltip
type Props = DivOverlayProps
class Tooltip extends DivOverlay<LeafletElement, Props> {
static defaultProps = {
pane: 'tooltipPane',
}
createLeafletElement(props: Props): LeafletElement {
return new LeafletTooltip(
this.getOptions(props),
props.leaflet.popupContainer,
)
}
componentDidMount() {
const { popupContainer } = this.props.leaflet
if (popupContainer == null) return
popupContainer.on({
tooltipopen: this.onTooltipOpen,
tooltipclose: this.onTooltipClose,
})
popupContainer.bindTooltip(this.leafletElement)
}
componentWillUnmount() {
const { popupContainer } = this.props.leaflet
if (popupContainer == null) return
popupContainer.off({
tooltipopen: this.onTooltipOpen,
tooltipclose: this.onTooltipClose,
})
if (popupContainer._map != null) {
popupContainer.unbindTooltip(this.leafletElement)
}
}
onTooltipOpen = ({ tooltip }: { tooltip: LeafletElement }) => {
if (tooltip === this.leafletElement) {
this.onOpen()
}
}
onTooltipClose = ({ tooltip }: { tooltip: LeafletElement }) => {
if (tooltip === this.leafletElement) {
this.onClose()
}
}
}
export default withLeaflet<Props, Tooltip>(Tooltip)