* feat: adding create bot functionality Signed-off-by: James <james@jan.ai> * update the temperature progress bar Signed-off-by: James <james@jan.ai> * WIP baselayout * Mapping plugins with available preferences * Added loader component * WIP working another screen * Cleanup types and avoid import one by one * Prepare bottom bar * Add css variables colors to enable user select the accent * Enable change accent color * Seperate css variable * Fix conflict * Add blank state of my model empty * Restyle explore models page * Enable user config left sidebar * Restyle my models page * WIP styling chat page * Restyling chat message * Fix conflict * Adde form preferences setting plugins * Fixed form bot info * Sidebar bot chat * Showing rightbar for both setting when user created bot * Fix style bot info * Using overflow auto intead of scroll * Remove script built UI from root package * Fix missig import * Resolve error linter * fix e2e tests Signed-off-by: James <james@jan.ai> --------- Signed-off-by: James <james@jan.ai> Co-authored-by: James <james@jan.ai>
41 lines
885 B
TypeScript
41 lines
885 B
TypeScript
export class EventEmitter {
|
|
private handlers: Map<string, Function[]>
|
|
|
|
constructor() {
|
|
this.handlers = new Map<string, Function[]>()
|
|
}
|
|
|
|
public on(eventName: string, handler: Function): void {
|
|
if (!this.handlers.has(eventName)) {
|
|
this.handlers.set(eventName, [])
|
|
}
|
|
|
|
this.handlers.get(eventName)?.push(handler)
|
|
}
|
|
|
|
public off(eventName: string, handler: Function): void {
|
|
if (!this.handlers.has(eventName)) {
|
|
return
|
|
}
|
|
|
|
const handlers = this.handlers.get(eventName)
|
|
const index = handlers?.indexOf(handler)
|
|
|
|
if (index !== undefined && index !== -1) {
|
|
handlers?.splice(index, 1)
|
|
}
|
|
}
|
|
|
|
public emit(eventName: string, args: any): void {
|
|
if (!this.handlers.has(eventName)) {
|
|
return
|
|
}
|
|
|
|
const handlers = this.handlers.get(eventName)
|
|
|
|
handlers?.forEach((handler) => {
|
|
handler(args)
|
|
})
|
|
}
|
|
}
|