JSFiddle - React, Tailwind, and code Playground

JavaScript

function Widjet() {
    this.onStart = $.Callbacks();
    this.onStop  = $.Callbacks();
    this.onShow  = $.Callbacks();
    this.onHide  = $.Callbacks();
    this.onBefopreDialog  = $.Callbacks();
    this.onAfterDialog  = $.Callbacks();
    this.onDialogOK  = $.Callbacks();
    this.onDialogCancel  = $.Callbacks();
    this.start   = this.onStart.fire;
    this.finish  = this.onStop.fire;
    this.finish  = this.onShow.fire;
    this.finish  = this.onHide.fire;
    this.finish  = this.onBefopreDialog.fire;
    this.finish  = this.onAfterDialog.fire;
    this.finish  = this.onDialogOK.fire;
    this.finish  = this.onDialogCancel.fire;
};

app1 = new App();
app2 = new App();

app1.onStart.add(function() { alert(1) });
app2.onStart.add(function() { alert(2) });

app1.start();
app2.start();