@gobstones/gs-board-tsx
Version:
71 lines (70 loc) • 2.17 kB
TypeScript
import React from "react";
import { AttireContent } from "./Cell";
import { Board } from "./Board";
import { AbstractTheme, ClassicTheme, ThemeStringType } from "./Theme";
import { LanguageStringType } from "./Language";
import { CellInfo } from "@gobstones/gobstones-gbb-parser";
import { Attire, AttireJSON } from "./Attire";
declare type BoardState = {
header: CellLocation;
cells: Board;
attire: Attire;
theme: AbstractTheme;
};
export declare type CellLocation = [number, number];
declare type BoardProps = {
columnsQuantity: number;
rowsQuantity: number;
header: CellLocation;
editable: boolean;
boardInfo?: CellInfo[][];
attire: AttireJSON;
theme: ThemeStringType;
language: LanguageStringType;
};
export declare class BoardComponent extends React.Component<BoardProps, BoardState> {
constructor(props: BoardProps);
static defaultProps: {
columnsQuantity: number;
rowsQuantity: number;
header: {
x: number;
y: number;
};
editable: boolean;
attire: AttireJSON;
theme: ClassicTheme;
language: string;
};
componentDidMount(): void;
componentWillUnmount(): void;
render(): React.ReactElement;
handleRightArrowClickRight(): void;
handleRightArrowClickLeft(): void;
handleTopArrowClickUp(): void;
handleTopArrowClickDown(): void;
handleChangeXSize(n: number): void;
handleChangeYSize(n: number): void;
resetHeader(): void;
renderRightArrows(): JSX.Element;
renderTopArrows(): JSX.Element;
private mapColumnsBorder;
private mapRaws;
private mapColumnsContent;
private handleAddBlue;
private handleAddGreen;
private handleAddBlack;
getAttireFor(x: number, y: number): AttireContent;
private handleAddRed;
isHeader(x: number, y: number): boolean;
handleKeyPressed(e: KeyboardEvent): void;
private handleFileChange;
private parseBoardFile;
private handleRemoveBlue;
private handleRemoveBlack;
private handleRemoveGreen;
private handleRemoveRed;
private handleExportGBB;
private handleThemeChange;
}
export {};