"use client";
import { useContext, createContext } from "react";
import {
    type Table
} from "@tanstack/react-table";

export type DatasetItem = {
    [key: string]: string | number | null | undefined | DatasetItem;
};

export type DatasetContextType<T = unknown> = {
    selectable: boolean;
    view: "table" | "grid";
    data: T[];
    total: number;
    table: Table<T>;
    perPage?: number;
    page?: number;
    orderBy?: string;
    orderDir?: string;
    onOrderByChange?: (orderBy?: string) => void;
    onOrderDirChange?: (orderDir?: "asc" | "desc") => void;
    onPerPageChange?: (perPage: number) => void;
    onPageChange?: (page: number) => void;
};

export const DatasetContext = createContext<DatasetContextType>({
    selectable: false,
    view: "table",
    data: [],
    total: 0,
    table: null!
});

export const useDataset = <T extends object = object>() => {
    return useContext(DatasetContext) as DatasetContextType<T>;
};
