#![deny(missing_docs)] use std::{collections::HashMap, fmt::Debug}; use bitcode::{Decode, Encode}; use crate::{ constants, expressions::{ types::Area, utils::{is_valid_column_number, is_valid_row}, }, model::Model, types::{ Alignment, BorderItem, BorderStyle, Cell, CellType, Col, HorizontalAlignment, Row, SheetProperties, Style, VerticalAlignment, }, utils::is_valid_hex_color, }; #[derive(Clone, Encode, Decode)] struct RowData { row: Option, data: HashMap, } #[derive(Clone, Encode, Decode)] struct ColumnData { column: Option, data: HashMap, } #[derive(Clone, Encode, Decode)] enum Diff { // Cell diffs SetCellValue { sheet: u32, row: i32, column: i32, new_value: String, old_value: Box>, }, CellClearContents { sheet: u32, row: i32, column: i32, old_value: Box>, }, CellClearAll { sheet: u32, row: i32, column: i32, old_value: Box>, old_style: Box