chessground12
Version:
Extended lishuuro.org Chess UI
120 lines (119 loc) • 3.63 kB
TypeScript
export type Variant = 'shuuro' | 'standard';
export type Color = (typeof colors)[number];
export type PieceSide = (typeof pieceSides)[number];
export type Letter = (typeof letters)[number];
export type PieceLetter = `${'' | '+'}${Letter | Uppercase<Letter>}`;
export type Role = `${'' | 'p'}${Letter}-piece`;
export type File = (typeof files)[number];
export type Rank = (typeof ranks)[number];
export type Key = 'a0' | `${File}${Rank}`;
export type DropOrig = `${PieceLetter}@`;
export type Orig = DropOrig | Key;
export type FEN = string;
export type Pos = [number, number];
export interface Piece {
role: Role;
color: Color;
promoted?: boolean;
}
export interface Drop {
role: Role;
key: Key;
}
export type Pieces = Map<Key, Piece>;
export type Plinths = Map<Key, Piece>;
export type PiecesDiff = Map<Key, Piece | undefined>;
export type KeyPair = [Key, Key];
export type NumberPair = [number, number];
export type NumberQuad = [number, number, number, number];
export interface Rect {
left: number;
top: number;
width: number;
height: number;
}
export type DropDests = Map<Role, Key[]>;
export type Dests = Map<Orig, Key[]>;
export interface Elements {
board: HTMLElement;
pocketTop?: HTMLElement;
pocketBottom?: HTMLElement;
wrap: HTMLElement;
container: HTMLElement;
ghost?: HTMLElement;
svg?: SVGElement;
customSvg?: SVGElement;
}
export interface Dom {
elements: Elements;
bounds: Memo<DOMRect>;
redraw: () => void;
redrawNow: (skipSvg?: boolean) => void;
unbind?: Unbind;
destroyed?: boolean;
}
export interface Exploding {
stage: number;
keys: readonly Key[];
}
export interface MoveMetadata {
premove: boolean;
ctrlKey?: boolean;
holdTime?: number;
captured?: Piece;
predrop?: boolean;
}
export interface SetPremoveMetadata {
ctrlKey?: boolean;
}
export type MouchEvent = Event & Partial<MouseEvent & TouchEvent>;
export interface KeyedNode extends HTMLElement {
cgKey: Key;
}
export interface PieceNode extends KeyedNode {
tagName: 'PIECE';
cgPiece: string;
cgAnimating?: boolean;
cgFading?: boolean;
cgDragging?: boolean;
}
export interface SquareNode extends KeyedNode {
tagName: 'SQUARE';
}
export interface Memo<A> {
(): A;
clear: () => void;
}
export interface Timer {
start: () => void;
cancel: () => void;
stop: () => number;
}
export type Redraw = () => void;
export type Unbind = () => void;
export type Milliseconds = number;
export type KHz = number;
export declare const colors: readonly ["white", "black", "none"];
export declare const pieceSides: readonly ["ally", "enemy"];
export declare const files: readonly ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l"];
export declare const ranks: readonly ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"];
export declare const letters: readonly ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
export interface BoardDimensions {
width: number;
height: number;
}
export declare enum Geometry {
dim12x12 = 0,
dim8x8 = 1,
dim6x6 = 2
}
export declare const enum Notation {
ALGEBRAIC = 0
}
export declare const dimensions: BoardDimensions[];
export type PocketPosition = 'top' | 'bottom';
export type Pocket = Partial<Record<Role, number>>;
export type Pockets = Partial<Record<Color, Pocket>>;
export type PocketRoles = (color: Color) => PieceLetter[] | undefined;
export declare const eventsDragging: string[];
export declare const eventsClicking: string[];