import { TricksterItem } from '../trickster' export const BasicColumns = ['uid', 'Image', 'Name', 'Count'] as const export const DetailsColumns = ['Desc', 'Use'] as const export const MoveColumns = ['MoveCount', 'Move'] as const export const TagColumns = ['All', 'Equip', 'Drill', 'Card', 'Quest', 'Consume', 'Compound'] as const export const EquipmentColumns = ['MinLvl', 'Slots', 'RefineNumber', 'RefineState'] as const export const StatsColumns = [ 'HV', 'AC', 'LK', 'WT', 'HP', 'MA', 'DP', 'DX', 'MP', 'AP', 'MD', 'DA', 'GunAP', ] as const export const DebugColumns = [] export const HackColumns = [] as const export const ColumnNames = [ ...BasicColumns, ...MoveColumns, ...DetailsColumns, ...EquipmentColumns, ...StatsColumns, ...TagColumns, ...HackColumns, ] as const export type ColumnName = (typeof ColumnNames)[number] const c = (a: ColumnName | ColumnInfo): ColumnName => { switch (typeof a) { case 'string': return a case 'object': return a.name } } export const LazyColumn = c export const ColumnSorter = (a: ColumnName | ColumnInfo, b: ColumnName | ColumnInfo): number => { const n1 = ColumnNames.indexOf(c(a)) const n2 = ColumnNames.indexOf(c(b)) if (n1 === n2) { return 0 } return n1 > n2 ? 1 : -1 } export interface ColumnInfo { name: ColumnName displayName: string options?: (s: string[]) => string[] renderer?: any filtering?: boolean writable?: boolean getter(item: TricksterItem): string | number }