UNPKG

lazy-widgets

Version:

Typescript retained mode GUI for the HTML canvas API

79 lines 2.68 kB
import { ClickState } from "./ClickState.js"; /** * A class that mixes multiple {@link GenericClickHelper} instances into one. * Useful if you want a widget to be both clickable by a pointer and by the * enter key * * @category Helper */ export class CompoundClickHelper { constructor(clickHelpers) { this.clickHelpers = clickHelpers; } get lastClickState() { let highestState = ClickState.Released; for (const clickHelper of this.clickHelpers) { if (clickHelper.lastClickState > highestState) { highestState = clickHelper.lastClickState; } } return highestState; } get clickState() { let highestState = ClickState.Released; for (const clickHelper of this.clickHelpers) { if (clickHelper.clickState > highestState) { highestState = clickHelper.clickState; } } return highestState; } /** * See {@link BaseClickHelper#clickStateChanged}. * * Note that this does not check if the combined state has changed, it only * check if any of the states in {@link CompoundClickHelper#clickHelpers} * has changed, meaning that this can be true while * {@link CompoundClickHelper#clickState} is equal to * {@link CompoundClickHelper#lastClickState}. To check whether the combined * state changed, compare the aforementioned values. This is the default * behaviour so that clicks aren't dropped. */ get clickStateChanged() { for (const clickHelper of this.clickHelpers) { if (clickHelper.clickStateChanged) { return true; } } return false; } /** * Similar to {@link BaseClickHelper#wasClick}, except that the wasClick * property for each click helper is only true if the * {@link BaseClickHelper#clickStateChanged} property is also true. */ get wasClick() { for (const clickHelper of this.clickHelpers) { if (clickHelper.wasClick && clickHelper.clickStateChanged) { return true; } } return false; } /** Resets each click helper instance being mixed. */ reset() { for (const clickHelper of this.clickHelpers) { clickHelper.reset(); } } /** * Unsets the {@link BaseClickHelper#clickStateChanged} flag in each click * helper instance being mixed. */ doneProcessing() { for (const clickHelper of this.clickHelpers) { clickHelper.doneProcessing(); } } } //# sourceMappingURL=CompoundClickHelper.js.map