{ let targetInput = e.target.tagName === 'INPUT' || e.target.tagName === 'TEXTAREA' || e.target.tagName === 'SELECT' || e.target.role === 'combobox' || e.target.role === 'radio' || e.target.role === 'menu' || e.target.role === 'menuitem' || e.target.role === 'menuitemradio' || e.target.role === 'menuitemcheckbox'; 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)) { if (!targetInput) { copySelection(); e.preventDefault(); } } else if (e.key === 'x' && (e.metaKey || e.ctrlKey)) { if (!targetInput) { cutSelection(); e.preventDefault(); } } else if (e.key === 'v' && (e.metaKey || e.ctrlKey)) { if (!targetInput) { 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)) { if (!targetInput) { selectAll(); e.preventDefault(); } } else if (e.key === 'i' && (e.metaKey || e.ctrlKey)) { if ( $selection.size === 1 && $selection .getSelected() .every((item) => item instanceof ListFileItem || item instanceof ListTrackItem) ) { $editMetadata = true; } 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)) { if ($allHidden) { dbUtils.setHiddenToSelection(false); } else { dbUtils.setHiddenToSelection(true); } 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' ) { if (!targetInput) { 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); } }} />