@gobstones/gs-board-tsx
Version:
171 lines (163 loc) • 5.34 kB
TypeScript
import React from 'react';
import { CellInfo, CellLocation as CellLocation$1 } from '@gobstones/gobstones-gbb-parser';
declare type AttireContent = {
image: string;
text: string;
};
declare class Board {
cells: CellInfo[][];
constructor(columnsQuantity: number, rowsQuantity: number, boardInfo: CellInfo[][] | undefined);
getCell([x, y]: CellLocation$1): CellInfo;
getColumnsQuantity(): number;
getRowsQuantity(): number;
addColumn(): Board;
removeColumn(): Board;
addRow(): Board;
removeRow(): Board;
setColumnsQuantity(n: number): Board;
addColumns(x: number): Board;
private removeColumns;
setRowsQuantity(x: number): Board;
private addRows;
private removeRows;
removeNBlueAt(_c: CellLocation$1, _n: number): Board;
removeNBlackAt(_c: CellLocation$1, _n: number): Board;
removeNRedAt(_c: CellLocation$1, _n: number): Board;
removeNGreenAt(_c: CellLocation$1, _n: number): Board;
addNBlueAtOn(_c: CellLocation$1, _n: Number): Board;
addNBlackAtOn(_c: CellLocation$1, _n: Number): Board;
addNGreenAtOn(_c: CellLocation$1, _n: Number): Board;
addNRedAtOn(_c: CellLocation$1, _n: Number): Board;
static initializeMatrix(columnsQuantity: number, rowsQuantity: number): CellInfo[][];
getCellInfo(): CellInfo[][];
}
declare type ThemeStringType = "classic" | "deuteranope" | "protanope" | "tritanope" | "flat" | "high-contrast" | "lines" | "modern" | "shapes";
declare abstract class AbstractTheme {
abstract changeCSSVariables(): void;
abstract canHandleName(name: string): boolean;
setHeaderToDaltonism(): void;
setAmountColorTo(color: string): void;
setStonesColorTo(theme: string): void;
setCellBackgroundColor(color: string): void;
setHeaderColors(headerBackground: string, headerOutline: string): void;
setBorderColors(borderBackground: string, borderNumbersColor: string): void;
setDefaultHeader(): void;
}
declare class ClassicTheme extends AbstractTheme {
canHandleName(name: string): boolean;
changeCSSVariables(): void;
}
declare type LanguageStringType = "en" | "es";
declare type AttireJSON = {
enabled: boolean;
rules: Rule[];
borders: Borders;
};
declare type CellWhenAttire = {
red: number | string;
green: number | string;
black: number | string;
blue: number | string;
};
declare type Rule = {
when: CellWhenAttire;
image: string;
text?: string;
};
declare type Borders = {
bottom: string;
bottomLeft: string;
bottomRight: string;
left: string;
right: string;
top: string;
topLeft: string;
topRight: string;
};
declare class Attire {
attire: AttireJSON;
constructor(att?: AttireJSON);
getAttireJSON(): AttireJSON;
getAttireFor(black: number, blue: number, green: number, red: number): {
image: string;
text: string;
};
getwhen(black: number, blue: number, green: number, red: number): {
image: string;
text: string;
};
ruleMatchWith(rule: Rule, black: number, blue: number, green: number, red: number): boolean;
match(when: number | string, amount: number): boolean;
matchRegex(when: string, amount: number): boolean;
getTopLeftCorner(): string;
getTopRightCorner(): string;
getBottomRightCorner(): string;
getBottomLeftCorner(): string;
getBottomBorder(): string;
getTopBorder(): string;
getLeftBorder(): string;
getRightBorder(): string;
}
declare type BoardState = {
header: CellLocation;
cells: Board;
attire: Attire;
theme: AbstractTheme;
};
declare type CellLocation = [number, number];
declare type BoardProps = {
columnsQuantity: number;
rowsQuantity: number;
header: CellLocation;
editable: boolean;
boardInfo?: CellInfo[][];
attire: AttireJSON;
theme: ThemeStringType;
language: LanguageStringType;
};
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 { BoardComponent };