{i18n._('menu.new')} {i18n._('menu.open')} {i18n._('menu.duplicate')} {i18n._('menu.close')} {i18n._('menu.close_all')} (exportState.current = ExportState.SELECTION)} disabled={$selection.size == 0} > {i18n._('menu.export')} (exportState.current = ExportState.ALL)} disabled={fileStateCollection.size == 0} > {i18n._('menu.export_all')} fileActionManager.undo()} disabled={!fileActionManager.canUndo} > {i18n._('menu.undo')} fileActionManager.redo()} disabled={!fileActionManager.canRedo} > {i18n._('menu.redo')} item instanceof ListFileItem || item instanceof ListTrackItem )} onclick={() => (editMetadata.current = true)} > {i18n._('menu.metadata.button')} item instanceof ListFileItem || item instanceof ListTrackItem )} onclick={() => (editStyle.current = true)} > {i18n._('menu.style.button')} { if ($allHidden) { fileActions.setHiddenToSelection(false); } else { fileActions.setHiddenToSelection(true); } }} disabled={$selection.size == 0} > {#if $allHidden} {i18n._('menu.unhide')} {:else} {i18n._('menu.hide')} {/if} {#if $treeFileView} {#if $selection.getSelected().some((item) => item instanceof ListFileItem)} fileActions.addNewTrack( $selection.getSelected()[0].getFileId() )} disabled={$selection.size !== 1} > {i18n._('menu.new_track')} {:else if $selection .getSelected() .some((item) => item instanceof ListTrackItem)} { let item = $selection.getSelected()[0]; fileActions.addNewSegment( item.getFileId(), item.getTrackIndex() ); }} disabled={$selection.size !== 1} > {i18n._('menu.new_segment')} {/if} {/if} {i18n._('menu.select_all')} { if ($selection.size > 0) { // centerMapOnSelection(); } }} > {i18n._('menu.center')} {#if $treeFileView} {i18n._('menu.copy')} {i18n._('menu.cut')} 0 && !allowedPastes[$copied[0].level].includes( $selection.getSelected().pop()?.level ))} onclick={pasteSelection} > {i18n._('menu.paste')} {/if} {i18n._('menu.delete')} {i18n._('menu.elevation_profile')} {i18n._('menu.tree_file_view')} {i18n._('menu.switch_basemap')} {i18n._('menu.toggle_overlays')} {i18n._('menu.distance_markers')} {i18n._('menu.direction_markers')} {i18n._('menu.toggle_3d')} {i18n._('menu.distance_units')} {i18n._('menu.metric')} {i18n._('menu.imperial')} {i18n._('menu.nautical')} {i18n._('menu.velocity_units')} {i18n._('quantities.speed')} {i18n._('quantities.pace')} {i18n._('menu.temperature_units')} {i18n._('menu.celsius')} {i18n._('menu.fahrenheit')} {i18n._('menu.language')} {#each Object.entries(languages) as [lang, label]} {label} {/each} {#if mode.current === 'light' || !mode.current} {:else} {/if} {i18n._('menu.mode')} { setMode(value as 'light' | 'dark'); }} > {i18n._('menu.light')} {i18n._('menu.dark')} {i18n._('menu.street_view_source')} {i18n._('menu.mapillary')} {i18n._('menu.google')} (layerSettingsOpen = true)}> {i18n._('menu.layers')}
{ let targetInput = e && e.target && (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)) { fileActions.duplicateSelection(); e.preventDefault(); } else if (e.key === 'c' && (e.metaKey || e.ctrlKey)) { if (!targetInput) { selection.copySelection(); e.preventDefault(); } } else if (e.key === 'x' && (e.metaKey || e.ctrlKey)) { if (!targetInput) { selection.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 (fileStateCollection.size > 0) { exportState.current = ExportState.ALL; } } else if ($selection.size > 0) { exportState.current = ExportState.SELECTION; } e.preventDefault(); } else if ((e.key === 'z' || e.key == 'Z') && (e.metaKey || e.ctrlKey)) { if (e.shiftKey) { fileActionManager.redo(); } else { fileActionManager.undo(); } e.preventDefault(); } else if ((e.key === 'Backspace' || e.key === 'Delete') && (e.metaKey || e.ctrlKey)) { if (!targetInput) { if (e.shiftKey) { fileActions.deleteAllFiles(); } else { fileActions.deleteSelection(); } e.preventDefault(); } } else if (e.key === 'a' && (e.metaKey || e.ctrlKey)) { if (!targetInput) { selection.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.current = 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)) { $treeFileView = !$treeFileView; e.preventDefault(); } else if (e.key === 'h' && (e.metaKey || e.ctrlKey)) { if ($allHidden) { fileActions.setHiddenToSelection(false); } else { fileActions.setHiddenToSelection(true); } e.preventDefault(); } else if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) { // if ($selection.size > 0) { // centerMapOnSelection(); // } } 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 === 'F5') { $routing = !$routing; 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); } }} />