UNPKG

chessgroundx

Version:
126 lines (125 loc) 4.03 kB
export declare type Color = typeof colors[number]; export declare type Side = typeof sides[number]; export declare type Alphabet = typeof letters[number]; export declare type Letter = `${'' | '+'}${Alphabet | Uppercase<Alphabet> | '*'}`; export declare type Role = `${'' | 'p'}${Alphabet | '_'}-piece`; export declare type File = typeof files[number]; export declare type Rank = typeof ranks[number]; export declare type Key = 'a0' | `${File}${Rank}`; export declare type DropOrig = `${Uppercase<Letter>}@`; export declare type Orig = DropOrig | Key; export declare type FEN = string; export declare type Pos = [number, number]; export interface Piece { role: Role; color: Color; promoted?: boolean; mirror?: boolean; } export interface Drop { role: Role; key: Key; } export declare type Pieces = Map<Key, Piece>; export declare type PiecesDiff = Map<Key, Piece | undefined>; export declare type PocketPosition = 'top' | 'bottom'; export declare type Pocket = Map<Role, number>; export declare type Pockets = Record<Color, Pocket>; export declare type PocketRoles = Record<Color, Role[]>; export declare type BoardState = { pieces: Pieces; pockets?: Pockets; }; export declare type Selectable = Key | Piece; export declare type Move = [Orig, Key]; export declare type NumberPair = [number, number]; export declare type NumberQuad = [number, number, number, number]; export interface BoardDimensions { width: number; height: number; } export declare enum Notation { ALGEBRAIC = 0, SHOGI_ENGLET = 1, SHOGI_ARBNUM = 2, SHOGI_HANNUM = 3, JANGGI = 4, XIANGQI_ARBNUM = 5, XIANGQI_HANNUM = 6, THAI_ALGEBRAIC = 7 } export declare type Premove = (boardState: BoardState, key: Key, canCastle: boolean) => Key[]; export declare type Predrop = (boardState: BoardState, piece: Piece) => Key[]; export interface Rect { left: number; top: number; width: number; height: number; } export declare type Dests = Map<Orig, Key[]>; export interface Elements { board: HTMLElement; pocketTop?: HTMLElement; pocketBottom?: HTMLElement; wrap: HTMLElement; container: HTMLElement; ghost?: HTMLElement; svg?: SVGElement; customSvg?: SVGElement; autoPieces?: HTMLElement; } export interface Dom { elements: Elements; bounds: Memo<ClientRect>; 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; } export interface SetPremoveMetadata { ctrlKey?: boolean; } export declare 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; cgScale?: number; } export interface SquareNode extends KeyedNode { tagName: 'SQUARE'; } export interface Memo<A> { (): A; clear: () => void; } export interface Timer { start: () => void; cancel: () => void; stop: () => number; } export declare type Redraw = () => void; export declare type Unbind = () => void; export declare type Milliseconds = number; export declare type KHz = number; export declare type RanksPosition = 'left' | 'right'; export declare const colors: readonly ["white", "black"]; export declare const sides: readonly ["ally", "enemy"]; export declare const files: readonly ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"]; export declare const ranks: readonly ["1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?", "@"]; 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"];