UNPKG

@teaui/core

Version:

A high-level terminal UI library for Node

56 lines 2 kB
import { Point } from '../geometry.js'; export function isMouseClicked(event, inside) { if (event.name !== 'mouse.button.up') { return false; } if (inside === undefined) { return true; } return inside.includes(new Point(event.position)); } /** * A mouse press event is started with a 'down' event, but can also begin again * after the mouse is dragged outside the component ('exit' event), and then * dragged back inside ('enter'). */ export function isMousePressStart(event) { return (event.name.startsWith('mouse.button.') && ['down', 'enter'].some(suffix => event.name.endsWith(suffix))); } /** * Press-exit is an uncomfortable name, it refers to either ending the press event * ('up', 'cancel') or dragging the mouse outside the component ('exit'). If the * component has has a 'pressed' highlight effect, `isMousePressExit` should turn * that effect off. */ export function isMousePressExit(event) { return (event.name.startsWith('mouse.button.') && ['up', 'exit', 'cancel'].some(suffix => event.name.endsWith(suffix))); } export function isMousePressEnd(event) { return (event.name.startsWith('mouse.button.') && ['up', 'cancel'].some(suffix => event.name.endsWith(suffix))); } /** * Dragging events (dragInside, dragOutside), but *also* mouse.button.down */ export function isMouseDragging(event) { return (event.name.startsWith('mouse.button.') && ['.up', '.cancel', '.enter', '.exit'].every(suffix => !event.name.endsWith(suffix))); } export function isMouseEnter(event) { return event.name.endsWith('.enter'); } export function isMouseExit(event) { return event.name.endsWith('.exit'); } export function isMouseButton(event) { return event.name.startsWith('mouse.button.'); } export function isMouseWheel(event) { return event.name.startsWith('mouse.wheel.'); } export function isMouseMove(event) { return event.name.startsWith('mouse.move.'); } //# sourceMappingURL=mouse.js.map