UUB7SHLRIPT6JKE64MHEJBFCS5FHH5SN5R2OOK7TR2NVCPB6VN7AC let sections_view = combined.sections.iter().flat_map(|section| match section {Section::Unchanged(lines) => {// TODO avoid collecting by placing these into `column` in herelet res = lines.iter().enumerate().map(|(ix, line)| {el(row([el(code_view(" ")),el(line_num_view(current_line + ix,line_num_digits,)),el(code_view(line.clone()).width(Length::Fill)),]))}).collect::<Vec<_>>();
let sections_view = combined.sections.iter().map(|section| match section {Section::Unchanged(lines) => {let res = lines.iter().enumerate().map(move |(ix, line)| {line_view(LineKind::Unchanged,current_line + ix,line_num_digits,line,)});
current_line += lines.len();res}Section::Changed { deleted, added } => {let res = deleted.iter().enumerate().map(|(ix, line)| {el(container(row([el(code_view("- ")),el(line_num_view(current_line + ix,line_num_digits,)),el(code_view(line.clone()).width(Length::Fill)),])).style(|_theme| {container::background(Background::from(DELETED_BG_COLOR,))}))}).chain(added.iter().enumerate().map(|(ix, line)| {el(container(row([el(code_view("+ ")),el(line_num_view(current_line + ix,line_num_digits,)),el(code_view(line.clone()).width(Length::Fill)),])).style(|_theme| {container::background(Background::from(ADDED_BG_COLOR,))}))})).collect::<Vec<_>>();
current_line += lines.len();el(column(res))}Section::Changed { deleted, added } => {let res = deleted.iter().enumerate().map(move |(ix, line)| {line_view(LineKind::Deleted,current_line + ix,line_num_digits,line,)}).chain(added.iter().enumerate().map(move |(ix, line)| {line_view(LineKind::Added,current_line + ix,line_num_digits,line,)}));
let lines_view = lines.iter().enumerate().map(|(ix, line)| {el(row([el(code_view(if *deleted { "- " } else { "+ " })),el(line_num_view(line_num + ix, line_num_digits)),el(code_view(line.clone()).width(Length::Fill)),]))
let lines_view = lines.into_iter().enumerate().map(|(ix, line)| {line_view(if *deleted {LineKind::Deleted} else {LineKind::Added},line_num + ix,line_num_digits,line,)
el(container(row([el(code_view("- ")),el(line_num_view(line_num + ix, line_num_digits)),el(code_view(line.clone()).width(Length::Fill)),])).style(|_theme| {container::background(Background::from(DELETED_BG_COLOR,))}))
line_view(LineKind::Deleted,line_num + ix,line_num_digits,line,)
el(container(row([el(code_view("+ ")),el(line_num_view(line_num + ix, line_num_digits)),el(code_view(line.clone()).width(Length::Fill)),])).style(|_theme| {container::background(Background::from(ADDED_BG_COLOR,))}))
line_view(LineKind::Added,line_num + ix,line_num_digits,line,)
el(row([el(code_view("- ")),el(line_num_view(line_num, 1)),el(code_view(change_line).width(Length::Fill)),])),el(row([el(code_view("+ ")),el(line_num_view(line_num, 1)),el(code_view(replacement_line).width(Length::Fill)),])),
line_view(LineKind::Deleted, line_num, 1, change_line),line_view(LineKind::Added, line_num, 1, replacement_line),
#[derive(Debug, Clone, Copy)]enum LineKind {Unchanged,Added,Deleted,}fn line_view<'a>(kind: LineKind,line_num: usize,line_num_digits: usize,line: impl text::IntoFragment<'a>,) -> Element<'a, Action> {let line = container(row([el(mono_text(match kind {LineKind::Unchanged => " ",LineKind::Added => "+ ",LineKind::Deleted => "- ",})),el(line_num_view(line_num, line_num_digits)),el(mono_text(line).width(Length::Fill)),]));el(match kind {LineKind::Unchanged => line,LineKind::Added => line.style(|_theme| {container::background(Background::from(ADDED_BG_COLOR))}),LineKind::Deleted => line.style(|_theme| {container::background(Background::from(DELETED_BG_COLOR))}),})}