chrome-devtools-frontend 1.0.1021097 → 1.0.1021582
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/gni/devtools_grd_files.gni +15 -10
 - package/front_end/.eslintrc.js +1 -0
 - package/front_end/core/i18n/locales/en-US.json +118 -4
 - package/front_end/core/i18n/locales/en-XL.json +118 -4
 - package/front_end/models/bindings/DebuggerLanguagePlugins.ts +8 -0
 - package/front_end/panels/application/components/FrameDetailsView.ts +3 -2
 - package/front_end/panels/application/components/Prerender2.ts +188 -0
 - package/front_end/panels/elements/CSSRuleValidator.ts +103 -13
 - package/front_end/panels/elements/ElementsTreeElement.ts +3 -1
 - package/front_end/panels/elements/StylePropertyTreeElement.ts +10 -8
 - package/front_end/panels/elements/components/CSSHintDetailsView.ts +71 -0
 - package/front_end/panels/elements/components/components.ts +2 -0
 - package/front_end/panels/elements/components/cssHintDetailsView.css +36 -0
 - package/front_end/panels/elements/stylesSectionTree.css +1 -1
 - package/front_end/panels/network/components/RequestHeadersView.ts +2 -1
 - package/front_end/services/puppeteer/PuppeteerConnection.ts +3 -5
 - package/front_end/third_party/lit-html/directives.ts +1 -0
 - package/front_end/third_party/lit-html/lit-html-tsconfig.json +1 -0
 - package/front_end/third_party/puppeteer/package/README.md +136 -214
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Accessibility.d.ts +6 -6
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Accessibility.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Accessibility.js +149 -85
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Accessibility.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/AriaQueryHandler.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/AriaQueryHandler.js +34 -10
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/AriaQueryHandler.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Browser.d.ts +17 -36
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Browser.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Browser.js +217 -160
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Browser.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.d.ts +5 -4
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js +18 -13
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserWebSocketTransport.d.ts +4 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserWebSocketTransport.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserWebSocketTransport.js +30 -11
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserWebSocketTransport.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Connection.d.ts +21 -20
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Connection.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Connection.js +125 -82
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Connection.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.d.ts +1 -4
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.js +27 -9
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Coverage.d.ts +6 -30
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Coverage.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Coverage.js +167 -131
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Coverage.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DOMWorld.d.ts +36 -67
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DOMWorld.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DOMWorld.js +359 -215
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DOMWorld.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Debug.d.ts +8 -4
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Debug.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Debug.js +9 -6
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Debug.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DeviceDescriptors.d.ts +21 -2
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DeviceDescriptors.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DeviceDescriptors.js +26 -6
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DeviceDescriptors.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Dialog.d.ts +2 -6
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Dialog.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Dialog.js +32 -15
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Dialog.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ElementHandle.d.ts +355 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ElementHandle.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ElementHandle.js +847 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ElementHandle.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EmulationManager.d.ts +4 -3
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EmulationManager.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EmulationManager.js +25 -8
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EmulationManager.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.d.ts +28 -6
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.js +27 -7
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EventEmitter.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EventEmitter.js +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EventEmitter.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ExecutionContext.d.ts +20 -19
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ExecutionContext.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ExecutionContext.js +146 -126
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ExecutionContext.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/FileChooser.d.ts +4 -6
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/FileChooser.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/FileChooser.js +25 -10
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/FileChooser.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/FrameManager.d.ts +53 -92
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/FrameManager.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/FrameManager.js +337 -320
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/FrameManager.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HTTPRequest.d.ts +16 -28
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HTTPRequest.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HTTPRequest.js +200 -147
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HTTPRequest.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HTTPResponse.d.ts +1 -18
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HTTPResponse.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HTTPResponse.js +86 -60
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HTTPResponse.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Input.d.ts +18 -22
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Input.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Input.js +166 -117
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Input.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/JSHandle.d.ts +46 -395
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/JSHandle.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/JSHandle.js +80 -842
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/JSHandle.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/LifecycleWatcher.d.ts +4 -32
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/LifecycleWatcher.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/LifecycleWatcher.js +136 -108
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/LifecycleWatcher.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/NetworkConditions.d.ts +25 -7
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/NetworkConditions.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/NetworkConditions.js +23 -2
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/NetworkConditions.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/NetworkEventManager.d.ts +16 -11
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/NetworkEventManager.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/NetworkEventManager.js +39 -32
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/NetworkEventManager.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/NetworkManager.d.ts +2 -42
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/NetworkManager.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/NetworkManager.js +315 -316
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/NetworkManager.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/PDFOptions.d.ts +5 -3
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/PDFOptions.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/PDFOptions.js +2 -2
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/PDFOptions.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Page.d.ts +246 -287
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Page.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Page.js +841 -700
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Page.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Puppeteer.d.ts +37 -74
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Puppeteer.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Puppeteer.js +37 -89
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Puppeteer.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/QueryHandler.d.ts +38 -13
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/QueryHandler.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/QueryHandler.js +79 -29
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/QueryHandler.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/SecurityDetails.d.ts +1 -6
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/SecurityDetails.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/SecurityDetails.js +31 -12
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/SecurityDetails.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Target.d.ts +6 -9
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Target.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Target.js +80 -40
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Target.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/TaskQueue.d.ts +4 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/TaskQueue.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/TaskQueue.js +24 -3
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/TaskQueue.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/TimeoutSettings.d.ts +1 -2
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/TimeoutSettings.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/TimeoutSettings.js +28 -10
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/TimeoutSettings.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Tracing.d.ts +4 -5
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Tracing.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Tracing.js +50 -23
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Tracing.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/USKeyboardLayout.d.ts +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/USKeyboardLayout.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/USKeyboardLayout.js +2 -2
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/USKeyboardLayout.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WebWorker.d.ts +9 -11
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WebWorker.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WebWorker.js +41 -31
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WebWorker.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/assert.d.ts +4 -3
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/assert.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/assert.js +6 -8
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/assert.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/fetch.d.ts +5 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/fetch.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/fetch.js +6 -3
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/fetch.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/types.d.ts +48 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/types.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/{EvalTypes.js → types.js} +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/types.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/util.d.ts +129 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/util.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/{helper.js → util.js} +168 -87
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/util.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/compat.d.ts +3 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/compat.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/compat.js +3 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/compat.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/constants.d.ts +3 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/constants.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/constants.js +3 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/constants.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.d.ts +3 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.js +3 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.d.ts +4 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.js +4 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/{esm/puppeteer/initialize-node.d.ts → cjs/puppeteer/initializePuppeteer.d.ts} +5 -2
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/initializePuppeteer.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/{initialize-node.js → initializePuppeteer.js} +18 -14
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/initializePuppeteer.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserFetcher.d.ts +4 -11
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserFetcher.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserFetcher.js +226 -158
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserFetcher.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserRunner.d.ts +9 -11
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserRunner.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserRunner.js +116 -72
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserRunner.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts +27 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js +176 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/FirefoxLauncher.d.ts +49 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/FirefoxLauncher.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/FirefoxLauncher.js +361 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/FirefoxLauncher.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/NodeWebSocketTransport.d.ts +6 -3
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/NodeWebSocketTransport.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/NodeWebSocketTransport.js +44 -12
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/NodeWebSocketTransport.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/PipeTransport.d.ts +4 -20
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/PipeTransport.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/PipeTransport.js +60 -35
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/PipeTransport.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ProductLauncher.d.ts +31 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ProductLauncher.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ProductLauncher.js +166 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ProductLauncher.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Puppeteer.d.ts +42 -41
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Puppeteer.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Puppeteer.js +69 -47
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Puppeteer.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/install.d.ts +6 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/install.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/install.js +55 -32
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/install.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/util.d.ts +10 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/util.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/util.js +40 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/util.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/puppeteer-core.d.ts +23 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/puppeteer-core.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/puppeteer-core.js +41 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/puppeteer-core.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/puppeteer.d.ts +26 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/puppeteer.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/puppeteer.js +44 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/puppeteer.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +6 -5
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +6 -3
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/tsconfig.cjs.tsbuildinfo +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/tsconfig.tsbuildinfo +1 -0
 - package/front_end/third_party/puppeteer/package/lib/{esm/puppeteer/api-docs-entry.js → cjs/puppeteer/types.d.ts} +46 -63
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/types.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/{api-docs-entry.js → types.js} +50 -51
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/types.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/cjs/vendor/mitt/src/index.d.ts +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/vendor/mitt/src/index.js +11 -12
 - package/front_end/third_party/puppeteer/package/lib/cjs/vendor/tsconfig.cjs.tsbuildinfo +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Accessibility.d.ts +6 -6
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Accessibility.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Accessibility.js +149 -85
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Accessibility.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/AriaQueryHandler.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/AriaQueryHandler.js +34 -10
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/AriaQueryHandler.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Browser.d.ts +17 -36
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Browser.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Browser.js +217 -160
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Browser.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.d.ts +5 -4
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js +16 -11
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserWebSocketTransport.d.ts +4 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserWebSocketTransport.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserWebSocketTransport.js +30 -11
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserWebSocketTransport.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Connection.d.ts +21 -20
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Connection.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Connection.js +125 -82
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Connection.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.d.ts +1 -4
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.js +27 -9
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Coverage.d.ts +6 -30
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Coverage.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Coverage.js +167 -131
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Coverage.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DOMWorld.d.ts +36 -67
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DOMWorld.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DOMWorld.js +335 -214
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DOMWorld.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Debug.d.ts +8 -4
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Debug.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Debug.js +9 -6
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Debug.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DeviceDescriptors.d.ts +21 -2
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DeviceDescriptors.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DeviceDescriptors.js +25 -5
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DeviceDescriptors.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Dialog.d.ts +2 -6
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Dialog.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Dialog.js +32 -15
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Dialog.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ElementHandle.d.ts +355 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ElementHandle.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ElementHandle.js +820 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ElementHandle.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/EmulationManager.d.ts +4 -3
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/EmulationManager.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/EmulationManager.js +25 -8
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/EmulationManager.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts +28 -6
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js +26 -6
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/EventEmitter.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/EventEmitter.js +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/EventEmitter.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ExecutionContext.d.ts +20 -19
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ExecutionContext.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ExecutionContext.js +145 -125
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ExecutionContext.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/FileChooser.d.ts +4 -6
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/FileChooser.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/FileChooser.js +25 -10
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/FileChooser.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/FrameManager.d.ts +53 -92
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/FrameManager.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/FrameManager.js +337 -320
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/FrameManager.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPRequest.d.ts +16 -28
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPRequest.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPRequest.js +199 -146
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPRequest.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPResponse.d.ts +1 -18
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPResponse.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPResponse.js +86 -60
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPResponse.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Input.d.ts +18 -22
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Input.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Input.js +167 -118
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Input.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/JSHandle.d.ts +46 -395
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/JSHandle.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/JSHandle.js +80 -817
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/JSHandle.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/LifecycleWatcher.d.ts +4 -32
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/LifecycleWatcher.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/LifecycleWatcher.js +135 -107
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/LifecycleWatcher.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkConditions.d.ts +25 -7
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkConditions.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkConditions.js +23 -2
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkConditions.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkEventManager.d.ts +16 -11
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkEventManager.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkEventManager.js +39 -32
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkEventManager.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkManager.d.ts +2 -42
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkManager.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkManager.js +312 -313
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkManager.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/PDFOptions.d.ts +5 -3
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/PDFOptions.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/PDFOptions.js +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/PDFOptions.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Page.d.ts +246 -287
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Page.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Page.js +819 -701
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Page.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Puppeteer.d.ts +37 -74
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Puppeteer.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Puppeteer.js +39 -91
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Puppeteer.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/QueryHandler.d.ts +38 -13
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/QueryHandler.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/QueryHandler.js +79 -29
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/QueryHandler.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/SecurityDetails.d.ts +1 -6
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/SecurityDetails.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/SecurityDetails.js +31 -12
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/SecurityDetails.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Target.d.ts +6 -9
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Target.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Target.js +80 -40
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Target.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/TaskQueue.d.ts +4 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/TaskQueue.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/TaskQueue.js +24 -3
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/TaskQueue.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/TimeoutSettings.d.ts +1 -2
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/TimeoutSettings.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/TimeoutSettings.js +28 -10
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/TimeoutSettings.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Tracing.d.ts +4 -5
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Tracing.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Tracing.js +50 -23
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Tracing.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/USKeyboardLayout.d.ts +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/USKeyboardLayout.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/USKeyboardLayout.js +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/USKeyboardLayout.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WebWorker.d.ts +9 -11
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WebWorker.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WebWorker.js +41 -31
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WebWorker.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/assert.d.ts +4 -3
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/assert.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/assert.js +5 -6
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/assert.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/fetch.d.ts +5 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/fetch.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/fetch.js +6 -3
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/fetch.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/types.d.ts +48 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/types.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/{EvalTypes.js → types.js} +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/types.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/util.d.ts +129 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/util.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/{helper.js → util.js} +161 -100
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/util.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/compat.d.ts +3 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/compat.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/compat.js +3 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/compat.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/constants.d.ts +3 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/constants.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/constants.js +3 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/constants.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts +3 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.js +3 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.d.ts +4 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.js +4 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/{cjs/puppeteer/initialize-node.d.ts → esm/puppeteer/initializePuppeteer.d.ts} +5 -2
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/initializePuppeteer.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/{initialize-node.js → initializePuppeteer.js} +16 -12
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/initializePuppeteer.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserFetcher.d.ts +4 -11
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserFetcher.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserFetcher.js +226 -158
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserFetcher.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserRunner.d.ts +9 -11
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserRunner.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserRunner.js +113 -69
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserRunner.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.d.ts +27 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js +169 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/FirefoxLauncher.d.ts +49 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/FirefoxLauncher.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/{Launcher.js → FirefoxLauncher.js} +51 -345
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/FirefoxLauncher.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/NodeWebSocketTransport.d.ts +6 -3
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/NodeWebSocketTransport.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/NodeWebSocketTransport.js +44 -12
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/NodeWebSocketTransport.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/PipeTransport.d.ts +4 -20
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/PipeTransport.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/PipeTransport.js +60 -35
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/PipeTransport.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ProductLauncher.d.ts +31 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ProductLauncher.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ProductLauncher.js +157 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ProductLauncher.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Puppeteer.d.ts +42 -41
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Puppeteer.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Puppeteer.js +70 -45
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Puppeteer.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/install.d.ts +6 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/install.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/install.js +53 -30
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/install.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/util.d.ts +10 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/util.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/util.js +13 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/util.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/puppeteer-core.d.ts +23 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/puppeteer-core.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/{node-puppeteer-core.d.ts → puppeteer-core.js} +8 -2
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/puppeteer-core.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/puppeteer.d.ts +26 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/puppeteer.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/{cjs/puppeteer/node-puppeteer-core.d.ts → esm/puppeteer/puppeteer.js} +11 -2
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/puppeteer.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +6 -5
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +6 -3
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/tsconfig.esm.tsbuildinfo +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/tsconfig.tsbuildinfo +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/types.d.ts +64 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/types.d.ts.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/types.js +68 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/types.js.map +1 -0
 - package/front_end/third_party/puppeteer/package/lib/esm/vendor/mitt/src/index.d.ts +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/vendor/mitt/src/index.js +9 -10
 - package/front_end/third_party/puppeteer/package/lib/esm/vendor/tsconfig.esm.tsbuildinfo +1 -0
 - package/front_end/third_party/puppeteer/package/lib/types.d.ts +846 -1670
 - package/front_end/third_party/puppeteer/package/package.json +65 -68
 - package/front_end/third_party/puppeteer/package/typescript-if-required.js +17 -8
 - package/front_end/third_party/puppeteer/puppeteer.ts +7 -14
 - package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspector.ts +2 -5
 - package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspectorController.ts +22 -2
 - package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspectorPane.ts +40 -12
 - package/front_end/ui/components/linear_memory_inspector/LinearMemoryViewer.ts +5 -5
 - package/front_end/ui/legacy/components/utils/Linkifier.ts +3 -1
 - package/package.json +1 -1
 - package/scripts/eslint_rules/lib/inject_checkbox_styles.js +4 -2
 - package/scripts/eslint_rules/tests/inject_checkbox_styles_test.js +45 -5
 - package/front_end/third_party/puppeteer/package/cjs-entry-core.js +0 -29
 - package/front_end/third_party/puppeteer/package/cjs-entry.js +0 -29
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api-docs-entry.d.ts +0 -111
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api-docs-entry.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api-docs-entry.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EvalTypes.d.ts +0 -61
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EvalTypes.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EvalTypes.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Events.d.ts +0 -82
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Events.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Events.js +0 -87
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Events.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/helper.d.ts +0 -85
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/helper.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/helper.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/initialize-node.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/initialize-node.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/initialize-web.d.ts +0 -18
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/initialize-web.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/initialize-web.js +0 -27
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/initialize-web.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Launcher.d.ts +0 -18
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Launcher.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Launcher.js +0 -674
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Launcher.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node-puppeteer-core.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node-puppeteer-core.js +0 -25
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node-puppeteer-core.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node.d.ts +0 -18
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node.js +0 -24
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/web.d.ts +0 -18
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/web.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/web.js +0 -24
 - package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/web.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/vendor/mitt/src/index.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/cjs/vendor/mitt/src/index.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api-docs-entry.d.ts +0 -111
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api-docs-entry.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api-docs-entry.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/EvalTypes.d.ts +0 -61
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/EvalTypes.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/EvalTypes.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Events.d.ts +0 -82
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Events.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Events.js +0 -84
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Events.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/helper.d.ts +0 -85
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/helper.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/helper.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/initialize-node.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/initialize-node.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/initialize-web.d.ts +0 -18
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/initialize-web.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/initialize-web.js +0 -23
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/initialize-web.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Launcher.d.ts +0 -18
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Launcher.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Launcher.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node-puppeteer-core.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node-puppeteer-core.js +0 -23
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node-puppeteer-core.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node.d.ts +0 -18
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node.js +0 -22
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/web.d.ts +0 -18
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/web.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/web.js +0 -22
 - package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/web.js.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/vendor/mitt/src/index.d.ts.map +0 -1
 - package/front_end/third_party/puppeteer/package/lib/esm/vendor/mitt/src/index.js.map +0 -1
 
| 
         @@ -0,0 +1,820 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
         
     | 
| 
      
 2 
     | 
    
         
            +
                if (kind === "m") throw new TypeError("Private method is not writable");
         
     | 
| 
      
 3 
     | 
    
         
            +
                if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
         
     | 
| 
      
 4 
     | 
    
         
            +
                if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
         
     | 
| 
      
 5 
     | 
    
         
            +
                return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
         
     | 
| 
      
 6 
     | 
    
         
            +
            };
         
     | 
| 
      
 7 
     | 
    
         
            +
            var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
         
     | 
| 
      
 8 
     | 
    
         
            +
                if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
         
     | 
| 
      
 9 
     | 
    
         
            +
                if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
         
     | 
| 
      
 10 
     | 
    
         
            +
                return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
         
     | 
| 
      
 11 
     | 
    
         
            +
            };
         
     | 
| 
      
 12 
     | 
    
         
            +
            var _ElementHandle_instances, _ElementHandle_frame, _ElementHandle_page, _ElementHandle_frameManager, _ElementHandle_scrollIntoViewIfNeeded, _ElementHandle_getOOPIFOffsets, _ElementHandle_getBoxModel, _ElementHandle_fromProtocolQuad, _ElementHandle_intersectQuadWithViewport;
         
     | 
| 
      
 13 
     | 
    
         
            +
            import { assert } from './assert.js';
         
     | 
| 
      
 14 
     | 
    
         
            +
            import { JSHandle, } from './JSHandle.js';
         
     | 
| 
      
 15 
     | 
    
         
            +
            import { getQueryHandlerAndSelector } from './QueryHandler.js';
         
     | 
| 
      
 16 
     | 
    
         
            +
            import { debugError, isString } from './util.js';
         
     | 
| 
      
 17 
     | 
    
         
            +
            const applyOffsetsToQuad = (quad, offsetX, offsetY) => {
         
     | 
| 
      
 18 
     | 
    
         
            +
                return quad.map(part => {
         
     | 
| 
      
 19 
     | 
    
         
            +
                    return { x: part.x + offsetX, y: part.y + offsetY };
         
     | 
| 
      
 20 
     | 
    
         
            +
                });
         
     | 
| 
      
 21 
     | 
    
         
            +
            };
         
     | 
| 
      
 22 
     | 
    
         
            +
            /**
         
     | 
| 
      
 23 
     | 
    
         
            +
             * ElementHandle represents an in-page DOM element.
         
     | 
| 
      
 24 
     | 
    
         
            +
             *
         
     | 
| 
      
 25 
     | 
    
         
            +
             * @remarks
         
     | 
| 
      
 26 
     | 
    
         
            +
             * ElementHandles can be created with the {@link Page.$} method.
         
     | 
| 
      
 27 
     | 
    
         
            +
             *
         
     | 
| 
      
 28 
     | 
    
         
            +
             * ```ts
         
     | 
| 
      
 29 
     | 
    
         
            +
             * const puppeteer = require('puppeteer');
         
     | 
| 
      
 30 
     | 
    
         
            +
             *
         
     | 
| 
      
 31 
     | 
    
         
            +
             * (async () => {
         
     | 
| 
      
 32 
     | 
    
         
            +
             *  const browser = await puppeteer.launch();
         
     | 
| 
      
 33 
     | 
    
         
            +
             *  const page = await browser.newPage();
         
     | 
| 
      
 34 
     | 
    
         
            +
             *  await page.goto('https://example.com');
         
     | 
| 
      
 35 
     | 
    
         
            +
             *  const hrefElement = await page.$('a');
         
     | 
| 
      
 36 
     | 
    
         
            +
             *  await hrefElement.click();
         
     | 
| 
      
 37 
     | 
    
         
            +
             *  // ...
         
     | 
| 
      
 38 
     | 
    
         
            +
             * })();
         
     | 
| 
      
 39 
     | 
    
         
            +
             * ```
         
     | 
| 
      
 40 
     | 
    
         
            +
             *
         
     | 
| 
      
 41 
     | 
    
         
            +
             * ElementHandle prevents the DOM element from being garbage-collected unless the
         
     | 
| 
      
 42 
     | 
    
         
            +
             * handle is {@link JSHandle.dispose | disposed}. ElementHandles are auto-disposed
         
     | 
| 
      
 43 
     | 
    
         
            +
             * when their origin frame gets navigated.
         
     | 
| 
      
 44 
     | 
    
         
            +
             *
         
     | 
| 
      
 45 
     | 
    
         
            +
             * ElementHandle instances can be used as arguments in {@link Page.$eval} and
         
     | 
| 
      
 46 
     | 
    
         
            +
             * {@link Page.evaluate} methods.
         
     | 
| 
      
 47 
     | 
    
         
            +
             *
         
     | 
| 
      
 48 
     | 
    
         
            +
             * If you're using TypeScript, ElementHandle takes a generic argument that
         
     | 
| 
      
 49 
     | 
    
         
            +
             * denotes the type of element the handle is holding within. For example, if you
         
     | 
| 
      
 50 
     | 
    
         
            +
             * have a handle to a `<select>` element, you can type it as
         
     | 
| 
      
 51 
     | 
    
         
            +
             * `ElementHandle<HTMLSelectElement>` and you get some nicer type checks.
         
     | 
| 
      
 52 
     | 
    
         
            +
             *
         
     | 
| 
      
 53 
     | 
    
         
            +
             * @public
         
     | 
| 
      
 54 
     | 
    
         
            +
             */
         
     | 
| 
      
 55 
     | 
    
         
            +
            export class ElementHandle extends JSHandle {
         
     | 
| 
      
 56 
     | 
    
         
            +
                /**
         
     | 
| 
      
 57 
     | 
    
         
            +
                 * @internal
         
     | 
| 
      
 58 
     | 
    
         
            +
                 */
         
     | 
| 
      
 59 
     | 
    
         
            +
                constructor(context, client, remoteObject, frame, page, frameManager) {
         
     | 
| 
      
 60 
     | 
    
         
            +
                    super(context, client, remoteObject);
         
     | 
| 
      
 61 
     | 
    
         
            +
                    _ElementHandle_instances.add(this);
         
     | 
| 
      
 62 
     | 
    
         
            +
                    _ElementHandle_frame.set(this, void 0);
         
     | 
| 
      
 63 
     | 
    
         
            +
                    _ElementHandle_page.set(this, void 0);
         
     | 
| 
      
 64 
     | 
    
         
            +
                    _ElementHandle_frameManager.set(this, void 0);
         
     | 
| 
      
 65 
     | 
    
         
            +
                    __classPrivateFieldSet(this, _ElementHandle_frame, frame, "f");
         
     | 
| 
      
 66 
     | 
    
         
            +
                    __classPrivateFieldSet(this, _ElementHandle_page, page, "f");
         
     | 
| 
      
 67 
     | 
    
         
            +
                    __classPrivateFieldSet(this, _ElementHandle_frameManager, frameManager, "f");
         
     | 
| 
      
 68 
     | 
    
         
            +
                }
         
     | 
| 
      
 69 
     | 
    
         
            +
                /**
         
     | 
| 
      
 70 
     | 
    
         
            +
                 * Wait for the `selector` to appear within the element. If at the moment of calling the
         
     | 
| 
      
 71 
     | 
    
         
            +
                 * method the `selector` already exists, the method will return immediately. If
         
     | 
| 
      
 72 
     | 
    
         
            +
                 * the `selector` doesn't appear after the `timeout` milliseconds of waiting, the
         
     | 
| 
      
 73 
     | 
    
         
            +
                 * function will throw.
         
     | 
| 
      
 74 
     | 
    
         
            +
                 *
         
     | 
| 
      
 75 
     | 
    
         
            +
                 * This method does not work across navigations or if the element is detached from DOM.
         
     | 
| 
      
 76 
     | 
    
         
            +
                 *
         
     | 
| 
      
 77 
     | 
    
         
            +
                 * @param selector - A
         
     | 
| 
      
 78 
     | 
    
         
            +
                 * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors | selector}
         
     | 
| 
      
 79 
     | 
    
         
            +
                 * of an element to wait for
         
     | 
| 
      
 80 
     | 
    
         
            +
                 * @param options - Optional waiting parameters
         
     | 
| 
      
 81 
     | 
    
         
            +
                 * @returns Promise which resolves when element specified by selector string
         
     | 
| 
      
 82 
     | 
    
         
            +
                 * is added to DOM. Resolves to `null` if waiting for hidden: `true` and
         
     | 
| 
      
 83 
     | 
    
         
            +
                 * selector is not found in DOM.
         
     | 
| 
      
 84 
     | 
    
         
            +
                 * @remarks
         
     | 
| 
      
 85 
     | 
    
         
            +
                 * The optional parameters in `options` are:
         
     | 
| 
      
 86 
     | 
    
         
            +
                 *
         
     | 
| 
      
 87 
     | 
    
         
            +
                 * - `visible`: wait for the selected element to be present in DOM and to be
         
     | 
| 
      
 88 
     | 
    
         
            +
                 * visible, i.e. to not have `display: none` or `visibility: hidden` CSS
         
     | 
| 
      
 89 
     | 
    
         
            +
                 * properties. Defaults to `false`.
         
     | 
| 
      
 90 
     | 
    
         
            +
                 *
         
     | 
| 
      
 91 
     | 
    
         
            +
                 * - `hidden`: wait for the selected element to not be found in the DOM or to be hidden,
         
     | 
| 
      
 92 
     | 
    
         
            +
                 * i.e. have `display: none` or `visibility: hidden` CSS properties. Defaults to
         
     | 
| 
      
 93 
     | 
    
         
            +
                 * `false`.
         
     | 
| 
      
 94 
     | 
    
         
            +
                 *
         
     | 
| 
      
 95 
     | 
    
         
            +
                 * - `timeout`: maximum time to wait in milliseconds. Defaults to `30000`
         
     | 
| 
      
 96 
     | 
    
         
            +
                 * (30 seconds). Pass `0` to disable timeout. The default value can be changed
         
     | 
| 
      
 97 
     | 
    
         
            +
                 * by using the {@link Page.setDefaultTimeout} method.
         
     | 
| 
      
 98 
     | 
    
         
            +
                 */
         
     | 
| 
      
 99 
     | 
    
         
            +
                async waitForSelector(selector, options = {}) {
         
     | 
| 
      
 100 
     | 
    
         
            +
                    const frame = this._context.frame();
         
     | 
| 
      
 101 
     | 
    
         
            +
                    assert(frame);
         
     | 
| 
      
 102 
     | 
    
         
            +
                    const secondaryContext = await frame._secondaryWorld.executionContext();
         
     | 
| 
      
 103 
     | 
    
         
            +
                    const adoptedRoot = await secondaryContext._adoptElementHandle(this);
         
     | 
| 
      
 104 
     | 
    
         
            +
                    const handle = await frame._secondaryWorld.waitForSelector(selector, {
         
     | 
| 
      
 105 
     | 
    
         
            +
                        ...options,
         
     | 
| 
      
 106 
     | 
    
         
            +
                        root: adoptedRoot,
         
     | 
| 
      
 107 
     | 
    
         
            +
                    });
         
     | 
| 
      
 108 
     | 
    
         
            +
                    await adoptedRoot.dispose();
         
     | 
| 
      
 109 
     | 
    
         
            +
                    if (!handle) {
         
     | 
| 
      
 110 
     | 
    
         
            +
                        return null;
         
     | 
| 
      
 111 
     | 
    
         
            +
                    }
         
     | 
| 
      
 112 
     | 
    
         
            +
                    const mainExecutionContext = await frame._mainWorld.executionContext();
         
     | 
| 
      
 113 
     | 
    
         
            +
                    const result = await mainExecutionContext._adoptElementHandle(handle);
         
     | 
| 
      
 114 
     | 
    
         
            +
                    await handle.dispose();
         
     | 
| 
      
 115 
     | 
    
         
            +
                    return result;
         
     | 
| 
      
 116 
     | 
    
         
            +
                }
         
     | 
| 
      
 117 
     | 
    
         
            +
                /**
         
     | 
| 
      
 118 
     | 
    
         
            +
                 * Wait for the `xpath` within the element. If at the moment of calling the
         
     | 
| 
      
 119 
     | 
    
         
            +
                 * method the `xpath` already exists, the method will return immediately. If
         
     | 
| 
      
 120 
     | 
    
         
            +
                 * the `xpath` doesn't appear after the `timeout` milliseconds of waiting, the
         
     | 
| 
      
 121 
     | 
    
         
            +
                 * function will throw.
         
     | 
| 
      
 122 
     | 
    
         
            +
                 *
         
     | 
| 
      
 123 
     | 
    
         
            +
                 * If `xpath` starts with `//` instead of `.//`, the dot will be appended automatically.
         
     | 
| 
      
 124 
     | 
    
         
            +
                 *
         
     | 
| 
      
 125 
     | 
    
         
            +
                 * This method works across navigation
         
     | 
| 
      
 126 
     | 
    
         
            +
                 * ```ts
         
     | 
| 
      
 127 
     | 
    
         
            +
                 * const puppeteer = require('puppeteer');
         
     | 
| 
      
 128 
     | 
    
         
            +
                 * (async () => {
         
     | 
| 
      
 129 
     | 
    
         
            +
                 * const browser = await puppeteer.launch();
         
     | 
| 
      
 130 
     | 
    
         
            +
                 * const page = await browser.newPage();
         
     | 
| 
      
 131 
     | 
    
         
            +
                 * let currentURL;
         
     | 
| 
      
 132 
     | 
    
         
            +
                 * page
         
     | 
| 
      
 133 
     | 
    
         
            +
                 * .waitForXPath('//img')
         
     | 
| 
      
 134 
     | 
    
         
            +
                 * .then(() => console.log('First URL with image: ' + currentURL));
         
     | 
| 
      
 135 
     | 
    
         
            +
                 * for (currentURL of [
         
     | 
| 
      
 136 
     | 
    
         
            +
                 * 'https://example.com',
         
     | 
| 
      
 137 
     | 
    
         
            +
                 * 'https://google.com',
         
     | 
| 
      
 138 
     | 
    
         
            +
                 * 'https://bbc.com',
         
     | 
| 
      
 139 
     | 
    
         
            +
                 * ]) {
         
     | 
| 
      
 140 
     | 
    
         
            +
                 * await page.goto(currentURL);
         
     | 
| 
      
 141 
     | 
    
         
            +
                 * }
         
     | 
| 
      
 142 
     | 
    
         
            +
                 * await browser.close();
         
     | 
| 
      
 143 
     | 
    
         
            +
                 * })();
         
     | 
| 
      
 144 
     | 
    
         
            +
                 * ```
         
     | 
| 
      
 145 
     | 
    
         
            +
                 * @param xpath - A
         
     | 
| 
      
 146 
     | 
    
         
            +
                 * {@link https://developer.mozilla.org/en-US/docs/Web/XPath | xpath} of an
         
     | 
| 
      
 147 
     | 
    
         
            +
                 * element to wait for
         
     | 
| 
      
 148 
     | 
    
         
            +
                 * @param options - Optional waiting parameters
         
     | 
| 
      
 149 
     | 
    
         
            +
                 * @returns Promise which resolves when element specified by xpath string is
         
     | 
| 
      
 150 
     | 
    
         
            +
                 * added to DOM. Resolves to `null` if waiting for `hidden: true` and xpath is
         
     | 
| 
      
 151 
     | 
    
         
            +
                 * not found in DOM.
         
     | 
| 
      
 152 
     | 
    
         
            +
                 * @remarks
         
     | 
| 
      
 153 
     | 
    
         
            +
                 * The optional Argument `options` have properties:
         
     | 
| 
      
 154 
     | 
    
         
            +
                 *
         
     | 
| 
      
 155 
     | 
    
         
            +
                 * - `visible`: A boolean to wait for element to be present in DOM and to be
         
     | 
| 
      
 156 
     | 
    
         
            +
                 * visible, i.e. to not have `display: none` or `visibility: hidden` CSS
         
     | 
| 
      
 157 
     | 
    
         
            +
                 * properties. Defaults to `false`.
         
     | 
| 
      
 158 
     | 
    
         
            +
                 *
         
     | 
| 
      
 159 
     | 
    
         
            +
                 * - `hidden`: A boolean wait for element to not be found in the DOM or to be
         
     | 
| 
      
 160 
     | 
    
         
            +
                 * hidden, i.e. have `display: none` or `visibility: hidden` CSS properties.
         
     | 
| 
      
 161 
     | 
    
         
            +
                 * Defaults to `false`.
         
     | 
| 
      
 162 
     | 
    
         
            +
                 *
         
     | 
| 
      
 163 
     | 
    
         
            +
                 * - `timeout`: A number which is maximum time to wait for in milliseconds.
         
     | 
| 
      
 164 
     | 
    
         
            +
                 * Defaults to `30000` (30 seconds). Pass `0` to disable timeout. The default
         
     | 
| 
      
 165 
     | 
    
         
            +
                 * value can be changed by using the {@link Page.setDefaultTimeout} method.
         
     | 
| 
      
 166 
     | 
    
         
            +
                 */
         
     | 
| 
      
 167 
     | 
    
         
            +
                async waitForXPath(xpath, options = {}) {
         
     | 
| 
      
 168 
     | 
    
         
            +
                    const frame = this._context.frame();
         
     | 
| 
      
 169 
     | 
    
         
            +
                    assert(frame);
         
     | 
| 
      
 170 
     | 
    
         
            +
                    const secondaryContext = await frame._secondaryWorld.executionContext();
         
     | 
| 
      
 171 
     | 
    
         
            +
                    const adoptedRoot = await secondaryContext._adoptElementHandle(this);
         
     | 
| 
      
 172 
     | 
    
         
            +
                    xpath = xpath.startsWith('//') ? '.' + xpath : xpath;
         
     | 
| 
      
 173 
     | 
    
         
            +
                    if (!xpath.startsWith('.//')) {
         
     | 
| 
      
 174 
     | 
    
         
            +
                        await adoptedRoot.dispose();
         
     | 
| 
      
 175 
     | 
    
         
            +
                        throw new Error('Unsupported xpath expression: ' + xpath);
         
     | 
| 
      
 176 
     | 
    
         
            +
                    }
         
     | 
| 
      
 177 
     | 
    
         
            +
                    const handle = await frame._secondaryWorld.waitForXPath(xpath, {
         
     | 
| 
      
 178 
     | 
    
         
            +
                        ...options,
         
     | 
| 
      
 179 
     | 
    
         
            +
                        root: adoptedRoot,
         
     | 
| 
      
 180 
     | 
    
         
            +
                    });
         
     | 
| 
      
 181 
     | 
    
         
            +
                    await adoptedRoot.dispose();
         
     | 
| 
      
 182 
     | 
    
         
            +
                    if (!handle) {
         
     | 
| 
      
 183 
     | 
    
         
            +
                        return null;
         
     | 
| 
      
 184 
     | 
    
         
            +
                    }
         
     | 
| 
      
 185 
     | 
    
         
            +
                    const mainExecutionContext = await frame._mainWorld.executionContext();
         
     | 
| 
      
 186 
     | 
    
         
            +
                    const result = await mainExecutionContext._adoptElementHandle(handle);
         
     | 
| 
      
 187 
     | 
    
         
            +
                    await handle.dispose();
         
     | 
| 
      
 188 
     | 
    
         
            +
                    return result;
         
     | 
| 
      
 189 
     | 
    
         
            +
                }
         
     | 
| 
      
 190 
     | 
    
         
            +
                asElement() {
         
     | 
| 
      
 191 
     | 
    
         
            +
                    return this;
         
     | 
| 
      
 192 
     | 
    
         
            +
                }
         
     | 
| 
      
 193 
     | 
    
         
            +
                /**
         
     | 
| 
      
 194 
     | 
    
         
            +
                 * Resolves to the content frame for element handles referencing
         
     | 
| 
      
 195 
     | 
    
         
            +
                 * iframe nodes, or null otherwise
         
     | 
| 
      
 196 
     | 
    
         
            +
                 */
         
     | 
| 
      
 197 
     | 
    
         
            +
                async contentFrame() {
         
     | 
| 
      
 198 
     | 
    
         
            +
                    const nodeInfo = await this._client.send('DOM.describeNode', {
         
     | 
| 
      
 199 
     | 
    
         
            +
                        objectId: this._remoteObject.objectId,
         
     | 
| 
      
 200 
     | 
    
         
            +
                    });
         
     | 
| 
      
 201 
     | 
    
         
            +
                    if (typeof nodeInfo.node.frameId !== 'string') {
         
     | 
| 
      
 202 
     | 
    
         
            +
                        return null;
         
     | 
| 
      
 203 
     | 
    
         
            +
                    }
         
     | 
| 
      
 204 
     | 
    
         
            +
                    return __classPrivateFieldGet(this, _ElementHandle_frameManager, "f").frame(nodeInfo.node.frameId);
         
     | 
| 
      
 205 
     | 
    
         
            +
                }
         
     | 
| 
      
 206 
     | 
    
         
            +
                /**
         
     | 
| 
      
 207 
     | 
    
         
            +
                 * Returns the middle point within an element unless a specific offset is provided.
         
     | 
| 
      
 208 
     | 
    
         
            +
                 */
         
     | 
| 
      
 209 
     | 
    
         
            +
                async clickablePoint(offset) {
         
     | 
| 
      
 210 
     | 
    
         
            +
                    const [result, layoutMetrics] = await Promise.all([
         
     | 
| 
      
 211 
     | 
    
         
            +
                        this._client
         
     | 
| 
      
 212 
     | 
    
         
            +
                            .send('DOM.getContentQuads', {
         
     | 
| 
      
 213 
     | 
    
         
            +
                            objectId: this._remoteObject.objectId,
         
     | 
| 
      
 214 
     | 
    
         
            +
                        })
         
     | 
| 
      
 215 
     | 
    
         
            +
                            .catch(debugError),
         
     | 
| 
      
 216 
     | 
    
         
            +
                        __classPrivateFieldGet(this, _ElementHandle_page, "f")._client().send('Page.getLayoutMetrics'),
         
     | 
| 
      
 217 
     | 
    
         
            +
                    ]);
         
     | 
| 
      
 218 
     | 
    
         
            +
                    if (!result || !result.quads.length) {
         
     | 
| 
      
 219 
     | 
    
         
            +
                        throw new Error('Node is either not clickable or not an HTMLElement');
         
     | 
| 
      
 220 
     | 
    
         
            +
                    }
         
     | 
| 
      
 221 
     | 
    
         
            +
                    // Filter out quads that have too small area to click into.
         
     | 
| 
      
 222 
     | 
    
         
            +
                    // Fallback to `layoutViewport` in case of using Firefox.
         
     | 
| 
      
 223 
     | 
    
         
            +
                    const { clientWidth, clientHeight } = layoutMetrics.cssLayoutViewport || layoutMetrics.layoutViewport;
         
     | 
| 
      
 224 
     | 
    
         
            +
                    const { offsetX, offsetY } = await __classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_getOOPIFOffsets).call(this, __classPrivateFieldGet(this, _ElementHandle_frame, "f"));
         
     | 
| 
      
 225 
     | 
    
         
            +
                    const quads = result.quads
         
     | 
| 
      
 226 
     | 
    
         
            +
                        .map(quad => {
         
     | 
| 
      
 227 
     | 
    
         
            +
                        return __classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_fromProtocolQuad).call(this, quad);
         
     | 
| 
      
 228 
     | 
    
         
            +
                    })
         
     | 
| 
      
 229 
     | 
    
         
            +
                        .map(quad => {
         
     | 
| 
      
 230 
     | 
    
         
            +
                        return applyOffsetsToQuad(quad, offsetX, offsetY);
         
     | 
| 
      
 231 
     | 
    
         
            +
                    })
         
     | 
| 
      
 232 
     | 
    
         
            +
                        .map(quad => {
         
     | 
| 
      
 233 
     | 
    
         
            +
                        return __classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_intersectQuadWithViewport).call(this, quad, clientWidth, clientHeight);
         
     | 
| 
      
 234 
     | 
    
         
            +
                    })
         
     | 
| 
      
 235 
     | 
    
         
            +
                        .filter(quad => {
         
     | 
| 
      
 236 
     | 
    
         
            +
                        return computeQuadArea(quad) > 1;
         
     | 
| 
      
 237 
     | 
    
         
            +
                    });
         
     | 
| 
      
 238 
     | 
    
         
            +
                    if (!quads.length) {
         
     | 
| 
      
 239 
     | 
    
         
            +
                        throw new Error('Node is either not clickable or not an HTMLElement');
         
     | 
| 
      
 240 
     | 
    
         
            +
                    }
         
     | 
| 
      
 241 
     | 
    
         
            +
                    const quad = quads[0];
         
     | 
| 
      
 242 
     | 
    
         
            +
                    if (offset) {
         
     | 
| 
      
 243 
     | 
    
         
            +
                        // Return the point of the first quad identified by offset.
         
     | 
| 
      
 244 
     | 
    
         
            +
                        let minX = Number.MAX_SAFE_INTEGER;
         
     | 
| 
      
 245 
     | 
    
         
            +
                        let minY = Number.MAX_SAFE_INTEGER;
         
     | 
| 
      
 246 
     | 
    
         
            +
                        for (const point of quad) {
         
     | 
| 
      
 247 
     | 
    
         
            +
                            if (point.x < minX) {
         
     | 
| 
      
 248 
     | 
    
         
            +
                                minX = point.x;
         
     | 
| 
      
 249 
     | 
    
         
            +
                            }
         
     | 
| 
      
 250 
     | 
    
         
            +
                            if (point.y < minY) {
         
     | 
| 
      
 251 
     | 
    
         
            +
                                minY = point.y;
         
     | 
| 
      
 252 
     | 
    
         
            +
                            }
         
     | 
| 
      
 253 
     | 
    
         
            +
                        }
         
     | 
| 
      
 254 
     | 
    
         
            +
                        if (minX !== Number.MAX_SAFE_INTEGER &&
         
     | 
| 
      
 255 
     | 
    
         
            +
                            minY !== Number.MAX_SAFE_INTEGER) {
         
     | 
| 
      
 256 
     | 
    
         
            +
                            return {
         
     | 
| 
      
 257 
     | 
    
         
            +
                                x: minX + offset.x,
         
     | 
| 
      
 258 
     | 
    
         
            +
                                y: minY + offset.y,
         
     | 
| 
      
 259 
     | 
    
         
            +
                            };
         
     | 
| 
      
 260 
     | 
    
         
            +
                        }
         
     | 
| 
      
 261 
     | 
    
         
            +
                    }
         
     | 
| 
      
 262 
     | 
    
         
            +
                    // Return the middle point of the first quad.
         
     | 
| 
      
 263 
     | 
    
         
            +
                    let x = 0;
         
     | 
| 
      
 264 
     | 
    
         
            +
                    let y = 0;
         
     | 
| 
      
 265 
     | 
    
         
            +
                    for (const point of quad) {
         
     | 
| 
      
 266 
     | 
    
         
            +
                        x += point.x;
         
     | 
| 
      
 267 
     | 
    
         
            +
                        y += point.y;
         
     | 
| 
      
 268 
     | 
    
         
            +
                    }
         
     | 
| 
      
 269 
     | 
    
         
            +
                    return {
         
     | 
| 
      
 270 
     | 
    
         
            +
                        x: x / 4,
         
     | 
| 
      
 271 
     | 
    
         
            +
                        y: y / 4,
         
     | 
| 
      
 272 
     | 
    
         
            +
                    };
         
     | 
| 
      
 273 
     | 
    
         
            +
                }
         
     | 
| 
      
 274 
     | 
    
         
            +
                /**
         
     | 
| 
      
 275 
     | 
    
         
            +
                 * This method scrolls element into view if needed, and then
         
     | 
| 
      
 276 
     | 
    
         
            +
                 * uses {@link Page.mouse} to hover over the center of the element.
         
     | 
| 
      
 277 
     | 
    
         
            +
                 * If the element is detached from DOM, the method throws an error.
         
     | 
| 
      
 278 
     | 
    
         
            +
                 */
         
     | 
| 
      
 279 
     | 
    
         
            +
                async hover() {
         
     | 
| 
      
 280 
     | 
    
         
            +
                    await __classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_scrollIntoViewIfNeeded).call(this);
         
     | 
| 
      
 281 
     | 
    
         
            +
                    const { x, y } = await this.clickablePoint();
         
     | 
| 
      
 282 
     | 
    
         
            +
                    await __classPrivateFieldGet(this, _ElementHandle_page, "f").mouse.move(x, y);
         
     | 
| 
      
 283 
     | 
    
         
            +
                }
         
     | 
| 
      
 284 
     | 
    
         
            +
                /**
         
     | 
| 
      
 285 
     | 
    
         
            +
                 * This method scrolls element into view if needed, and then
         
     | 
| 
      
 286 
     | 
    
         
            +
                 * uses {@link Page.mouse} to click in the center of the element.
         
     | 
| 
      
 287 
     | 
    
         
            +
                 * If the element is detached from DOM, the method throws an error.
         
     | 
| 
      
 288 
     | 
    
         
            +
                 */
         
     | 
| 
      
 289 
     | 
    
         
            +
                async click(options = {}) {
         
     | 
| 
      
 290 
     | 
    
         
            +
                    await __classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_scrollIntoViewIfNeeded).call(this);
         
     | 
| 
      
 291 
     | 
    
         
            +
                    const { x, y } = await this.clickablePoint(options.offset);
         
     | 
| 
      
 292 
     | 
    
         
            +
                    await __classPrivateFieldGet(this, _ElementHandle_page, "f").mouse.click(x, y, options);
         
     | 
| 
      
 293 
     | 
    
         
            +
                }
         
     | 
| 
      
 294 
     | 
    
         
            +
                /**
         
     | 
| 
      
 295 
     | 
    
         
            +
                 * This method creates and captures a dragevent from the element.
         
     | 
| 
      
 296 
     | 
    
         
            +
                 */
         
     | 
| 
      
 297 
     | 
    
         
            +
                async drag(target) {
         
     | 
| 
      
 298 
     | 
    
         
            +
                    assert(__classPrivateFieldGet(this, _ElementHandle_page, "f").isDragInterceptionEnabled(), 'Drag Interception is not enabled!');
         
     | 
| 
      
 299 
     | 
    
         
            +
                    await __classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_scrollIntoViewIfNeeded).call(this);
         
     | 
| 
      
 300 
     | 
    
         
            +
                    const start = await this.clickablePoint();
         
     | 
| 
      
 301 
     | 
    
         
            +
                    return await __classPrivateFieldGet(this, _ElementHandle_page, "f").mouse.drag(start, target);
         
     | 
| 
      
 302 
     | 
    
         
            +
                }
         
     | 
| 
      
 303 
     | 
    
         
            +
                /**
         
     | 
| 
      
 304 
     | 
    
         
            +
                 * This method creates a `dragenter` event on the element.
         
     | 
| 
      
 305 
     | 
    
         
            +
                 */
         
     | 
| 
      
 306 
     | 
    
         
            +
                async dragEnter(data = { items: [], dragOperationsMask: 1 }) {
         
     | 
| 
      
 307 
     | 
    
         
            +
                    await __classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_scrollIntoViewIfNeeded).call(this);
         
     | 
| 
      
 308 
     | 
    
         
            +
                    const target = await this.clickablePoint();
         
     | 
| 
      
 309 
     | 
    
         
            +
                    await __classPrivateFieldGet(this, _ElementHandle_page, "f").mouse.dragEnter(target, data);
         
     | 
| 
      
 310 
     | 
    
         
            +
                }
         
     | 
| 
      
 311 
     | 
    
         
            +
                /**
         
     | 
| 
      
 312 
     | 
    
         
            +
                 * This method creates a `dragover` event on the element.
         
     | 
| 
      
 313 
     | 
    
         
            +
                 */
         
     | 
| 
      
 314 
     | 
    
         
            +
                async dragOver(data = { items: [], dragOperationsMask: 1 }) {
         
     | 
| 
      
 315 
     | 
    
         
            +
                    await __classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_scrollIntoViewIfNeeded).call(this);
         
     | 
| 
      
 316 
     | 
    
         
            +
                    const target = await this.clickablePoint();
         
     | 
| 
      
 317 
     | 
    
         
            +
                    await __classPrivateFieldGet(this, _ElementHandle_page, "f").mouse.dragOver(target, data);
         
     | 
| 
      
 318 
     | 
    
         
            +
                }
         
     | 
| 
      
 319 
     | 
    
         
            +
                /**
         
     | 
| 
      
 320 
     | 
    
         
            +
                 * This method triggers a drop on the element.
         
     | 
| 
      
 321 
     | 
    
         
            +
                 */
         
     | 
| 
      
 322 
     | 
    
         
            +
                async drop(data = { items: [], dragOperationsMask: 1 }) {
         
     | 
| 
      
 323 
     | 
    
         
            +
                    await __classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_scrollIntoViewIfNeeded).call(this);
         
     | 
| 
      
 324 
     | 
    
         
            +
                    const destination = await this.clickablePoint();
         
     | 
| 
      
 325 
     | 
    
         
            +
                    await __classPrivateFieldGet(this, _ElementHandle_page, "f").mouse.drop(destination, data);
         
     | 
| 
      
 326 
     | 
    
         
            +
                }
         
     | 
| 
      
 327 
     | 
    
         
            +
                /**
         
     | 
| 
      
 328 
     | 
    
         
            +
                 * This method triggers a dragenter, dragover, and drop on the element.
         
     | 
| 
      
 329 
     | 
    
         
            +
                 */
         
     | 
| 
      
 330 
     | 
    
         
            +
                async dragAndDrop(target, options) {
         
     | 
| 
      
 331 
     | 
    
         
            +
                    await __classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_scrollIntoViewIfNeeded).call(this);
         
     | 
| 
      
 332 
     | 
    
         
            +
                    const startPoint = await this.clickablePoint();
         
     | 
| 
      
 333 
     | 
    
         
            +
                    const targetPoint = await target.clickablePoint();
         
     | 
| 
      
 334 
     | 
    
         
            +
                    await __classPrivateFieldGet(this, _ElementHandle_page, "f").mouse.dragAndDrop(startPoint, targetPoint, options);
         
     | 
| 
      
 335 
     | 
    
         
            +
                }
         
     | 
| 
      
 336 
     | 
    
         
            +
                /**
         
     | 
| 
      
 337 
     | 
    
         
            +
                 * Triggers a `change` and `input` event once all the provided options have been
         
     | 
| 
      
 338 
     | 
    
         
            +
                 * selected. If there's no `<select>` element matching `selector`, the method
         
     | 
| 
      
 339 
     | 
    
         
            +
                 * throws an error.
         
     | 
| 
      
 340 
     | 
    
         
            +
                 *
         
     | 
| 
      
 341 
     | 
    
         
            +
                 * @example
         
     | 
| 
      
 342 
     | 
    
         
            +
                 * ```ts
         
     | 
| 
      
 343 
     | 
    
         
            +
                 * handle.select('blue'); // single selection
         
     | 
| 
      
 344 
     | 
    
         
            +
                 * handle.select('red', 'green', 'blue'); // multiple selections
         
     | 
| 
      
 345 
     | 
    
         
            +
                 * ```
         
     | 
| 
      
 346 
     | 
    
         
            +
                 * @param values - Values of options to select. If the `<select>` has the
         
     | 
| 
      
 347 
     | 
    
         
            +
                 *    `multiple` attribute, all values are considered, otherwise only the first
         
     | 
| 
      
 348 
     | 
    
         
            +
                 *    one is taken into account.
         
     | 
| 
      
 349 
     | 
    
         
            +
                 */
         
     | 
| 
      
 350 
     | 
    
         
            +
                async select(...values) {
         
     | 
| 
      
 351 
     | 
    
         
            +
                    for (const value of values) {
         
     | 
| 
      
 352 
     | 
    
         
            +
                        assert(isString(value), 'Values must be strings. Found value "' +
         
     | 
| 
      
 353 
     | 
    
         
            +
                            value +
         
     | 
| 
      
 354 
     | 
    
         
            +
                            '" of type "' +
         
     | 
| 
      
 355 
     | 
    
         
            +
                            typeof value +
         
     | 
| 
      
 356 
     | 
    
         
            +
                            '"');
         
     | 
| 
      
 357 
     | 
    
         
            +
                    }
         
     | 
| 
      
 358 
     | 
    
         
            +
                    return this.evaluate((element, vals) => {
         
     | 
| 
      
 359 
     | 
    
         
            +
                        const values = new Set(vals);
         
     | 
| 
      
 360 
     | 
    
         
            +
                        if (!(element instanceof HTMLSelectElement)) {
         
     | 
| 
      
 361 
     | 
    
         
            +
                            throw new Error('Element is not a <select> element.');
         
     | 
| 
      
 362 
     | 
    
         
            +
                        }
         
     | 
| 
      
 363 
     | 
    
         
            +
                        const selectedValues = new Set();
         
     | 
| 
      
 364 
     | 
    
         
            +
                        if (!element.multiple) {
         
     | 
| 
      
 365 
     | 
    
         
            +
                            for (const option of element.options) {
         
     | 
| 
      
 366 
     | 
    
         
            +
                                option.selected = false;
         
     | 
| 
      
 367 
     | 
    
         
            +
                            }
         
     | 
| 
      
 368 
     | 
    
         
            +
                            for (const option of element.options) {
         
     | 
| 
      
 369 
     | 
    
         
            +
                                if (values.has(option.value)) {
         
     | 
| 
      
 370 
     | 
    
         
            +
                                    option.selected = true;
         
     | 
| 
      
 371 
     | 
    
         
            +
                                    selectedValues.add(option.value);
         
     | 
| 
      
 372 
     | 
    
         
            +
                                    break;
         
     | 
| 
      
 373 
     | 
    
         
            +
                                }
         
     | 
| 
      
 374 
     | 
    
         
            +
                            }
         
     | 
| 
      
 375 
     | 
    
         
            +
                        }
         
     | 
| 
      
 376 
     | 
    
         
            +
                        else {
         
     | 
| 
      
 377 
     | 
    
         
            +
                            for (const option of element.options) {
         
     | 
| 
      
 378 
     | 
    
         
            +
                                option.selected = values.has(option.value);
         
     | 
| 
      
 379 
     | 
    
         
            +
                                if (option.selected) {
         
     | 
| 
      
 380 
     | 
    
         
            +
                                    selectedValues.add(option.value);
         
     | 
| 
      
 381 
     | 
    
         
            +
                                }
         
     | 
| 
      
 382 
     | 
    
         
            +
                            }
         
     | 
| 
      
 383 
     | 
    
         
            +
                        }
         
     | 
| 
      
 384 
     | 
    
         
            +
                        element.dispatchEvent(new Event('input', { bubbles: true }));
         
     | 
| 
      
 385 
     | 
    
         
            +
                        element.dispatchEvent(new Event('change', { bubbles: true }));
         
     | 
| 
      
 386 
     | 
    
         
            +
                        return [...selectedValues.values()];
         
     | 
| 
      
 387 
     | 
    
         
            +
                    }, values);
         
     | 
| 
      
 388 
     | 
    
         
            +
                }
         
     | 
| 
      
 389 
     | 
    
         
            +
                /**
         
     | 
| 
      
 390 
     | 
    
         
            +
                 * This method expects `elementHandle` to point to an
         
     | 
| 
      
 391 
     | 
    
         
            +
                 * {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input | input element}.
         
     | 
| 
      
 392 
     | 
    
         
            +
                 *
         
     | 
| 
      
 393 
     | 
    
         
            +
                 * @param filePaths - Sets the value of the file input to these paths.
         
     | 
| 
      
 394 
     | 
    
         
            +
                 *    If a path is relative, then it is resolved against the
         
     | 
| 
      
 395 
     | 
    
         
            +
                 *    {@link https://nodejs.org/api/process.html#process_process_cwd | current working directory}.
         
     | 
| 
      
 396 
     | 
    
         
            +
                 *    Note for locals script connecting to remote chrome environments,
         
     | 
| 
      
 397 
     | 
    
         
            +
                 *    paths must be absolute.
         
     | 
| 
      
 398 
     | 
    
         
            +
                 */
         
     | 
| 
      
 399 
     | 
    
         
            +
                async uploadFile(...filePaths) {
         
     | 
| 
      
 400 
     | 
    
         
            +
                    const isMultiple = await this.evaluate(element => {
         
     | 
| 
      
 401 
     | 
    
         
            +
                        return element.multiple;
         
     | 
| 
      
 402 
     | 
    
         
            +
                    });
         
     | 
| 
      
 403 
     | 
    
         
            +
                    assert(filePaths.length <= 1 || isMultiple, 'Multiple file uploads only work with <input type=file multiple>');
         
     | 
| 
      
 404 
     | 
    
         
            +
                    // Locate all files and confirm that they exist.
         
     | 
| 
      
 405 
     | 
    
         
            +
                    let path;
         
     | 
| 
      
 406 
     | 
    
         
            +
                    try {
         
     | 
| 
      
 407 
     | 
    
         
            +
                        path = await import('path');
         
     | 
| 
      
 408 
     | 
    
         
            +
                    }
         
     | 
| 
      
 409 
     | 
    
         
            +
                    catch (error) {
         
     | 
| 
      
 410 
     | 
    
         
            +
                        if (error instanceof TypeError) {
         
     | 
| 
      
 411 
     | 
    
         
            +
                            throw new Error(`JSHandle#uploadFile can only be used in Node-like environments.`);
         
     | 
| 
      
 412 
     | 
    
         
            +
                        }
         
     | 
| 
      
 413 
     | 
    
         
            +
                        throw error;
         
     | 
| 
      
 414 
     | 
    
         
            +
                    }
         
     | 
| 
      
 415 
     | 
    
         
            +
                    const files = filePaths.map(filePath => {
         
     | 
| 
      
 416 
     | 
    
         
            +
                        if (path.win32.isAbsolute(filePath) || path.posix.isAbsolute(filePath)) {
         
     | 
| 
      
 417 
     | 
    
         
            +
                            return filePath;
         
     | 
| 
      
 418 
     | 
    
         
            +
                        }
         
     | 
| 
      
 419 
     | 
    
         
            +
                        else {
         
     | 
| 
      
 420 
     | 
    
         
            +
                            return path.resolve(filePath);
         
     | 
| 
      
 421 
     | 
    
         
            +
                        }
         
     | 
| 
      
 422 
     | 
    
         
            +
                    });
         
     | 
| 
      
 423 
     | 
    
         
            +
                    const { objectId } = this._remoteObject;
         
     | 
| 
      
 424 
     | 
    
         
            +
                    const { node } = await this._client.send('DOM.describeNode', { objectId });
         
     | 
| 
      
 425 
     | 
    
         
            +
                    const { backendNodeId } = node;
         
     | 
| 
      
 426 
     | 
    
         
            +
                    /*  The zero-length array is a special case, it seems that
         
     | 
| 
      
 427 
     | 
    
         
            +
                         DOM.setFileInputFiles does not actually update the files in that case,
         
     | 
| 
      
 428 
     | 
    
         
            +
                         so the solution is to eval the element value to a new FileList directly.
         
     | 
| 
      
 429 
     | 
    
         
            +
                     */
         
     | 
| 
      
 430 
     | 
    
         
            +
                    if (files.length === 0) {
         
     | 
| 
      
 431 
     | 
    
         
            +
                        await this.evaluate(element => {
         
     | 
| 
      
 432 
     | 
    
         
            +
                            element.files = new DataTransfer().files;
         
     | 
| 
      
 433 
     | 
    
         
            +
                            // Dispatch events for this case because it should behave akin to a user action.
         
     | 
| 
      
 434 
     | 
    
         
            +
                            element.dispatchEvent(new Event('input', { bubbles: true }));
         
     | 
| 
      
 435 
     | 
    
         
            +
                            element.dispatchEvent(new Event('change', { bubbles: true }));
         
     | 
| 
      
 436 
     | 
    
         
            +
                        });
         
     | 
| 
      
 437 
     | 
    
         
            +
                    }
         
     | 
| 
      
 438 
     | 
    
         
            +
                    else {
         
     | 
| 
      
 439 
     | 
    
         
            +
                        await this._client.send('DOM.setFileInputFiles', {
         
     | 
| 
      
 440 
     | 
    
         
            +
                            objectId,
         
     | 
| 
      
 441 
     | 
    
         
            +
                            files,
         
     | 
| 
      
 442 
     | 
    
         
            +
                            backendNodeId,
         
     | 
| 
      
 443 
     | 
    
         
            +
                        });
         
     | 
| 
      
 444 
     | 
    
         
            +
                    }
         
     | 
| 
      
 445 
     | 
    
         
            +
                }
         
     | 
| 
      
 446 
     | 
    
         
            +
                /**
         
     | 
| 
      
 447 
     | 
    
         
            +
                 * This method scrolls element into view if needed, and then uses
         
     | 
| 
      
 448 
     | 
    
         
            +
                 * {@link Touchscreen.tap} to tap in the center of the element.
         
     | 
| 
      
 449 
     | 
    
         
            +
                 * If the element is detached from DOM, the method throws an error.
         
     | 
| 
      
 450 
     | 
    
         
            +
                 */
         
     | 
| 
      
 451 
     | 
    
         
            +
                async tap() {
         
     | 
| 
      
 452 
     | 
    
         
            +
                    await __classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_scrollIntoViewIfNeeded).call(this);
         
     | 
| 
      
 453 
     | 
    
         
            +
                    const { x, y } = await this.clickablePoint();
         
     | 
| 
      
 454 
     | 
    
         
            +
                    await __classPrivateFieldGet(this, _ElementHandle_page, "f").touchscreen.tap(x, y);
         
     | 
| 
      
 455 
     | 
    
         
            +
                }
         
     | 
| 
      
 456 
     | 
    
         
            +
                /**
         
     | 
| 
      
 457 
     | 
    
         
            +
                 * Calls {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus | focus} on the element.
         
     | 
| 
      
 458 
     | 
    
         
            +
                 */
         
     | 
| 
      
 459 
     | 
    
         
            +
                async focus() {
         
     | 
| 
      
 460 
     | 
    
         
            +
                    await this.evaluate(element => {
         
     | 
| 
      
 461 
     | 
    
         
            +
                        if (!(element instanceof HTMLElement)) {
         
     | 
| 
      
 462 
     | 
    
         
            +
                            throw new Error('Cannot focus non-HTMLElement');
         
     | 
| 
      
 463 
     | 
    
         
            +
                        }
         
     | 
| 
      
 464 
     | 
    
         
            +
                        return element.focus();
         
     | 
| 
      
 465 
     | 
    
         
            +
                    });
         
     | 
| 
      
 466 
     | 
    
         
            +
                }
         
     | 
| 
      
 467 
     | 
    
         
            +
                /**
         
     | 
| 
      
 468 
     | 
    
         
            +
                 * Focuses the element, and then sends a `keydown`, `keypress`/`input`, and
         
     | 
| 
      
 469 
     | 
    
         
            +
                 * `keyup` event for each character in the text.
         
     | 
| 
      
 470 
     | 
    
         
            +
                 *
         
     | 
| 
      
 471 
     | 
    
         
            +
                 * To press a special key, like `Control` or `ArrowDown`,
         
     | 
| 
      
 472 
     | 
    
         
            +
                 * use {@link ElementHandle.press}.
         
     | 
| 
      
 473 
     | 
    
         
            +
                 *
         
     | 
| 
      
 474 
     | 
    
         
            +
                 * @example
         
     | 
| 
      
 475 
     | 
    
         
            +
                 * ```ts
         
     | 
| 
      
 476 
     | 
    
         
            +
                 * await elementHandle.type('Hello'); // Types instantly
         
     | 
| 
      
 477 
     | 
    
         
            +
                 * await elementHandle.type('World', {delay: 100}); // Types slower, like a user
         
     | 
| 
      
 478 
     | 
    
         
            +
                 * ```
         
     | 
| 
      
 479 
     | 
    
         
            +
                 *
         
     | 
| 
      
 480 
     | 
    
         
            +
                 * @example
         
     | 
| 
      
 481 
     | 
    
         
            +
                 * An example of typing into a text field and then submitting the form:
         
     | 
| 
      
 482 
     | 
    
         
            +
                 *
         
     | 
| 
      
 483 
     | 
    
         
            +
                 * ```ts
         
     | 
| 
      
 484 
     | 
    
         
            +
                 * const elementHandle = await page.$('input');
         
     | 
| 
      
 485 
     | 
    
         
            +
                 * await elementHandle.type('some text');
         
     | 
| 
      
 486 
     | 
    
         
            +
                 * await elementHandle.press('Enter');
         
     | 
| 
      
 487 
     | 
    
         
            +
                 * ```
         
     | 
| 
      
 488 
     | 
    
         
            +
                 */
         
     | 
| 
      
 489 
     | 
    
         
            +
                async type(text, options) {
         
     | 
| 
      
 490 
     | 
    
         
            +
                    await this.focus();
         
     | 
| 
      
 491 
     | 
    
         
            +
                    await __classPrivateFieldGet(this, _ElementHandle_page, "f").keyboard.type(text, options);
         
     | 
| 
      
 492 
     | 
    
         
            +
                }
         
     | 
| 
      
 493 
     | 
    
         
            +
                /**
         
     | 
| 
      
 494 
     | 
    
         
            +
                 * Focuses the element, and then uses {@link Keyboard.down} and {@link Keyboard.up}.
         
     | 
| 
      
 495 
     | 
    
         
            +
                 *
         
     | 
| 
      
 496 
     | 
    
         
            +
                 * @remarks
         
     | 
| 
      
 497 
     | 
    
         
            +
                 * If `key` is a single character and no modifier keys besides `Shift`
         
     | 
| 
      
 498 
     | 
    
         
            +
                 * are being held down, a `keypress`/`input` event will also be generated.
         
     | 
| 
      
 499 
     | 
    
         
            +
                 * The `text` option can be specified to force an input event to be generated.
         
     | 
| 
      
 500 
     | 
    
         
            +
                 *
         
     | 
| 
      
 501 
     | 
    
         
            +
                 * **NOTE** Modifier keys DO affect `elementHandle.press`. Holding down `Shift`
         
     | 
| 
      
 502 
     | 
    
         
            +
                 * will type the text in upper case.
         
     | 
| 
      
 503 
     | 
    
         
            +
                 *
         
     | 
| 
      
 504 
     | 
    
         
            +
                 * @param key - Name of key to press, such as `ArrowLeft`.
         
     | 
| 
      
 505 
     | 
    
         
            +
                 *    See {@link KeyInput} for a list of all key names.
         
     | 
| 
      
 506 
     | 
    
         
            +
                 */
         
     | 
| 
      
 507 
     | 
    
         
            +
                async press(key, options) {
         
     | 
| 
      
 508 
     | 
    
         
            +
                    await this.focus();
         
     | 
| 
      
 509 
     | 
    
         
            +
                    await __classPrivateFieldGet(this, _ElementHandle_page, "f").keyboard.press(key, options);
         
     | 
| 
      
 510 
     | 
    
         
            +
                }
         
     | 
| 
      
 511 
     | 
    
         
            +
                /**
         
     | 
| 
      
 512 
     | 
    
         
            +
                 * This method returns the bounding box of the element (relative to the main frame),
         
     | 
| 
      
 513 
     | 
    
         
            +
                 * or `null` if the element is not visible.
         
     | 
| 
      
 514 
     | 
    
         
            +
                 */
         
     | 
| 
      
 515 
     | 
    
         
            +
                async boundingBox() {
         
     | 
| 
      
 516 
     | 
    
         
            +
                    const result = await __classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_getBoxModel).call(this);
         
     | 
| 
      
 517 
     | 
    
         
            +
                    if (!result) {
         
     | 
| 
      
 518 
     | 
    
         
            +
                        return null;
         
     | 
| 
      
 519 
     | 
    
         
            +
                    }
         
     | 
| 
      
 520 
     | 
    
         
            +
                    const { offsetX, offsetY } = await __classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_getOOPIFOffsets).call(this, __classPrivateFieldGet(this, _ElementHandle_frame, "f"));
         
     | 
| 
      
 521 
     | 
    
         
            +
                    const quad = result.model.border;
         
     | 
| 
      
 522 
     | 
    
         
            +
                    const x = Math.min(quad[0], quad[2], quad[4], quad[6]);
         
     | 
| 
      
 523 
     | 
    
         
            +
                    const y = Math.min(quad[1], quad[3], quad[5], quad[7]);
         
     | 
| 
      
 524 
     | 
    
         
            +
                    const width = Math.max(quad[0], quad[2], quad[4], quad[6]) - x;
         
     | 
| 
      
 525 
     | 
    
         
            +
                    const height = Math.max(quad[1], quad[3], quad[5], quad[7]) - y;
         
     | 
| 
      
 526 
     | 
    
         
            +
                    return { x: x + offsetX, y: y + offsetY, width, height };
         
     | 
| 
      
 527 
     | 
    
         
            +
                }
         
     | 
| 
      
 528 
     | 
    
         
            +
                /**
         
     | 
| 
      
 529 
     | 
    
         
            +
                 * This method returns boxes of the element, or `null` if the element is not visible.
         
     | 
| 
      
 530 
     | 
    
         
            +
                 *
         
     | 
| 
      
 531 
     | 
    
         
            +
                 * @remarks
         
     | 
| 
      
 532 
     | 
    
         
            +
                 *
         
     | 
| 
      
 533 
     | 
    
         
            +
                 * Boxes are represented as an array of points;
         
     | 
| 
      
 534 
     | 
    
         
            +
                 * Each Point is an object `{x, y}`. Box points are sorted clock-wise.
         
     | 
| 
      
 535 
     | 
    
         
            +
                 */
         
     | 
| 
      
 536 
     | 
    
         
            +
                async boxModel() {
         
     | 
| 
      
 537 
     | 
    
         
            +
                    const result = await __classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_getBoxModel).call(this);
         
     | 
| 
      
 538 
     | 
    
         
            +
                    if (!result) {
         
     | 
| 
      
 539 
     | 
    
         
            +
                        return null;
         
     | 
| 
      
 540 
     | 
    
         
            +
                    }
         
     | 
| 
      
 541 
     | 
    
         
            +
                    const { offsetX, offsetY } = await __classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_getOOPIFOffsets).call(this, __classPrivateFieldGet(this, _ElementHandle_frame, "f"));
         
     | 
| 
      
 542 
     | 
    
         
            +
                    const { content, padding, border, margin, width, height } = result.model;
         
     | 
| 
      
 543 
     | 
    
         
            +
                    return {
         
     | 
| 
      
 544 
     | 
    
         
            +
                        content: applyOffsetsToQuad(__classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_fromProtocolQuad).call(this, content), offsetX, offsetY),
         
     | 
| 
      
 545 
     | 
    
         
            +
                        padding: applyOffsetsToQuad(__classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_fromProtocolQuad).call(this, padding), offsetX, offsetY),
         
     | 
| 
      
 546 
     | 
    
         
            +
                        border: applyOffsetsToQuad(__classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_fromProtocolQuad).call(this, border), offsetX, offsetY),
         
     | 
| 
      
 547 
     | 
    
         
            +
                        margin: applyOffsetsToQuad(__classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_fromProtocolQuad).call(this, margin), offsetX, offsetY),
         
     | 
| 
      
 548 
     | 
    
         
            +
                        width,
         
     | 
| 
      
 549 
     | 
    
         
            +
                        height,
         
     | 
| 
      
 550 
     | 
    
         
            +
                    };
         
     | 
| 
      
 551 
     | 
    
         
            +
                }
         
     | 
| 
      
 552 
     | 
    
         
            +
                /**
         
     | 
| 
      
 553 
     | 
    
         
            +
                 * This method scrolls element into view if needed, and then uses
         
     | 
| 
      
 554 
     | 
    
         
            +
                 * {@link Page.screenshot} to take a screenshot of the element.
         
     | 
| 
      
 555 
     | 
    
         
            +
                 * If the element is detached from DOM, the method throws an error.
         
     | 
| 
      
 556 
     | 
    
         
            +
                 */
         
     | 
| 
      
 557 
     | 
    
         
            +
                async screenshot(options = {}) {
         
     | 
| 
      
 558 
     | 
    
         
            +
                    let needsViewportReset = false;
         
     | 
| 
      
 559 
     | 
    
         
            +
                    let boundingBox = await this.boundingBox();
         
     | 
| 
      
 560 
     | 
    
         
            +
                    assert(boundingBox, 'Node is either not visible or not an HTMLElement');
         
     | 
| 
      
 561 
     | 
    
         
            +
                    const viewport = __classPrivateFieldGet(this, _ElementHandle_page, "f").viewport();
         
     | 
| 
      
 562 
     | 
    
         
            +
                    assert(viewport);
         
     | 
| 
      
 563 
     | 
    
         
            +
                    if (boundingBox.width > viewport.width ||
         
     | 
| 
      
 564 
     | 
    
         
            +
                        boundingBox.height > viewport.height) {
         
     | 
| 
      
 565 
     | 
    
         
            +
                        const newViewport = {
         
     | 
| 
      
 566 
     | 
    
         
            +
                            width: Math.max(viewport.width, Math.ceil(boundingBox.width)),
         
     | 
| 
      
 567 
     | 
    
         
            +
                            height: Math.max(viewport.height, Math.ceil(boundingBox.height)),
         
     | 
| 
      
 568 
     | 
    
         
            +
                        };
         
     | 
| 
      
 569 
     | 
    
         
            +
                        await __classPrivateFieldGet(this, _ElementHandle_page, "f").setViewport(Object.assign({}, viewport, newViewport));
         
     | 
| 
      
 570 
     | 
    
         
            +
                        needsViewportReset = true;
         
     | 
| 
      
 571 
     | 
    
         
            +
                    }
         
     | 
| 
      
 572 
     | 
    
         
            +
                    await __classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_scrollIntoViewIfNeeded).call(this);
         
     | 
| 
      
 573 
     | 
    
         
            +
                    boundingBox = await this.boundingBox();
         
     | 
| 
      
 574 
     | 
    
         
            +
                    assert(boundingBox, 'Node is either not visible or not an HTMLElement');
         
     | 
| 
      
 575 
     | 
    
         
            +
                    assert(boundingBox.width !== 0, 'Node has 0 width.');
         
     | 
| 
      
 576 
     | 
    
         
            +
                    assert(boundingBox.height !== 0, 'Node has 0 height.');
         
     | 
| 
      
 577 
     | 
    
         
            +
                    const layoutMetrics = await this._client.send('Page.getLayoutMetrics');
         
     | 
| 
      
 578 
     | 
    
         
            +
                    // Fallback to `layoutViewport` in case of using Firefox.
         
     | 
| 
      
 579 
     | 
    
         
            +
                    const { pageX, pageY } = layoutMetrics.cssVisualViewport || layoutMetrics.layoutViewport;
         
     | 
| 
      
 580 
     | 
    
         
            +
                    const clip = Object.assign({}, boundingBox);
         
     | 
| 
      
 581 
     | 
    
         
            +
                    clip.x += pageX;
         
     | 
| 
      
 582 
     | 
    
         
            +
                    clip.y += pageY;
         
     | 
| 
      
 583 
     | 
    
         
            +
                    const imageData = await __classPrivateFieldGet(this, _ElementHandle_page, "f").screenshot(Object.assign({}, {
         
     | 
| 
      
 584 
     | 
    
         
            +
                        clip,
         
     | 
| 
      
 585 
     | 
    
         
            +
                    }, options));
         
     | 
| 
      
 586 
     | 
    
         
            +
                    if (needsViewportReset) {
         
     | 
| 
      
 587 
     | 
    
         
            +
                        await __classPrivateFieldGet(this, _ElementHandle_page, "f").setViewport(viewport);
         
     | 
| 
      
 588 
     | 
    
         
            +
                    }
         
     | 
| 
      
 589 
     | 
    
         
            +
                    return imageData;
         
     | 
| 
      
 590 
     | 
    
         
            +
                }
         
     | 
| 
      
 591 
     | 
    
         
            +
                /**
         
     | 
| 
      
 592 
     | 
    
         
            +
                 * Runs `element.querySelector` within the page.
         
     | 
| 
      
 593 
     | 
    
         
            +
                 *
         
     | 
| 
      
 594 
     | 
    
         
            +
                 * @param selector - The selector to query with.
         
     | 
| 
      
 595 
     | 
    
         
            +
                 * @returns `null` if no element matches the selector.
         
     | 
| 
      
 596 
     | 
    
         
            +
                 * @throws `Error` if the selector has no associated query handler.
         
     | 
| 
      
 597 
     | 
    
         
            +
                 */
         
     | 
| 
      
 598 
     | 
    
         
            +
                async $(selector) {
         
     | 
| 
      
 599 
     | 
    
         
            +
                    const { updatedSelector, queryHandler } = getQueryHandlerAndSelector(selector);
         
     | 
| 
      
 600 
     | 
    
         
            +
                    assert(queryHandler.queryOne, 'Cannot handle queries for a single element with the given selector');
         
     | 
| 
      
 601 
     | 
    
         
            +
                    return (await queryHandler.queryOne(this, updatedSelector));
         
     | 
| 
      
 602 
     | 
    
         
            +
                }
         
     | 
| 
      
 603 
     | 
    
         
            +
                /**
         
     | 
| 
      
 604 
     | 
    
         
            +
                 * Runs `element.querySelectorAll` within the page. If no elements match the selector,
         
     | 
| 
      
 605 
     | 
    
         
            +
                 * the return value resolves to `[]`.
         
     | 
| 
      
 606 
     | 
    
         
            +
                 */
         
     | 
| 
      
 607 
     | 
    
         
            +
                /**
         
     | 
| 
      
 608 
     | 
    
         
            +
                 * Runs `element.querySelectorAll` within the page.
         
     | 
| 
      
 609 
     | 
    
         
            +
                 *
         
     | 
| 
      
 610 
     | 
    
         
            +
                 * @param selector - The selector to query with.
         
     | 
| 
      
 611 
     | 
    
         
            +
                 * @returns `[]` if no element matches the selector.
         
     | 
| 
      
 612 
     | 
    
         
            +
                 * @throws `Error` if the selector has no associated query handler.
         
     | 
| 
      
 613 
     | 
    
         
            +
                 */
         
     | 
| 
      
 614 
     | 
    
         
            +
                async $$(selector) {
         
     | 
| 
      
 615 
     | 
    
         
            +
                    const { updatedSelector, queryHandler } = getQueryHandlerAndSelector(selector);
         
     | 
| 
      
 616 
     | 
    
         
            +
                    assert(queryHandler.queryAll, 'Cannot handle queries for a multiple element with the given selector');
         
     | 
| 
      
 617 
     | 
    
         
            +
                    return (await queryHandler.queryAll(this, updatedSelector));
         
     | 
| 
      
 618 
     | 
    
         
            +
                }
         
     | 
| 
      
 619 
     | 
    
         
            +
                /**
         
     | 
| 
      
 620 
     | 
    
         
            +
                 * This method runs `document.querySelector` within the element and passes it as
         
     | 
| 
      
 621 
     | 
    
         
            +
                 * the first argument to `pageFunction`. If there's no element matching `selector`,
         
     | 
| 
      
 622 
     | 
    
         
            +
                 * the method throws an error.
         
     | 
| 
      
 623 
     | 
    
         
            +
                 *
         
     | 
| 
      
 624 
     | 
    
         
            +
                 * If `pageFunction` returns a Promise, then `frame.$eval` would wait for the promise
         
     | 
| 
      
 625 
     | 
    
         
            +
                 * to resolve and return its value.
         
     | 
| 
      
 626 
     | 
    
         
            +
                 *
         
     | 
| 
      
 627 
     | 
    
         
            +
                 * @example
         
     | 
| 
      
 628 
     | 
    
         
            +
                 * ```ts
         
     | 
| 
      
 629 
     | 
    
         
            +
                 * const tweetHandle = await page.$('.tweet');
         
     | 
| 
      
 630 
     | 
    
         
            +
                 * expect(await tweetHandle.$eval('.like', node => node.innerText)).toBe('100');
         
     | 
| 
      
 631 
     | 
    
         
            +
                 * expect(await tweetHandle.$eval('.retweets', node => node.innerText)).toBe('10');
         
     | 
| 
      
 632 
     | 
    
         
            +
                 * ```
         
     | 
| 
      
 633 
     | 
    
         
            +
                 */
         
     | 
| 
      
 634 
     | 
    
         
            +
                async $eval(selector, pageFunction, ...args) {
         
     | 
| 
      
 635 
     | 
    
         
            +
                    const elementHandle = await this.$(selector);
         
     | 
| 
      
 636 
     | 
    
         
            +
                    if (!elementHandle) {
         
     | 
| 
      
 637 
     | 
    
         
            +
                        throw new Error(`Error: failed to find element matching selector "${selector}"`);
         
     | 
| 
      
 638 
     | 
    
         
            +
                    }
         
     | 
| 
      
 639 
     | 
    
         
            +
                    const result = await elementHandle.evaluate(pageFunction, ...args);
         
     | 
| 
      
 640 
     | 
    
         
            +
                    await elementHandle.dispose();
         
     | 
| 
      
 641 
     | 
    
         
            +
                    return result;
         
     | 
| 
      
 642 
     | 
    
         
            +
                }
         
     | 
| 
      
 643 
     | 
    
         
            +
                /**
         
     | 
| 
      
 644 
     | 
    
         
            +
                 * This method runs `document.querySelectorAll` within the element and passes it as
         
     | 
| 
      
 645 
     | 
    
         
            +
                 * the first argument to `pageFunction`. If there's no element matching `selector`,
         
     | 
| 
      
 646 
     | 
    
         
            +
                 * the method throws an error.
         
     | 
| 
      
 647 
     | 
    
         
            +
                 *
         
     | 
| 
      
 648 
     | 
    
         
            +
                 * If `pageFunction` returns a Promise, then `frame.$$eval` would wait for the
         
     | 
| 
      
 649 
     | 
    
         
            +
                 * promise to resolve and return its value.
         
     | 
| 
      
 650 
     | 
    
         
            +
                 *
         
     | 
| 
      
 651 
     | 
    
         
            +
                 * @example
         
     | 
| 
      
 652 
     | 
    
         
            +
                 * ```html
         
     | 
| 
      
 653 
     | 
    
         
            +
                 * <div class="feed">
         
     | 
| 
      
 654 
     | 
    
         
            +
                 *   <div class="tweet">Hello!</div>
         
     | 
| 
      
 655 
     | 
    
         
            +
                 *   <div class="tweet">Hi!</div>
         
     | 
| 
      
 656 
     | 
    
         
            +
                 * </div>
         
     | 
| 
      
 657 
     | 
    
         
            +
                 * ```
         
     | 
| 
      
 658 
     | 
    
         
            +
                 *
         
     | 
| 
      
 659 
     | 
    
         
            +
                 * @example
         
     | 
| 
      
 660 
     | 
    
         
            +
                 * ```ts
         
     | 
| 
      
 661 
     | 
    
         
            +
                 * const feedHandle = await page.$('.feed');
         
     | 
| 
      
 662 
     | 
    
         
            +
                 * expect(await feedHandle.$$eval('.tweet', nodes => nodes.map(n => n.innerText)))
         
     | 
| 
      
 663 
     | 
    
         
            +
                 *  .toEqual(['Hello!', 'Hi!']);
         
     | 
| 
      
 664 
     | 
    
         
            +
                 * ```
         
     | 
| 
      
 665 
     | 
    
         
            +
                 */
         
     | 
| 
      
 666 
     | 
    
         
            +
                async $$eval(selector, pageFunction, ...args) {
         
     | 
| 
      
 667 
     | 
    
         
            +
                    const { updatedSelector, queryHandler } = getQueryHandlerAndSelector(selector);
         
     | 
| 
      
 668 
     | 
    
         
            +
                    assert(queryHandler.queryAllArray);
         
     | 
| 
      
 669 
     | 
    
         
            +
                    const arrayHandle = (await queryHandler.queryAllArray(this, updatedSelector));
         
     | 
| 
      
 670 
     | 
    
         
            +
                    const result = await arrayHandle.evaluate(pageFunction, ...args);
         
     | 
| 
      
 671 
     | 
    
         
            +
                    await arrayHandle.dispose();
         
     | 
| 
      
 672 
     | 
    
         
            +
                    return result;
         
     | 
| 
      
 673 
     | 
    
         
            +
                }
         
     | 
| 
      
 674 
     | 
    
         
            +
                /**
         
     | 
| 
      
 675 
     | 
    
         
            +
                 * The method evaluates the XPath expression relative to the elementHandle.
         
     | 
| 
      
 676 
     | 
    
         
            +
                 * If there are no such elements, the method will resolve to an empty array.
         
     | 
| 
      
 677 
     | 
    
         
            +
                 * @param expression - Expression to {@link https://developer.mozilla.org/en-US/docs/Web/API/Document/evaluate | evaluate}
         
     | 
| 
      
 678 
     | 
    
         
            +
                 */
         
     | 
| 
      
 679 
     | 
    
         
            +
                async $x(expression) {
         
     | 
| 
      
 680 
     | 
    
         
            +
                    const arrayHandle = await this.evaluateHandle((element, expression) => {
         
     | 
| 
      
 681 
     | 
    
         
            +
                        const doc = element.ownerDocument || document;
         
     | 
| 
      
 682 
     | 
    
         
            +
                        const iterator = doc.evaluate(expression, element, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE);
         
     | 
| 
      
 683 
     | 
    
         
            +
                        const array = [];
         
     | 
| 
      
 684 
     | 
    
         
            +
                        let item;
         
     | 
| 
      
 685 
     | 
    
         
            +
                        while ((item = iterator.iterateNext())) {
         
     | 
| 
      
 686 
     | 
    
         
            +
                            array.push(item);
         
     | 
| 
      
 687 
     | 
    
         
            +
                        }
         
     | 
| 
      
 688 
     | 
    
         
            +
                        return array;
         
     | 
| 
      
 689 
     | 
    
         
            +
                    }, expression);
         
     | 
| 
      
 690 
     | 
    
         
            +
                    const properties = await arrayHandle.getProperties();
         
     | 
| 
      
 691 
     | 
    
         
            +
                    await arrayHandle.dispose();
         
     | 
| 
      
 692 
     | 
    
         
            +
                    const result = [];
         
     | 
| 
      
 693 
     | 
    
         
            +
                    for (const property of properties.values()) {
         
     | 
| 
      
 694 
     | 
    
         
            +
                        const elementHandle = property.asElement();
         
     | 
| 
      
 695 
     | 
    
         
            +
                        if (elementHandle) {
         
     | 
| 
      
 696 
     | 
    
         
            +
                            result.push(elementHandle);
         
     | 
| 
      
 697 
     | 
    
         
            +
                        }
         
     | 
| 
      
 698 
     | 
    
         
            +
                    }
         
     | 
| 
      
 699 
     | 
    
         
            +
                    return result;
         
     | 
| 
      
 700 
     | 
    
         
            +
                }
         
     | 
| 
      
 701 
     | 
    
         
            +
                /**
         
     | 
| 
      
 702 
     | 
    
         
            +
                 * Resolves to true if the element is visible in the current viewport.
         
     | 
| 
      
 703 
     | 
    
         
            +
                 */
         
     | 
| 
      
 704 
     | 
    
         
            +
                async isIntersectingViewport(options) {
         
     | 
| 
      
 705 
     | 
    
         
            +
                    const { threshold = 0 } = options !== null && options !== void 0 ? options : {};
         
     | 
| 
      
 706 
     | 
    
         
            +
                    return await this.evaluate(async (element, threshold) => {
         
     | 
| 
      
 707 
     | 
    
         
            +
                        const visibleRatio = await new Promise(resolve => {
         
     | 
| 
      
 708 
     | 
    
         
            +
                            const observer = new IntersectionObserver(entries => {
         
     | 
| 
      
 709 
     | 
    
         
            +
                                resolve(entries[0].intersectionRatio);
         
     | 
| 
      
 710 
     | 
    
         
            +
                                observer.disconnect();
         
     | 
| 
      
 711 
     | 
    
         
            +
                            });
         
     | 
| 
      
 712 
     | 
    
         
            +
                            observer.observe(element);
         
     | 
| 
      
 713 
     | 
    
         
            +
                        });
         
     | 
| 
      
 714 
     | 
    
         
            +
                        return threshold === 1 ? visibleRatio === 1 : visibleRatio > threshold;
         
     | 
| 
      
 715 
     | 
    
         
            +
                    }, threshold);
         
     | 
| 
      
 716 
     | 
    
         
            +
                }
         
     | 
| 
      
 717 
     | 
    
         
            +
            }
         
     | 
| 
      
 718 
     | 
    
         
            +
            _ElementHandle_frame = new WeakMap(), _ElementHandle_page = new WeakMap(), _ElementHandle_frameManager = new WeakMap(), _ElementHandle_instances = new WeakSet(), _ElementHandle_scrollIntoViewIfNeeded = async function _ElementHandle_scrollIntoViewIfNeeded() {
         
     | 
| 
      
 719 
     | 
    
         
            +
                const error = await this.evaluate(async (element, pageJavascriptEnabled) => {
         
     | 
| 
      
 720 
     | 
    
         
            +
                    if (!element.isConnected) {
         
     | 
| 
      
 721 
     | 
    
         
            +
                        return 'Node is detached from document';
         
     | 
| 
      
 722 
     | 
    
         
            +
                    }
         
     | 
| 
      
 723 
     | 
    
         
            +
                    if (element.nodeType !== Node.ELEMENT_NODE) {
         
     | 
| 
      
 724 
     | 
    
         
            +
                        return 'Node is not of type HTMLElement';
         
     | 
| 
      
 725 
     | 
    
         
            +
                    }
         
     | 
| 
      
 726 
     | 
    
         
            +
                    // force-scroll if page's javascript is disabled.
         
     | 
| 
      
 727 
     | 
    
         
            +
                    if (!pageJavascriptEnabled) {
         
     | 
| 
      
 728 
     | 
    
         
            +
                        element.scrollIntoView({
         
     | 
| 
      
 729 
     | 
    
         
            +
                            block: 'center',
         
     | 
| 
      
 730 
     | 
    
         
            +
                            inline: 'center',
         
     | 
| 
      
 731 
     | 
    
         
            +
                            // @ts-expect-error Chrome still supports behavior: instant but
         
     | 
| 
      
 732 
     | 
    
         
            +
                            // it's not in the spec so TS shouts We don't want to make this
         
     | 
| 
      
 733 
     | 
    
         
            +
                            // breaking change in Puppeteer yet so we'll ignore the line.
         
     | 
| 
      
 734 
     | 
    
         
            +
                            behavior: 'instant',
         
     | 
| 
      
 735 
     | 
    
         
            +
                        });
         
     | 
| 
      
 736 
     | 
    
         
            +
                        return false;
         
     | 
| 
      
 737 
     | 
    
         
            +
                    }
         
     | 
| 
      
 738 
     | 
    
         
            +
                    const visibleRatio = await new Promise(resolve => {
         
     | 
| 
      
 739 
     | 
    
         
            +
                        const observer = new IntersectionObserver(entries => {
         
     | 
| 
      
 740 
     | 
    
         
            +
                            resolve(entries[0].intersectionRatio);
         
     | 
| 
      
 741 
     | 
    
         
            +
                            observer.disconnect();
         
     | 
| 
      
 742 
     | 
    
         
            +
                        });
         
     | 
| 
      
 743 
     | 
    
         
            +
                        observer.observe(element);
         
     | 
| 
      
 744 
     | 
    
         
            +
                    });
         
     | 
| 
      
 745 
     | 
    
         
            +
                    if (visibleRatio !== 1.0) {
         
     | 
| 
      
 746 
     | 
    
         
            +
                        element.scrollIntoView({
         
     | 
| 
      
 747 
     | 
    
         
            +
                            block: 'center',
         
     | 
| 
      
 748 
     | 
    
         
            +
                            inline: 'center',
         
     | 
| 
      
 749 
     | 
    
         
            +
                            // @ts-expect-error Chrome still supports behavior: instant but
         
     | 
| 
      
 750 
     | 
    
         
            +
                            // it's not in the spec so TS shouts We don't want to make this
         
     | 
| 
      
 751 
     | 
    
         
            +
                            // breaking change in Puppeteer yet so we'll ignore the line.
         
     | 
| 
      
 752 
     | 
    
         
            +
                            behavior: 'instant',
         
     | 
| 
      
 753 
     | 
    
         
            +
                        });
         
     | 
| 
      
 754 
     | 
    
         
            +
                    }
         
     | 
| 
      
 755 
     | 
    
         
            +
                    return false;
         
     | 
| 
      
 756 
     | 
    
         
            +
                }, __classPrivateFieldGet(this, _ElementHandle_page, "f").isJavaScriptEnabled());
         
     | 
| 
      
 757 
     | 
    
         
            +
                if (error) {
         
     | 
| 
      
 758 
     | 
    
         
            +
                    throw new Error(error);
         
     | 
| 
      
 759 
     | 
    
         
            +
                }
         
     | 
| 
      
 760 
     | 
    
         
            +
            }, _ElementHandle_getOOPIFOffsets = async function _ElementHandle_getOOPIFOffsets(frame) {
         
     | 
| 
      
 761 
     | 
    
         
            +
                let offsetX = 0;
         
     | 
| 
      
 762 
     | 
    
         
            +
                let offsetY = 0;
         
     | 
| 
      
 763 
     | 
    
         
            +
                let currentFrame = frame;
         
     | 
| 
      
 764 
     | 
    
         
            +
                while (currentFrame && currentFrame.parentFrame()) {
         
     | 
| 
      
 765 
     | 
    
         
            +
                    const parent = currentFrame.parentFrame();
         
     | 
| 
      
 766 
     | 
    
         
            +
                    if (!currentFrame.isOOPFrame() || !parent) {
         
     | 
| 
      
 767 
     | 
    
         
            +
                        currentFrame = parent;
         
     | 
| 
      
 768 
     | 
    
         
            +
                        continue;
         
     | 
| 
      
 769 
     | 
    
         
            +
                    }
         
     | 
| 
      
 770 
     | 
    
         
            +
                    const { backendNodeId } = await parent._client().send('DOM.getFrameOwner', {
         
     | 
| 
      
 771 
     | 
    
         
            +
                        frameId: currentFrame._id,
         
     | 
| 
      
 772 
     | 
    
         
            +
                    });
         
     | 
| 
      
 773 
     | 
    
         
            +
                    const result = await parent._client().send('DOM.getBoxModel', {
         
     | 
| 
      
 774 
     | 
    
         
            +
                        backendNodeId: backendNodeId,
         
     | 
| 
      
 775 
     | 
    
         
            +
                    });
         
     | 
| 
      
 776 
     | 
    
         
            +
                    if (!result) {
         
     | 
| 
      
 777 
     | 
    
         
            +
                        break;
         
     | 
| 
      
 778 
     | 
    
         
            +
                    }
         
     | 
| 
      
 779 
     | 
    
         
            +
                    const contentBoxQuad = result.model.content;
         
     | 
| 
      
 780 
     | 
    
         
            +
                    const topLeftCorner = __classPrivateFieldGet(this, _ElementHandle_instances, "m", _ElementHandle_fromProtocolQuad).call(this, contentBoxQuad)[0];
         
     | 
| 
      
 781 
     | 
    
         
            +
                    offsetX += topLeftCorner.x;
         
     | 
| 
      
 782 
     | 
    
         
            +
                    offsetY += topLeftCorner.y;
         
     | 
| 
      
 783 
     | 
    
         
            +
                    currentFrame = parent;
         
     | 
| 
      
 784 
     | 
    
         
            +
                }
         
     | 
| 
      
 785 
     | 
    
         
            +
                return { offsetX, offsetY };
         
     | 
| 
      
 786 
     | 
    
         
            +
            }, _ElementHandle_getBoxModel = function _ElementHandle_getBoxModel() {
         
     | 
| 
      
 787 
     | 
    
         
            +
                const params = {
         
     | 
| 
      
 788 
     | 
    
         
            +
                    objectId: this._remoteObject.objectId,
         
     | 
| 
      
 789 
     | 
    
         
            +
                };
         
     | 
| 
      
 790 
     | 
    
         
            +
                return this._client.send('DOM.getBoxModel', params).catch(error => {
         
     | 
| 
      
 791 
     | 
    
         
            +
                    return debugError(error);
         
     | 
| 
      
 792 
     | 
    
         
            +
                });
         
     | 
| 
      
 793 
     | 
    
         
            +
            }, _ElementHandle_fromProtocolQuad = function _ElementHandle_fromProtocolQuad(quad) {
         
     | 
| 
      
 794 
     | 
    
         
            +
                return [
         
     | 
| 
      
 795 
     | 
    
         
            +
                    { x: quad[0], y: quad[1] },
         
     | 
| 
      
 796 
     | 
    
         
            +
                    { x: quad[2], y: quad[3] },
         
     | 
| 
      
 797 
     | 
    
         
            +
                    { x: quad[4], y: quad[5] },
         
     | 
| 
      
 798 
     | 
    
         
            +
                    { x: quad[6], y: quad[7] },
         
     | 
| 
      
 799 
     | 
    
         
            +
                ];
         
     | 
| 
      
 800 
     | 
    
         
            +
            }, _ElementHandle_intersectQuadWithViewport = function _ElementHandle_intersectQuadWithViewport(quad, width, height) {
         
     | 
| 
      
 801 
     | 
    
         
            +
                return quad.map(point => {
         
     | 
| 
      
 802 
     | 
    
         
            +
                    return {
         
     | 
| 
      
 803 
     | 
    
         
            +
                        x: Math.min(Math.max(point.x, 0), width),
         
     | 
| 
      
 804 
     | 
    
         
            +
                        y: Math.min(Math.max(point.y, 0), height),
         
     | 
| 
      
 805 
     | 
    
         
            +
                    };
         
     | 
| 
      
 806 
     | 
    
         
            +
                });
         
     | 
| 
      
 807 
     | 
    
         
            +
            };
         
     | 
| 
      
 808 
     | 
    
         
            +
            function computeQuadArea(quad) {
         
     | 
| 
      
 809 
     | 
    
         
            +
                /* Compute sum of all directed areas of adjacent triangles
         
     | 
| 
      
 810 
     | 
    
         
            +
                   https://en.wikipedia.org/wiki/Polygon#Simple_polygons
         
     | 
| 
      
 811 
     | 
    
         
            +
                 */
         
     | 
| 
      
 812 
     | 
    
         
            +
                let area = 0;
         
     | 
| 
      
 813 
     | 
    
         
            +
                for (let i = 0; i < quad.length; ++i) {
         
     | 
| 
      
 814 
     | 
    
         
            +
                    const p1 = quad[i];
         
     | 
| 
      
 815 
     | 
    
         
            +
                    const p2 = quad[(i + 1) % quad.length];
         
     | 
| 
      
 816 
     | 
    
         
            +
                    area += (p1.x * p2.y - p2.x * p1.y) / 2;
         
     | 
| 
      
 817 
     | 
    
         
            +
                }
         
     | 
| 
      
 818 
     | 
    
         
            +
                return Math.abs(area);
         
     | 
| 
      
 819 
     | 
    
         
            +
            }
         
     | 
| 
      
 820 
     | 
    
         
            +
            //# sourceMappingURL=ElementHandle.js.map
         
     |