{"version":3,"sources":["../../../src/adaptors/electron/renderer.ts"],"sourcesContent":["import EventEmitter from 'eventemitter3'\r\nimport { Adaptor, AdaptorPackageData } from '../../adaptor'\r\nimport { isRemoteAdaptorData } from '../../remote'\r\nimport { getMessenger } from './messenger'\r\nimport { MESSENGER_EVENT_NAME } from './constants'\r\n\r\nclass RemoteEventManager extends EventEmitter<{\r\n  [key: string]: [AdaptorPackageData]\r\n}> {\r\n  EVERY_EVENT_NAME = '__remote_every__'\r\n\r\n  constructor() {\r\n    super()\r\n    if (typeof window === 'undefined') {\r\n      return\r\n    }\r\n    getMessenger().on(MESSENGER_EVENT_NAME, (data) => {\r\n      if (isRemoteAdaptorData(data)) {\r\n        this.emit(data.name, data)\r\n        // 一定要抛出 every 事件，remote 包基于此处理远端的响应\r\n        this.emit(this.EVERY_EVENT_NAME, data)\r\n      }\r\n    })\r\n  }\r\n\r\n  onEvery(fn: (data: AdaptorPackageData) => void) {\r\n    this.on(this.EVERY_EVENT_NAME, fn)\r\n  }\r\n}\r\n\r\nexport function onElectronRendererEmit(data: AdaptorPackageData) {\r\n  getMessenger().postMessage(data)\r\n}\r\n\r\ninterface Options {\r\n  onEmit?: (data: AdaptorPackageData) => void\r\n}\r\n\r\nexport function createElectronRendererAdaptor(options?: Options) {\r\n  const onEmit = options?.onEmit ?? onElectronRendererEmit\r\n  const remoteEventManager = new RemoteEventManager()\r\n\r\n  const adaptor: Adaptor = {\r\n    every: remoteEventManager.onEvery.bind(remoteEventManager),\r\n    on: remoteEventManager.on.bind(remoteEventManager),\r\n    once: remoteEventManager.once.bind(remoteEventManager),\r\n    off: remoteEventManager.off.bind(remoteEventManager),\r\n    emit: onEmit,\r\n  }\r\n\r\n  return adaptor\r\n}\r\n"],"mappings":"AAAA,OAAOA,MAAkB,gBAEzB,OAAS,uBAAAC,MAA2B,eACpC,OAAS,gBAAAC,MAAoB,cAC7B,OAAS,wBAAAC,MAA4B,cAErC,MAAMC,UAA2BJ,CAE9B,CACD,iBAAmB,mBAEnB,aAAc,CACZ,MAAM,EACF,SAAO,OAAW,MAGtBE,EAAa,EAAE,GAAGC,EAAuBE,GAAS,CAC5CJ,EAAoBI,CAAI,IAC1B,KAAK,KAAKA,EAAK,KAAMA,CAAI,EAEzB,KAAK,KAAK,KAAK,iBAAkBA,CAAI,EAEzC,CAAC,CACH,CAEA,QAAQC,EAAwC,CAC9C,KAAK,GAAG,KAAK,iBAAkBA,CAAE,CACnC,CACF,CAEO,SAASC,EAAuBF,EAA0B,CAC/DH,EAAa,EAAE,YAAYG,CAAI,CACjC,CAMO,SAASG,EAA8BC,EAAmB,CAC/D,MAAMC,GAASD,GAAA,YAAAA,EAAS,SAAUF,EAC5BI,EAAqB,IAAIP,EAU/B,MARyB,CACvB,MAAOO,EAAmB,QAAQ,KAAKA,CAAkB,EACzD,GAAIA,EAAmB,GAAG,KAAKA,CAAkB,EACjD,KAAMA,EAAmB,KAAK,KAAKA,CAAkB,EACrD,IAAKA,EAAmB,IAAI,KAAKA,CAAkB,EACnD,KAAMD,CACR,CAGF","names":["EventEmitter","isRemoteAdaptorData","getMessenger","MESSENGER_EVENT_NAME","RemoteEventManager","data","fn","onElectronRendererEmit","createElectronRendererAdaptor","options","onEmit","remoteEventManager"]}