#if 0
        S8_String filename = S8_Lit("../assets/SkillCraft.csv");
        PLOT_CSV = CSV_Load(G_Perm, filename);
        UI_Notification(2.0f, "CSV: %s, loaded!", filename.str);

        CSV_Column *gap_between_pacs = PLOT_CSV.columns + 12;
        CSV_Column *apm = PLOT_CSV.columns + 5;

        PLOT_X = gap_between_pacs->floats;
        PLOT_XLabel = gap_between_pacs->name;
        PLOT_Y = apm->floats;
        PLOT_YLabel = apm->name;
        PLOT_Title = PLOT_CSV.filename;
        PLOT_DataSize = (int)PLOT_CSV.row_count;
#endif

#if 0
    for (MU_DroppedFile *iter = Mu->window->first_dropped_file; iter; iter = iter->next) {
        S8_String filename = S8_Make(iter->filename, iter->filename_size);
        PLOT_CSV = CSV_Load(G_Perm, filename);
        UI_Notification(2.0f, "CSV: %s, loaded!", filename.str);

        CSV_Column *gap_between_pacs = PLOT_CSV.columns + 12;
        CSV_Column *apm = PLOT_CSV.columns + 5;

        PLOT_X = gap_between_pacs->floats;
        PLOT_XLabel = gap_between_pacs->name;
        PLOT_Y = apm->floats;
        PLOT_YLabel = apm->name;
        PLOT_Title = PLOT_CSV.filename;
        PLOT_DataSize = (int)PLOT_CSV.row_count;
    }
#else



int SPREAD_MaxY;
int SPREAD_MaxX;
MAP_Map SPREAD_Map;
Vec2 SPREAD_Pos;

if (!PLOT_Initialized) {
    SPREAD_Pos = Mu->window->sizef;
}

MAP_InsertEvent(&SPREAD_Map, {0 + current_series->id * 2, data_point_count}, iter.event);
MAP_InsertEvent(&SPREAD_Map, {1 + current_series->id * 2, data_point_count}, iter.event);
    SPREAD_MaxY = data_point_count;
    SPREAD_MaxX = 4;


Vec4 spreadsheet_background = COLOR_spreadsheet_background;
//
// SPREADSHEET
//
Vec2 spreadsheet_pos = SPREAD_Pos * G_Camera.zoom;
Rect2 spreadsheet_rect = {};
{
    float xcell_size = 150.f * G_Camera.zoom;
    float ycell_size = R2_RenderO.font->size * G_Camera.zoom;
    float all_columns_size = xcell_size * SPREAD_MaxX;
    Vec2 spreadsheet_size = {all_columns_size, -(SPREAD_MaxY + 1) * ycell_size};
    Vec2 spreadcamoffset = spreadsheet_pos - G_Camera.pos;
    spreadsheet_rect = Rect2Size(spreadcamoffset, spreadsheet_size);
    if (spreadsheet_rect.min.y > spreadsheet_rect.max.y) {
        Swap(spreadsheet_rect.min.y, spreadsheet_rect.max.y);
    }

    int visible_row_begin = 0;
    int visible_row_end = 0;
    int visible_col_begin = 0;
    int visible_col_end = 0;
    {
        float ystart = (-Mu->window->sizef.y + spreadcamoffset.y) / ycell_size;
        float ysize = Mu->window->sizef.y / ycell_size;
        visible_row_begin = Clamp((int)floorf(ystart) - 1, 0, SPREAD_MaxY);
        visible_row_end = Clamp((int)(ceilf(ystart + ysize)), 0, SPREAD_MaxY);

        float when_spreadcamoffset_incamera_offset = Clamp(Mu->window->sizef.x, 0.f, spreadcamoffset.x);

        float xstart = (spreadcamoffset.x - when_spreadcamoffset_incamera_offset) / xcell_size;
        float xsize = Mu->window->sizef.x / xcell_size;
        visible_col_begin = Clamp((int)floorf(xstart) - 1, 0, SPREAD_MaxX);
        visible_col_end = Clamp((int)(ceilf(xstart + xsize)), 0, SPREAD_MaxX);
    }

    // Draw the background rect
    R2_DrawRect(spreadsheet_rect, spreadsheet_background);
    R2_DrawCircle(spreadcamoffset, 4.0f, {1, 0, 0, 1}); //@debug

    // Draw label
    {
        Rect2 rect = spreadsheet_rect;
        Vec2 size = GetSize(spreadsheet_rect);
        float label_scale = G_Camera.zoom * 1.0f;
        float label_t = 0;
        if (G_Camera.zoom > 0.5f) {
            label_t = 0.0f;
        }
        else {
            float t = ((1.f / G_Camera.zoom) - 2.0f) / 4.0f / 32.f;
            label_t = Clamp01(Lerp(0, 1, t));
            if (t <= 1.0f) {
                label_scale = Lerp(label_scale, 1.0f, PingPong(t));
            }
            else {
                label_scale = Lerp(0.5f, 1.0f, PingPong(t));
            }
        }

        Vec2 plot_midtop = rect.max;
        plot_midtop.x -= size.x / 2;
        plot_midtop.y += 2;

        Vec2 plot_mid = rect.min + (rect.max - rect.min) / 2.f;

        // We want T that is 0 when zoom is 4 or less

        Vec2 label_pos = Lerp(plot_midtop, plot_mid, label_t);

        S8_String label_string = PLOT_Title;
        Vec2 top_label_size = R2_GetStringSize(label_string, label_scale);
        label_pos.x -= top_label_size.x / 2;
        R2_DrawString(label_pos, label_string, text_color, label_scale);
    }

    float x_accumulator = 0;
    if (should_render) {
        for (int col_i = visible_col_begin; col_i < visible_col_end; col_i += 1) {
            // Draw the first row, the label row
            {
                Vec2 cell_pos = Vec2{x_accumulator, -ycell_size * (float)(1.f)} + spreadcamoffset;
                S8_String label = S8_Lit("");
                if (col_i == 0) label = PLOT_XLabel;
                if (col_i == 1) label = PLOT_YLabel;

                Rect2 rect = R2_DrawString(cell_pos, label, disappearing_text_color, G_Camera.zoom);
            }

            for (int row_i = visible_row_begin; row_i < visible_row_end; row_i += 1) {
                VIS_Event *event = MAP_GetEvent(&SPREAD_Map, {col_i, row_i});
                if (!event) continue;
                float point = event->point[(col_i % 2)];
                S8_String it = S8_Format(G_Frame, "%f", point);

                // Draw the cell
                // We start from row 2 (row 1 is reserved)
                {
                    Vec2 cell_pos = Vec2{x_accumulator, -ycell_size * (float)(row_i + 2.f)} + spreadcamoffset;
                    Rect2 cell_rect = Rect2Size(cell_pos, Vec2{xcell_size, ycell_size});
                    R2_DrawRectOutline(cell_rect, cell_outline_color);

                    Vec2 string_size = R2_GetStringSize(it, G_Camera.zoom);
                    Vec2 string_pos = cell_pos + (GetSize(cell_rect) / 2 - string_size / 2);
                    R2_DrawString(string_pos, it, disappearing_text_color, G_Camera.zoom);
                }
            }
            x_accumulator += xcell_size;
        }
    }
}

    //
    // Zoomed out view object moving
    //
    if (should_render == false) {
        if (AreColliding(rect, Mu->window->mouse.posf)) {
            R2_DrawRectOutline(rect, {1, 0, 0, 1});

            if (Mu->window->mouse.right.down) {
                PLOT_Pos += Mu->window->mouse.delta_pos_normalized * 1000.0f / G_Camera.zoom;
            }
        }
        else if (AreColliding(spreadsheet_rect, Mu->window->mouse.posf)) {
            R2_DrawRectOutline(spreadsheet_rect, {1, 0, 0, 1});
            if (Mu->window->mouse.right.down) {
                SPREAD_Pos += Mu->window->mouse.delta_pos_normalized * 1000.0f / G_Camera.zoom;
            }
        }
    }