UNPKG

@euglena/cli

Version:

Command Line Interface to create and manage euglena projects as simple as possible

44 lines (36 loc) 1.62 kB
import * as euglena_template from "@euglena/template"; import * as euglena from "@euglena/core"; import { sys, js } from "cessnalib"; import { Injectable } from "@angular/core"; import Particle = euglena.ParticleV1; import Exception = sys.type.Exception; import constants = euglena_template.alive.constants; @Injectable() export class Organelle extends euglena_template.alive.organelle.WebUIOrganelle { private map: sys.type.Map<string, ((particle, callback) => void)[]> = new sys.type.Map<string, ((particle, callback) => void)[]>(); public sap: euglena_template.alive.particle.WebUIOrganelleSap; private _addAction: (particleName: string, action: (particle: Particle, callback: (particle: Particle) => void) => void) => void; constructor() { super(); } protected bindActions(addAction: (particleName: string, action: (particle: Particle, callback: (particle: Particle) => void) => void) => void): void { this._addAction = addAction; this.addAction(constants.particles.WebUIOrganelleSap, (sap) => { this.sap = sap; }); } public addAction(key: string, listener: (particle, callback) => void) { let listeners = this.map.get(key); if (listeners) { listeners.push(listener); } else { this.map.set(key, [listener]); this._addAction(key, (particle, callback) => { let ll = this.map.get(key); for (let l of ll) { l(particle, callback); } }); } } }