I2AG42PAVOII4V4TWDJV5ZVNDIHKBRDT254BFQLFUIY723TW6CCQC 6YZAVBWU6E5FYOI5JGEIPXGZLIKAW6LS2AOFIQWEE5DMOPPCD5PQC KLR5FRIBS6UOH3S3XAOE22TJACVSVOY7TOLW22DIWNGY27S6WZRAC IQDCHWCP47LL46EXQLQGHQPGFYIHQLMQBHA57RWJCIOX5UEUIQAQC WT3GA27PQ2AOAIGK65O3Q4DMX4AZDVNULBLRL6GF4QW6QCASUEAAC YBJRDOTCX3ZRDB5EVXJBR55FX3CADCSIGMYWNYVC2PD5W3GXR3DQC KM5PSZ4A2FJOPHJA6RC7LHZAUXLQDZDQC2DVSE5YUORLFIPZO74QC 2VUX5BTDKHX3TJ677NW34H5WLSWH35C3PU46C7MXCN5O7PAZVXNQC A5YBC77VWH2LXCZJOPZORQJI5ZYABSCHJWVX5HVNWPM5RABXESLQC 4WO3ZJM2RNYZCBPS7FGYAEBELYD57OSS7LEUYCWGZBCAY272SNQQC 3SYSJKYLVCXR54LRUPL6GOQISSJS6XWK4M6PRQRCKZN7F23NNVEAC 23SFYK4Q5NKBPJG53PQNPWQH6UOUU2YKJEL7RLXYBRLJOJYV7AWQC OPXFZKEBDHZZLXEJ2JRDYBOJH6YIN7UZNZYHVHMWMQVDTE2ZD53QC 3QVNMRNMI63L2VOFVTMPCVPXH3J4JXLXVTIIPNOMACQCPCAPWILQC MYGIBRRHHXPKVRAMQQRJTZH74L2XOK3SF7J57JPCRKSVRLZ2D6NQC XSZZB47UXR6KGYFZZQFQR63X2LDKOH6TPNNBRRGHUCI5JJ4JIWVAC 3BK22XE5LPOH2EK5AMRXFXHNQNCJ54HEPYRINHJT4DA7INT32I7AC WGID4LS4EISIOXB5Y5SOFGEF5PLBJSCPFCETH2CGRTFN3NC4WGJQC VCNKFNUF7OWVSWC6I5D25KUZ3XZZICZ3LHWVPF2N5ZSP7LQ2JOUQC FVA36HBVXZCYW7FMQLST63Q6IDGLJ23OIHORF67BUIO2GXYNBW2QC X6AK4QPXKTGTWIMJ5CIR46CVIXVUXV5WKTP73CNQOIRANQN4MD5QC UF5NJKASGMZSZMBUKSUI67B2GIMQFX5SNNQEHHGUBNDBQ2QZZWSAC 7SSBM4UQMYVRL6L3ICYZQPSMYLZZQNMDWH6JKA3KOOSXZDJHESHQC 2LWMGRUM2OLIJHW7XW4HSISIHJAV3JFCWQYRWYV2P2VMSFHJ5CKQC QYDWH7KBIBYZA22PFVZJMZZ3BN65XEYEMVCC6WMVGCZE3A4GQBXAC 5FVZF7XXF4KVBY27SL2WD2ESEECOIM7FJZC7KVKZ4JOVVBUWF43QC S2T7RUKWXAHMOW5HHITQKTKCBKTUKGMRXK7EQI6RNEBBHRJ5W2RQC let left_view = match state.cursor.selection.as_ref() {
// The number of visible columns depends on the screen width. Any cols on// left that don't fit will be hiddenlet max_visible_cols = cmp::max(2,state.window_size.width.floor() as usize / DEFAULT_MIN_COL_WIDTH,);let depth = if let Some(RecordMsg::Typing(_)) = state.record_msg.as_ref() {1} else if let Some(selection) = state.cursor.selection.as_ref() {match selection {cursor::Selection::UntrackedFile { .. }| cursor::Selection::ChangedFile { .. }| cursor::Selection::LogChange { file: None, .. } => 1,cursor::Selection::LogChange { file: Some(_), .. } => 2,}} else {0};let hidden_cols = (depth + 1_usize).saturating_sub(max_visible_cols);// dbg!(// state.window_size.width,// max_visible_cols,// depth,// hidden_cols// );let col_0 = el(column([repo_info,el(column([el(text("Untracked files:")), untracked_files()])),el(column([el(text("Changed files:")), changed_files()])),el(column([el(text("Recent changes:")), log()])),]).width(Length::Fill).height(Length::Fill));let col_1 = el(column([el(column([record_msg_editor, selection_details]).width(Length::Fill).height(Length::Fill)),if hidden_cols == 1 {el(button(row([el(text("← ").font(Font::MONOSPACE)),el(text("Status")),])).on_press(Msg::Cursor(cursor::Msg::Left)))} else {el(row([]))},]).width(Length::Fill).height(Length::Fill));let col_2 = match state.cursor.selection.as_ref() {
}) => el(column([view_diff_header(format!("{path} changes in {}:",display_short_hash(hash))),match diffs {Some(diffs) => {let (file, state) = diffs.get(path).unwrap();diff::view(Some(state), file).map(|action| {Msg::LogChangeFileDiffAction {hash: *hash,file: path.clone(),action,}})}None => el(text("Loading diff..")),},]).width(Length::FillPortion(1)).spacing(SPACING)),Some(cursor::Selection::UntrackedFile { .. })| Some(cursor::Selection::ChangedFile { .. })| Some(cursor::Selection::LogChange { .. })| None => el(column([
}) => Some(el(column([
repo_info,el(column([el(text("Untracked files:")), untracked_files()])),el(column([el(text("Changed files:")), changed_files()])),el(column([el(text("Recent changes:")), log()])),
view_diff_header(format!("{path} changes in {}:",display_short_hash(hash))),match diffs {Some(diffs) => {let (file, state) = diffs.get(path).unwrap();diff::view(Some(state), file).map(|action| {Msg::LogChangeFileDiffAction {hash: *hash,file: path.clone(),action,}})}None => el(text("Loading diff..")),},
.height(Length::Fill)),el(button(row([el(text("←").font(Font::MONOSPACE)),el(text(" Nav back placeholder")),])).on_press(Msg::SaveRecord)),
.height(Length::Fill).spacing(SPACING)),// NOTE: This is currently never true - there are only up to 3 colsif hidden_cols == 2 {el(button(row([el(text("← ").font(Font::MONOSPACE)),el(text("Log")),])).on_press(Msg::Cursor(cursor::Msg::Left)))} else {el(row([]))},
let (window_id, open_window_task) =task::open_window(window::Settings::default());
let window_settings = window::Settings::default();let window_size = window_settings.size;let (window_id, open_window_task) = task::open_window(window_settings);
fn update_from_window_event(state: &mut State,event: window::Event,) -> Task<Msg> {match event {window::Event::Opened { position: _, size }| window::Event::Resized(size) => {state.window_size = size;}window::Event::Closed| window::Event::Moved(_)| window::Event::RedrawRequested(_)| window::Event::CloseRequested| window::Event::Focused| window::Event::Unfocused| window::Event::FileHovered(_)| window::Event::FileDropped(_)| window::Event::FilesHoveredLeft => {}}Task::none()}