use real sounds from kbsim

This commit is contained in:
2026-06-08 23:34:32 -07:00
parent 43e9d77de9
commit b5345f0345
168 changed files with 815 additions and 181 deletions
+27 -6
View File
@@ -1,9 +1,30 @@
import type { Project } from './types';
import type { LegacySwitchType, Marker, Project, SwitchType } from './types';
import { app, setActiveSwitch, setMarkers, setSelectedIds } from './store.svelte';
const LEGACY_SWITCH_MAP: Record<LegacySwitchType, SwitchType> = {
'cherry-mx-blue': 'mxblue',
'cherry-mx-red': 'mxblack',
'cherry-mx-brown': 'mxbrown',
};
function migrateSwitch(value: string): SwitchType {
if (value in LEGACY_SWITCH_MAP) {
return LEGACY_SWITCH_MAP[value as LegacySwitchType];
}
return value as SwitchType;
}
function migrateMarker(marker: Marker): Marker {
return {
...marker,
code: marker.code,
releaseTime: marker.releaseTime,
};
}
export function buildProject(): Project {
return {
version: 1,
version: 2,
switch: app.activeSwitch,
markers: app.markers.map((m) => ({ ...m })),
};
@@ -20,12 +41,12 @@ export function downloadProject(filename = 'project.json') {
URL.revokeObjectURL(url);
}
export function loadProject(data: Project) {
if (data.version !== 1) {
export function loadProject(data: Project & { version?: number; switch?: string }) {
if (data.version !== 1 && data.version !== 2) {
throw new Error(`Unsupported project version: ${data.version}`);
}
setMarkers(data.markers.map((m) => ({ ...m })));
setActiveSwitch(data.switch);
setMarkers((data.markers ?? []).map(migrateMarker));
setActiveSwitch(migrateSwitch(data.switch ?? 'mxbrown'));
setSelectedIds(new Set());
}