UNPKG

@teaui/core

Version:

A high-level terminal UI library for Node

46 lines 1.33 kB
import { Container } from '../Container.js'; /** * A non-visual container that receives mouse events as a fallback. Children that * register for mouse events on the same pixels will take priority (since they * render after this view and override the registration). * * By default listens for all button and wheel events. Pass `mouse` to restrict * which events to listen for. */ export class Mouse extends Container { #mouse; #onMouse; constructor(props) { super(props); this.#mouse = []; this.#update(props); } update(props) { this.#update(props); super.update(props); } #update({ mouse, onMouse }) { if (mouse === undefined) { this.#mouse = ['mouse.button.all', 'mouse.wheel', 'mouse.move']; } else if (typeof mouse === 'string') { this.#mouse = [mouse]; } else { this.#mouse = mouse; } this.#onMouse = onMouse; } naturalSize(available) { return super.naturalSize(available); } receiveMouse(event, system) { super.receiveMouse(event, system); this.#onMouse?.(event, system); } render(viewport) { viewport.registerMouse(this.#mouse); super.render(viewport); } } //# sourceMappingURL=Mouse.js.map