@@ -26,15 +26,23 @@ export default function setupHighlighter({
26
26
onSelectNode = ( ) => { } ,
27
27
} = { } ) {
28
28
let isInspecting = false ;
29
+ let stopOnClick = true ;
30
+ let blockEvents = true ;
29
31
30
32
Bridge . onMessage ( 'CLEAR_HIGHLIGHTS' , withMessageData ( clearHighlights ) ) ;
31
33
Bridge . onMessage ( 'HIGHLIGHT_ELEMENTS' , withMessageData ( highlightElements ) ) ;
32
34
Bridge . onMessage ( 'SHUTDOWN' , withMessageData ( stopInspecting ) ) ;
33
35
Bridge . onMessage ( 'START_INSPECTING' , withMessageData ( startInspecting ) ) ;
34
36
Bridge . onMessage ( 'STOP_INSPECTING' , withMessageData ( stopInspecting ) ) ;
35
37
36
- function startInspecting ( ) {
38
+ function startInspecting ( options ) {
37
39
isInspecting = true ;
40
+
41
+ if ( options ) {
42
+ stopOnClick = options . stopOnClick ?? true ;
43
+ blockEvents = options . blockEvents ?? true ;
44
+ }
45
+
38
46
addEventListeners ( view ) ;
39
47
}
40
48
@@ -51,6 +59,13 @@ export default function setupHighlighter({
51
59
}
52
60
}
53
61
62
+ function stopPropagation ( event ) {
63
+ if ( blockEvents ) {
64
+ event . preventDefault ( ) ;
65
+ event . stopPropagation ( ) ;
66
+ }
67
+ }
68
+
54
69
function stopInspecting ( ) {
55
70
hideOverlay ( ) ;
56
71
removeEventListeners ( view ) ;
@@ -99,30 +114,27 @@ export default function setupHighlighter({
99
114
}
100
115
101
116
function onClick ( event ) {
102
- event . preventDefault ( ) ;
103
- event . stopPropagation ( ) ;
117
+ stopPropagation ( event ) ;
104
118
105
- stopInspecting ( ) ;
119
+ if ( isInspecting && stopOnClick ) {
120
+ stopInspecting ( ) ;
121
+ }
106
122
}
107
123
108
124
function onMouseEvent ( event ) {
109
- event . preventDefault ( ) ;
110
- event . stopPropagation ( ) ;
125
+ stopPropagation ( event ) ;
111
126
}
112
127
113
128
function onPointerDown ( event ) {
114
- event . preventDefault ( ) ;
115
- event . stopPropagation ( ) ;
129
+ stopPropagation ( event ) ;
116
130
117
- selectNode ( event . target ) ;
131
+ selectNode ( event . target , { origin : event . isTrusted ? 'click' : 'script' } ) ;
118
132
}
119
133
120
134
function onPointerOver ( event ) {
121
- event . preventDefault ( ) ;
122
- event . stopPropagation ( ) ;
135
+ stopPropagation ( event ) ;
123
136
124
137
const target = event . target ;
125
-
126
138
if ( target . tagName === 'IFRAME' ) {
127
139
try {
128
140
if ( ! iframesListeningTo . has ( target ) ) {
@@ -136,12 +148,11 @@ export default function setupHighlighter({
136
148
}
137
149
138
150
showOverlay ( [ target ] , false ) ;
139
- selectNode ( target ) ;
151
+ selectNode ( target , { origin : event . isTrusted ? 'hover' : 'script' } ) ;
140
152
}
141
153
142
154
function onPointerUp ( event ) {
143
- event . preventDefault ( ) ;
144
- event . stopPropagation ( ) ;
155
+ stopPropagation ( event ) ;
145
156
}
146
157
147
158
const selectNode = throttle (
0 commit comments