Skip to content

Commit 762e29d

Browse files
authored
fix(inspector): disable inspector while combo is held when extra keys are pressed or leaving browser (#716)
1 parent b11a3c4 commit 762e29d

File tree

2 files changed

+30
-17
lines changed

2 files changed

+30
-17
lines changed

.changeset/few-eagles-turn.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/vite-plugin-svelte-inspector': patch
3+
---
4+
5+
fix: while combo is held, disable inspector when additional keys are pressed or leaving browser

packages/vite-plugin-svelte-inspector/src/runtime/Inspector.svelte

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
const toggle_combo = options.toggleKeyCombo?.toLowerCase().split('-');
77
const nav_keys = Object.values(options.navKeys).map((k) => k.toLowerCase());
88
let enabled = false;
9-
let hasOpened = false;
9+
let has_opened = false;
1010
1111
const icon = `data:image/svg+xml;base64,${btoa(
1212
`
@@ -27,7 +27,7 @@
2727
2828
let active_el;
2929
30-
let enabled_ts;
30+
let hold_start_ts;
3131
3232
$: show_toggle =
3333
options.showToggleButton === 'always' || (options.showToggleButton === 'active' && enabled);
@@ -125,7 +125,7 @@
125125
if (file_loc) {
126126
stop(event);
127127
fetch(`${options.__internal.base}/__open-in-editor?file=${encodeURIComponent(file_loc)}`);
128-
hasOpened = true;
128+
has_opened = true;
129129
if (options.holdMode && is_holding()) {
130130
disable();
131131
}
@@ -145,7 +145,11 @@
145145
}
146146
147147
function is_combo(event) {
148-
return toggle_combo?.every((key) => is_key_active(key, event));
148+
return is_toggle(event) && toggle_combo?.every((key) => is_key_active(key, event));
149+
}
150+
151+
function is_toggle(event) {
152+
return toggle_combo?.includes(event.key.toLowerCase());
149153
}
150154
151155
function is_nav(event) {
@@ -157,7 +161,7 @@
157161
}
158162
159163
function is_holding() {
160-
return enabled_ts && Date.now() - enabled_ts > 250;
164+
return hold_start_ts && Date.now() - hold_start_ts > 250;
161165
}
162166
163167
function stop(event) {
@@ -167,14 +171,13 @@
167171
}
168172
169173
function keydown(event) {
170-
if (event.repeat || event.key == null) {
174+
if (event.repeat || event.key == null || (!enabled && !is_toggle(event))) {
171175
return;
172176
}
173-
174177
if (is_combo(event)) {
175178
toggle();
176179
if (options.holdMode && enabled) {
177-
enabled_ts = Date.now();
180+
hold_start_ts = Date.now();
178181
}
179182
} else if (enabled) {
180183
if (is_nav(event)) {
@@ -185,19 +188,23 @@
185188
}
186189
} else if (is_open(event)) {
187190
open_editor(event);
191+
} else if (is_holding()) {
192+
// unhandled additional key pressed while holding, possibly another shortcut, disable again
193+
disable();
188194
}
189195
}
190196
}
191197
192198
function keyup(event) {
193-
if (event.repeat || event.key == null) {
199+
if (event.repeat || event.key == null || !enabled) {
194200
return;
195201
}
196-
const k = event.key.toLowerCase();
197-
if (enabled && is_holding() && toggle_combo.includes(k)) {
198-
disable();
199-
} else {
200-
enabled_ts = null;
202+
if (is_toggle(event)) {
203+
if (is_holding()) {
204+
disable();
205+
} else {
206+
hold_start_ts = null;
207+
}
201208
}
202209
}
203210
@@ -249,8 +256,8 @@
249256
250257
function disable() {
251258
enabled = false;
252-
hasOpened = false;
253-
enabled_ts = null;
259+
has_opened = false;
260+
hold_start_ts = null;
254261
const b = document.body;
255262
listeners(b, enabled);
256263
if (options.customStyles) {
@@ -267,7 +274,8 @@
267274
}
268275
269276
function onLeave() {
270-
if (hasOpened) {
277+
// disable if a file has been opened or combo is held
278+
if (enabled && (has_opened || hold_start_ts)) {
271279
disable();
272280
}
273281
}

0 commit comments

Comments
 (0)