UNPKG

@gobstones/gs-board-tsx

Version:
171 lines (163 loc) 5.34 kB
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 };