{"version":3,"sources":["../../src/adaptors/iframe.ts"],"sourcesContent":["import EventEmitter from 'eventemitter3'\r\nimport { isRemoteAdaptorData } from '../remote'\r\n\r\nimport type { Adaptor, AdaptorPackageData } from '../adaptor'\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    window.addEventListener('message', (event) => {\r\n      const { data } = event\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 createIframeAdaptor({\r\n  onEmit,\r\n}: {\r\n  onEmit: (data: AdaptorPackageData) => void\r\n}) {\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,gBACzB,OAAS,uBAAAC,MAA2B,YAIpC,MAAMC,UAA2BF,CAE9B,CACD,iBAAmB,mBAEnB,aAAc,CACZ,MAAM,EACF,SAAO,OAAW,MAGtB,OAAO,iBAAiB,UAAYG,GAAU,CAC5C,KAAM,CAAE,KAAAC,CAAK,EAAID,EACbF,EAAoBG,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,EAAoB,CAClC,OAAAC,CACF,EAEG,CACD,MAAMC,EAAqB,IAAIN,EAU/B,MARyB,CACvB,MAAOM,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","RemoteEventManager","event","data","fn","createIframeAdaptor","onEmit","remoteEventManager"]}