@teaui/core
Version:
A high-level terminal UI library for Node
66 lines (65 loc) • 2.87 kB
TypeScript
import type { MouseButton } from '../sys';
import { View } from '../View';
import { Point, Rect } from '../geometry';
export type MouseMove = 'enter' | 'in' | 'below' | 'exit';
export type MouseClick = 'down' | 'exit' | 'enter' | 'dragInside' | 'dragOutside' | 'up' | 'cancel';
export type MouseWheel = 'up' | 'down' | 'left' | 'right';
export type MouseEventListenerName = 'mouse.move' | 'mouse.button.all' | `mouse.button.${MouseButton}` | 'mouse.wheel';
export type SystemMouseEventName = 'mouse.move.in' | 'mouse.button.down' | 'mouse.button.up' | 'mouse.wheel.up' | 'mouse.wheel.down' | 'mouse.wheel.left' | 'mouse.wheel.right';
export type MouseEventName = `mouse.move.${MouseMove}` | `mouse.button.${MouseClick}` | `mouse.wheel.${MouseWheel}`;
export type MouseEvent = {
position: Point;
type: 'mouse';
name: MouseEventName;
ctrl: boolean;
meta: boolean;
shift: boolean;
button: MouseButton;
};
export type SystemMouseEvent = Omit<MouseEvent, 'name' | 'position'> & {
name: SystemMouseEventName;
x: number;
y: number;
};
export type MouseDownEvent = {
target?: MouseEventTarget & {
wasInside: boolean;
};
button: MouseButton;
};
export type MouseEventTarget = {
view: View;
offset: Point;
};
export type MouseEventListener = {
move: MouseEventTarget[];
buttonAll?: MouseEventTarget;
buttonLeft?: MouseEventTarget;
buttonMiddle?: MouseEventTarget;
buttonRight?: MouseEventTarget;
wheel?: MouseEventTarget;
};
export declare function isMouseClicked(event: MouseEvent, inside?: Rect): boolean;
/**
* 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 declare function isMousePressStart(event: SystemMouseEvent | MouseEvent): boolean;
/**
* 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 declare function isMousePressExit(event: SystemMouseEvent | MouseEvent): boolean;
export declare function isMousePressEnd(event: SystemMouseEvent | MouseEvent): boolean;
/**
* Dragging events (dragInside, dragOutside), but *also* mouse.button.down
*/
export declare function isMouseDragging(event: SystemMouseEvent | MouseEvent): boolean;
export declare function isMouseEnter(event: MouseEvent): boolean;
export declare function isMouseExit(event: MouseEvent): boolean;
export declare function isMouseButton(event: SystemMouseEvent): boolean;
export declare function isMouseWheel(event: SystemMouseEvent | MouseEvent): boolean;
export declare function isMouseMove(event: SystemMouseEvent | MouseEvent): boolean;