UNPKG

cheetah-grid

Version:

Cheetah Grid is a high performance grid engine that works on canvas

84 lines (81 loc) 2.51 kB
import type { BaseColumnOption, BranchGraphColumnOption, ButtonColumnOption, ColumnTypeOption, IconColumnOption, MenuColumnOption, NumberColumnOption, PercentCompleteBarColumnOption, TreeColumnOption, } from "../ts-types"; import type { BaseColumn } from "./type/BaseColumn"; import { BranchGraphColumn } from "./type/BranchGraphColumn"; import { ButtonColumn } from "./type/ButtonColumn"; import { CheckColumn } from "./type/CheckColumn"; import { Column } from "./type/Column"; import { IconColumn } from "./type/IconColumn"; import { ImageColumn } from "./type/ImageColumn"; import { MenuColumn } from "./type/MenuColumn"; import { MultilineTextColumn } from "./type/MultilineTextColumn"; import { NumberColumn } from "./type/NumberColumn"; import { PercentCompleteBarColumn } from "./type/PercentCompleteBarColumn"; import { RadioColumn } from "./type/RadioColumn"; import { TreeColumn } from "./type/TreeColumn"; const TYPES = { // eslint-disable-next-line @typescript-eslint/no-explicit-any DEFAULT: new Column<any>(), // eslint-disable-next-line @typescript-eslint/no-explicit-any NUMBER: new NumberColumn<any>(), // eslint-disable-next-line @typescript-eslint/no-explicit-any CHECK: new CheckColumn<any>(), // eslint-disable-next-line @typescript-eslint/no-explicit-any RADIO: new RadioColumn<any>(), // eslint-disable-next-line @typescript-eslint/no-explicit-any BUTTON: new ButtonColumn<any>(), // eslint-disable-next-line @typescript-eslint/no-explicit-any IMAGE: new ImageColumn<any>(), // eslint-disable-next-line @typescript-eslint/no-explicit-any MULTILINETEXT: new MultilineTextColumn<any>(), }; /** * column types * @namespace cheetahGrid.columns.type * @memberof cheetahGrid.columns */ export { Column, NumberColumn, CheckColumn, RadioColumn, ButtonColumn, ImageColumn, PercentCompleteBarColumn, IconColumn, BranchGraphColumn, MenuColumn, MultilineTextColumn, TreeColumn, }; export type { BaseColumnOption, BranchGraphColumnOption, ButtonColumnOption, IconColumnOption, MenuColumnOption, NumberColumnOption, PercentCompleteBarColumnOption, TreeColumnOption, }; export function of<T>( columnType: ColumnTypeOption | BaseColumn<T> | null | undefined ): BaseColumn<T> { if (!columnType) { return TYPES.DEFAULT; } else if (typeof columnType === "string") { const key = columnType.toUpperCase() as keyof typeof TYPES; return TYPES[key] || of(null); } else { return columnType; } }