{"version":3,"file":"agent/event/manager.mjs","sources":["webpack://@agent-infra/browser-use/./src/agent/event/manager.ts"],"sourcesContent":["/**\n * The following code is modified based on\n * https://github.com/nanobrowser/nanobrowser/blob/master/chrome-extension/src/background/agent/event/manager.ts\n *\n * Apache-2.0 License\n * Copyright (c) 2024 alexchenzl\n * https://github.com/nanobrowser/nanobrowser/blob/master/LICENSE\n */\nimport type { AgentEvent, EventType, EventCallback } from './types';\nimport { createLogger } from '../../utils';\n\nconst logger = createLogger('event-manager');\n\nexport class EventManager {\n  private _subscribers: Map<EventType, EventCallback[]>;\n\n  constructor() {\n    this._subscribers = new Map();\n  }\n\n  subscribe(eventType: EventType, callback: EventCallback): void {\n    if (!this._subscribers.has(eventType)) {\n      this._subscribers.set(eventType, []);\n    }\n\n    const callbacks = this._subscribers.get(eventType);\n    if (callbacks && !callbacks.includes(callback)) {\n      callbacks.push(callback);\n    }\n  }\n\n  unsubscribe(eventType: EventType, callback: EventCallback): void {\n    if (this._subscribers.has(eventType)) {\n      const callbacks = this._subscribers.get(eventType);\n      if (callbacks) {\n        this._subscribers.set(\n          eventType,\n          callbacks.filter((cb) => cb !== callback),\n        );\n      }\n    }\n  }\n\n  clearSubscribers(eventType: EventType): void {\n    if (this._subscribers.has(eventType)) {\n      this._subscribers.set(eventType, []);\n    }\n  }\n\n  async emit(event: AgentEvent): Promise<void> {\n    const callbacks = this._subscribers.get(event.type);\n    if (callbacks) {\n      try {\n        await Promise.all(\n          callbacks.map(async (callback) => await callback(event)),\n        );\n      } catch (error) {\n        logger.error('Error executing event callbacks:', error);\n      }\n    }\n  }\n}\n"],"names":["logger","createLogger","EventManager","eventType","callback","callbacks","cb","event","Promise","error","Map"],"mappings":";;;;;AAOC;;;;;;;;;;AAID,MAAMA,SAASC,aAAa;AAErB,MAAMC;IAOX,UAAUC,SAAoB,EAAEC,QAAuB,EAAQ;QAC7D,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAACD,YACzB,IAAI,CAAC,YAAY,CAAC,GAAG,CAACA,WAAW,EAAE;QAGrC,MAAME,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAACF;QACxC,IAAIE,aAAa,CAACA,UAAU,QAAQ,CAACD,WACnCC,UAAU,IAAI,CAACD;IAEnB;IAEA,YAAYD,SAAoB,EAAEC,QAAuB,EAAQ;QAC/D,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAACD,YAAY;YACpC,MAAME,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAACF;YACxC,IAAIE,WACF,IAAI,CAAC,YAAY,CAAC,GAAG,CACnBF,WACAE,UAAU,MAAM,CAAC,CAACC,KAAOA,OAAOF;QAGtC;IACF;IAEA,iBAAiBD,SAAoB,EAAQ;QAC3C,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAACA,YACxB,IAAI,CAAC,YAAY,CAAC,GAAG,CAACA,WAAW,EAAE;IAEvC;IAEA,MAAM,KAAKI,KAAiB,EAAiB;QAC3C,MAAMF,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAACE,MAAM,IAAI;QAClD,IAAIF,WACF,IAAI;YACF,MAAMG,QAAQ,GAAG,CACfH,UAAU,GAAG,CAAC,OAAOD,WAAa,MAAMA,SAASG;QAErD,EAAE,OAAOE,OAAO;YACdT,OAAO,KAAK,CAAC,oCAAoCS;QACnD;IAEJ;IA5CA,aAAc;QAFd,uBAAQ,gBAAR;QAGE,IAAI,CAAC,YAAY,GAAG,IAAIC;IAC1B;AA2CF"}