优化 peq 流程

This commit is contained in:
eafonyang
2026-09-20 13:58:32 +08:00
parent b606e7ad4d
commit cc818fe26e
6 changed files with 556 additions and 343 deletions
@@ -16,6 +16,7 @@ export type PeqUndoSnapshot = {
bandsByMode: { A: PeqUndoBand[]; B: PeqUndoBand[] };
preamp: number;
autoPre: number;
metaByMode?: Record<"A" | "B", { preamp: number; autoPre: number }>;
};
function cloneSnapshot(snapshot: PeqUndoSnapshot): PeqUndoSnapshot {
@@ -27,6 +28,7 @@ function cloneSnapshot(snapshot: PeqUndoSnapshot): PeqUndoSnapshot {
},
preamp: snapshot.preamp,
autoPre: snapshot.autoPre,
...(snapshot.metaByMode ? { metaByMode: { A: { ...snapshot.metaByMode.A }, B: { ...snapshot.metaByMode.B } } } : {}),
};
}
@@ -36,6 +38,7 @@ export function peqUndoSnapshotsEqual(
): boolean {
if (a.abMode !== b.abMode) return false;
if (a.preamp !== b.preamp || a.autoPre !== b.autoPre) return false;
if (JSON.stringify(a.metaByMode) !== JSON.stringify(b.metaByMode)) return false;
return (
JSON.stringify(a.bandsByMode.A) === JSON.stringify(b.bandsByMode.A) &&
JSON.stringify(a.bandsByMode.B) === JSON.stringify(b.bandsByMode.B)