tangled
alpha
login
or
join now
flo-bit.dev
/
blento
your personal website on atproto - mirror
blento.app
20
fork
atom
overview
issues
pulls
pipelines
move qr modal to shift click on desktop
Florian
3 days ago
650bfb0b
da5fd6fb
+10
-9
2 changed files
expand all
collapse all
unified
split
.gitignore
src
lib
components
qr
qrOverlay.svelte.ts
+1
-1
.gitignore
···
22
22
vite.config.js.timestamp-*
23
23
vite.config.ts.timestamp-*
24
24
25
25
-
react-grid-layout
25
25
+
references
+9
-8
src/lib/components/qr/qrOverlay.svelte.ts
···
23
23
return params.href || (node as HTMLAnchorElement).href || '';
24
24
}
25
25
26
26
-
function startLongPress() {
26
26
+
function startLongPress(e: PointerEvent) {
27
27
if (params.disabled) return;
28
28
+
// Only start long press for primary button (touch/left-click), not right-click
29
29
+
if (e.button !== 0) return;
28
30
isLongPress = false;
29
31
longPressTimer = setTimeout(() => {
30
32
isLongPress = true;
···
43
45
if (isLongPress) {
44
46
e.preventDefault();
45
47
isLongPress = false;
48
48
+
return;
46
49
}
47
47
-
}
48
50
49
49
-
function handleContextMenu(e: MouseEvent) {
50
50
-
if (params.disabled) return;
51
51
-
e.preventDefault();
52
52
-
openModal?.(getHref(), params.context ?? {});
51
51
+
// Shift-click opens QR modal
52
52
+
if (e.shiftKey && !params.disabled) {
53
53
+
e.preventDefault();
54
54
+
openModal?.(getHref(), params.context ?? {});
55
55
+
}
53
56
}
54
57
55
58
node.addEventListener('pointerdown', startLongPress);
···
57
60
node.addEventListener('pointercancel', cancelLongPress);
58
61
node.addEventListener('pointerleave', cancelLongPress);
59
62
node.addEventListener('click', handleClick);
60
60
-
node.addEventListener('contextmenu', handleContextMenu);
61
63
62
64
return {
63
65
update(newParams: { href?: string; context?: QRContext; disabled?: boolean }) {
···
69
71
node.removeEventListener('pointercancel', cancelLongPress);
70
72
node.removeEventListener('pointerleave', cancelLongPress);
71
73
node.removeEventListener('click', handleClick);
72
72
-
node.removeEventListener('contextmenu', handleContextMenu);
73
74
cancelLongPress();
74
75
}
75
76
};