forked from firefox-devtools/debugger
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHitMarker.js
More file actions
59 lines (45 loc) · 1.31 KB
/
HitMarker.js
File metadata and controls
59 lines (45 loc) · 1.31 KB
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
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
// @flow
import { Component } from "react";
const markerEl = document.createElement("div");
function makeMarker() {
const marker = markerEl.cloneNode(true);
marker.className = "editor hit-marker";
return marker;
}
type Props = {
hitData: { [string]: any },
editor: any
};
class HitMarker extends Component<Props> {
addMarker() {
const hitData = this.props.hitData;
const line = hitData.line - 1;
this.props.editor.setGutterMarker(line, "hit-markers", makeMarker());
this.props.editor.addLineClass(line, "line", "hit-marker");
}
shouldComponentUpdate(nextProps: any) {
return (
this.props.editor !== nextProps.editor ||
this.props.hitData !== nextProps.hitData
);
}
componentDidMount() {
this.addMarker();
}
componentDidUpdate() {
this.addMarker();
}
componentWillUnmount() {
const hitData = this.props.hitData;
const line = hitData.line - 1;
this.props.editor.setGutterMarker(line, "hit-markers", null);
this.props.editor.removeLineClass(line, "line", "hit-marker");
}
render() {
return null;
}
}
export default HitMarker;