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
vite.config.js.timestamp-*
23
vite.config.ts.timestamp-*
24
25
-
react-grid-layout
···
22
vite.config.js.timestamp-*
23
vite.config.ts.timestamp-*
24
25
+
references
+9
-8
src/lib/components/qr/qrOverlay.svelte.ts
···
23
return params.href || (node as HTMLAnchorElement).href || '';
24
}
25
26
-
function startLongPress() {
27
if (params.disabled) return;
0
0
28
isLongPress = false;
29
longPressTimer = setTimeout(() => {
30
isLongPress = true;
···
43
if (isLongPress) {
44
e.preventDefault();
45
isLongPress = false;
0
46
}
47
-
}
48
49
-
function handleContextMenu(e: MouseEvent) {
50
-
if (params.disabled) return;
51
-
e.preventDefault();
52
-
openModal?.(getHref(), params.context ?? {});
0
53
}
54
55
node.addEventListener('pointerdown', startLongPress);
···
57
node.addEventListener('pointercancel', cancelLongPress);
58
node.addEventListener('pointerleave', cancelLongPress);
59
node.addEventListener('click', handleClick);
60
-
node.addEventListener('contextmenu', handleContextMenu);
61
62
return {
63
update(newParams: { href?: string; context?: QRContext; disabled?: boolean }) {
···
69
node.removeEventListener('pointercancel', cancelLongPress);
70
node.removeEventListener('pointerleave', cancelLongPress);
71
node.removeEventListener('click', handleClick);
72
-
node.removeEventListener('contextmenu', handleContextMenu);
73
cancelLongPress();
74
}
75
};
···
23
return params.href || (node as HTMLAnchorElement).href || '';
24
}
25
26
+
function startLongPress(e: PointerEvent) {
27
if (params.disabled) return;
28
+
// Only start long press for primary button (touch/left-click), not right-click
29
+
if (e.button !== 0) return;
30
isLongPress = false;
31
longPressTimer = setTimeout(() => {
32
isLongPress = true;
···
45
if (isLongPress) {
46
e.preventDefault();
47
isLongPress = false;
48
+
return;
49
}
0
50
51
+
// Shift-click opens QR modal
52
+
if (e.shiftKey && !params.disabled) {
53
+
e.preventDefault();
54
+
openModal?.(getHref(), params.context ?? {});
55
+
}
56
}
57
58
node.addEventListener('pointerdown', startLongPress);
···
60
node.addEventListener('pointercancel', cancelLongPress);
61
node.addEventListener('pointerleave', cancelLongPress);
62
node.addEventListener('click', handleClick);
0
63
64
return {
65
update(newParams: { href?: string; context?: QRContext; disabled?: boolean }) {
···
71
node.removeEventListener('pointercancel', cancelLongPress);
72
node.removeEventListener('pointerleave', cancelLongPress);
73
node.removeEventListener('click', handleClick);
0
74
cancelLongPress();
75
}
76
};