refactoring

This commit is contained in:
vcoppe committed 2026-10-11 11:18:36 +02:00
1 parent 4795513344
commit 890bcd765a
169 files changed
+263 -256

No files matched your search

+1 -1
View File
@@ -1,5 +1,5 @@
import { base } from '$app/paths';
import { languages } from '$lib/languages';
import { languages } from '$lib/i18n/languages';
import { getURLForLanguage } from '$lib/utils';
export async function handle({ event, resolve }) {
@@ -1,6 +1,6 @@
import { describe, it } from 'node:test';
import assert from 'node:assert/strict';
import { defaultFileName } from './default-file-name';
import { defaultFileName } from '$lib/actions/default-file-name';
describe('default file name', () => {
it('is the default name when there is no other file with it', () => {
@@ -1,9 +1,9 @@
import { currentTool, Tool } from '$lib/components/toolbar/tools';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import { get } from 'svelte/store';
import { boundsManager } from './bounds';
import { boundsManager } from '$lib/state/bounds';
import { engine } from '$lib/engine';
import { defaultFileName } from '$lib/default-file-name';
import { defaultFileName } from '$lib/actions/default-file-name';
/** The name of a new file: the translated default name, numbered if other files have it. */
export function newFileName() {
@@ -2,7 +2,7 @@
import docsearch from '@docsearch/js';
import '@docsearch/css';
import { onMount } from 'svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
let props: {
class?: string;
+1 -1
View File
@@ -4,7 +4,7 @@
import ModeSwitch from '$lib/components/ModeSwitch.svelte';
import Logo from '$lib/components/Logo.svelte';
import { AtSign, BookOpenText, Heart, House, Map } from '@lucide/svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import { getURLForLanguage } from '$lib/utils';
</script>
@@ -5,11 +5,11 @@
import { MoveDownRight, MoveUpRight, Ruler, Timer, Zap } from '@lucide/svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import type { Readable } from 'svelte/store';
import type { SelectionStatistics } from '$lib/engine';
import type { SlicedStatistics } from '$lib/logic/selection-statistics';
import { settings } from '$lib/logic/settings';
import type { SlicedStatistics } from '$lib/state/selection-statistics';
import { settings } from '$lib/state/settings';
const { velocityUnits } = settings;
+1 -1
View File
@@ -1,6 +1,6 @@
<script lang="ts">
import { CircleQuestionMark } from '@lucide/svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import type { Snippet } from 'svelte';
let {
@@ -1,10 +1,10 @@
<script lang="ts">
import { page } from '$app/state';
import * as Select from '$lib/components/ui/select';
import { languages } from '$lib/languages';
import { languages } from '$lib/i18n/languages';
import { getURLForLanguage } from '$lib/utils';
import { Languages } from '@lucide/svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
</script>
<Select.Root type="single" value={i18n.lang}>
+8 -8
View File
@@ -51,19 +51,19 @@
import { editStyle } from '$lib/components/file-list/style/utils.svelte';
import { exportState, ExportState } from '$lib/components/export/utils.svelte';
import { anySelectedLayer } from '$lib/components/map/layer-control/utils';
import { defaultOverlays } from '$lib/assets/layers';
import { defaultOverlays } from '$lib/data/layers';
import LayerControlSettings from '$lib/components/map/layer-control/LayerControlSettings.svelte';
import Export from '$lib/components/export/Export.svelte';
import { mode, setMode } from 'mode-watcher';
import { i18n } from '$lib/i18n.svelte';
import { languages } from '$lib/languages';
import { i18n } from '$lib/i18n/i18n.svelte';
import { languages } from '$lib/i18n/languages';
import { getURLForLanguage } from '$lib/utils';
import { settings } from '$lib/logic/settings';
import { createFile, loadFiles, triggerFileInput } from '$lib/logic/file-actions';
import { settings } from '$lib/state/settings';
import { createFile, loadFiles, triggerFileInput } from '$lib/actions/file-actions';
import { engine } from '$lib/engine';
import { allHidden } from '$lib/all-hidden';
import { selectionSize } from '$lib/selection-helpers';
import { boundsManager } from '$lib/logic/bounds';
import { allHidden } from '$lib/engine/all-hidden';
import { selectionSize } from '$lib/engine/selection-helpers';
import { boundsManager } from '$lib/state/bounds';
import { onMount } from 'svelte';
const {
+1 -1
View File
@@ -2,7 +2,7 @@
import { Button } from '$lib/components/ui/button';
import { Moon, Sun } from '@lucide/svelte';
import { mode, setMode } from 'mode-watcher';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
let {
class: className = '',
+1 -1
View File
@@ -2,7 +2,7 @@
import Logo from '$lib/components/Logo.svelte';
import { Button } from '$lib/components/ui/button';
import { BookOpenText, House, Map } from '@lucide/svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import { getURLForLanguage } from '$lib/utils';
</script>
+1 -1
View File
@@ -1,7 +1,7 @@
<script lang="ts">
import { isMac, isSafari } from '$lib/utils';
import { onMount } from 'svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import * as Kbd from '$lib/components/ui/kbd/index.js';
let {
+3 -3
View File
@@ -8,9 +8,9 @@
getElevationUnits,
getVelocityUnits,
secondsToHHMMSS,
} from '$lib/units';
import { i18n } from '$lib/i18n.svelte';
import { settings } from '$lib/logic/settings';
} from '$lib/units/units';
import { i18n } from '$lib/i18n/i18n.svelte';
import { settings } from '$lib/state/settings';
let {
value,
@@ -1,7 +1,7 @@
import assert from 'node:assert/strict';
import { existsSync } from 'node:fs';
import { describe, it } from 'node:test';
import { languages } from '$lib/languages';
import { languages } from '$lib/i18n/languages';
import { getNextGuide, getPreviousGuide, guides } from './guides';
/** Every page of the help in reading order, as the links at the bottom of the pages follow them. */
@@ -18,11 +18,11 @@
Construction,
} from '@lucide/svelte';
import type { Readable, Writable } from 'svelte/store';
import type { Coordinates } from '$lib/geo';
import type { Coordinates } from '$lib/geo/coordinates';
import type { SelectionStatistics } from '$lib/engine';
import type { SlicedStatistics } from '$lib/logic/selection-statistics';
import { settings } from '$lib/logic/settings';
import { i18n } from '$lib/i18n.svelte';
import type { SlicedStatistics } from '$lib/state/selection-statistics';
import { settings } from '$lib/state/settings';
import { i18n } from '$lib/i18n/i18n.svelte';
import { ElevationProfile } from '$lib/components/elevation-profile/elevation-profile';
const { velocityUnits } = settings;
@@ -1,5 +1,5 @@
import { i18n } from '$lib/i18n.svelte';
import { settings } from '$lib/logic/settings';
import { i18n } from '$lib/i18n/i18n.svelte';
import { settings } from '$lib/state/settings';
import {
getCadenceWithUnits,
getConvertedDistance,
@@ -13,7 +13,7 @@ import {
getPowerWithUnits,
getTemperatureWithUnits,
getVelocityWithUnits,
} from '$lib/units';
} from '$lib/units/units';
import Chart, {
type ChartEvent,
type ChartOptions,
@@ -21,7 +21,7 @@ import Chart, {
type TooltipItem,
} from 'chart.js/auto';
import { get, type Readable, type Writable } from 'svelte/store';
import type { Coordinates } from '$lib/geo';
import type { Coordinates } from '$lib/geo/coordinates';
import {
engine,
NO_TIME,
@@ -29,10 +29,10 @@ import {
type StatisticsMetric,
type StatisticsRequest,
} from '$lib/engine';
import type { SlicedStatistics } from '$lib/logic/selection-statistics';
import type { SlicedStatistics } from '$lib/state/selection-statistics';
import { mode } from 'mode-watcher';
import { categoryValues } from '$lib/trackpoint-categories';
import { getHighwayColor, getSlopeColor, getSurfaceColor } from '$lib/assets/colors';
import { categoryValues } from '$lib/engine/trackpoint-categories';
import { getHighwayColor, getSlopeColor, getSurfaceColor } from '$lib/data/colors';
const { distanceUnits, velocityUnits, temperatureUnits } = settings;
@@ -13,12 +13,12 @@
type EmbeddingOptions,
} from './embedding';
import { setMode } from 'mode-watcher';
import { settings } from '$lib/logic/settings';
import { loadFiles } from '$lib/logic/file-actions';
import { settings } from '$lib/state/settings';
import { loadFiles } from '$lib/actions/file-actions';
import { untrack } from 'svelte';
import { isSelected, toggle } from '$lib/components/map/layer-control/utils';
import { engine } from '$lib/engine';
import { hoveredPoint, slicedStatistics } from '$lib/logic/selection-statistics';
import { hoveredPoint, slicedStatistics } from '$lib/state/selection-statistics';
let {
useHash = true,
@@ -15,7 +15,7 @@
Milestone,
Video,
} from '@lucide/svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import {
allowedEmbeddingBasemaps,
defaultEmbeddingOptions,
@@ -2,7 +2,7 @@
import { Button } from '$lib/components/ui/button';
import Logo from '$lib/components/Logo.svelte';
import { getURLForLanguage } from '$lib/utils';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
let {
files,
@@ -1,5 +1,5 @@
import { PUBLIC_MAPTILER_KEY } from '$env/static/public';
import { basemaps } from '$lib/assets/layers';
import { basemaps } from '$lib/data/layers';
export type EmbeddingOptions = {
key: string;
@@ -23,7 +23,7 @@
SquareActivity,
Route,
} from '@lucide/svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import { engine, type ExportOptions } from '$lib/engine';
const selection = engine.selection;
@@ -5,10 +5,10 @@
import { onMount, setContext } from 'svelte';
import { ClipboardPaste, FileStack, Plus } from '@lucide/svelte';
import Shortcut from '$lib/components/Shortcut.svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import { engine } from '$lib/engine';
import { selectedFileIds } from '$lib/selection-helpers';
import { createFile } from '$lib/logic/file-actions';
import { selectedFileIds } from '$lib/engine/selection-helpers';
import { createFile } from '$lib/actions/file-actions';
let {
orientation,
@@ -3,15 +3,15 @@
import FileListNodeContent from './FileListNodeContent.svelte';
import FileListNodeLabel from './FileListNodeLabel.svelte';
import { getContext } from 'svelte';
import { i18n } from '$lib/i18n.svelte';
import { settings } from '$lib/logic/settings';
import { i18n } from '$lib/i18n/i18n.svelte';
import { settings } from '$lib/state/settings';
import { engine, type FileState } from '$lib/engine';
import {
elementId,
hasSelectionWithin,
isSelected,
type FileTreeNode,
} from '$lib/selection-helpers';
} from '$lib/engine/selection-helpers';
let {
fileState,
@@ -5,7 +5,7 @@
import FileListNodeContent from './FileListNodeContent.svelte';
import { allowedMoves, dragging, SortableFileList, type ListLevel } from './sortable-file-list';
import { engine, type FileState } from '$lib/engine';
import type { FileTreeNode } from '$lib/selection-helpers';
import type { FileTreeNode } from '$lib/engine/selection-helpers';
let {
fileState,
@@ -19,16 +19,16 @@
FileStack,
} from '@lucide/svelte';
import { getContext } from 'svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import MetadataDialog from '$lib/components/file-list/metadata/MetadataDialog.svelte';
import { editMetadata } from '$lib/components/file-list/metadata/utils.svelte';
import StyleDialog from '$lib/components/file-list/style/StyleDialog.svelte';
import { editStyle } from '$lib/components/file-list/style/utils.svelte';
import { getSymbolKey, symbols } from '$lib/assets/symbols';
import { getSymbolKey, symbols } from '$lib/data/symbols';
import { engine, type FileState } from '$lib/engine';
import { allHidden } from '$lib/all-hidden';
import { normalizeColor } from '$lib/file-colors';
import { isHidden } from '$lib/file-visibility';
import { allHidden } from '$lib/engine/all-hidden';
import { normalizeColor } from '$lib/engine/file-colors';
import { isHidden } from '$lib/engine/file-visibility';
import {
elementId,
isInClipboard,
@@ -36,8 +36,8 @@
selectedElementIds,
selectionSize,
type FileTreeNode,
} from '$lib/selection-helpers';
import { boundsManager } from '$lib/logic/bounds';
} from '$lib/engine/selection-helpers';
import { boundsManager } from '$lib/state/bounds';
import { waypointPopup } from '$lib/components/map/gpx-layer/gpx-layer-popup';
let {
@@ -5,10 +5,10 @@
import { Label } from '$lib/components/ui/label/index.js';
import * as Popover from '$lib/components/ui/popover';
import { Save } from '@lucide/svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import { editMetadata } from '$lib/components/file-list/metadata/utils.svelte';
import { engine, type FileState } from '$lib/engine';
import type { FileTreeNode } from '$lib/selection-helpers';
import type { FileTreeNode } from '$lib/engine/selection-helpers';
let {
fileState,
@@ -3,7 +3,7 @@ import Sortable, { type Direction } from 'sortablejs/Sortable';
import { get, writable } from 'svelte/store';
import { tick } from 'svelte';
import { engine, type MoveTarget, type Selection } from '$lib/engine';
import { isSelected, type FileTreeNode } from '$lib/selection-helpers';
import { isSelected, type FileTreeNode } from '$lib/engine/selection-helpers';
/** What a list holds: the files, the tracks of a file, the segments of a track, or the waypoints. */
export type ListLevel = 'file' | 'track' | 'segment' | 'waypoints' | 'waypoint';
@@ -6,11 +6,11 @@
import * as Popover from '$lib/components/ui/popover';
import { Save } from '@lucide/svelte';
import { editStyle } from '$lib/components/file-list/style/utils.svelte';
import { i18n } from '$lib/i18n.svelte';
import { settings } from '$lib/logic/settings';
import { i18n } from '$lib/i18n/i18n.svelte';
import { settings } from '$lib/state/settings';
import { engine, type FileState } from '$lib/engine';
import { normalizeColor } from '$lib/file-colors';
import { selectedFileIds, type FileTreeNode } from '$lib/selection-helpers';
import { normalizeColor } from '$lib/engine/file-colors';
import { selectedFileIds, type FileTreeNode } from '$lib/engine/selection-helpers';
import { untrack } from 'svelte';
let {
+1 -1
View File
@@ -1,7 +1,7 @@
<script lang="ts">
import { onDestroy, onMount } from 'svelte';
import { Button } from '$lib/components/ui/button';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import { page } from '$app/state';
import { map } from '$lib/components/map/map';
import { PUBLIC_MAPTILER_KEY } from '$env/static/public';
@@ -1,7 +1,7 @@
<script lang="ts">
import { Button } from '$lib/components/ui/button';
import { ClipboardCopy } from '@lucide/svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
let {
coordinates,
@@ -4,12 +4,16 @@
import * as Card from '$lib/components/ui/card';
import WithUnits from '$lib/components/WithUnits.svelte';
import { Compass, Earth, Mountain, Timer } from '@lucide/svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import type { PopupItem } from '$lib/components/map/map-popup';
import type { TrackpointDetails } from '$lib/engine';
import { map } from '$lib/components/map/map';
let { trackpoint }: { trackpoint: PopupItem<Pick<TrackpointDetails, 'lng' | 'lat'> & Partial<TrackpointDetails>> } = $props();
let {
trackpoint,
}: {
trackpoint: PopupItem<Pick<TrackpointDetails, 'lng' | 'lat'> & Partial<TrackpointDetails>>;
} = $props();
</script>
<Card.Root class="border-none shadow-md text-base p-2">
@@ -6,13 +6,13 @@
import WithUnits from '$lib/components/WithUnits.svelte';
import { Dot, ExternalLink, Trash2 } from '@lucide/svelte';
import { currentTool, Tool } from '$lib/components/toolbar/tools';
import { getSymbolKey, symbols } from '$lib/assets/symbols';
import { i18n } from '$lib/i18n.svelte';
import { getSymbolKey, symbols } from '$lib/data/symbols';
import { i18n } from '$lib/i18n/i18n.svelte';
import sanitizeHtml from 'sanitize-html';
import { ScrollArea } from '$lib/components/ui/scroll-area/index.js';
import type { PopupItem } from '$lib/components/map/map-popup';
import { engine, type WaypointDetails } from '$lib/engine';
import { hasSelectionWithin } from '$lib/selection-helpers';
import { hasSelectionWithin } from '$lib/engine/selection-helpers';
let {
waypoint,
@@ -1,9 +1,9 @@
import { settings } from '$lib/logic/settings';
import { settings } from '$lib/state/settings';
import { engine } from '$lib/engine';
import { getConvertedDistanceToKilometers } from '$lib/units';
import { getConvertedDistanceToKilometers } from '$lib/units/units';
import { get } from 'svelte/store';
import { map } from '$lib/components/map/map';
import { allHidden } from '$lib/all-hidden';
import { allHidden } from '$lib/engine/all-hidden';
import type { GeoJSONSource } from 'maplibre-gl';
import { ANCHOR_LAYER_KEY } from '$lib/components/map/style';
@@ -7,18 +7,18 @@ import maplibregl, {
} from 'maplibre-gl';
import { map } from '$lib/components/map/map';
import { waypointPopup, trackpointPopup } from './gpx-layer-popup';
import { closestPointIndex } from '$lib/closest-point';
import { closestPointIndex } from '$lib/geo/closest-point';
import { getElevation, loadSVGIcon } from '$lib/utils';
import { selectedWaypoint } from '$lib/components/toolbar/tools/waypoint/waypoint';
import { MapPin, Square } from 'lucide-static';
import { getSymbolKey, symbols } from '$lib/assets/symbols';
import { getSymbolKey, symbols } from '$lib/data/symbols';
import { engine, type FileState, type Selection } from '$lib/engine';
import { isCovered, hasSelectionWithin, type FileTreeNode } from '$lib/selection-helpers';
import { isSegmentHidden, isWaypointHidden } from '$lib/file-visibility';
import { settings } from '$lib/logic/settings';
import { isCovered, hasSelectionWithin, type FileTreeNode } from '$lib/engine/selection-helpers';
import { isSegmentHidden, isWaypointHidden } from '$lib/engine/file-visibility';
import { settings } from '$lib/state/settings';
import { currentTool, Tool } from '$lib/components/toolbar/tools';
import { splitAtPoint } from '$lib/components/toolbar/tools/scissors/scissors';
import { mapCursor, MapCursorState } from '$lib/logic/map-cursor';
import { mapCursor, MapCursorState } from '$lib/state/map-cursor';
import { ANCHOR_LAYER_KEY } from '$lib/components/map/style';
export function getSvgForSymbol(symbol?: string | undefined, layerColor?: string | undefined) {
@@ -2,10 +2,10 @@ import { currentTool, Tool } from '$lib/components/toolbar/tools';
import type { GeoJSONSource } from 'maplibre-gl';
import { get } from 'svelte/store';
import { map } from '$lib/components/map/map';
import { allHidden } from '$lib/all-hidden';
import { allHidden } from '$lib/engine/all-hidden';
import { ANCHOR_LAYER_KEY } from '$lib/components/map/style';
import { loadSVGIcon } from '$lib/utils';
import { hoveredPoint, slicedStatistics } from '$lib/logic/selection-statistics';
import { hoveredPoint, slicedStatistics } from '$lib/state/selection-statistics';
import { engine } from '$lib/engine';
const startMarkerSVG = `<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
@@ -17,11 +17,11 @@
Map,
Layers2,
} from '@lucide/svelte';
import { i18n } from '$lib/i18n.svelte';
import { defaultBasemap, type CustomLayer } from '$lib/assets/layers';
import { i18n } from '$lib/i18n/i18n.svelte';
import { defaultBasemap, type CustomLayer } from '$lib/data/layers';
import { onMount } from 'svelte';
import { remove } from './utils';
import { settings } from '$lib/logic/settings';
import { settings } from '$lib/state/settings';
import { dndzone } from 'svelte-dnd-action';
const {
@@ -5,7 +5,7 @@
import { Separator } from '$lib/components/ui/separator';
import { ScrollArea } from '$lib/components/ui/scroll-area/index.js';
import { Layers } from '@lucide/svelte';
import { settings } from '$lib/logic/settings';
import { settings } from '$lib/state/settings';
import { map } from '$lib/components/map/map';
let container: HTMLDivElement;
@@ -14,12 +14,12 @@
overlayTree,
overpassTree,
terrainSources,
} from '$lib/assets/layers';
} from '$lib/data/layers';
import { getLayers, isSelected, toggle } from '$lib/components/map/layer-control/utils';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import { map } from '$lib/components/map/map';
import CustomLayers from './CustomLayers.svelte';
import { settings } from '$lib/logic/settings';
import { settings } from '$lib/state/settings';
import { untrack } from 'svelte';
import { extensionAPI } from '$lib/components/map/layer-control/extension-api';
@@ -1,6 +1,6 @@
<script lang="ts">
import LayerTreeNode from './LayerTreeNode.svelte';
import { type LayerTreeType } from '$lib/assets/layers';
import { type LayerTreeType } from '$lib/data/layers';
import CollapsibleTree from '$lib/components/collapsible-tree/CollapsibleTree.svelte';
let {
@@ -3,10 +3,10 @@
import { Label } from '$lib/components/ui/label';
import { Checkbox } from '$lib/components/ui/checkbox';
import CollapsibleTreeNode from '$lib/components/collapsible-tree/CollapsibleTreeNode.svelte';
import { type LayerTreeType } from '$lib/assets/layers';
import { type LayerTreeType } from '$lib/data/layers';
import { anySelectedLayer } from './utils';
import { i18n } from '$lib/i18n.svelte';
import { settings } from '$lib/logic/settings';
import { i18n } from '$lib/i18n/i18n.svelte';
import { settings } from '$lib/state/settings';
import { extensionAPI } from '$lib/components/map/layer-control/extension-api';
let {
@@ -2,11 +2,11 @@
import * as Card from '$lib/components/ui/card';
import { Button } from '$lib/components/ui/button';
import { PencilLine, MapPin } from '@lucide/svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import { ScrollArea } from '$lib/components/ui/scroll-area/index.js';
import type { PopupItem } from '$lib/components/map/map-popup';
import { engine } from '$lib/engine';
import { selectionSize } from '$lib/selection-helpers';
import { selectionSize } from '$lib/engine/selection-helpers';
import { getElevation } from '$lib/utils';
let {
@@ -2,9 +2,9 @@
import assert from 'node:assert/strict';
import { afterEach, beforeEach, describe, it } from 'node:test';
import { get } from 'svelte/store';
import { overlays, overlayTree, type LayerTreeType } from '$lib/assets/layers';
import { overlays, overlayTree, type LayerTreeType } from '$lib/data/layers';
import { engine } from '$lib/engine';
import { settings } from '$lib/logic/settings';
import { settings } from '$lib/state/settings';
import { ExtensionAPI, type CustomOverlay } from './extension-api';
import { isSelected } from './utils';
@@ -1,7 +1,7 @@
import { settings } from '$lib/logic/settings';
import { settings } from '$lib/state/settings';
import { derived, get, writable, type Writable } from 'svelte/store';
import { isSelected, remove, removeAll } from './utils';
import { overlays, overlayTree } from '$lib/assets/layers';
import { overlays, overlayTree } from '$lib/data/layers';
import { browser } from '$app/environment';
import { map } from '$lib/components/map/map';
@@ -1,14 +1,14 @@
import { SphericalMercator } from '@mapbox/sphericalmercator';
import { getLayers } from './utils';
import { get, writable } from 'svelte/store';
import { overpassQueryData } from '$lib/assets/layers';
import { overpassQueryData } from '$lib/data/layers';
import { MapPopup } from '$lib/components/map/map-popup';
import { settings } from '$lib/logic/settings';
import { settings } from '$lib/state/settings';
import type { GeoJSONSource } from 'maplibre-gl';
import { ANCHOR_LAYER_KEY } from '$lib/components/map/style';
import type { MapLayerEventManager } from '$lib/components/map/map-layer-event-manager';
import { loadSVGIcon } from '$lib/utils';
import { cachedFetch } from '$lib/cached-fetch';
import { cachedFetch } from '$lib/storage/cached-fetch';
const { currentOverpassQueries } = settings;
@@ -1,6 +1,6 @@
import assert from 'node:assert/strict';
import { describe, it } from 'node:test';
import type { LayerTreeType } from '$lib/assets/layers';
import type { LayerTreeType } from '$lib/data/layers';
import { anySelectedLayer, getLayers, isSelected, remove, removeAll, toggle } from './utils';
// roads: bike (selected), foot
@@ -1,4 +1,4 @@
import type { LayerTreeType } from '$lib/assets/layers';
import type { LayerTreeType } from '$lib/data/layers';
export function anySelectedLayer(node: LayerTreeType) {
return (
+1 -1
View File
@@ -5,7 +5,7 @@ import MaplibreGeocoder, {
} from '@maplibre/maplibre-gl-geocoder';
import '@maplibre/maplibre-gl-geocoder/dist/maplibre-gl-geocoder.css';
import { get, writable, type Writable } from 'svelte/store';
import { settings } from '$lib/logic/settings';
import { settings } from '$lib/state/settings';
import { tick } from 'svelte';
import { ANCHOR_LAYER_KEY, StyleManager } from '$lib/components/map/style';
import { MapLayerEventManager } from '$lib/components/map/map-layer-event-manager';
@@ -5,8 +5,8 @@
import { PersonStanding, X } from '@lucide/svelte';
import { MapillaryLayer } from './mapillary';
import { GoogleRedirect } from './google';
import { settings } from '$lib/logic/settings';
import { i18n } from '$lib/i18n.svelte';
import { settings } from '$lib/state/settings';
import { i18n } from '$lib/i18n/i18n.svelte';
import { onMount } from 'svelte';
import ButtonWithTooltip from '$lib/components/ButtonWithTooltip.svelte';
@@ -1,4 +1,4 @@
import { mapCursor, MapCursorState } from '$lib/logic/map-cursor';
import { mapCursor, MapCursorState } from '$lib/state/map-cursor';
export class GoogleRedirect {
map: maplibregl.Map;
@@ -1,7 +1,7 @@
import maplibregl, { type LayerSpecification, type VectorSourceSpecification } from 'maplibre-gl';
import { Viewer, type ViewerBearingEvent } from 'mapillary-js/dist/mapillary.module';
import 'mapillary-js/dist/mapillary.css';
import { mapCursor, MapCursorState } from '$lib/logic/map-cursor';
import { mapCursor, MapCursorState } from '$lib/state/map-cursor';
import { ANCHOR_LAYER_KEY } from '$lib/components/map/style';
import type { MapLayerEventManager } from '$lib/components/map/map-layer-event-manager';
+3 -3
View File
@@ -1,4 +1,4 @@
import { settings } from '$lib/logic/settings';
import { settings } from '$lib/state/settings';
import { get, type Writable } from 'svelte/store';
import {
basemaps,
@@ -6,9 +6,9 @@ import {
maptilerKeyPlaceHolder,
overlays,
terrainSources,
} from '$lib/assets/layers';
} from '$lib/data/layers';
import { getLayers } from '$lib/components/map/layer-control/utils';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
const { currentBasemap, currentOverlays, customLayers, opacities, terrainSource, distanceUnits } =
settings;
@@ -13,7 +13,7 @@
Scissors,
MountainSnow,
} from '@lucide/svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
let props: {
class?: string;
@@ -12,7 +12,7 @@
import Reduce from '$lib/components/toolbar/tools/reduce/Reduce.svelte';
import RoutingControlPopup from '$lib/components/toolbar/tools/routing/RoutingControlPopup.svelte';
import maplibregl from 'maplibre-gl';
import { settings } from '$lib/logic/settings';
import { settings } from '$lib/state/settings';
let {
class: className = '',
@@ -11,14 +11,14 @@
import * as RadioGroup from '$lib/components/ui/radio-group';
import { Button } from '$lib/components/ui/button';
import Help from '$lib/components/Help.svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import { onDestroy, onMount } from 'svelte';
import { getURLForLanguage } from '$lib/utils';
import { Trash2 } from '@lucide/svelte';
import { map } from '$lib/components/map/map';
import type { GeoJSONSource } from 'maplibre-gl';
import { engine } from '$lib/engine';
import { mapCursor, MapCursorState } from '$lib/logic/map-cursor';
import { mapCursor, MapCursorState } from '$lib/state/map-cursor';
import { ANCHOR_LAYER_KEY } from '$lib/components/map/style';
let props: {
@@ -2,7 +2,7 @@
import { Button } from '$lib/components/ui/button';
import Help from '$lib/components/Help.svelte';
import { MountainSnow } from '@lucide/svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import { getElevation, getURLForLanguage } from '$lib/utils';
import { engine } from '$lib/engine';
import { get } from 'svelte/store';
@@ -2,7 +2,7 @@
import { Button } from '$lib/components/ui/button';
import { Ungroup } from '@lucide/svelte';
import Help from '$lib/components/Help.svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import { getURLForLanguage } from '$lib/utils';
import { get } from 'svelte/store';
import { engine } from '$lib/engine';
@@ -11,7 +11,7 @@
import { Label } from '$lib/components/ui/label/index.js';
import { Checkbox } from '$lib/components/ui/checkbox';
import * as RadioGroup from '$lib/components/ui/radio-group';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import { Group } from '@lucide/svelte';
import { getURLForLanguage } from '$lib/utils';
import Shortcut from '$lib/components/Shortcut.svelte';
@@ -10,14 +10,14 @@
getConvertedVelocity,
milesToKilometers,
nauticalMilesToKilometers,
} from '$lib/units';
} from '$lib/units/units';
import { CalendarDate, type DateValue } from '@internationalized/date';
import { CalendarClock, CirclePlay, CircleStop, CircleX, Timer, Zap } from '@lucide/svelte';
import { untrack } from 'svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import Help from '$lib/components/Help.svelte';
import { getURLForLanguage } from '$lib/utils';
import { settings } from '$lib/logic/settings';
import { settings } from '$lib/state/settings';
import { engine } from '$lib/engine';
let props: {
@@ -4,7 +4,7 @@
import { Slider } from '$lib/components/ui/slider';
import Help from '$lib/components/Help.svelte';
import { Funnel } from '@lucide/svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import WithUnits from '$lib/components/WithUnits.svelte';
import { onDestroy } from 'svelte';
import { getURLForLanguage } from '$lib/utils';
@@ -22,16 +22,16 @@
SquareArrowOutDownRight,
} from '@lucide/svelte';
import { routingProfiles } from '$lib/components/toolbar/tools/routing/routing';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import { slide } from 'svelte/transition';
import { get } from 'svelte/store';
import { getURLForLanguage } from '$lib/utils';
import { onDestroy, onMount } from 'svelte';
import { settings } from '$lib/logic/settings';
import { settings } from '$lib/state/settings';
import { map } from '$lib/components/map/map';
import { engine } from '$lib/engine';
import { newFileName } from '$lib/logic/file-actions';
import { mapCursor, MapCursorState } from '$lib/logic/map-cursor';
import { newFileName } from '$lib/actions/file-actions';
import { mapCursor, MapCursorState } from '$lib/state/map-cursor';
import { RoutingControls } from './routing-controls';
let {
@@ -5,7 +5,7 @@
import { canChangeStart } from './routing-controls';
import { CirclePlay, Trash2 } from '@lucide/svelte';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
let {
element = $bindable(),
@@ -1,4 +1,4 @@
import { distance, type Coordinates } from '$lib/geo';
import { distance, type Coordinates } from '$lib/geo/coordinates';
import { get, writable } from 'svelte/store';
import maplibregl, {
type MapMouseEvent,
@@ -9,14 +9,14 @@ import maplibregl, {
import { route } from './routing';
import { toast } from 'svelte-sonner';
import { loadSVGIcon } from '$lib/utils';
import { mapCursor, MapCursorState } from '$lib/logic/map-cursor';
import { mapCursor, MapCursorState } from '$lib/state/map-cursor';
import { currentTool, Tool } from '$lib/components/toolbar/tools';
import { streetViewEnabled } from '$lib/components/map/street-view-control/utils';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import { map } from '$lib/components/map/map';
import { ANCHOR_LAYER_KEY } from '$lib/components/map/style';
import { settings } from '$lib/logic/settings';
import { closestPointIndexIn } from '$lib/closest-point';
import { settings } from '$lib/state/settings';
import { closestPointIndexIn } from '$lib/geo/closest-point';
import {
engine,
type Selection,
@@ -1,6 +1,6 @@
import assert from 'node:assert/strict';
import { describe, it } from 'node:test';
import { distance } from '$lib/geo';
import { distance } from '$lib/geo/coordinates';
import {
brouterError,
getTags,
@@ -1,5 +1,5 @@
import { distance, type Coordinates } from '$lib/geo';
import { settings } from '$lib/logic/settings';
import { distance, type Coordinates } from '$lib/geo/coordinates';
import { settings } from '$lib/state/settings';
import { getElevation } from '$lib/utils';
import { get } from 'svelte/store';
@@ -7,12 +7,12 @@
import * as Select from '$lib/components/ui/select';
import { Separator } from '$lib/components/ui/separator';
import { map } from '$lib/components/map/map';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import { onDestroy, onMount, untrack } from 'svelte';
import { Crop } from '@lucide/svelte';
import { SplitControls } from './split-controls';
import { getURLForLanguage } from '$lib/utils';
import { slicedStatistics } from '$lib/logic/selection-statistics';
import { slicedStatistics } from '$lib/state/selection-statistics';
import { engine } from '$lib/engine';
let props: {
@@ -1,6 +1,6 @@
import { get, writable, type Writable } from 'svelte/store';
import { engine, type SplitType as EngineSplitType } from '$lib/engine';
import { closestPointIndexIn } from '$lib/closest-point';
import { closestPointIndexIn } from '$lib/geo/closest-point';
/** What a split cuts in two, the values being the ones of the engine. */
export const SplitType = {
@@ -2,7 +2,7 @@ import { currentTool, Tool } from '$lib/components/toolbar/tools';
import { splitAs } from '$lib/components/toolbar/tools/scissors/scissors';
import { Scissors } from 'lucide-static';
import { get } from 'svelte/store';
import { mapCursor, MapCursorState } from '$lib/logic/map-cursor';
import { mapCursor, MapCursorState } from '$lib/state/map-cursor';
import type { GeoJSONSource } from 'maplibre-gl';
import { ANCHOR_LAYER_KEY } from '$lib/components/map/style';
import type { MapLayerEventManager } from '$lib/components/map/map-layer-event-manager';
@@ -4,18 +4,18 @@
import { Label } from '$lib/components/ui/label/index.js';
import { Button } from '$lib/components/ui/button';
import * as Select from '$lib/components/ui/select';
import { i18n } from '$lib/i18n.svelte';
import { i18n } from '$lib/i18n/i18n.svelte';
import Help from '$lib/components/Help.svelte';
import { onDestroy, onMount, untrack } from 'svelte';
import { getURLForLanguage } from '$lib/utils';
import { MapPin, CircleX, Save } from '@lucide/svelte';
import { getSymbolKey, symbols } from '$lib/assets/symbols';
import { getSymbolKey, symbols } from '$lib/data/symbols';
import { engine } from '$lib/engine';
import { selectionSize } from '$lib/selection-helpers';
import { selectionSize } from '$lib/engine/selection-helpers';
import { getElevation } from '$lib/utils';
import { selectedWaypoint } from './waypoint';
import { map } from '$lib/components/map/map';
import { mapCursor, MapCursorState } from '$lib/logic/map-cursor';
import { mapCursor, MapCursorState } from '$lib/state/map-cursor';
import maplibregl from 'maplibre-gl';
import { getSvgForSymbol } from '$lib/components/map/gpx-layer/gpx-layer';
@@ -1,6 +1,6 @@
import { get, writable } from 'svelte/store';
import { engine, type WaypointDetails } from '$lib/engine';
import { settings } from '$lib/logic/settings';
import { settings } from '$lib/state/settings';
export type SelectedWaypoint = {
fileId: string;
@@ -6,7 +6,7 @@ import {
getSurfaceColor,
highwayColors,
surfaceColors,
} from './colors';
} from '$lib/data/colors';
describe('colors of the OSM data', () => {
it('has the color of a surface, or the one of the missing ones', () => {
File renamed without changes.
File renamed without changes.
@@ -1,8 +1,8 @@
import assert from 'node:assert/strict';
import { describe, it } from 'node:test';
import { computeExampleData, engineIsBuilt } from '../scripts/example-statistics';
import { exampleData } from './example-data';
import { exampleStatistics } from './example';
import { computeExampleData, engineIsBuilt } from '$lib/scripts/example-statistics';
import { exampleData } from '$lib/data/example/example-data';
import { exampleStatistics } from '$lib/data/example';
describe('exampleStatistics', () => {
it('has the statistics of the whole example for the whole range', () => {
@@ -5,7 +5,7 @@
* they are (see `example-data.ts`) so that the example does not need the engine.
*/
import type { GlobalStatistics, SelectionStatistics } from '$lib/engine';
import { exampleData as data } from './example-data';
import { exampleData as data } from '$lib/data/example/example-data';
const length = data.lng.length;
@@ -18,7 +18,7 @@ import {
overpassTree,
terrainSources,
type LayerTreeType,
} from './layers';
} from '$lib/data/layers';
import { getLayers } from '$lib/components/map/layer-control/utils';
const leaves = (tree: LayerTreeType) => Object.keys(getLayers(tree));
@@ -23,10 +23,10 @@ import {
Toilet,
} from 'lucide-static';
import { type RasterDEMSourceSpecification, type StyleSpecification } from 'maplibre-gl';
import ignFrTopo from './custom/ign-fr-topo.json';
import ignFrPlan from './custom/ign-fr-plan.json';
import ignFrSatellite from './custom/ign-fr-satellite.json';
import bikerouterGravel from './custom/bikerouter-gravel.json';
import ignFrTopo from '$lib/data/custom/ign-fr-topo.json';
import ignFrPlan from '$lib/data/custom/ign-fr-plan.json';
import ignFrSatellite from '$lib/data/custom/ign-fr-satellite.json';
import bikerouterGravel from '$lib/data/custom/bikerouter-gravel.json';
export const maptilerKeyPlaceHolder = 'MAPTILER_KEY';
File renamed without changes.
+1 -1
View File
@@ -7,7 +7,7 @@ title: Files and statistics
import DocsNote from '$lib/components/docs/DocsNote.svelte';
import ElevationProfile from '$lib/components/elevation-profile/ElevationProfile.svelte';
import GPXStatistics from '$lib/components/GPXStatistics.svelte';
import { exampleStatistics } from '$lib/assets/example';
import { exampleStatistics } from '$lib/data/example';
import { writable } from 'svelte/store';
let statistics = writable(exampleStatistics);
+1 -1
View File
@@ -7,7 +7,7 @@ title: Fitxers i estadístiques
import DocsNote from '$lib/components/docs/DocsNote.svelte';
import ElevationProfile from '$lib/components/elevation-profile/ElevationProfile.svelte';
import GPXStatistics from '$lib/components/GPXStatistics.svelte';
import { exampleStatistics } from '$lib/assets/example';
import { exampleStatistics } from '$lib/data/example';
import { writable } from 'svelte/store';
let statistics = writable(exampleStatistics);
+1 -1
View File
@@ -7,7 +7,7 @@ title: Soubory a statistiky
import DocsNote from '$lib/components/docs/DocsNote.svelte';
import ElevationProfile from '$lib/components/elevation-profile/ElevationProfile.svelte';
import GPXStatistics from '$lib/components/GPXStatistics.svelte';
import { exampleStatistics } from '$lib/assets/example';
import { exampleStatistics } from '$lib/data/example';
import { writable } from 'svelte/store';
let statistics = writable(exampleStatistics);
+1 -1
View File
@@ -7,7 +7,7 @@ title: Files and statistics
import DocsNote from '$lib/components/docs/DocsNote.svelte';
import ElevationProfile from '$lib/components/elevation-profile/ElevationProfile.svelte';
import GPXStatistics from '$lib/components/GPXStatistics.svelte';
import { exampleStatistics } from '$lib/assets/example';
import { exampleStatistics } from '$lib/data/example';
import { writable } from 'svelte/store';
let statistics = writable(exampleStatistics);
+1 -1
View File
@@ -7,7 +7,7 @@ title: Dateien und Statistiken
import DocsNote from '$lib/components/docs/DocsNote.svelte';
import ElevationProfile from '$lib/components/elevation-profile/ElevationProfile.svelte';
import GPXStatistics from '$lib/components/GPXStatistics.svelte';
import { exampleStatistics } from '$lib/assets/example';
import { exampleStatistics } from '$lib/data/example';
import { writable } from 'svelte/store';
let statistics = writable(exampleStatistics);
+1 -1
View File
@@ -7,7 +7,7 @@ title: Files and statistics
import DocsNote from '$lib/components/docs/DocsNote.svelte';
import ElevationProfile from '$lib/components/elevation-profile/ElevationProfile.svelte';
import GPXStatistics from '$lib/components/GPXStatistics.svelte';
import { exampleStatistics } from '$lib/assets/example';
import { exampleStatistics } from '$lib/data/example';
import { writable } from 'svelte/store';
let statistics = writable(exampleStatistics);
+1 -1
View File
@@ -7,7 +7,7 @@ title: Files and statistics
import DocsNote from '$lib/components/docs/DocsNote.svelte';
import ElevationProfile from '$lib/components/elevation-profile/ElevationProfile.svelte';
import GPXStatistics from '$lib/components/GPXStatistics.svelte';
import { exampleStatistics } from '$lib/assets/example';
import { exampleStatistics } from '$lib/data/example';
import { writable } from 'svelte/store';
let statistics = writable(exampleStatistics);
+1 -1
View File
@@ -7,7 +7,7 @@ title: Archivos y estadísticas
import DocsNote from '$lib/components/docs/DocsNote.svelte';
import ElevationProfile from '$lib/components/elevation-profile/ElevationProfile.svelte';
import GPXStatistics from '$lib/components/GPXStatistics.svelte';
import { exampleStatistics } from '$lib/assets/example';
import { exampleStatistics } from '$lib/data/example';
import { writable } from 'svelte/store';
let statistics = writable(exampleStatistics);
+1 -1
View File
@@ -7,7 +7,7 @@ title: Fitxategiak eta estatistikak
import DocsNote from '$lib/components/docs/DocsNote.svelte';
import ElevationProfile from '$lib/components/elevation-profile/ElevationProfile.svelte';
import GPXStatistics from '$lib/components/GPXStatistics.svelte';
import { exampleStatistics } from '$lib/assets/example';
import { exampleStatistics } from '$lib/data/example';
import { writable } from 'svelte/store';
let statistics = writable(exampleStatistics);
+1 -1
View File
@@ -7,7 +7,7 @@ title: Files and statistics
import DocsNote from '$lib/components/docs/DocsNote.svelte';
import ElevationProfile from '$lib/components/elevation-profile/ElevationProfile.svelte';
import GPXStatistics from '$lib/components/GPXStatistics.svelte';
import { exampleStatistics } from '$lib/assets/example';
import { exampleStatistics } from '$lib/data/example';
import { writable } from 'svelte/store';
let statistics = writable(exampleStatistics);
+1 -1
View File
@@ -7,7 +7,7 @@ title: Fichiers et statistiques
import DocsNote from '$lib/components/docs/DocsNote.svelte';
import ElevationProfile from '$lib/components/elevation-profile/ElevationProfile.svelte';
import GPXStatistics from '$lib/components/GPXStatistics.svelte';
import { exampleStatistics } from '$lib/assets/example';
import { exampleStatistics } from '$lib/data/example';
import { writable } from 'svelte/store';
let statistics = writable(exampleStatistics);
+1 -1
View File
@@ -7,7 +7,7 @@ title: Files and statistics
import DocsNote from '$lib/components/docs/DocsNote.svelte';
import ElevationProfile from '$lib/components/elevation-profile/ElevationProfile.svelte';
import GPXStatistics from '$lib/components/GPXStatistics.svelte';
import { exampleStatistics } from '$lib/assets/example';
import { exampleStatistics } from '$lib/data/example';
import { writable } from 'svelte/store';
let statistics = writable(exampleStatistics);
+1 -1
View File
@@ -7,7 +7,7 @@ title: Fájlok és statisztikák
import DocsNote from '$lib/components/docs/DocsNote.svelte';
import ElevationProfile from '$lib/components/elevation-profile/ElevationProfile.svelte';
import GPXStatistics from '$lib/components/GPXStatistics.svelte';
import { exampleStatistics } from '$lib/assets/example';
import { exampleStatistics } from '$lib/data/example';
import { writable } from 'svelte/store';
let statistics = writable(exampleStatistics);
+1 -1
View File
@@ -7,7 +7,7 @@ title: Files and statistics
import DocsNote from '$lib/components/docs/DocsNote.svelte';
import ElevationProfile from '$lib/components/elevation-profile/ElevationProfile.svelte';
import GPXStatistics from '$lib/components/GPXStatistics.svelte';
import { exampleStatistics } from '$lib/assets/example';
import { exampleStatistics } from '$lib/data/example';
import { writable } from 'svelte/store';
let statistics = writable(exampleStatistics);
+1 -1
View File
@@ -7,7 +7,7 @@ title: File e statistiche
import DocsNote from '$lib/components/docs/DocsNote.svelte';
import ElevationProfile from '$lib/components/elevation-profile/ElevationProfile.svelte';
import GPXStatistics from '$lib/components/GPXStatistics.svelte';
import { exampleStatistics } from '$lib/assets/example';
import { exampleStatistics } from '$lib/data/example';
import { writable } from 'svelte/store';
let statistics = writable(exampleStatistics);
+1 -1
View File
@@ -7,7 +7,7 @@ title: Files and statistics
import DocsNote from '$lib/components/docs/DocsNote.svelte';
import ElevationProfile from '$lib/components/elevation-profile/ElevationProfile.svelte';
import GPXStatistics from '$lib/components/GPXStatistics.svelte';
import { exampleStatistics } from '$lib/assets/example';
import { exampleStatistics } from '$lib/data/example';
import { writable } from 'svelte/store';
let statistics = writable(exampleStatistics);
+1 -1
View File
@@ -7,7 +7,7 @@ title: Puslapis nerastas
import DocsNote from '$lib/components/docs/DocsNote.svelte';
import ElevationProfile from '$lib/components/elevation-profile/ElevationProfile.svelte';
import GPXStatistics from '$lib/components/GPXStatistics.svelte';
import { exampleStatistics } from '$lib/assets/example';
import { exampleStatistics } from '$lib/data/example';
import { writable } from 'svelte/store';
let statistics = writable(exampleStatistics);
Loaded 100 of 169 files, more files were not shown because too many files have changed in this diff. Show more