UNPKG

@stimulus-library/controllers

Version:

A library of useful controllers for Stimulus

31 lines (30 loc) 1.03 kB
import { BaseController, EventBus } from "@stimulus-library/utilities"; import { extractExpressions, extractPredicates } from "./expressions"; import { signalConnectEvent, signalValueEvent } from "./events"; import { useEventBus } from "@stimulus-library/mixins"; export class SignalBaseController extends BaseController { get predicateString() { return ""; } get _predicates() { return extractPredicates(this.predicateString); } get _expressions() { return extractExpressions(this.predicateString); } connect() { EventBus.emit(signalConnectEvent(this.nameValue)); useEventBus(this, signalValueEvent(this.nameValue), this._onSignal); } predicatesMatch(value) { if (this.predicateString.includes("||")) { return this._predicates.some(predicate => predicate(value)); } else { return this._predicates.every(predicate => predicate(value)); } } } SignalBaseController.values = { name: String, };