UNPKG

malwoden

Version:

![alt text](./coverage/badge-lines.svg) ![alt text](./coverage/badge-statements.svg) ![alt text](./coverage/badge-functions.svg) ![alt text](./coverage/badge-branches.svg)

122 lines 4.98 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ButtonWidget = exports.HoverState = void 0; var struct_1 = require("../struct"); var terminal_1 = require("../terminal"); var widget_1 = require("./widget"); var Calc = require("../calc"); var draw_borders_1 = require("./util/draw-borders"); var HoverState; (function (HoverState) { HoverState[HoverState["None"] = 0] = "None"; HoverState[HoverState["Hover"] = 1] = "Hover"; HoverState[HoverState["Down"] = 2] = "Down"; })(HoverState = exports.HoverState || (exports.HoverState = {})); var ButtonWidget = /** @class */ (function (_super) { __extends(ButtonWidget, _super); function ButtonWidget(config) { var _this = _super.call(this, config) || this; _this.state = __assign({ foreColor: terminal_1.Color.White, hoverColor: terminal_1.Color.DarkGray, downColor: terminal_1.Color.Black, backColor: terminal_1.Color.Black, padding: 0 }, config.initialState); return _this; } ButtonWidget.prototype.getPadding = function () { var _a; return (_a = this.state.padding) !== null && _a !== void 0 ? _a : 0; }; ButtonWidget.prototype.getBounds = function () { return struct_1.Rect.FromWidthHeight(this.absoluteOrigin, this.getPadding() * 2 + this.state.text.length, this.getPadding() * 2 + 1); }; ButtonWidget.prototype.getMouseStateFromMouseHandler = function (mouseHandler, terminal) { if (!mouseHandler || !terminal) return HoverState.None; var mousePos = mouseHandler.getPos(); var terminalPos = terminal.windowToTilePoint(mousePos); var mouseDown = mouseHandler.isMouseDown(); if (this.getBounds().contains(terminalPos)) { if (mouseDown) { return HoverState.Down; } else { return HoverState.Hover; } } else { return HoverState.None; } }; ButtonWidget.prototype.getBackColor = function (mouseState) { if (mouseState === HoverState.None) { return this.state.backColor; } if (mouseState === HoverState.Hover) { return this.state.hoverColor; } if (mouseState === HoverState.Down) { return this.state.downColor; } }; ButtonWidget.prototype.onMouseClick = function (event) { if (!this.terminal || !this.state.onClick) return false; var tilePos = this.terminal.windowToTilePoint(event); if (this.getBounds().contains(tilePos)) { this.state.onClick(); return true; } return false; }; ButtonWidget.prototype.onDraw = function () { if (!this.terminal) return; var bounds = this.getBounds(); var hoverState = this.getMouseStateFromMouseHandler(this.mouseHandler, this.terminal); var backColor = this.getBackColor(hoverState); var g = terminal_1.Glyph.fromCharCode(terminal_1.CharCode.space, this.state.foreColor, backColor); for (var y = bounds.v1.y; y <= bounds.v2.y; y++) { for (var x = bounds.v1.x; x <= bounds.v2.x; x++) { this.terminal.drawGlyph({ x: x, y: y }, g); } } this.terminal.writeAt(Calc.Vector.add(bounds.v1, { x: this.getPadding(), y: this.getPadding(), }), this.state.text, this.state.foreColor, backColor); // Draw borders if (this.getPadding() > 0 && this.state.borderStyle) { draw_borders_1.drawBorder({ terminal: this.terminal, style: this.state.borderStyle, foreColor: this.state.foreColor, backColor: backColor, bounds: this.getBounds(), }); } }; return ButtonWidget; }(widget_1.Widget)); exports.ButtonWidget = ButtonWidget; //# sourceMappingURL=button-widget.js.map