UNPKG

led-matrix-ts

Version:

Highly customizable led matrix for the browser

133 lines 4.2 kB
import { Board } from "./board"; import { Panel } from "./panel"; import { Event } from "../utils/event"; import { CharacterDictionary } from "./character-dictionary"; import { SideScroller } from "./scrollers/side-scroller"; export class LedMatrix { constructor(params) { this.onReady = new Event(); this._params = this._validateParameters(params); this._panel = new Panel({ board: new Board({ letterSpacing: this._params.letterSpacing, padding: this._params.padding, size: this._params.size }), increment: this._params.increment, reverse: this._params.reverse, width: this._params.panelWidth, scroller: this._params.scroller }); this.event = { newSequence: this._panel.NewSequence }; this._dictionary = new CharacterDictionary(); } get Ready() { return this.onReady.expose(); } get size() { return this._size; } set size(value) { this._size = value; this._panel.board.load(this.input, this._dictionary, this.size); this._panel.GetCurrentSequence(); } get loopEndIndex() { return this._panel.scroller.loopEndIndex(this._panel); } addCharacters(characters) { this._dictionary.add(characters); } addCharacter(character) { this._dictionary.add([character]); } editCharacter(character) { this._dictionary.edit(character); } deleteCharacter(character) { this._dictionary.delete(character); } get loadedCharacters() { return this._dictionary.characters; } get usedCharacters() { return this._panel.board.characters; } set letterSpacing(value) { this._panel.board.letterSpacing = value; } get letterSpacing() { return this._panel.board.letterSpacing; } set padding(value) { this._panel.board.padding = value; } get padding() { return this._panel.board.padding; } get width() { return this._panel.board.width; } get height() { return this._panel.board.height; } set input(value) { this._panel.board.load(value, this._dictionary); } get input() { return this._panel.board.input; } get sequence() { return this._panel.GetCurrentSequence(); } set scroller(value) { this._panel.scroller = value; } get scroller() { return this._panel.scroller; } get reverse() { return this._panel.reverse; } set increment(value) { this._panel.increment = value; } get increment() { return this._panel.increment; } set reverse(value) { this._panel.reverse = value; } set viewportWidth(value) { this._panel.width = value; } get viewportWidth() { return this._panel.width; } _validateParameters(params) { let defaultParams = { increment: 1, scroller: new SideScroller(), reverse: false, panelWidth: 78, letterSpacing: 2, padding: [0, 20, 0, 0], size: 1 }; if (params) { params.letterSpacing = this._valueOrDefaultIfNull(params.letterSpacing, defaultParams.letterSpacing); params.padding = this._valueOrDefaultIfNull(params.padding, defaultParams.padding); params.size = this._valueOrDefaultIfNull(params.size, defaultParams.size); params.increment = this._valueOrDefaultIfNull(params.increment, defaultParams.increment); params.scroller = this._valueOrDefaultIfNull(params.scroller, defaultParams.scroller); params.reverse = this._valueOrDefaultIfNull(params.reverse, defaultParams.reverse); params.panelWidth = this._valueOrDefaultIfNull(params.panelWidth, defaultParams.panelWidth); return params; } return defaultParams; } _valueOrDefaultIfNull(value, defaultValue) { return value == null ? defaultValue : value; } } //# sourceMappingURL=led-matrix.js.map