hunk.code_window: 				if (!canGoBack) return;
   				navigate(-1);
   			} else if (e.buttons === 16) {
   				if (!canGoForward) return;
   				navigate(1);
   			}
   		};
   		document.addEventListener('mousedown', onMouseDown);
  
hunk.labels: keep keep replace keep keep keep keep keep
hunk.after_edit: 			} else if (e.buttons === 16 || e.buttons === 4) {
  
hunk.file_path: interface/app/$libraryId/TopBar/NavigationButtons.tsx
hunk.type: replace
file: use std::path::Path;
  
  use crate::Result;
  
  #[derive(
  	Default, Clone, PartialEq, Eq, Debug, serde::Serialize, serde::Deserialize, specta::Type,
  )]
  pub struct AudioMetadata {
  	duration: Option<i32>, // can't use `Duration` due to bigint
  	audio_codec: Option<String>,
  }
  
  impl AudioMetadata {
  	#[allow(clippy::missing_errors_doc)]
  	#[allow(clippy::missing_panics_doc)]
  	pub fn from_path(_path: impl AsRef<Path>) -> Result<Self> {
  		todo!()
  	}
  }
  