{"version":3,"file":"puppeteer/browser-page-manager.mjs","sources":["../../../src/puppeteer/browser-page-manager.ts"],"sourcesContent":["import {\n  type BrowserAgentAdapter,\n  BrowserPageManager,\n  type ResolvedBrowserAgentRuntimeOptions,\n} from '@/common/browser-agent';\nimport type { DebugFunction } from '@midscene/shared/logger';\nimport type {\n  Browser as PuppeteerBrowser,\n  Page as PuppeteerPage,\n  Target as PuppeteerTarget,\n} from 'puppeteer';\nimport type { PuppeteerWebPage } from './page';\n\nexport interface PuppeteerBrowserPageScope {\n  pages(): Promise<PuppeteerPage[]>;\n  trackPage(page: PuppeteerPage): void;\n  ownsPage(page: PuppeteerPage): boolean;\n  captureTarget(target: PuppeteerTarget): boolean;\n}\n\nconst createPuppeteerBrowserAdapter = (\n  browser: PuppeteerBrowser,\n  pageScope?: PuppeteerBrowserPageScope,\n): BrowserAgentAdapter<PuppeteerPage, PuppeteerTarget> => ({\n  pages: () => pageScope?.pages() ?? browser.pages(),\n  newPage: async () => {\n    const page = await browser.newPage();\n    pageScope?.trackPage(page);\n    return page;\n  },\n  isPageClosed: (page) => page.isClosed(),\n  isPageAllowed: (page) => pageScope?.ownsPage(page) ?? true,\n  bringToFront: (page) => page.bringToFront(),\n  onNewPage: (handler) => browser.on('targetcreated', handler),\n  offNewPage: (handler) => browser.off('targetcreated', handler),\n  isNewPageEvent: (target) =>\n    target.type() === 'page' && (pageScope?.captureTarget(target) ?? true),\n  resolveNewPage: (target) => target.page(),\n});\n\nexport function createPuppeteerBrowserPageManager({\n  browser,\n  webPage,\n  runtimeOptions,\n  debug,\n  pageScope,\n}: {\n  browser: PuppeteerBrowser;\n  webPage: PuppeteerWebPage;\n  runtimeOptions: ResolvedBrowserAgentRuntimeOptions;\n  debug: DebugFunction;\n  pageScope?: PuppeteerBrowserPageScope;\n}) {\n  return new BrowserPageManager({\n    agentName: 'PuppeteerBrowserAgent',\n    adapter: createPuppeteerBrowserAdapter(browser, pageScope),\n    getActivePage: () => webPage.underlyingPage as PuppeteerPage,\n    setActivePageValue: (page) => {\n      webPage.underlyingPage = page;\n    },\n    autoFollowNewPage: runtimeOptions.autoFollowNewPage,\n    newPageTimeout: runtimeOptions.newPageTimeout,\n    debug,\n  });\n}\n"],"names":["createPuppeteerBrowserAdapter","browser","pageScope","page","handler","target","createPuppeteerBrowserPageManager","webPage","runtimeOptions","debug","BrowserPageManager"],"mappings":";AAoBA,MAAMA,gCAAgC,CACpCC,SACAC,YACyD;QACzD,OAAO,IAAMA,WAAW,WAAWD,QAAQ,KAAK;QAChD,SAAS;YACP,MAAME,OAAO,MAAMF,QAAQ,OAAO;YAClCC,WAAW,UAAUC;YACrB,OAAOA;QACT;QACA,cAAc,CAACA,OAASA,KAAK,QAAQ;QACrC,eAAe,CAACA,OAASD,WAAW,SAASC,SAAS;QACtD,cAAc,CAACA,OAASA,KAAK,YAAY;QACzC,WAAW,CAACC,UAAYH,QAAQ,EAAE,CAAC,iBAAiBG;QACpD,YAAY,CAACA,UAAYH,QAAQ,GAAG,CAAC,iBAAiBG;QACtD,gBAAgB,CAACC,SACfA,AAAkB,WAAlBA,OAAO,IAAI,MAAkBH,CAAAA,WAAW,cAAcG,WAAW,IAAG;QACtE,gBAAgB,CAACA,SAAWA,OAAO,IAAI;IACzC;AAEO,SAASC,kCAAkC,EAChDL,OAAO,EACPM,OAAO,EACPC,cAAc,EACdC,KAAK,EACLP,SAAS,EAOV;IACC,OAAO,IAAIQ,mBAAmB;QAC5B,WAAW;QACX,SAASV,8BAA8BC,SAASC;QAChD,eAAe,IAAMK,QAAQ,cAAc;QAC3C,oBAAoB,CAACJ;YACnBI,QAAQ,cAAc,GAAGJ;QAC3B;QACA,mBAAmBK,eAAe,iBAAiB;QACnD,gBAAgBA,eAAe,cAAc;QAC7CC;IACF;AACF"}