{ if (e.key === '+' && (e.metaKey || e.ctrlKey)) { createFile(); e.preventDefault(); } else if (e.key === 'o' && (e.metaKey || e.ctrlKey)) { triggerFileInput(); e.preventDefault(); } else if (e.key === 'd' && (e.metaKey || e.ctrlKey)) { dbUtils.duplicateSelection(); e.preventDefault(); } else if (e.key === 'c' && (e.metaKey || e.ctrlKey)) { copySelection(); e.preventDefault(); } else if (e.key === 'x' && (e.metaKey || e.ctrlKey)) { cutSelection(); e.preventDefault(); } else if (e.key === 'v' && (e.metaKey || e.ctrlKey)) { if (e.target.tagName !== 'INPUT' && e.target.tagName !== 'TEXTAREA') { pasteSelection(); e.preventDefault(); } } else if ((e.key === 's' || e.key == 'S') && (e.metaKey || e.ctrlKey)) { if (e.shiftKey) { if ($fileObservers.size > 0) { $exportState = ExportState.ALL; } } else if ($selection.size > 0) { $exportState = ExportState.SELECTION; } e.preventDefault(); } else if ((e.key === 'z' || e.key == 'Z') && (e.metaKey || e.ctrlKey)) { if (e.shiftKey) { dbUtils.redo(); } else { dbUtils.undo(); } } else if ((e.key === 'Backspace' || e.key === 'Delete') && (e.metaKey || e.ctrlKey)) { if (e.shiftKey) { dbUtils.deleteAllFiles(); } else { dbUtils.deleteSelection(); } e.preventDefault(); } else if (e.key === 'a' && (e.metaKey || e.ctrlKey)) { selectAll(); e.preventDefault(); } else if (e.key === 'p' && (e.metaKey || e.ctrlKey)) { $elevationProfile = !$elevationProfile; e.preventDefault(); } else if (e.key === 'l' && (e.metaKey || e.ctrlKey)) { $verticalFileView = !$verticalFileView; e.preventDefault(); } else if (e.key === 'h' && (e.metaKey || e.ctrlKey)) { toggleSelectionVisibility(); e.preventDefault(); } else if (e.key === 'F1') { switchBasemaps(); e.preventDefault(); } else if (e.key === 'F2') { toggleOverlays(); e.preventDefault(); } else if (e.key === 'F3') { $distanceMarkers = !$distanceMarkers; e.preventDefault(); } else if (e.key === 'F4') { $directionMarkers = !$directionMarkers; e.preventDefault(); } else if ( e.key === 'ArrowRight' || e.key === 'ArrowDown' || e.key === 'ArrowLeft' || e.key === 'ArrowUp' ) { updateSelectionFromKey(e.key === 'ArrowRight' || e.key === 'ArrowDown', e.shiftKey); e.preventDefault(); } }} on:dragover={(e) => e.preventDefault()} on:drop={(e) => { e.preventDefault(); if (e.dataTransfer.files.length > 0) { loadFiles(e.dataTransfer.files); } }} />