your personal website on atproto - mirror blento.app

move qr modal to shift click on desktop

+10 -9
+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; 28 isLongPress = false; 29 longPressTimer = setTimeout(() => { 30 isLongPress = true; ··· 43 if (isLongPress) { 44 e.preventDefault(); 45 isLongPress = false; 46 } 47 - } 48 49 - function handleContextMenu(e: MouseEvent) { 50 - if (params.disabled) return; 51 - e.preventDefault(); 52 - openModal?.(getHref(), params.context ?? {}); 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 } 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); 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); 74 cancelLongPress(); 75 } 76 };