pxt-core
Version:
Microsoft MakeCode provides Blocks / JavaScript / Python tools and editors
48 lines (47 loc) • 2.14 kB
TypeScript
import * as Blockly from "blockly";
interface MatrixDisplayProps {
cellWidth: number;
cellHeight: number;
cellLabel: string;
cellHorizontalMargin: number;
cellVerticalMargin: number;
cornerRadius: number;
cellStroke?: string;
cellFill?: string;
padLeft?: number;
scale?: number;
}
export declare abstract class FieldMatrix extends Blockly.Field {
protected cells: SVGRectElement[][];
protected matrixSvg: SVGSVGElement;
private keyDownBinding;
private blurBinding;
protected selected: [x: number, y: number] | undefined;
protected abstract numMatrixCols: number;
protected abstract numMatrixRows: number;
protected abstract clearSelectionOnBlur: boolean;
protected forceFocusVisible: boolean;
protected returnEphemeralFocusFn: Blockly.ReturnEphemeralFocus | undefined;
protected createMatrixDisplay({ cellWidth, cellHeight, cellLabel, cellHorizontalMargin, cellVerticalMargin, cornerRadius, cellFill, cellStroke, padLeft, scale }: MatrixDisplayProps): void;
protected handleArrowUp(x: number, y: number): void;
protected handleArrowDown(x: number, y: number): void;
protected handleArrowLeft(x: number, y: number): void;
protected handleArrowRight(x: number, y: number): void;
private addKeyDownHandler;
private addBlurHandler;
protected focusCell(x: number, y: number): void;
private setCellSelection;
protected clearCellSelection(): void;
private setFocusIndicator;
protected clearFocusIndicator(): void;
protected addKeyboardFocusHandlers(): void;
protected attachEventHandlersToMatrix(): void;
protected returnEphemeralFocus(): void;
protected removeKeyboardFocusHandlers(): void;
protected getCellId: (x: number, y: number) => string;
protected abstract attachPointerEventHandlersToCell(x: number, y: number, cellRect: SVGElement): void;
protected abstract useTwoToneFocusIndicator(x: number, y: number): boolean;
protected abstract toggleCell(x: number, y: number, value?: boolean): void;
protected abstract getCellToggled(x: number, y: number): boolean;
}
export {};