@browserless.io/browserless 2.2.0-beta-6 → 2.2.0
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/CHANGELOG.md +21 -2
- package/bin/browserless.js +1 -1
- package/bin/scaffold/README.md +8 -7
- package/build/browserless.js +7 -6
- package/build/browsers/chrome.cdp.d.ts +6 -0
- package/build/browsers/chrome.cdp.js +6 -0
- package/build/browsers/chrome.playwright.d.ts +6 -0
- package/build/browsers/chrome.playwright.js +6 -0
- package/build/browsers/{cdp-chromium.d.ts → chromium.cdp.d.ts} +3 -2
- package/build/browsers/{cdp-chromium.js → chromium.cdp.js} +16 -10
- package/build/browsers/{playwright-chromium.d.ts → chromium.playwright.d.ts} +3 -2
- package/build/browsers/{playwright-chromium.js → chromium.playwright.js} +6 -5
- package/build/browsers/{playwright-firefox.d.ts → firefox.playwright.d.ts} +2 -2
- package/build/browsers/{playwright-firefox.js → firefox.playwright.js} +4 -4
- package/build/browsers/index.d.ts +20 -10
- package/build/browsers/index.js +110 -11
- package/build/browsers/{playwright-webkit.d.ts → webkit.playwright.d.ts} +2 -2
- package/build/browsers/{playwright-webkit.js → webkit.playwright.js} +4 -4
- package/build/data/selectors.json +1 -1
- package/build/exports.d.ts +6 -4
- package/build/exports.js +6 -4
- package/build/http.d.ts +22 -1
- package/build/http.js +21 -0
- package/build/router.js +19 -3
- package/build/routes/{chromium/http/content-post.body.json → chrome/http/content.post.body.json} +8 -8
- package/build/routes/chrome/http/content.post.d.ts +7 -0
- package/build/routes/chrome/http/content.post.js +6 -0
- package/build/routes/chrome/http/download.post.d.ts +7 -0
- package/build/routes/chrome/http/download.post.js +6 -0
- package/build/routes/chrome/http/function.post.d.ts +7 -0
- package/build/routes/chrome/http/function.post.js +6 -0
- package/build/routes/chrome/http/json-list.get.d.ts +1 -0
- package/build/routes/chrome/http/json-list.get.js +1 -0
- package/build/routes/chrome/http/json-new.put.d.ts +1 -0
- package/build/routes/chrome/http/json-new.put.js +1 -0
- package/build/routes/chrome/http/json-protocol.get.d.ts +1 -0
- package/build/routes/chrome/http/json-protocol.get.js +1 -0
- package/build/routes/chrome/http/json-version.get.d.ts +1 -0
- package/build/routes/chrome/http/json-version.get.js +1 -0
- package/build/routes/chrome/http/json-version.get.response.json +44 -0
- package/build/routes/{chromium/http/pdf-post.body.json → chrome/http/pdf.post.body.json} +8 -8
- package/build/routes/chrome/http/pdf.post.d.ts +7 -0
- package/build/routes/chrome/http/pdf.post.js +6 -0
- package/build/routes/chrome/http/performance.post.d.ts +7 -0
- package/build/routes/chrome/http/performance.post.js +6 -0
- package/build/routes/{chromium/http/scrape-post.body.json → chrome/http/scrape.post.body.json} +8 -8
- package/build/routes/chrome/http/scrape.post.d.ts +7 -0
- package/build/routes/chrome/http/scrape.post.js +6 -0
- package/build/routes/{chromium/http/screenshot-post.body.json → chrome/http/screenshot.post.body.json} +8 -8
- package/build/routes/chrome/http/screenshot.post.d.ts +7 -0
- package/build/routes/chrome/http/screenshot.post.js +6 -0
- package/build/routes/chrome/tests/content.spec.js +311 -0
- package/build/routes/chrome/tests/download.spec.js +67 -0
- package/build/routes/chrome/tests/function.spec.d.ts +1 -0
- package/build/routes/chrome/tests/function.spec.js +245 -0
- package/build/routes/chrome/tests/json-version.spec.d.ts +1 -0
- package/build/routes/chrome/tests/json-version.spec.js +37 -0
- package/build/routes/chrome/tests/page-websocket.spec.d.ts +1 -0
- package/build/routes/chrome/tests/page-websocket.spec.js +97 -0
- package/build/routes/chrome/tests/pdf.spec.d.ts +1 -0
- package/build/routes/chrome/tests/pdf.spec.js +333 -0
- package/build/routes/chrome/tests/performance.spec.d.ts +1 -0
- package/build/routes/chrome/tests/performance.spec.js +124 -0
- package/build/routes/chrome/tests/scrape.spec.d.ts +1 -0
- package/build/routes/chrome/tests/scrape.spec.js +354 -0
- package/build/routes/chrome/tests/screenshot.spec.d.ts +1 -0
- package/build/routes/chrome/tests/screenshot.spec.js +339 -0
- package/build/routes/chrome/tests/websocket.spec.d.ts +1 -0
- package/build/routes/chrome/tests/websocket.spec.js +371 -0
- package/build/routes/chrome/ws/browser.d.ts +6 -0
- package/build/routes/chrome/ws/browser.js +5 -0
- package/build/routes/chrome/ws/cdp.d.ts +7 -0
- package/build/routes/chrome/ws/cdp.js +6 -0
- package/build/routes/chrome/ws/cdp.query.json +120 -0
- package/build/routes/chrome/ws/page.d.ts +6 -0
- package/build/routes/chrome/ws/page.js +5 -0
- package/build/routes/chrome/ws/page.query.json +120 -0
- package/build/routes/chrome/ws/playwright.d.ts +7 -0
- package/build/routes/chrome/ws/playwright.js +6 -0
- package/build/routes/chromium/http/content.post.body.json +510 -0
- package/build/routes/chromium/http/content.post.d.ts +1 -0
- package/build/routes/chromium/http/content.post.js +1 -0
- package/build/routes/chromium/http/content.post.query.json +183 -0
- package/build/routes/chromium/http/content.post.response.json +5 -0
- package/build/routes/chromium/http/download.post.body.json +32 -0
- package/build/routes/chromium/http/download.post.d.ts +1 -0
- package/build/routes/chromium/http/download.post.js +1 -0
- package/build/routes/chromium/http/download.post.query.json +120 -0
- package/build/routes/chromium/http/download.post.response.json +4 -0
- package/build/routes/chromium/http/function.post.body.json +32 -0
- package/build/routes/chromium/http/function.post.d.ts +1 -0
- package/build/routes/chromium/http/function.post.js +1 -0
- package/build/routes/chromium/http/function.post.query.json +120 -0
- package/build/routes/chromium/http/function.post.response.json +4 -0
- package/build/routes/chromium/http/json-list.get.d.ts +1 -0
- package/build/routes/chromium/http/json-list.get.js +1 -0
- package/build/routes/chromium/http/json-list.get.response.json +52 -0
- package/build/routes/chromium/http/json-new.put.d.ts +1 -0
- package/build/routes/chromium/http/json-new.put.js +1 -0
- package/build/routes/chromium/http/json-new.put.response.json +44 -0
- package/build/routes/chromium/http/json-protocol.get.d.ts +1 -0
- package/build/routes/chromium/http/json-protocol.get.js +1 -0
- package/build/routes/chromium/http/json-protocol.get.response.json +6 -0
- package/build/routes/chromium/http/json-version.get.d.ts +1 -0
- package/build/routes/chromium/http/json-version.get.js +1 -0
- package/build/routes/chromium/http/json-version.get.response.json +44 -0
- package/build/routes/chromium/http/pdf.post.body.json +654 -0
- package/build/routes/chromium/http/pdf.post.d.ts +1 -0
- package/build/routes/chromium/http/pdf.post.js +1 -0
- package/build/routes/chromium/http/pdf.post.query.json +120 -0
- package/build/routes/chromium/http/pdf.post.response.json +5 -0
- package/build/routes/chromium/http/performance.post.body.json +26 -0
- package/build/routes/chromium/http/performance.post.d.ts +1 -0
- package/build/routes/chromium/http/performance.post.js +1 -0
- package/build/routes/chromium/http/performance.post.query.json +120 -0
- package/build/routes/chromium/http/performance.post.response.json +7 -0
- package/build/routes/chromium/http/scrape.post.body.json +557 -0
- package/build/routes/chromium/http/scrape.post.d.ts +1 -0
- package/build/routes/chromium/http/scrape.post.js +1 -0
- package/build/routes/chromium/http/scrape.post.query.json +183 -0
- package/build/routes/chromium/http/scrape.post.response.json +309 -0
- package/build/routes/chromium/http/screenshot.post.body.json +600 -0
- package/build/routes/chromium/http/screenshot.post.d.ts +1 -0
- package/build/routes/chromium/http/screenshot.post.js +1 -0
- package/build/routes/chromium/http/screenshot.post.query.json +120 -0
- package/build/routes/chromium/http/screenshot.post.response.json +5 -0
- package/build/routes/chromium/tests/content.spec.js +16 -16
- package/build/routes/chromium/tests/download.spec.js +3 -3
- package/build/routes/chromium/tests/function.spec.js +10 -10
- package/build/routes/chromium/tests/page-websocket.spec.d.ts +1 -0
- package/build/routes/chromium/tests/page-websocket.spec.js +97 -0
- package/build/routes/chromium/tests/pdf.spec.js +16 -16
- package/build/routes/chromium/tests/performance.spec.js +7 -7
- package/build/routes/chromium/tests/scrape.spec.js +15 -15
- package/build/routes/chromium/tests/screenshot.spec.js +17 -17
- package/build/routes/chromium/tests/websocket.spec.js +31 -37
- package/build/routes/chromium/ws/browser.d.ts +1 -16
- package/build/routes/chromium/ws/browser.js +1 -10
- package/build/routes/chromium/ws/cdp.d.ts +1 -0
- package/build/routes/chromium/ws/cdp.js +1 -0
- package/build/routes/chromium/ws/cdp.query.json +120 -0
- package/build/routes/chromium/ws/page.d.ts +1 -16
- package/build/routes/chromium/ws/page.js +1 -10
- package/build/routes/chromium/ws/playwright.d.ts +1 -0
- package/build/routes/chromium/ws/playwright.js +1 -0
- package/build/routes/firefox/ws/{playwright-firefox.d.ts → playwright.d.ts} +5 -5
- package/build/routes/firefox/ws/{playwright-firefox.js → playwright.js} +4 -4
- package/build/routes/management/http/{sessions-get.response.json → sessions.get.response.json} +11 -1
- package/build/routes/management/http/{static-get.js → static.get.js} +2 -2
- package/build/routes/webkit/ws/{playwright-webkit.d.ts → playwright.d.ts} +5 -5
- package/build/routes/webkit/ws/{playwright-webkit.js → playwright.js} +4 -4
- package/build/routes/webkit/ws/playwright.query.json +100 -0
- package/build/{routes/chromium/ws/cdp-chromium.d.ts → shared/browser.ws.d.ts} +4 -4
- package/build/shared/browser.ws.js +12 -0
- package/build/{routes/chromium/ws/playwright-chromium.d.ts → shared/chromium.playwright.ws.d.ts} +4 -4
- package/build/{routes/chromium/ws/playwright-chromium.js → shared/chromium.playwright.ws.js} +6 -3
- package/build/shared/chromium.ws.d.ts +16 -0
- package/build/shared/chromium.ws.js +10 -0
- package/build/{routes/chromium/http/content-post.d.ts → shared/content.http.d.ts} +3 -3
- package/build/{routes/chromium/http/content-post.js → shared/content.http.js} +3 -3
- package/build/{routes/chromium/http/download-post.d.ts → shared/download.http.d.ts} +3 -3
- package/build/{routes/chromium/http/download-post.js → shared/download.http.js} +4 -4
- package/build/{routes/chromium/http/function-post.d.ts → shared/function.http.d.ts} +3 -3
- package/build/{routes/chromium/http/function-post.js → shared/function.http.js} +4 -4
- package/build/{routes/chromium/http/json-new.d.ts → shared/json-list.http.d.ts} +2 -3
- package/build/{routes/chromium/http/json-list.js → shared/json-list.http.js} +5 -8
- package/build/{routes/chromium/http/json-list.d.ts → shared/json-new.http.d.ts} +2 -3
- package/build/shared/json-new.http.js +34 -0
- package/build/{routes/chromium/http/json-protocol-get.js → shared/json-protocol.http.js} +2 -2
- package/build/{routes/chromium/http/json-version-get.js → shared/json-version.http.js} +3 -3
- package/build/shared/page.ws.d.ts +16 -0
- package/build/shared/page.ws.js +13 -0
- package/build/{routes/chromium/http/pdf-post.d.ts → shared/pdf.http.d.ts} +3 -3
- package/build/{routes/chromium/http/pdf-post.js → shared/pdf.http.js} +3 -3
- package/build/{routes/chromium/http/performance.d.ts → shared/performance.http.d.ts} +3 -3
- package/build/{routes/chromium/http/performance.js → shared/performance.http.js} +4 -4
- package/build/{routes/chromium/http/scrape-post.d.ts → shared/scrape.http.d.ts} +3 -3
- package/build/{routes/chromium/http/scrape-post.js → shared/scrape.http.js} +3 -3
- package/build/{routes/chromium/http/screenshot-post.d.ts → shared/screenshot.http.d.ts} +3 -3
- package/build/{routes/chromium/http/screenshot-post.js → shared/screenshot.http.js} +3 -3
- package/build/shared/utils/performance/child.d.ts +1 -0
- package/build/{routes/chromium → shared}/utils/performance/main.js +1 -1
- package/build/shared/utils/performance/types.js +1 -0
- package/build/shim.js +2 -1
- package/build/types.d.ts +10 -8
- package/build/utils.d.ts +8 -3
- package/build/utils.js +24 -11
- package/docker/base/Dockerfile +1 -1
- package/docker/chrome/Dockerfile +4 -4
- package/docker/chromium/.dockerignore +16 -0
- package/docker/chromium/Dockerfile +40 -0
- package/docker/firefox/Dockerfile +1 -1
- package/docker/multi/Dockerfile +13 -1
- package/docker/webkit/Dockerfile +1 -1
- package/extensions/ublock/3p-filters.html +1 -1
- package/extensions/ublock/_locales/ar/messages.json +4 -0
- package/extensions/ublock/_locales/az/messages.json +4 -0
- package/extensions/ublock/_locales/be/messages.json +4 -0
- package/extensions/ublock/_locales/bg/messages.json +5 -1
- package/extensions/ublock/_locales/bn/messages.json +4 -0
- package/extensions/ublock/_locales/br_FR/messages.json +6 -2
- package/extensions/ublock/_locales/bs/messages.json +4 -0
- package/extensions/ublock/_locales/ca/messages.json +4 -0
- package/extensions/ublock/_locales/cs/messages.json +4 -0
- package/extensions/ublock/_locales/cv/messages.json +4 -0
- package/extensions/ublock/_locales/cy/messages.json +1294 -0
- package/extensions/ublock/_locales/da/messages.json +4 -0
- package/extensions/ublock/_locales/de/messages.json +5 -1
- package/extensions/ublock/_locales/el/messages.json +4 -0
- package/extensions/ublock/_locales/en/messages.json +4 -0
- package/extensions/ublock/_locales/en_GB/messages.json +4 -0
- package/extensions/ublock/_locales/eo/messages.json +9 -5
- package/extensions/ublock/_locales/es/messages.json +4 -0
- package/extensions/ublock/_locales/et/messages.json +4 -0
- package/extensions/ublock/_locales/eu/messages.json +8 -4
- package/extensions/ublock/_locales/fa/messages.json +4 -0
- package/extensions/ublock/_locales/fi/messages.json +4 -0
- package/extensions/ublock/_locales/fil/messages.json +4 -0
- package/extensions/ublock/_locales/fr/messages.json +4 -0
- package/extensions/ublock/_locales/fy/messages.json +4 -0
- package/extensions/ublock/_locales/gl/messages.json +4 -0
- package/extensions/ublock/_locales/gu/messages.json +4 -0
- package/extensions/ublock/_locales/he/messages.json +4 -0
- package/extensions/ublock/_locales/hi/messages.json +4 -0
- package/extensions/ublock/_locales/hr/messages.json +4 -0
- package/extensions/ublock/_locales/hu/messages.json +4 -0
- package/extensions/ublock/_locales/hy/messages.json +4 -0
- package/extensions/ublock/_locales/id/messages.json +5 -1
- package/extensions/ublock/_locales/it/messages.json +4 -0
- package/extensions/ublock/_locales/ja/messages.json +4 -0
- package/extensions/ublock/_locales/ka/messages.json +34 -30
- package/extensions/ublock/_locales/kk/messages.json +4 -0
- package/extensions/ublock/_locales/kn/messages.json +4 -0
- package/extensions/ublock/_locales/ko/messages.json +4 -0
- package/extensions/ublock/_locales/ku/messages.json +4 -0
- package/extensions/ublock/_locales/lt/messages.json +4 -0
- package/extensions/ublock/_locales/lv/messages.json +4 -0
- package/extensions/ublock/_locales/mk/messages.json +4 -0
- package/extensions/ublock/_locales/ml/messages.json +4 -0
- package/extensions/ublock/_locales/mr/messages.json +4 -0
- package/extensions/ublock/_locales/ms/messages.json +13 -9
- package/extensions/ublock/_locales/nb/messages.json +4 -0
- package/extensions/ublock/_locales/nl/messages.json +4 -0
- package/extensions/ublock/_locales/no/messages.json +4 -0
- package/extensions/ublock/_locales/oc/messages.json +4 -0
- package/extensions/ublock/_locales/pa/messages.json +4 -0
- package/extensions/ublock/_locales/pl/messages.json +5 -1
- package/extensions/ublock/_locales/pt_BR/messages.json +4 -0
- package/extensions/ublock/_locales/pt_PT/messages.json +4 -0
- package/extensions/ublock/_locales/ro/messages.json +5 -1
- package/extensions/ublock/_locales/ru/messages.json +4 -0
- package/extensions/ublock/_locales/si/messages.json +4 -0
- package/extensions/ublock/_locales/sk/messages.json +4 -0
- package/extensions/ublock/_locales/sl/messages.json +4 -0
- package/extensions/ublock/_locales/so/messages.json +4 -0
- package/extensions/ublock/_locales/sq/messages.json +4 -0
- package/extensions/ublock/_locales/sr/messages.json +4 -0
- package/extensions/ublock/_locales/sv/messages.json +4 -0
- package/extensions/ublock/_locales/sw/messages.json +4 -0
- package/extensions/ublock/_locales/ta/messages.json +4 -0
- package/extensions/ublock/_locales/te/messages.json +4 -0
- package/extensions/ublock/_locales/th/messages.json +12 -8
- package/extensions/ublock/_locales/tr/messages.json +4 -0
- package/extensions/ublock/_locales/uk/messages.json +4 -0
- package/extensions/ublock/_locales/ur/messages.json +4 -0
- package/extensions/ublock/_locales/vi/messages.json +4 -0
- package/extensions/ublock/_locales/zh_CN/messages.json +6 -2
- package/extensions/ublock/_locales/zh_TW/messages.json +6 -2
- package/extensions/ublock/assets/assets.json +11 -11
- package/extensions/ublock/assets/resources/scriptlets.js +660 -378
- package/extensions/ublock/assets/thirdparties/easylist/easylist.txt +7173 -3455
- package/extensions/ublock/assets/thirdparties/easylist/easyprivacy.txt +18829 -1918
- package/extensions/ublock/assets/thirdparties/pgl.yoyo.org/as/serverlist +21 -26
- package/extensions/ublock/assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat +118 -46
- package/extensions/ublock/assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt +710 -1117
- package/extensions/ublock/assets/ublock/badlists.txt +0 -4
- package/extensions/ublock/assets/ublock/badware.min.txt +116 -105
- package/extensions/ublock/assets/ublock/filters.min.txt +1443 -1097
- package/extensions/ublock/assets/ublock/privacy.min.txt +50 -31
- package/extensions/ublock/assets/ublock/quick-fixes.min.txt +97 -108
- package/extensions/ublock/assets/ublock/unbreak.min.txt +64 -21
- package/extensions/ublock/css/1p-filters.css +4 -0
- package/extensions/ublock/css/3p-filters.css +6 -4
- package/extensions/ublock/css/common.css +1 -1
- package/extensions/ublock/css/fa-icons.css +1 -0
- package/extensions/ublock/css/logger-ui.css +72 -52
- package/extensions/ublock/css/popup-fenix.css +1 -1
- package/extensions/ublock/img/fontawesome/fontawesome-defs.svg +1 -0
- package/extensions/ublock/js/3p-filters.js +3 -3
- package/extensions/ublock/js/assets.js +7 -4
- package/extensions/ublock/js/background.js +1 -3
- package/extensions/ublock/js/benchmarks.js +1 -0
- package/extensions/ublock/js/broadcast.js +12 -0
- package/extensions/ublock/js/click2load.js +2 -3
- package/extensions/ublock/js/codemirror/ubo-static-filtering.js +1 -0
- package/extensions/ublock/js/commands.js +10 -0
- package/extensions/ublock/js/contentscript-extra.js +13 -11
- package/extensions/ublock/js/contentscript.js +0 -31
- package/extensions/ublock/js/contextmenu.js +5 -1
- package/extensions/ublock/js/dyna-rules.js +83 -52
- package/extensions/ublock/js/fa-icons.js +1 -0
- package/extensions/ublock/js/filtering-context.js +0 -2
- package/extensions/ublock/js/i18n.js +1 -5
- package/extensions/ublock/js/logger-ui.js +71 -38
- package/extensions/ublock/js/logger.js +18 -14
- package/extensions/ublock/js/messaging.js +17 -5
- package/extensions/ublock/js/popup-fenix.js +6 -6
- package/extensions/ublock/js/scriptlet-filtering-core.js +14 -12
- package/extensions/ublock/js/scriptlet-filtering.js +149 -53
- package/extensions/ublock/js/scriptlets/scriptlet-loglevel-1.js +49 -0
- package/extensions/ublock/js/scriptlets/scriptlet-loglevel-2.js +49 -0
- package/extensions/ublock/js/scriptlets/should-inject-contentscript.js +1 -1
- package/extensions/ublock/js/static-dnr-filtering.js +4 -2
- package/extensions/ublock/js/static-filtering-parser.js +14 -8
- package/extensions/ublock/js/static-net-filtering.js +32 -30
- package/extensions/ublock/js/storage.js +18 -4
- package/extensions/ublock/js/traffic.js +3 -3
- package/extensions/ublock/js/ublock.js +1 -1
- package/extensions/ublock/js/vapi-background.js +15 -7
- package/extensions/ublock/logger-ui.html +18 -10
- package/extensions/ublock/manifest.json +4 -1
- package/extensions/ublock/web_accessible_resources/chartbeat.js +3 -0
- package/package.json +12 -11
- package/scripts/build-function.js +1 -1
- package/scripts/build-open-api.js +3 -2
- package/scripts/clean.js +6 -1
- package/scripts/install-debugger.js +20 -0
- package/scripts/install-devtools.js +40 -0
- package/src/browserless.ts +11 -9
- package/src/browsers/chrome.cdp.ts +10 -0
- package/src/browsers/chrome.playwright.ts +10 -0
- package/src/browsers/{cdp-chromium.ts → chromium.cdp.ts} +20 -13
- package/src/browsers/{playwright-chromium.ts → chromium.playwright.ts} +7 -6
- package/src/browsers/{playwright-firefox.ts → firefox.playwright.ts} +5 -5
- package/src/browsers/index.ts +160 -23
- package/src/browsers/{playwright-webkit.ts → webkit.playwright.ts} +5 -5
- package/src/exports.ts +6 -4
- package/src/http.ts +21 -0
- package/src/router.ts +21 -5
- package/src/routes/chrome/http/content.post.ts +14 -0
- package/src/routes/chrome/http/download.post.ts +14 -0
- package/src/routes/chrome/http/function.post.ts +14 -0
- package/src/routes/chrome/http/json-list.get.ts +1 -0
- package/src/routes/chrome/http/json-new.put.ts +1 -0
- package/src/routes/chrome/http/json-protocol.get.ts +1 -0
- package/src/routes/chrome/http/json-version.get.ts +1 -0
- package/src/routes/chrome/http/pdf.post.ts +14 -0
- package/src/routes/chrome/http/performance.post.ts +14 -0
- package/src/routes/chrome/http/scrape.post.ts +14 -0
- package/src/routes/chrome/http/screenshot.post.ts +14 -0
- package/src/routes/chrome/tests/content.spec.ts +375 -0
- package/src/routes/chrome/tests/download.spec.ts +77 -0
- package/src/routes/chrome/tests/function.spec.ts +282 -0
- package/src/routes/chrome/tests/json-version.spec.ts +52 -0
- package/src/routes/chrome/tests/page-websocket.spec.ts +129 -0
- package/src/routes/chrome/tests/pdf.spec.ts +380 -0
- package/src/routes/chrome/tests/performance.spec.ts +155 -0
- package/src/routes/chrome/tests/scrape.spec.ts +417 -0
- package/src/routes/chrome/tests/screenshot.spec.ts +387 -0
- package/src/routes/chrome/tests/websocket.spec.ts +491 -0
- package/src/routes/chrome/ws/browser.ts +8 -0
- package/src/routes/chrome/ws/cdp.ts +12 -0
- package/src/routes/chrome/ws/page.ts +8 -0
- package/src/routes/chrome/ws/playwright.ts +12 -0
- package/src/routes/chromium/http/content.post.ts +6 -0
- package/src/routes/chromium/http/download.post.ts +6 -0
- package/src/routes/chromium/http/function.post.ts +6 -0
- package/src/routes/chromium/http/json-list.get.ts +1 -0
- package/src/routes/chromium/http/json-new.put.ts +1 -0
- package/src/routes/chromium/http/json-protocol.get.ts +1 -0
- package/src/routes/chromium/http/json-version.get.ts +1 -0
- package/src/routes/chromium/http/pdf.post.ts +6 -0
- package/src/routes/chromium/http/performance.post.ts +6 -0
- package/src/routes/chromium/http/scrape.post.ts +6 -0
- package/src/routes/chromium/http/screenshot.post.ts +6 -0
- package/src/routes/chromium/tests/content.spec.ts +36 -28
- package/src/routes/chromium/tests/download.spec.ts +3 -3
- package/src/routes/chromium/tests/function.spec.ts +18 -15
- package/src/routes/chromium/tests/page-websocket.spec.ts +129 -0
- package/src/routes/chromium/tests/pdf.spec.ts +31 -26
- package/src/routes/chromium/tests/performance.spec.ts +46 -34
- package/src/routes/chromium/tests/scrape.spec.ts +23 -20
- package/src/routes/chromium/tests/screenshot.spec.ts +24 -24
- package/src/routes/chromium/tests/websocket.spec.ts +31 -40
- package/src/routes/chromium/ws/browser.ts +1 -29
- package/src/routes/chromium/ws/cdp.ts +1 -0
- package/src/routes/chromium/ws/page.ts +1 -29
- package/src/routes/chromium/ws/playwright.ts +4 -0
- package/src/routes/firefox/ws/{playwright-firefox.ts → playwright.ts} +5 -5
- package/src/routes/management/http/{static-get.ts → static.get.ts} +2 -2
- package/src/routes/webkit/ws/{playwright-webkit.ts → playwright.ts} +5 -5
- package/src/shared/browser.ws.ts +34 -0
- package/src/{routes/chromium/ws/playwright-chromium.ts → shared/chromium.playwright.ws.ts} +7 -4
- package/src/{routes/chromium/ws/cdp-chromium.ts → shared/chromium.ws.ts} +6 -6
- package/src/{routes/chromium/http/content-post.ts → shared/content.http.ts} +4 -4
- package/src/{routes/chromium/http/download-post.ts → shared/download.http.ts} +4 -4
- package/src/{routes/chromium/http/function-post.ts → shared/function.http.ts} +4 -4
- package/src/shared/json-list.http.ts +35 -0
- package/src/{routes/chromium/http/json-new.ts → shared/json-new.http.ts} +23 -7
- package/src/{routes/chromium/http/json-protocol-get.ts → shared/json-protocol.http.ts} +3 -5
- package/src/{routes/chromium/http/json-version-get.ts → shared/json-version.http.ts} +4 -5
- package/src/shared/page.ws.ts +35 -0
- package/src/{routes/chromium/http/pdf-post.ts → shared/pdf.http.ts} +4 -4
- package/src/{routes/chromium/http/performance.ts → shared/performance.http.ts} +4 -4
- package/src/{routes/chromium/http/scrape-post.ts → shared/scrape.http.ts} +4 -4
- package/src/{routes/chromium/http/screenshot-post.ts → shared/screenshot.http.ts} +4 -4
- package/src/{routes/chromium → shared}/utils/function/handler.ts +2 -2
- package/src/{routes/chromium → shared}/utils/performance/main.ts +1 -2
- package/src/shim.ts +2 -1
- package/src/types.ts +27 -20
- package/src/utils.ts +32 -14
- package/static/devtools/Images/accelerometer-back.svg +1 -0
- package/static/devtools/Images/accelerometer-bottom.png +0 -0
- package/static/devtools/Images/accelerometer-front.svg +1 -0
- package/static/devtools/Images/accelerometer-left.png +0 -0
- package/static/devtools/Images/accelerometer-right.png +0 -0
- package/static/devtools/Images/accelerometer-top.png +0 -0
- package/static/devtools/Images/baseline-icon.svg +1 -0
- package/static/devtools/Images/breaking_change_icon.svg +1 -0
- package/static/devtools/Images/checkboxCheckmark.svg +1 -0
- package/static/devtools/Images/checker.png +0 -0
- package/static/devtools/Images/chevrons.svg +1 -0
- package/static/devtools/Images/chromeDisabledSelect.png +0 -0
- package/static/devtools/Images/chromeDisabledSelect_2x.png +0 -0
- package/static/devtools/Images/chromeLeft.avif +0 -0
- package/static/devtools/Images/chromeMiddle.avif +0 -0
- package/static/devtools/Images/chromeRight.avif +0 -0
- package/static/devtools/Images/chromeSelect.svg +1 -0
- package/static/devtools/Images/chromeSelectDark.svg +1 -0
- package/static/devtools/Images/cssoverview_icons_2x.avif +0 -0
- package/static/devtools/Images/dropdown_7x6_icon.svg +1 -0
- package/static/devtools/Images/elements_panel_icon.svg +1 -0
- package/static/devtools/Images/errorWave.svg +1 -0
- package/static/devtools/Images/error_icon.svg +1 -0
- package/static/devtools/Images/feedback_thin_16x16_icon.svg +1 -0
- package/static/devtools/Images/flex-align-content-center-icon.svg +1 -0
- package/static/devtools/Images/flex-align-content-end-icon.svg +1 -0
- package/static/devtools/Images/flex-align-content-space-around-icon.svg +1 -0
- package/static/devtools/Images/flex-align-content-space-between-icon.svg +1 -0
- package/static/devtools/Images/flex-align-content-space-evenly-icon.svg +1 -0
- package/static/devtools/Images/flex-align-content-start-icon.svg +1 -0
- package/static/devtools/Images/flex-align-content-stretch-icon.svg +1 -0
- package/static/devtools/Images/flex-align-items-center-icon.svg +1 -0
- package/static/devtools/Images/flex-align-items-flex-end-icon.svg +1 -0
- package/static/devtools/Images/flex-align-items-flex-start-icon.svg +1 -0
- package/static/devtools/Images/flex-align-items-stretch-icon.svg +1 -0
- package/static/devtools/Images/flex-align-self-center-icon.svg +1 -0
- package/static/devtools/Images/flex-align-self-flex-end-icon.svg +1 -0
- package/static/devtools/Images/flex-align-self-flex-start-icon.svg +1 -0
- package/static/devtools/Images/flex-align-self-stretch-icon.svg +1 -0
- package/static/devtools/Images/flex-direction-icon.svg +1 -0
- package/static/devtools/Images/flex-justify-content-center-icon.svg +1 -0
- package/static/devtools/Images/flex-justify-content-flex-end-icon.svg +1 -0
- package/static/devtools/Images/flex-justify-content-flex-start-icon.svg +1 -0
- package/static/devtools/Images/flex-justify-content-space-around-icon.svg +1 -0
- package/static/devtools/Images/flex-justify-content-space-between-icon.svg +1 -0
- package/static/devtools/Images/flex-justify-content-space-evenly-icon.svg +1 -0
- package/static/devtools/Images/ic_checkmark_16x16.svg +3 -0
- package/static/devtools/Images/ic_delete_filter.svg +1 -0
- package/static/devtools/Images/ic_delete_list.svg +1 -0
- package/static/devtools/Images/ic_info_black_18dp.svg +1 -0
- package/static/devtools/Images/ic_page_next_16x16_icon.svg +1 -0
- package/static/devtools/Images/ic_page_prev_16x16_icon.svg +1 -0
- package/static/devtools/Images/ic_redo_16x16_icon.svg +1 -0
- package/static/devtools/Images/ic_show_node_16x16.svg +4 -0
- package/static/devtools/Images/ic_suggest_color.svg +6 -0
- package/static/devtools/Images/ic_undo_16x16_icon.svg +1 -0
- package/static/devtools/Images/ic_warning_black_18dp.svg +1 -0
- package/static/devtools/Images/issue-text-icon.svg +1 -0
- package/static/devtools/Images/largeIcons.svg +1 -0
- package/static/devtools/Images/lighthouse_logo.svg +1 -0
- package/static/devtools/Images/link_icon.svg +1 -0
- package/static/devtools/Images/mediumIcons.svg +1 -0
- package/static/devtools/Images/navigationControls.png +0 -0
- package/static/devtools/Images/navigationControls_2x.png +0 -0
- package/static/devtools/Images/network_panel_icon.svg +1 -0
- package/static/devtools/Images/nodeIcon.avif +0 -0
- package/static/devtools/Images/node_search_icon.svg +1 -0
- package/static/devtools/Images/popoverArrows.png +0 -0
- package/static/devtools/Images/profileGroupIcon.png +0 -0
- package/static/devtools/Images/profileIcon.png +0 -0
- package/static/devtools/Images/profileSmallIcon.png +0 -0
- package/static/devtools/Images/radioDot-dark-theme.png +0 -0
- package/static/devtools/Images/radioDot.png +0 -0
- package/static/devtools/Images/refresh_12x12_icon.svg +1 -0
- package/static/devtools/Images/resizeDiagonal.svg +1 -0
- package/static/devtools/Images/resizeHorizontal.svg +1 -0
- package/static/devtools/Images/resizeVertical.svg +1 -0
- package/static/devtools/Images/resourceCSSIcon.png +0 -0
- package/static/devtools/Images/resourceDocumentIcon.png +0 -0
- package/static/devtools/Images/resourceDocumentIconSmall.png +0 -0
- package/static/devtools/Images/resourceJSIcon.png +0 -0
- package/static/devtools/Images/resourcePlainIcon.png +0 -0
- package/static/devtools/Images/resourcePlainIconSmall.png +0 -0
- package/static/devtools/Images/resourcesTimeGraphIcon.avif +0 -0
- package/static/devtools/Images/searchNext.png +0 -0
- package/static/devtools/Images/searchPrev.png +0 -0
- package/static/devtools/Images/securityIcons.svg +1 -0
- package/static/devtools/Images/settings_14x14_icon.svg +1 -0
- package/static/devtools/Images/smallIcons.svg +1 -0
- package/static/devtools/Images/sources_panel_icon.svg +1 -0
- package/static/devtools/Images/speech.png +0 -0
- package/static/devtools/Images/toolbarResizerVertical.png +0 -0
- package/static/devtools/Images/touchCursor.png +0 -0
- package/static/devtools/Images/touchCursor_2x.png +0 -0
- package/static/devtools/Images/treeoutlineTriangles.svg +1 -0
- package/static/devtools/Images/warning_icon.svg +1 -0
- package/static/devtools/Images/whatsnew.avif +0 -0
- package/static/devtools/Tests.js +1654 -0
- package/static/devtools/accessibility/accessibility-legacy.js +1 -0
- package/static/devtools/accessibility/accessibility-meta.js +1 -0
- package/static/devtools/accessibility/accessibility.js +1 -0
- package/static/devtools/accessibility/accessibility_module.js +1 -0
- package/static/devtools/accessibility_test_runner/accessibility_test_runner.js +77 -0
- package/static/devtools/accessibility_test_runner/accessibility_test_runner_module.js +0 -0
- package/static/devtools/animation/animation-legacy.js +1 -0
- package/static/devtools/animation/animation-meta.js +1 -0
- package/static/devtools/animation/animation.js +1 -0
- package/static/devtools/animation/animation_module.js +1 -0
- package/static/devtools/application_test_runner/AppcacheTestRunner.js +220 -0
- package/static/devtools/application_test_runner/CacheStorageTestRunner.js +286 -0
- package/static/devtools/application_test_runner/IndexedDBTestRunner.js +476 -0
- package/static/devtools/application_test_runner/ResourceTreeTestRunner.js +99 -0
- package/static/devtools/application_test_runner/ResourcesTestRunner.js +167 -0
- package/static/devtools/application_test_runner/ServiceWorkersTestRunner.js +131 -0
- package/static/devtools/application_test_runner/application_test_runner.js +10 -0
- package/static/devtools/application_test_runner/application_test_runner_module.js +0 -0
- package/static/devtools/axe_core_test_runner/axe_core_test_runner.js +174 -0
- package/static/devtools/axe_core_test_runner/axe_core_test_runner_module.js +0 -0
- package/static/devtools/bindings/bindings-legacy.js +1 -0
- package/static/devtools/bindings/bindings.js +1 -0
- package/static/devtools/bindings_test_runner/AutomappingTestRunner.js +130 -0
- package/static/devtools/bindings_test_runner/BindingsTestRunner.js +238 -0
- package/static/devtools/bindings_test_runner/IsolatedFilesystemTestRunner.js +287 -0
- package/static/devtools/bindings_test_runner/OverridesTestRunner.js +26 -0
- package/static/devtools/bindings_test_runner/PersistenceTestRunner.js +109 -0
- package/static/devtools/bindings_test_runner/bindings_test_runner.js +9 -0
- package/static/devtools/bindings_test_runner/bindings_test_runner_module.js +0 -0
- package/static/devtools/browser_debugger/browser_debugger-legacy.js +1 -0
- package/static/devtools/browser_debugger/browser_debugger-meta.js +1 -0
- package/static/devtools/browser_debugger/browser_debugger.js +1 -0
- package/static/devtools/browser_debugger/browser_debugger_module.js +1 -0
- package/static/devtools/browser_sdk/browser_sdk-meta.js +1 -0
- package/static/devtools/browser_sdk/browser_sdk.js +1 -0
- package/static/devtools/changes/changes-legacy.js +1 -0
- package/static/devtools/changes/changes-meta.js +1 -0
- package/static/devtools/changes/changes.js +1 -0
- package/static/devtools/changes/changes_module.js +1 -0
- package/static/devtools/client_variations/client_variations.js +1 -0
- package/static/devtools/client_variations/client_variations_module.js +0 -0
- package/static/devtools/cm/cm.js +1 -0
- package/static/devtools/cm/cm_module.js +1 -0
- package/static/devtools/cm_headless/cm_headless.js +1 -0
- package/static/devtools/color_picker/color_picker-legacy.js +1 -0
- package/static/devtools/color_picker/color_picker.js +1 -0
- package/static/devtools/color_picker/color_picker_module.js +1 -0
- package/static/devtools/common/common-legacy.js +1 -0
- package/static/devtools/common/common.js +1 -0
- package/static/devtools/component_helpers/component_helpers.js +1 -0
- package/static/devtools/components/components-legacy.js +1 -0
- package/static/devtools/components/components.js +1 -0
- package/static/devtools/console/console-legacy.js +1 -0
- package/static/devtools/console/console-meta.js +1 -0
- package/static/devtools/console/console.js +6 -0
- package/static/devtools/console/console_module.js +1 -0
- package/static/devtools/console_counters/console_counters-legacy.js +1 -0
- package/static/devtools/console_counters/console_counters.js +1 -0
- package/static/devtools/console_test_runner/console_test_runner.js +696 -0
- package/static/devtools/console_test_runner/console_test_runner_module.js +0 -0
- package/static/devtools/cookie_table/cookie_table-legacy.js +1 -0
- package/static/devtools/cookie_table/cookie_table.js +1 -0
- package/static/devtools/cookie_table/cookie_table_module.js +1 -0
- package/static/devtools/coverage/coverage-legacy.js +1 -0
- package/static/devtools/coverage/coverage-meta.js +1 -0
- package/static/devtools/coverage/coverage.js +1 -0
- package/static/devtools/coverage/coverage_module.js +1 -0
- package/static/devtools/coverage_test_runner/coverage_test_runner.js +151 -0
- package/static/devtools/coverage_test_runner/coverage_test_runner_module.js +0 -0
- package/static/devtools/cpu_profiler_test_runner/cpu_profiler_test_runner.js +72 -0
- package/static/devtools/cpu_profiler_test_runner/cpu_profiler_test_runner_module.js +0 -0
- package/static/devtools/css_overview/css_overview-meta.js +1 -0
- package/static/devtools/css_overview/css_overview.js +146 -0
- package/static/devtools/css_overview/css_overview_module.js +1 -0
- package/static/devtools/data_grid/data_grid-legacy.js +1 -0
- package/static/devtools/data_grid/data_grid.js +1 -0
- package/static/devtools/data_grid/data_grid_module.js +1 -0
- package/static/devtools/data_grid_test_runner/data_grid_test_runner.js +78 -0
- package/static/devtools/data_grid_test_runner/data_grid_test_runner_module.js +0 -0
- package/static/devtools/developer_resources/developer_resources-legacy.js +1 -0
- package/static/devtools/developer_resources/developer_resources-meta.js +1 -0
- package/static/devtools/developer_resources/developer_resources.js +1 -0
- package/static/devtools/developer_resources/developer_resources_module.js +1 -0
- package/static/devtools/device_mode_test_runner/device_mode_test_runner.js +45 -0
- package/static/devtools/device_mode_test_runner/device_mode_test_runner_module.js +0 -0
- package/static/devtools/devtools_app.html +20 -0
- package/static/devtools/devtools_app.js +1 -0
- package/static/devtools/devtools_compatibility.js +1546 -0
- package/static/devtools/diff/diff-legacy.js +1 -0
- package/static/devtools/diff/diff.js +1 -0
- package/static/devtools/diff/diff_module.js +0 -0
- package/static/devtools/dom_extension/dom_extension.js +1 -0
- package/static/devtools/elements/elements-legacy.js +1 -0
- package/static/devtools/elements/elements-meta.js +1 -0
- package/static/devtools/elements/elements.js +469 -0
- package/static/devtools/elements/elements_module.js +1 -0
- package/static/devtools/elements_test_runner/EditDOMTestRunner.js +78 -0
- package/static/devtools/elements_test_runner/ElementsPanelShadowSelectionOnRefreshTestRunner.js +39 -0
- package/static/devtools/elements_test_runner/ElementsTestRunner.js +1280 -0
- package/static/devtools/elements_test_runner/SetOuterHTMLTestRunner.js +115 -0
- package/static/devtools/elements_test_runner/StylesUpdateLinksTestRunner.js +134 -0
- package/static/devtools/elements_test_runner/elements_test_runner.js +9 -0
- package/static/devtools/elements_test_runner/elements_test_runner_module.js +0 -0
- package/static/devtools/emulated_devices/emulated_devices_module.js +0 -0
- package/static/devtools/emulated_devices/optimized/MotoG4-landscape.avif +0 -0
- package/static/devtools/emulated_devices/optimized/MotoG4-portrait.avif +0 -0
- package/static/devtools/emulated_devices/optimized/Nexus5X-landscape.avif +0 -0
- package/static/devtools/emulated_devices/optimized/Nexus5X-portrait.avif +0 -0
- package/static/devtools/emulated_devices/optimized/Nexus6P-landscape.avif +0 -0
- package/static/devtools/emulated_devices/optimized/Nexus6P-portrait.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5-horizontal-default-1x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5-horizontal-default-2x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5-horizontal-keyboard-1x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5-horizontal-keyboard-2x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5-horizontal-navigation-1x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5-horizontal-navigation-2x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5-vertical-default-1x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5-vertical-default-2x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5-vertical-keyboard-1x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5-vertical-keyboard-2x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5-vertical-navigation-1x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5-vertical-navigation-2x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5x-horizontal-default-1x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5x-horizontal-default-2x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5x-horizontal-keyboard-1x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5x-horizontal-keyboard-2x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5x-horizontal-navigation-1x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5x-horizontal-navigation-2x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5x-vertical-default-1x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5x-vertical-default-2x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5x-vertical-keyboard-1x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5x-vertical-keyboard-2x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5x-vertical-navigation-1x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/google-nexus-5x-vertical-navigation-2x.avif +0 -0
- package/static/devtools/emulated_devices/optimized/iPad-landscape.avif +0 -0
- package/static/devtools/emulated_devices/optimized/iPad-portrait.avif +0 -0
- package/static/devtools/emulated_devices/optimized/iPhone5-landscape.avif +0 -0
- package/static/devtools/emulated_devices/optimized/iPhone5-portrait.avif +0 -0
- package/static/devtools/emulated_devices/optimized/iPhone6-landscape.avif +0 -0
- package/static/devtools/emulated_devices/optimized/iPhone6-portrait.avif +0 -0
- package/static/devtools/emulated_devices/optimized/iPhone6Plus-landscape.avif +0 -0
- package/static/devtools/emulated_devices/optimized/iPhone6Plus-portrait.avif +0 -0
- package/static/devtools/emulation/emulation-legacy.js +1 -0
- package/static/devtools/emulation/emulation-meta.js +1 -0
- package/static/devtools/emulation/emulation.js +1 -0
- package/static/devtools/event_listeners/event_listeners-legacy.js +1 -0
- package/static/devtools/event_listeners/event_listeners.js +1 -0
- package/static/devtools/event_listeners/event_listeners_module.js +1 -0
- package/static/devtools/extensions/extensions-legacy.js +1 -0
- package/static/devtools/extensions/extensions.js +1 -0
- package/static/devtools/extensions_test_runner/ExtensionsNetworkTestRunner.js +27 -0
- package/static/devtools/extensions_test_runner/ExtensionsTestRunner.js +68 -0
- package/static/devtools/extensions_test_runner/extensions_test_runner.js +6 -0
- package/static/devtools/extensions_test_runner/extensions_test_runner_module.js +0 -0
- package/static/devtools/formatter/formatter-legacy.js +1 -0
- package/static/devtools/formatter/formatter.js +1 -0
- package/static/devtools/formatter/formatter_module.js +0 -0
- package/static/devtools/formatter_worker/FormatterActions.js +1 -0
- package/static/devtools/formatter_worker/formatter_worker-entrypoint.js +1 -0
- package/static/devtools/formatter_worker/formatter_worker.js +1 -0
- package/static/devtools/har_importer/har_importer-legacy.js +1 -0
- package/static/devtools/har_importer/har_importer.js +1 -0
- package/static/devtools/har_importer/har_importer_module.js +0 -0
- package/static/devtools/heap_profiler_test_runner/heap_profiler_test_runner.js +740 -0
- package/static/devtools/heap_profiler_test_runner/heap_profiler_test_runner_module.js +0 -0
- package/static/devtools/heap_snapshot_model/heap_snapshot_model-legacy.js +1 -0
- package/static/devtools/heap_snapshot_model/heap_snapshot_model.js +1 -0
- package/static/devtools/heap_snapshot_model/heap_snapshot_model_module.js +0 -0
- package/static/devtools/heap_snapshot_worker/heap_snapshot_worker-entrypoint.js +1 -0
- package/static/devtools/heap_snapshot_worker/heap_snapshot_worker-legacy.js +1 -0
- package/static/devtools/heap_snapshot_worker/heap_snapshot_worker.js +1 -0
- package/static/devtools/heap_snapshot_worker/heap_snapshot_worker_module.js +0 -0
- package/static/devtools/help/help-legacy.js +1 -0
- package/static/devtools/help/help-meta.js +1 -0
- package/static/devtools/help/help.js +1 -0
- package/static/devtools/help/help_module.js +1 -0
- package/static/devtools/host/host-legacy.js +1 -0
- package/static/devtools/host/host.js +1 -0
- package/static/devtools/i18n/i18n.js +1 -0
- package/static/devtools/i18n/i18n_locales-tsconfig.json +8 -0
- package/static/devtools/i18n/locales/en-US.json +3566 -0
- package/static/devtools/inline_editor/inline_editor-legacy.js +1 -0
- package/static/devtools/inline_editor/inline_editor.js +203 -0
- package/static/devtools/inline_editor/inline_editor_module.js +1 -0
- package/static/devtools/input/input-legacy.js +1 -0
- package/static/devtools/input/input-meta.js +1 -0
- package/static/devtools/input/input.js +1 -0
- package/static/devtools/input/input_module.js +1 -0
- package/static/devtools/inspector.html +20 -0
- package/static/devtools/inspector.js +1 -0
- package/static/devtools/inspector_main/inspector_main-legacy.js +1 -0
- package/static/devtools/inspector_main/inspector_main-meta.js +1 -0
- package/static/devtools/inspector_main/inspector_main.js +1 -0
- package/static/devtools/integration_test_runner.html +14 -0
- package/static/devtools/integration_test_runner.js +2 -0
- package/static/devtools/issues/issues-legacy.js +1 -0
- package/static/devtools/issues/issues-meta.js +1 -0
- package/static/devtools/issues/issues.js +67 -0
- package/static/devtools/issues/issues_module.js +1 -0
- package/static/devtools/javascript_metadata/javascript_metadata-legacy.js +1 -0
- package/static/devtools/javascript_metadata/javascript_metadata.js +1 -0
- package/static/devtools/javascript_metadata/javascript_metadata_module.js +0 -0
- package/static/devtools/js_app.html +20 -0
- package/static/devtools/js_app.js +1 -0
- package/static/devtools/js_main/js_main-legacy.js +1 -0
- package/static/devtools/js_main/js_main.js +1 -0
- package/static/devtools/js_profiler/js_profiler-meta.js +1 -0
- package/static/devtools/js_profiler/js_profiler.js +1 -0
- package/static/devtools/js_profiler/js_profiler_module.js +0 -0
- package/static/devtools/layer_viewer/layer_viewer-legacy.js +1 -0
- package/static/devtools/layer_viewer/layer_viewer.js +1 -0
- package/static/devtools/layer_viewer/layer_viewer_module.js +1 -0
- package/static/devtools/layers/layers-legacy.js +1 -0
- package/static/devtools/layers/layers-meta.js +1 -0
- package/static/devtools/layers/layers.js +1 -0
- package/static/devtools/layers/layers_module.js +0 -0
- package/static/devtools/layers_test_runner/layers_test_runner.js +156 -0
- package/static/devtools/layers_test_runner/layers_test_runner_module.js +0 -0
- package/static/devtools/lighthouse/lighthouse-legacy.js +1 -0
- package/static/devtools/lighthouse/lighthouse-meta.js +1 -0
- package/static/devtools/lighthouse/lighthouse.js +70 -0
- package/static/devtools/lighthouse/lighthouse_module.js +1 -0
- package/static/devtools/lighthouse_test_runner/lighthouse_test_runner.js +136 -0
- package/static/devtools/lighthouse_test_runner/lighthouse_test_runner_module.js +0 -0
- package/static/devtools/lighthouse_worker/LighthouseService.js +195 -0
- package/static/devtools/lighthouse_worker/lighthouse_worker.js +6 -0
- package/static/devtools/lighthouse_worker.js +1 -0
- package/static/devtools/linear_memory_inspector/linear_memory_inspector-legacy.js +1 -0
- package/static/devtools/linear_memory_inspector/linear_memory_inspector-meta.js +1 -0
- package/static/devtools/linear_memory_inspector/linear_memory_inspector.js +399 -0
- package/static/devtools/linear_memory_inspector/linear_memory_inspector_module.js +0 -0
- package/static/devtools/main/main-legacy.js +1 -0
- package/static/devtools/main/main.js +1 -0
- package/static/devtools/media/media-legacy.js +1 -0
- package/static/devtools/media/media-meta.js +1 -0
- package/static/devtools/media/media.js +1 -0
- package/static/devtools/media/media_module.js +1 -0
- package/static/devtools/mobile_throttling/mobile_throttling-legacy.js +1 -0
- package/static/devtools/mobile_throttling/mobile_throttling-meta.js +1 -0
- package/static/devtools/mobile_throttling/mobile_throttling.js +1 -0
- package/static/devtools/ndb_app.html +20 -0
- package/static/devtools/ndb_app.js +1 -0
- package/static/devtools/network/network-legacy.js +1 -0
- package/static/devtools/network/network-meta.js +1 -0
- package/static/devtools/network/network.js +72 -0
- package/static/devtools/network/network_module.js +1 -0
- package/static/devtools/network_test_runner/network_test_runner.js +280 -0
- package/static/devtools/network_test_runner/network_test_runner_module.js +0 -0
- package/static/devtools/node_app.html +20 -0
- package/static/devtools/node_app.js +1 -0
- package/static/devtools/node_debugger/node_debugger-meta.js +1 -0
- package/static/devtools/node_debugger/node_debugger.js +1 -0
- package/static/devtools/node_debugger/node_debugger_module.js +0 -0
- package/static/devtools/node_main/node_main-legacy.js +1 -0
- package/static/devtools/node_main/node_main-meta.js +1 -0
- package/static/devtools/node_main/node_main.js +1 -0
- package/static/devtools/object_ui/object_ui-legacy.js +1 -0
- package/static/devtools/object_ui/object_ui.js +3 -0
- package/static/devtools/object_ui/object_ui_module.js +1 -0
- package/static/devtools/perf_ui/perf_ui-legacy.js +1 -0
- package/static/devtools/perf_ui/perf_ui.js +152 -0
- package/static/devtools/perf_ui/perf_ui_module.js +1 -0
- package/static/devtools/performance_monitor/performance_monitor-legacy.js +1 -0
- package/static/devtools/performance_monitor/performance_monitor-meta.js +1 -0
- package/static/devtools/performance_monitor/performance_monitor.js +1 -0
- package/static/devtools/performance_monitor/performance_monitor_module.js +1 -0
- package/static/devtools/performance_test_runner/TimelineDataTestRunner.js +5375 -0
- package/static/devtools/performance_test_runner/TimelineTestRunner.js +446 -0
- package/static/devtools/performance_test_runner/performance_test_runner.js +6 -0
- package/static/devtools/performance_test_runner/performance_test_runner_module.js +0 -0
- package/static/devtools/persistence/persistence-legacy.js +1 -0
- package/static/devtools/persistence/persistence-meta.js +1 -0
- package/static/devtools/persistence/persistence.js +1 -0
- package/static/devtools/platform/platform.js +1 -0
- package/static/devtools/profiler/profiler-legacy.js +1 -0
- package/static/devtools/profiler/profiler-meta.js +1 -0
- package/static/devtools/profiler/profiler.js +8 -0
- package/static/devtools/profiler/profiler_module.js +1 -0
- package/static/devtools/protocol_client/protocol_client-legacy.js +1 -0
- package/static/devtools/protocol_client/protocol_client.js +1 -0
- package/static/devtools/protocol_monitor/protocol_monitor-legacy.js +1 -0
- package/static/devtools/protocol_monitor/protocol_monitor-meta.js +1 -0
- package/static/devtools/protocol_monitor/protocol_monitor.js +1 -0
- package/static/devtools/protocol_monitor/protocol_monitor_module.js +1 -0
- package/static/devtools/quick_open/quick_open-legacy.js +1 -0
- package/static/devtools/quick_open/quick_open.js +1 -0
- package/static/devtools/quick_open/quick_open_module.js +1 -0
- package/static/devtools/recorder/recorder.js +1 -0
- package/static/devtools/resources/resources-legacy.js +1 -0
- package/static/devtools/resources/resources-meta.js +1 -0
- package/static/devtools/resources/resources.js +28 -0
- package/static/devtools/resources/resources_module.js +1 -0
- package/static/devtools/root/root-legacy.js +1 -0
- package/static/devtools/root/root.js +1 -0
- package/static/devtools/screencast/screencast-legacy.js +1 -0
- package/static/devtools/screencast/screencast.js +1 -0
- package/static/devtools/sdk/sdk-legacy.js +1 -0
- package/static/devtools/sdk/sdk.js +2 -0
- package/static/devtools/sdk_test_runner/sdk_test_runner.js +297 -0
- package/static/devtools/sdk_test_runner/sdk_test_runner_module.js +0 -0
- package/static/devtools/search/search-legacy.js +1 -0
- package/static/devtools/search/search.js +1 -0
- package/static/devtools/search/search_module.js +1 -0
- package/static/devtools/security/security-legacy.js +1 -0
- package/static/devtools/security/security-meta.js +1 -0
- package/static/devtools/security/security.js +1 -0
- package/static/devtools/security/security_module.js +1 -0
- package/static/devtools/security_test_runner/security_test_runner.js +32 -0
- package/static/devtools/security_test_runner/security_test_runner_module.js +0 -0
- package/static/devtools/services/services-legacy.js +1 -0
- package/static/devtools/services/services.js +1 -0
- package/static/devtools/settings/settings-legacy.js +1 -0
- package/static/devtools/settings/settings-meta.js +1 -0
- package/static/devtools/settings/settings.js +1 -0
- package/static/devtools/settings/settings_module.js +1 -0
- package/static/devtools/shell.js +1 -0
- package/static/devtools/snippets/snippets-legacy.js +1 -0
- package/static/devtools/snippets/snippets.js +1 -0
- package/static/devtools/snippets/snippets_module.js +0 -0
- package/static/devtools/source_frame/source_frame-legacy.js +1 -0
- package/static/devtools/source_frame/source_frame.js +1 -0
- package/static/devtools/source_frame/source_frame_module.js +1 -0
- package/static/devtools/sources/sources-legacy.js +1 -0
- package/static/devtools/sources/sources-meta.js +1 -0
- package/static/devtools/sources/sources.js +13 -0
- package/static/devtools/sources/sources_module.js +1 -0
- package/static/devtools/sources_test_runner/AutocompleteTestRunner.js +46 -0
- package/static/devtools/sources_test_runner/DebuggerTestRunner.js +895 -0
- package/static/devtools/sources_test_runner/EditorTestRunner.js +237 -0
- package/static/devtools/sources_test_runner/LiveEditTestRunner.js +33 -0
- package/static/devtools/sources_test_runner/SearchTestRunner.js +158 -0
- package/static/devtools/sources_test_runner/SourcesTestRunner.js +173 -0
- package/static/devtools/sources_test_runner/sources_test_runner.js +10 -0
- package/static/devtools/sources_test_runner/sources_test_runner_module.js +0 -0
- package/static/devtools/startup/startup.js +1 -0
- package/static/devtools/test_runner/test_runner.js +1 -0
- package/static/devtools/text_editor/text_editor-legacy.js +1 -0
- package/static/devtools/text_editor/text_editor.js +1 -0
- package/static/devtools/text_editor/text_editor_module.js +1 -0
- package/static/devtools/text_utils/text_utils-legacy.js +1 -0
- package/static/devtools/text_utils/text_utils.js +1 -0
- package/static/devtools/theme_support/theme_support.js +1 -0
- package/static/devtools/third_party/acorn/acorn-tsconfig.json +8 -0
- package/static/devtools/third_party/acorn/acorn.js +1 -0
- package/static/devtools/third_party/acorn/package/dist/acorn.d.ts +209 -0
- package/static/devtools/third_party/acorn/package/dist/acorn.mjs +5261 -0
- package/static/devtools/third_party/acorn/package/dist/acorn.mjs.d.ts +2 -0
- package/static/devtools/third_party/acorn/package/dist/acorn.mjs.map +1 -0
- package/static/devtools/third_party/acorn-loose/acorn-loose-tsconfig.json +8 -0
- package/static/devtools/third_party/acorn-loose/package/dist/acorn-loose.d.ts +16 -0
- package/static/devtools/third_party/acorn-loose/package/dist/acorn-loose.mjs +1418 -0
- package/static/devtools/third_party/axe-core/axe.js +16423 -0
- package/static/devtools/third_party/chromium/chromium-tsconfig.json +8 -0
- package/static/devtools/third_party/chromium/client-variations/ClientVariations.d.ts +13 -0
- package/static/devtools/third_party/chromium/client-variations/ClientVariations.js +27 -0
- package/static/devtools/third_party/codemirror/codemirror-tsconfig.json +72 -0
- package/static/devtools/third_party/codemirror/package/addon/comment/comment.d.ts +4 -0
- package/static/devtools/third_party/codemirror/package/addon/comment/comment.js +211 -0
- package/static/devtools/third_party/codemirror/package/addon/edit/closebrackets.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/addon/edit/closebrackets.js +201 -0
- package/static/devtools/third_party/codemirror/package/addon/edit/matchbrackets.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/addon/edit/matchbrackets.js +158 -0
- package/static/devtools/third_party/codemirror/package/addon/fold/brace-fold.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/addon/fold/brace-fold.js +105 -0
- package/static/devtools/third_party/codemirror/package/addon/fold/foldcode.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/addon/fold/foldcode.js +157 -0
- package/static/devtools/third_party/codemirror/package/addon/fold/foldgutter.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/addon/fold/foldgutter.js +163 -0
- package/static/devtools/third_party/codemirror/package/addon/mode/multiplex.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/addon/mode/multiplex.js +131 -0
- package/static/devtools/third_party/codemirror/package/addon/mode/overlay.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/addon/mode/overlay.js +90 -0
- package/static/devtools/third_party/codemirror/package/addon/mode/simple.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/addon/mode/simple.js +216 -0
- package/static/devtools/third_party/codemirror/package/addon/runmode/runmode-standalone.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/addon/runmode/runmode-standalone.js +333 -0
- package/static/devtools/third_party/codemirror/package/addon/selection/active-line.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/addon/selection/active-line.js +72 -0
- package/static/devtools/third_party/codemirror/package/addon/selection/mark-selection.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/addon/selection/mark-selection.js +119 -0
- package/static/devtools/third_party/codemirror/package/lib/codemirror.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/lib/codemirror.js +9800 -0
- package/static/devtools/third_party/codemirror/package/mode/clike/clike.d.ts +4 -0
- package/static/devtools/third_party/codemirror/package/mode/clike/clike.js +935 -0
- package/static/devtools/third_party/codemirror/package/mode/clojure/clojure.d.ts +4 -0
- package/static/devtools/third_party/codemirror/package/mode/clojure/clojure.js +292 -0
- package/static/devtools/third_party/codemirror/package/mode/coffeescript/coffeescript.d.ts +4 -0
- package/static/devtools/third_party/codemirror/package/mode/coffeescript/coffeescript.js +359 -0
- package/static/devtools/third_party/codemirror/package/mode/css/css.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/mode/css/css.js +864 -0
- package/static/devtools/third_party/codemirror/package/mode/htmlembedded/htmlembedded.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/mode/htmlembedded/htmlembedded.js +37 -0
- package/static/devtools/third_party/codemirror/package/mode/htmlmixed/htmlmixed.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/mode/htmlmixed/htmlmixed.js +153 -0
- package/static/devtools/third_party/codemirror/package/mode/javascript/javascript.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/mode/javascript/javascript.js +942 -0
- package/static/devtools/third_party/codemirror/package/mode/jsx/jsx.d.ts +4 -0
- package/static/devtools/third_party/codemirror/package/mode/jsx/jsx.js +148 -0
- package/static/devtools/third_party/codemirror/package/mode/livescript/livescript.d.ts +4 -0
- package/static/devtools/third_party/codemirror/package/mode/livescript/livescript.js +280 -0
- package/static/devtools/third_party/codemirror/package/mode/markdown/markdown.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/mode/markdown/markdown.js +886 -0
- package/static/devtools/third_party/codemirror/package/mode/php/php.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/mode/php/php.js +234 -0
- package/static/devtools/third_party/codemirror/package/mode/python/python.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/mode/python/python.js +399 -0
- package/static/devtools/third_party/codemirror/package/mode/shell/shell.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/mode/shell/shell.js +168 -0
- package/static/devtools/third_party/codemirror/package/mode/wast/wast.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/mode/wast/wast.js +41 -0
- package/static/devtools/third_party/codemirror/package/mode/xml/xml.d.ts +1 -0
- package/static/devtools/third_party/codemirror/package/mode/xml/xml.js +413 -0
- package/static/devtools/third_party/i18n/bundle-tsconfig.json +8 -0
- package/static/devtools/third_party/i18n/i18n.d.ts +108 -0
- package/static/devtools/third_party/i18n/i18n.js +4336 -0
- package/static/devtools/third_party/lighthouse/lighthouse-dt-bundle.d.ts +1 -0
- package/static/devtools/third_party/lighthouse/lighthouse-dt-bundle.js +1140 -0
- package/static/devtools/third_party/lighthouse/lighthouse-tsconfig.json +10 -0
- package/static/devtools/third_party/lighthouse/locales/ar-XB.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/ar.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/bg.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/ca.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/cs.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/da.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/de.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/el.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/en-GB.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/en-US.json +2297 -0
- package/static/devtools/third_party/lighthouse/locales/en-XA.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/en-XL.json +2297 -0
- package/static/devtools/third_party/lighthouse/locales/es-419.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/es.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/fi.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/fil.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/fr.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/he.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/hi.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/hr.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/hu.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/id.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/it.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/ja.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/ko.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/lt.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/lv.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/nl.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/no.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/pl.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/pt-PT.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/pt.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/ro.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/ru.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/sk.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/sl.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/sr-Latn.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/sr.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/sv.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/ta.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/te.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/th.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/tr.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/uk.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/vi.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/zh-HK.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/zh-TW.json +2066 -0
- package/static/devtools/third_party/lighthouse/locales/zh.json +2066 -0
- package/static/devtools/third_party/lighthouse/report-assets/report-generator.d.ts +1 -0
- package/static/devtools/third_party/lighthouse/report-assets/report-generator.js +167 -0
- package/static/devtools/third_party/lighthouse/report-assets/report.d.ts +1 -0
- package/static/devtools/third_party/lighthouse/report-assets/report.js +5032 -0
- package/static/devtools/third_party/lit-html/lit-html-tsconfig.json +22 -0
- package/static/devtools/third_party/lit-html/lit-html.js +120 -0
- package/static/devtools/third_party/lit-html/package/directives/class-map.d.ts +28 -0
- package/static/devtools/third_party/lit-html/package/directives/class-map.js +101 -0
- package/static/devtools/third_party/lit-html/package/directives/class-map.js.map +1 -0
- package/static/devtools/third_party/lit-html/package/directives/if-defined.d.ts +22 -0
- package/static/devtools/third_party/lit-html/package/directives/if-defined.js +37 -0
- package/static/devtools/third_party/lit-html/package/directives/if-defined.js.map +1 -0
- package/static/devtools/third_party/lit-html/package/directives/live.d.ts +38 -0
- package/static/devtools/third_party/lit-html/package/directives/live.js +73 -0
- package/static/devtools/third_party/lit-html/package/directives/live.js.map +1 -0
- package/static/devtools/third_party/lit-html/package/directives/repeat.d.ts +37 -0
- package/static/devtools/third_party/lit-html/package/directives/repeat.js +415 -0
- package/static/devtools/third_party/lit-html/package/directives/repeat.js.map +1 -0
- package/static/devtools/third_party/lit-html/package/directives/style-map.d.ts +36 -0
- package/static/devtools/third_party/lit-html/package/directives/style-map.js +78 -0
- package/static/devtools/third_party/lit-html/package/directives/style-map.js.map +1 -0
- package/static/devtools/third_party/lit-html/package/lib/default-template-processor.d.ts +39 -0
- package/static/devtools/third_party/lit-html/package/lib/default-template-processor.js +52 -0
- package/static/devtools/third_party/lit-html/package/lib/default-template-processor.js.map +1 -0
- package/static/devtools/third_party/lit-html/package/lib/directive.d.ts +59 -0
- package/static/devtools/third_party/lit-html/package/lib/directive.js +63 -0
- package/static/devtools/third_party/lit-html/package/lib/directive.js.map +1 -0
- package/static/devtools/third_party/lit-html/package/lib/dom.d.ts +29 -0
- package/static/devtools/third_party/lit-html/package/lib/dom.js +44 -0
- package/static/devtools/third_party/lit-html/package/lib/dom.js.map +1 -0
- package/static/devtools/third_party/lit-html/package/lib/part.d.ts +46 -0
- package/static/devtools/third_party/lit-html/package/lib/part.js +23 -0
- package/static/devtools/third_party/lit-html/package/lib/part.js.map +1 -0
- package/static/devtools/third_party/lit-html/package/lib/parts.d.ts +148 -0
- package/static/devtools/third_party/lit-html/package/lib/parts.js +476 -0
- package/static/devtools/third_party/lit-html/package/lib/parts.js.map +1 -0
- package/static/devtools/third_party/lit-html/package/lib/render.d.ts +33 -0
- package/static/devtools/third_party/lit-html/package/lib/render.js +43 -0
- package/static/devtools/third_party/lit-html/package/lib/render.js.map +1 -0
- package/static/devtools/third_party/lit-html/package/lib/template-factory.d.ts +57 -0
- package/static/devtools/third_party/lit-html/package/lib/template-factory.js +48 -0
- package/static/devtools/third_party/lit-html/package/lib/template-factory.js.map +1 -0
- package/static/devtools/third_party/lit-html/package/lib/template-instance.d.ts +30 -0
- package/static/devtools/third_party/lit-html/package/lib/template-instance.js +134 -0
- package/static/devtools/third_party/lit-html/package/lib/template-instance.js.map +1 -0
- package/static/devtools/third_party/lit-html/package/lib/template-result.d.ts +42 -0
- package/static/devtools/third_party/lit-html/package/lib/template-result.js +131 -0
- package/static/devtools/third_party/lit-html/package/lib/template-result.js.map +1 -0
- package/static/devtools/third_party/lit-html/package/lib/template.d.ts +92 -0
- package/static/devtools/third_party/lit-html/package/lib/template.js +215 -0
- package/static/devtools/third_party/lit-html/package/lib/template.js.map +1 -0
- package/static/devtools/third_party/lit-html/package/lit-html.d.ts +42 -0
- package/static/devtools/third_party/lit-html/package/lit-html.js +59 -0
- package/static/devtools/third_party/lit-html/package/lit-html.js.map +1 -0
- package/static/devtools/third_party/marked/marked-tsconfig.json +8 -0
- package/static/devtools/third_party/marked/marked.js +1 -0
- package/static/devtools/third_party/marked/package/lib/marked.esm.d.ts +1 -0
- package/static/devtools/third_party/marked/package/lib/marked.esm.js +2584 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/api-docs-entry.d.ts +53 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/api-docs-entry.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/api-docs-entry.js +64 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Accessibility.d.ts +176 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Accessibility.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Accessibility.js +356 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/AriaQueryHandler.d.ts +21 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/AriaQueryHandler.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/AriaQueryHandler.js +81 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Browser.d.ts +423 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Browser.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Browser.js +516 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.d.ts +39 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js +76 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserWebSocketTransport.d.ts +26 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserWebSocketTransport.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserWebSocketTransport.js +30 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Connection.d.ts +120 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Connection.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Connection.js +266 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectionTransport.d.ts +22 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectionTransport.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectionTransport.js +15 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.d.ts +72 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.js +60 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Coverage.d.ts +181 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Coverage.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Coverage.js +316 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/DOMWorld.d.ts +174 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/DOMWorld.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/DOMWorld.js +647 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Debug.d.ts +53 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Debug.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Debug.js +77 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/DeviceDescriptors.d.ts +33 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/DeviceDescriptors.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/DeviceDescriptors.js +873 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Dialog.d.ts +76 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Dialog.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Dialog.js +92 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/EmulationManager.d.ts +25 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/EmulationManager.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/EmulationManager.js +33 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts +34 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js +37 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/EvalTypes.d.ts +59 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/EvalTypes.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/EvalTypes.js +15 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/EventEmitter.d.ts +89 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/EventEmitter.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/EventEmitter.js +109 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Events.d.ts +82 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Events.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Events.js +83 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/ExecutionContext.d.ts +189 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/ExecutionContext.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/ExecutionContext.js +313 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/FileChooser.d.ts +60 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/FileChooser.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/FileChooser.js +66 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/FrameManager.d.ts +735 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/FrameManager.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/FrameManager.js +962 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPRequest.d.ts +276 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPRequest.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPRequest.js +421 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPResponse.d.ts +128 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPResponse.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPResponse.js +150 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Input.d.ts +322 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Input.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Input.js +463 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/JSHandle.d.ts +439 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/JSHandle.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/JSHandle.js +724 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/LifecycleWatcher.d.ts +62 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/LifecycleWatcher.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/LifecycleWatcher.js +145 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkManager.d.ts +80 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkManager.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/NetworkManager.js +262 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/PDFOptions.d.ts +152 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/PDFOptions.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/PDFOptions.js +31 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Page.d.ts +910 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Page.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Page.js +1343 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Product.d.ts +21 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Product.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Product.js +15 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Puppeteer.d.ts +135 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Puppeteer.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Puppeteer.js +133 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/PuppeteerViewport.d.ts +24 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/PuppeteerViewport.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/PuppeteerViewport.js +0 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/QueryHandler.d.ts +66 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/QueryHandler.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/QueryHandler.js +157 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/SecurityDetails.d.ts +61 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/SecurityDetails.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/SecurityDetails.js +72 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Target.d.ts +98 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Target.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Target.js +137 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/TimeoutSettings.d.ts +28 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/TimeoutSettings.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/TimeoutSettings.js +43 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Tracing.d.ts +47 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Tracing.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/Tracing.js +94 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/USKeyboardLayout.d.ts +40 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/USKeyboardLayout.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/USKeyboardLayout.js +403 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/WebWorker.d.ts +102 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/WebWorker.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/WebWorker.js +109 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/assert.d.ts +22 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/assert.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/assert.js +24 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/fetch.d.ts +17 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/fetch.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/fetch.js +20 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/helper.d.ts +66 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/helper.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/common/helper.js +288 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts +17 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/environment.js +16 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/initialize-node.d.ts +18 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/initialize-node.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/initialize-node.js +39 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/initialize-web.d.ts +18 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/initialize-web.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/initialize-web.js +22 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserFetcher.d.ts +132 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserFetcher.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserFetcher.js +468 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserRunner.d.ts +40 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserRunner.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserRunner.js +197 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts +42 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.js +0 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/Launcher.d.ts +16 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/Launcher.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/Launcher.js +469 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/NodeWebSocketTransport.d.ts +29 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/NodeWebSocketTransport.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/NodeWebSocketTransport.js +34 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/PipeTransport.d.ts +31 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/PipeTransport.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/PipeTransport.js +61 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/Puppeteer.d.ts +156 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/Puppeteer.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/Puppeteer.js +183 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/install.d.ts +18 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/install.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node/install.js +151 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node-puppeteer-core.d.ts +18 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node-puppeteer-core.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node-puppeteer-core.js +23 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node.d.ts +18 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/node.js +22 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +22 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +19 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/web.d.ts +18 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/web.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/puppeteer/web.js +22 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/vendor/mitt/src/index.d.ts +22 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/vendor/mitt/src/index.d.ts.map +1 -0
- package/static/devtools/third_party/puppeteer/package/lib/esm/vendor/mitt/src/index.js +53 -0
- package/static/devtools/third_party/puppeteer/puppeteer-tsconfig.json +58 -0
- package/static/devtools/third_party/puppeteer/puppeteer.js +1 -0
- package/static/devtools/third_party/wasmparser/package/dist/esm/WasmDis.js +1595 -0
- package/static/devtools/third_party/wasmparser/package/dist/esm/WasmParser.js +3120 -0
- package/static/devtools/third_party/wasmparser/wasmparser-tsconfig.json +9 -0
- package/static/devtools/timeline/timeline-legacy.js +1 -0
- package/static/devtools/timeline/timeline-meta.js +1 -0
- package/static/devtools/timeline/timeline.js +1 -0
- package/static/devtools/timeline/timeline_module.js +1 -0
- package/static/devtools/timeline_model/timeline_model-legacy.js +1 -0
- package/static/devtools/timeline_model/timeline_model.js +1 -0
- package/static/devtools/timeline_model/timeline_model_module.js +0 -0
- package/static/devtools/toolbox.html +20 -0
- package/static/devtools/toolbox.js +1 -0
- package/static/devtools/toolbox_bootstrap/toolbox_bootstrap.js +1 -0
- package/static/devtools/ui/components/components.js +378 -0
- package/static/devtools/ui/ui-legacy.js +1 -0
- package/static/devtools/ui/ui.js +3 -0
- package/static/devtools/ui/utils/utils.js +1 -0
- package/static/devtools/wasmparser_worker/wasmparser_worker-entrypoint.js +1 -0
- package/static/devtools/wasmparser_worker/wasmparser_worker.js +1 -0
- package/static/devtools/web_audio/graph_visualizer/graph_visualizer.js +1 -0
- package/static/devtools/web_audio/web_audio-legacy.js +1 -0
- package/static/devtools/web_audio/web_audio-meta.js +1 -0
- package/static/devtools/web_audio/web_audio.js +23 -0
- package/static/devtools/web_audio/web_audio_module.js +1 -0
- package/static/devtools/webauthn/webauthn-legacy.js +1 -0
- package/static/devtools/webauthn/webauthn-meta.js +1 -0
- package/static/devtools/webauthn/webauthn.js +6 -0
- package/static/devtools/webauthn/webauthn_module.js +1 -0
- package/static/devtools/worker_app.html +20 -0
- package/static/devtools/worker_app.js +1 -0
- package/static/devtools/worker_main/worker_main-legacy.js +1 -0
- package/static/devtools/worker_main/worker_main.js +1 -0
- package/static/devtools/worker_service/worker_service.js +1 -0
- package/static/devtools/workspace/workspace-legacy.js +1 -0
- package/static/devtools/workspace/workspace.js +1 -0
- package/static/devtools/workspace_diff/workspace_diff-legacy.js +1 -0
- package/static/devtools/workspace_diff/workspace_diff.js +1 -0
- package/static/devtools/workspace_diff/workspace_diff_module.js +0 -0
- package/static/docs/swagger.json +2337 -279
- package/static/function/client.js +1037 -992
- package/build/routes/chromium/http/json-new.js +0 -23
- package/build/routes/chromium/http/json-version-get.response.json +0 -37
- package/build/routes/chromium/utils/cdp.d.ts +0 -2
- package/build/routes/chromium/utils/cdp.js +0 -14
- package/build/routes/chromium/ws/cdp-chromium.js +0 -10
- package/src/routes/chromium/http/json-list.ts +0 -50
- package/src/routes/chromium/utils/cdp.ts +0 -19
- package/build/routes/{chromium/http/content-post.query.json → chrome/http/content.post.query.json} +0 -0
- package/build/routes/{chromium/http/content-post.response.json → chrome/http/content.post.response.json} +0 -0
- package/build/routes/{chromium/http/download-post.body.json → chrome/http/download.post.body.json} +0 -0
- package/build/routes/{chromium/http/download-post.query.json → chrome/http/download.post.query.json} +0 -0
- package/build/routes/{chromium/http/download-post.response.json → chrome/http/download.post.response.json} +0 -0
- package/build/routes/{chromium/http/function-post.body.json → chrome/http/function.post.body.json} +0 -0
- package/build/routes/{chromium/http/function-post.query.json → chrome/http/function.post.query.json} +0 -0
- package/build/routes/{chromium/http/function-post.response.json → chrome/http/function.post.response.json} +0 -0
- package/build/routes/{chromium/http/json-list.response.json → chrome/http/json-list.get.response.json} +0 -0
- package/build/routes/{chromium/http/json-new.response.json → chrome/http/json-new.put.response.json} +0 -0
- package/build/routes/{chromium/http/json-protocol-get.response.json → chrome/http/json-protocol.get.response.json} +0 -0
- package/build/routes/{chromium/http/pdf-post.query.json → chrome/http/pdf.post.query.json} +0 -0
- package/build/routes/{chromium/http/pdf-post.response.json → chrome/http/pdf.post.response.json} +0 -0
- package/build/routes/{chromium/http/performance.body.json → chrome/http/performance.post.body.json} +0 -0
- package/build/routes/{chromium/http/performance.query.json → chrome/http/performance.post.query.json} +0 -0
- package/build/routes/{chromium/http/performance.response.json → chrome/http/performance.post.response.json} +0 -0
- package/build/routes/{chromium/http/scrape-post.query.json → chrome/http/scrape.post.query.json} +0 -0
- package/build/routes/{chromium/http/scrape-post.response.json → chrome/http/scrape.post.response.json} +0 -0
- package/build/routes/{chromium/http/screenshot-post.query.json → chrome/http/screenshot.post.query.json} +0 -0
- package/build/routes/{chromium/http/screenshot-post.response.json → chrome/http/screenshot.post.response.json} +0 -0
- package/build/routes/{chromium/utils/performance/child.d.ts → chrome/tests/content.spec.d.ts} +0 -0
- package/build/routes/{chromium/utils/performance/types.js → chrome/tests/download.spec.d.ts} +0 -0
- package/build/routes/{chromium/ws/cdp-chromium.query.json → chrome/ws/browser.query.json} +0 -0
- package/build/routes/{chromium/ws/playwright-chromium.query.json → chrome/ws/playwright.query.json} +0 -0
- package/build/routes/{firefox/ws/playwright-firefox.query.json → chromium/ws/playwright.query.json} +0 -0
- package/build/routes/{webkit/ws/playwright-webkit.query.json → firefox/ws/playwright.query.json} +0 -0
- package/build/routes/management/http/{config-get.d.ts → config.get.d.ts} +0 -0
- package/build/routes/management/http/{config-get.js → config.get.js} +0 -0
- package/build/routes/management/http/{config-get.response.json → config.get.response.json} +0 -0
- package/build/routes/management/http/{metrics-total-get.d.ts → metrics-total.get.d.ts} +0 -0
- package/build/routes/management/http/{metrics-total-get.js → metrics-total.get.js} +0 -0
- package/build/routes/management/http/{metrics-total-get.response.json → metrics-total.get.response.json} +0 -0
- package/build/routes/management/http/{metrics-get.d.ts → metrics.get.d.ts} +0 -0
- package/build/routes/management/http/{metrics-get.js → metrics.get.js} +0 -0
- package/build/routes/management/http/{metrics-get.response.json → metrics.get.response.json} +0 -0
- package/build/routes/management/http/{sessions-get.d.ts → sessions.get.d.ts} +0 -0
- package/build/routes/management/http/{sessions-get.js → sessions.get.js} +0 -0
- package/build/routes/management/http/{static-get.d.ts → static.get.d.ts} +0 -0
- package/build/{routes/chromium/http/json-protocol-get.d.ts → shared/json-protocol.http.d.ts} +1 -1
- package/build/{routes/chromium/http/json-version-get.d.ts → shared/json-version.http.d.ts} +1 -1
- /package/build/{routes/chromium → shared}/utils/function/client.d.ts +0 -0
- /package/build/{routes/chromium → shared}/utils/function/client.js +0 -0
- /package/build/{routes/chromium → shared}/utils/function/handler.d.ts +0 -0
- /package/build/{routes/chromium → shared}/utils/function/handler.js +0 -0
- /package/build/{routes/chromium → shared}/utils/performance/child.js +0 -0
- /package/build/{routes/chromium → shared}/utils/performance/main.d.ts +0 -0
- /package/build/{routes/chromium → shared}/utils/performance/types.d.ts +0 -0
- /package/src/routes/management/http/{config-get.ts → config.get.ts} +0 -0
- /package/src/routes/management/http/{metrics-total-get.ts → metrics-total.get.ts} +0 -0
- /package/src/routes/management/http/{metrics-get.ts → metrics.get.ts} +0 -0
- /package/src/routes/management/http/{sessions-get.ts → sessions.get.ts} +0 -0
- /package/src/{routes/chromium → shared}/utils/function/client.ts +0 -0
- /package/src/{routes/chromium → shared}/utils/performance/child.ts +0 -0
- /package/src/{routes/chromium → shared}/utils/performance/types.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{CLSLinkifier as e,CountersGraph as i,EventsTimelineTreeView as n,ExtensionTracingSession as l,PerformanceModel as m,TimelineController as T,TimelineDetailsView as t,TimelineEventOverview as r,TimelineFilters as a,TimelineFlameChartDataProvider as o,TimelineFlameChartNetworkDataProvider as s,TimelineFlameChartView as v,TimelineHistoryManager as w,TimelineLayersView as C,TimelineLoader as d,TimelinePaintProfilerView as g,TimelinePanel as p,TimelineTreeView as y,TimelineUIUtils as E,UIDevtoolsController as h,UIDevtoolsUtils as V}from"./timeline.js";self.Timeline=self.Timeline||{},Timeline=Timeline||{},Timeline.CLSLinkifier=Timeline.CLSLinkifier||{},Timeline.CLSLinkifier.CLSRect=e.CLSRect,Timeline.CLSLinkifier.Linkifier=e.Linkifier,Timeline.CountersGraph=i.CountersGraph,Timeline.CountersGraph.Counter=i.Counter,Timeline.CountersGraph.CounterUI=i.CounterUI,Timeline.CountersGraph.Calculator=i.Calculator,Timeline.EventsTimelineTreeView=n.EventsTimelineTreeView,Timeline.EventsTimelineTreeView.Filters=n.Filters,Timeline.ExtensionTracingSession=l.ExtensionTracingSession,Timeline.PerformanceModel=m.PerformanceModel,Timeline.PerformanceModel.Events=m.Events,Timeline.TimelineController=T.TimelineController,Timeline.TimelineController.Client=T.Client,Timeline.TimelineDetailsView=t.TimelineDetailsView,Timeline.TimelineDetailsView.Tab=t.Tab,Timeline.TimelineEventOverview=r.TimelineEventOverview,Timeline.TimelineEventOverviewInput=r.TimelineEventOverviewInput,Timeline.TimelineEventOverviewNetwork=r.TimelineEventOverviewNetwork,Timeline.TimelineEventOverviewCPUActivity=r.TimelineEventOverviewCPUActivity,Timeline.TimelineEventOverviewResponsiveness=r.TimelineEventOverviewResponsiveness,Timeline.TimelineFilmStripOverview=r.TimelineFilmStripOverview,Timeline.TimelineEventOverviewFrames=r.TimelineEventOverviewFrames,Timeline.TimelineEventOverviewMemory=r.TimelineEventOverviewMemory,Timeline.Quantizer=r.Quantizer,Timeline.TimelineEventOverviewCoverage=r.TimelineEventOverviewCoverage,Timeline.TimelineFilters={},Timeline.TimelineFilters.IsLong=a.IsLong,Timeline.TimelineFilters.Category=a.Category,Timeline.TimelineFilters.RegExp=a.TimelineRegExp,Timeline.TimelineFlameChartDataProvider=o.TimelineFlameChartDataProvider,Timeline.TimelineFlameChartDataProvider.InstantEventVisibleDurationMs=o.InstantEventVisibleDurationMs,Timeline.TimelineFlameChartDataProvider.Events=o.Events,Timeline.TimelineFlameChartDataProvider.EntryType=o.EntryType,Timeline.TimelineFlameChartNetworkDataProvider=s.TimelineFlameChartNetworkDataProvider,Timeline.TimelineFlameChartView=v.TimelineFlameChartView,Timeline.TimelineFlameChartView.Selection=v.Selection,Timeline.TimelineFlameChartView._ColorBy=v.ColorBy,Timeline.FlameChartStyle=v.FlameChartStyle,Timeline.TimelineFlameChartMarker=v.TimelineFlameChartMarker,Timeline.TimelineHistoryManager=w.TimelineHistoryManager,Timeline.TimelineHistoryManager.DropDown=w.DropDown,Timeline.TimelineHistoryManager.ToolbarButton=w.ToolbarButton,Timeline.TimelineLayersView=C.TimelineLayersView,Timeline.TimelineLoader=d.TimelineLoader,Timeline.TimelineLoader.TransferChunkLengthBytes=d.TransferChunkLengthBytes,Timeline.TimelineLoader.Client=d.Client,Timeline.TimelineLoader.State=d.State,Timeline.TimelinePaintProfilerView=g.TimelinePaintProfilerView,Timeline.TimelinePaintImageView=g.TimelinePaintImageView,Timeline.TimelinePanel=p.TimelinePanel,Timeline.TimelinePanel.State=p.State,Timeline.TimelinePanel.ViewMode=p.ViewMode,Timeline.TimelinePanel.rowHeight=p.rowHeight,Timeline.TimelinePanel.headerHeight=p.headerHeight,Timeline.TimelinePanel.StatusPane=p.StatusPane,Timeline.TimelinePanel.ActionDelegate=p.ActionDelegate,Timeline.TimelineSelection=p.TimelineSelection,Timeline.TimelineModeViewDelegate=p.TimelineModeViewDelegate,Timeline.LoadTimelineHandler=p.LoadTimelineHandler,Timeline.TimelineTreeView=y.TimelineTreeView,Timeline.TimelineTreeView.GridNode=y.GridNode,Timeline.TimelineTreeView.TreeGridNode=y.TreeGridNode,Timeline.AggregatedTimelineTreeView=y.AggregatedTimelineTreeView,Timeline.CallTreeTimelineTreeView=y.CallTreeTimelineTreeView,Timeline.BottomUpTimelineTreeView=y.BottomUpTimelineTreeView,Timeline.TimelineStackView=y.TimelineStackView,Timeline.TimelineUIUtils=E.TimelineUIUtils,Timeline.TimelineUIUtils.NetworkCategory=E.NetworkCategory,Timeline.TimelineUIUtils._aggregatedStatsKey=E.aggregatedStatsKey,Timeline.TimelineUIUtils.InvalidationsGroupElement=E.InvalidationsGroupElement,Timeline.TimelineUIUtils._previewElementSymbol=E.previewElementSymbol,Timeline.TimelineUIUtils.EventDispatchTypeDescriptor=E.EventDispatchTypeDescriptor,Timeline.TimelineUIUtils._categoryBreakdownCacheSymbol=E.categoryBreakdownCacheSymbol,Timeline.TimelineRecordStyle=E.TimelineRecordStyle,Timeline.TimelineCategory=E.TimelineCategory,Timeline.TimelinePopupContentHelper=E.TimelinePopupContentHelper,Timeline.TimelineDetailsContentHelper=E.TimelineDetailsContentHelper,Timeline.UIDevtoolsController=h.UIDevtoolsController,Timeline.UIDevtoolsUtils=V.UIDevtoolsUtils,Timeline.UIDevtoolsUtils.RecordType=V.RecordType;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ls as e}from"../platform/platform.js";import{Runtime as i}from"../root/root.js";import{ViewManager as r}from"../ui/ui.js";let o,t;r.registerViewExtension({location:"panel",id:"timeline",title:()=>e`Performance`,commandPrompt:()=>e`Show Performance`,order:50,loadView:async()=>(await async function(){return o||(await i.Runtime.instance().loadModulePromise("timeline"),o=await import("./timeline.js")),o}()).TimelinePanel.TimelinePanel.instance()}),r.registerViewExtension({location:"panel",id:"js_profiler",title:()=>e`JavaScript Profiler`,commandPrompt:()=>e`Show JavaScript Profiler`,persistence:"closeable",order:65,loadView:async()=>(await async function(){return t||(await i.Runtime.instance().loadModulePromise("profiler"),t=await import("../profiler/profiler.js")),t}()).ProfilesPanel.JSProfilerPanel.instance()});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{OverlayModel as e,TracingModel as t,TracingManager as i,SDKModel as n,CPUProfilerModel as s,RuntimeModel as a,PaintProfiler as r,DOMModel as o,ResourceTreeModel as l,NetworkManager as h,DebuggerModel as d,FilmStripModel as c}from"../sdk/sdk.js";import{UIString as m,Console as u,Settings as p,ParsedURL as _,ObjectWrapper as g,Color as f,EventTarget as v,Linkifier as T}from"../common/common.js";import{TimelineOverviewPane as w,FlameChart as S,NetworkPriorities as y,ChartViewport as b,LineLevelProfile as C,PieChart as x,FilmStripView as k,TimelineGrid as M}from"../perf_ui/perf_ui.js";import{MapUtilities as P,NumberUtilities as E,ls as R,StringUtilities as L,DateUtilities as I,ArrayUtilities as F,SetUtilities as D}from"../platform/platform.js";import{TimelineJSProfile as N,TimelineModel as U,TimelineModelFilter as W,TimelineProfileTree as B,TimelineIRModel as V,TimelineFrameModel as A}from"../timeline_model/timeline_model.js";import{UIUtils as H,Widget as O,SplitWidget as G,Toolbar as z,ARIAUtils as j,Geometry as q,TabbedPane as X,Fragment as $,Utils as J,ActionRegistry as K,GlassPane as Y,ListModel as Q,ListControl as Z,Icon as ee,ActionRegistration as te,Panel as ie,DropTarget as ne,SearchableView as se,Context as ae,ContextMenu as re,ViewManager as oe,XLink as le,ShortcutRegistry as he,TreeOutline as de,Tooltip as ce}from"../ui/ui.js";import{TempFile as me,FileUtils as ue,IgnoreListManager as pe,ResourceUtils as _e,DebuggerWorkspaceBinding as ge}from"../bindings/bindings.js";import{Linkifier as fe,ImagePreview as ve,JSPresentationUtils as Te}from"../components/components.js";import{ExtensionServer as we}from"../extensions/extensions.js";import{ResourceLoader as Se,Platform as ye,userMetrics as be,UserMetrics as Ce}from"../host/host.js";import{ThrottlingManager as xe}from"../mobile_throttling/mobile_throttling.js";import{InspectorBackend as ke}from"../protocol_client/protocol_client.js";import{Runtime as Me}from"../root/root.js";import{TextUtils as Pe}from"../text_utils/text_utils.js";import{CoverageModel as Ee}from"../coverage/coverage.js";import{SortableDataGrid as Re,DataGrid as Le,ViewportDataGrid as Ie}from"../data_grid/data_grid.js";import{LayerViewHost as Fe,LayerTreeOutline as De,Layers3DView as Ne,LayerDetailsView as Ue,PaintProfilerView as We,TransformController as Be}from"../layer_viewer/layer_viewer.js";import{ThemeSupport as Ve}from"../theme_support/theme_support.js";class Ae{constructor([e,t,i,n]){this.x=e,this.y=t,this.width=i,this.height=n,this.color={r:238,g:111,b:99,a:.4},this.outlineColor={r:238,g:111,b:99,a:.7}}}var He=Object.freeze({__proto__:null,CLSRect:Ae,Linkifier:class{linkify(t,i){const n=document.createElement("span"),s=t,{x:a,y:r,width:o,height:l}=s;return n.textContent=`Location: [${a},${r}], Size: [${o}x${l}]`,n.addEventListener("mouseover",(()=>e.OverlayModel.highlightRect(s))),n.addEventListener("mouseleave",(()=>e.OverlayModel.clearHighlight())),n}}});class Oe{constructor(e){this._client=e,this._backingStorage=new me.TempFileBackingStorage,this._tracingModel=new t.TracingModel(this._backingStorage),this._canceledCallback=null,this._state=ze.Initial,this._buffer="",this._firstRawChunk=!0,this._firstChunk=!0,this._loadedBytes=0,this._totalSize,this._jsonTokenizer=new Pe.BalancedJSONTokenizer(this._writeBalancedJSON.bind(this),!0)}static loadFromFile(e,t){const i=new Oe(t),n=new ue.ChunkedFileReader(e,Ge);return i._canceledCallback=n.cancel.bind(n),i._totalSize=e.size,n.read(i).then((e=>{!e&&n.error()&&i._reportErrorAndCancelLoading(n.error().message)})),i}static loadFromEvents(e,t){const i=new Oe(t);return setTimeout((async()=>{t.loadingStarted();for(let n=0;n<e.length;n+=5e3){const s=e.slice(n,n+5e3);i._tracingModel.addEvents(s),t.loadingProgress((n+s.length)/e.length),await new Promise((e=>setTimeout(e)))}i.close()})),i}static loadFromURL(e,t){const i=new Oe(t);return Se.loadAsStream(e,null,i),i}cancel(){this._tracingModel=null,this._backingStorage.reset(),this._client&&(this._client.loadingComplete(null),this._client=null),this._canceledCallback&&this._canceledCallback()}write(e){if(!this._client)return Promise.resolve();if(this._loadedBytes+=e.length,this._firstRawChunk?this._client.loadingStarted():this._client.loadingProgress(this._totalSize?this._loadedBytes/this._totalSize:void 0),this._firstRawChunk=!1,this._state===ze.Initial)if(e.startsWith('{"nodes":['))this._state=ze.LoadingCPUProfileFormat;else if("{"===e[0])this._state=ze.LookingForEvents;else{if("["!==e[0])return this._reportErrorAndCancelLoading(m.UIString("Malformed timeline data: Unknown JSON format")),Promise.resolve();this._state=ze.ReadingEvents}if(this._state===ze.LoadingCPUProfileFormat)return this._buffer+=e,Promise.resolve();if(this._state===ze.LookingForEvents){const t='"traceEvents":',i=this._buffer.length-t.length;this._buffer+=e;const n=this._buffer.indexOf(t,i);if(-1===n)return Promise.resolve();e=this._buffer.slice(n+t.length),this._state=ze.ReadingEvents}return this._state!==ze.ReadingEvents||this._jsonTokenizer.write(e)||(this._state=ze.SkippingTail,this._firstChunk&&this._reportErrorAndCancelLoading(m.UIString("Malformed timeline input, wrong JSON brackets balance"))),Promise.resolve()}_writeBalancedJSON(e){let t,i=e+"]";if(!this._firstChunk){const e=i.indexOf(",");-1!==e&&(i=i.slice(e+1)),i="["+i}try{t=JSON.parse(i)}catch(e){return void this._reportErrorAndCancelLoading(m.UIString("Malformed timeline data: %s",e.toString()))}if(this._firstChunk&&(this._firstChunk=!1,this._looksLikeAppVersion(t[0])))this._reportErrorAndCancelLoading(m.UIString("Legacy Timeline format is not supported."));else try{this._tracingModel.addEvents(t)}catch(e){this._reportErrorAndCancelLoading(m.UIString("Malformed timeline data: %s",e.toString()))}}_reportErrorAndCancelLoading(e){e&&u.Console.instance().error(e),this.cancel()}_looksLikeAppVersion(e){return"string"==typeof e&&-1!==e.indexOf("Chrome")}async close(){this._client&&(this._client.processingStarted(),setTimeout((()=>this._finalizeTrace()),0))}_finalizeTrace(){this._state===ze.LoadingCPUProfileFormat&&(this._parseCPUProfileFormat(this._buffer),this._buffer=""),this._tracingModel.tracingComplete(),this._client.loadingComplete(this._tracingModel)}_parseCPUProfileFormat(e){let t;try{const i=JSON.parse(e);t=N.TimelineJSProfileProcessor.buildTraceProfileFromCpuProfile(i,1,!0)}catch(e){return void this._reportErrorAndCancelLoading(m.UIString("Malformed CPU profile format"))}this._tracingModel.addEvents(t)}}const Ge=5e6;const ze={Initial:Symbol("Initial"),LookingForEvents:Symbol("LookingForEvents"),ReadingEvents:Symbol("ReadingEvents"),SkippingTail:Symbol("SkippingTail"),LoadingCPUProfileFormat:Symbol("LoadingCPUProfileFormat")};var je=Object.freeze({__proto__:null,TimelineLoader:Oe,TransferChunkLengthBytes:Ge,Client:class{loadingStarted(){}loadingProgress(e){}processingStarted(){}loadingComplete(e){}},State:ze});class qe{constructor(e,t){this._provider=e,this._performanceModel=t,this._completionCallback,this._completionPromise=new Promise((e=>{this._completionCallback=e})),this._timeOffset=0}loadingStarted(){}processingStarted(){}loadingProgress(e){}loadingComplete(e){e&&(this._performanceModel.addExtensionEvents(this._provider.longDisplayName(),e,this._timeOffset),this._completionCallback())}complete(e,t){e?(this._timeOffset=t,Oe.loadFromURL(e,this)):this._completionCallback()}start(){this._provider.start(this)}stop(){return this._provider.stop(),this._completionPromise}}var Xe=Object.freeze({__proto__:null,ExtensionTracingSession:qe});class $e{constructor(e,a){this._target=e,this._tracingManager=e.model(i.TracingManager),this._performanceModel=new Hi,this._performanceModel.setMainTarget(e),this._client=a;const r=new me.TempFileBackingStorage;this._tracingModel=new t.TracingModel(r),this._extensionSessions=[],n.TargetManager.instance().observeModels(s.CPUProfilerModel,this)}dispose(){n.TargetManager.instance().unobserveModels(s.CPUProfilerModel,this)}mainTarget(){return this._target}async startRecording(e,t){function i(e){return"disabled-by-default-"+e}this._extensionTraceProviders=we.ExtensionServer.instance().traceProviders().slice();const s=["-*","devtools.timeline",i("devtools.timeline"),i("devtools.timeline.frame"),"v8.execute",U.TimelineModelImpl.Category.Console,U.TimelineModelImpl.Category.UserTiming,U.TimelineModelImpl.Category.Loading];s.push(U.TimelineModelImpl.Category.LatencyInfo),Me.experiments.isEnabled("timelineV8RuntimeCallStats")&&e.enableJSSampling&&s.push(i("v8.runtime_stats_sampling")),!Me.Runtime.queryParam("timelineTracingJSProfileDisabled")&&e.enableJSSampling&&s.push(i("v8.cpu_profiler")),s.push(i("devtools.timeline.stack")),Me.experiments.isEnabled("timelineInvalidationTracking")&&s.push(i("devtools.timeline.invalidationTracking")),e.capturePictures&&s.push(i("devtools.timeline.layers"),i("devtools.timeline.picture"),i("blink.graphics_context_annotations")),e.captureFilmStrip&&s.push(i("devtools.screenshot")),this._extensionSessions=t.map((e=>new qe(e,this._performanceModel))),this._extensionSessions.forEach((e=>e.start())),this._performanceModel.setRecordStartTime(Date.now());const a=await this._startRecordingWithCategories(s.join(","),e.enableJSSampling);if(!a)throw new Error("Missing backend response");return ke.ProtocolError in a&&(await this._waitForTracingToStop(!1),await n.TargetManager.instance().resumeAllTargets()),a}async stopRecording(){return this._tracingManager&&this._tracingManager.stop(),this._client.loadingStarted(),await this._waitForTracingToStop(!0),this._allSourcesFinished(),this._performanceModel}async _waitForTracingToStop(e){const t=[];this._tracingManager&&e&&t.push(new Promise((e=>{this._tracingCompleteCallback=e}))),t.push(this._stopProfilingOnAllModels());const i=this._extensionSessions.map((e=>e.stop()));i.length&&t.push(Promise.race([Promise.all(i),new Promise((e=>setTimeout(e,5e3)))])),await Promise.all(t)}modelAdded(e){this._profiling&&e.startRecording()}modelRemoved(e){}async _startProfilingOnAllModels(){this._profiling=!0;const e=n.TargetManager.instance().models(s.CPUProfilerModel);await Promise.all(e.map((e=>e.startRecording())))}_addCpuProfile(e,t){t?(this._cpuProfiles||(this._cpuProfiles=new Map),this._cpuProfiles.set(e,t)):u.Console.instance().warn(m.UIString("CPU profile for a target is not available."))}async _stopProfilingOnAllModels(){const e=this._profiling?n.TargetManager.instance().models(s.CPUProfilerModel):[];this._profiling=!1;const t=[];for(const i of e){const e=i.target().id(),n=i.stopRecording().then(this._addCpuProfile.bind(this,e));t.push(n)}await Promise.all(t)}async _startRecordingWithCategories(e,t){if(await n.TargetManager.instance().suspendAllTargets("performance-timeline"),t&&Me.Runtime.queryParam("timelineTracingJSProfileDisabled")&&await this._startProfilingOnAllModels(),this._tracingManager)return this._tracingManager.start(this,e,"")}traceEventsCollected(e){this._tracingModel.addEvents(e)}tracingComplete(){this._tracingCompleteCallback&&(this._tracingCompleteCallback(void 0),this._tracingCompleteCallback=null)}_allSourcesFinished(){this._client.processingStarted(),setTimeout((()=>this._finalizeTrace()),0)}async _finalizeTrace(){this._injectCpuProfileEvents(),await n.TargetManager.instance().resumeAllTargets(),this._tracingModel.tracingComplete(),this._client.loadingComplete(this._tracingModel)}_injectCpuProfileEvent(e,i,n){if(!n)return;const s={cat:t.DevToolsMetadataEventCategory,ph:t.Phase.Instant,ts:1e3*this._tracingModel.maximumRecordTime(),pid:e,tid:i,name:U.RecordType.CpuProfile,args:{data:{cpuProfile:n}}};this._tracingModel.addEvents([s])}_buildTargetToProcessIdMap(){const e=U.TimelineModelImpl.DevToolsMetadataEvent,t=this._tracingModel.devToolsMetadataEvents(),i=t.find((t=>t.name===e.TracingStartedInBrowser));if(!i)return null;const s=new P.Multimap,a=new Map,r=i.args.data.frames;for(const e of r)a.set(e.frame,e.processId);for(const i of t){const t=i.args.data;switch(i.name){case e.FrameCommittedInBrowser:t.processId?a.set(t.frame,t.processId):s.set(t.processPseudoId,t.frame);break;case e.ProcessReadyInBrowser:for(const e of s.get(t.processPseudoId)||[])a.set(e,t.processId)}}const o=r.find((e=>!e.parent)).processId,l=this._tracingModel.processById(o);if(l){const e=n.TargetManager.instance().mainTarget();e&&a.set(e.id(),l.id())}return a}_injectCpuProfileEvents(){if(!this._cpuProfiles)return;const e=U.TimelineModelImpl.DevToolsMetadataEvent,t=this._tracingModel.devToolsMetadataEvents(),i=this._buildTargetToProcessIdMap();if(i)for(const[e,t]of this._cpuProfiles){const n=i.get(e);if(!n)continue;const s=this._tracingModel.processById(n),a=s&&s.threadByName(U.TimelineModelImpl.RendererMainThreadName);a&&this._injectCpuProfileEvent(n,a.id(),t)}else{const i=t.filter((t=>t.name===e.TracingStartedInPage)),s=i[i.length-1];if(s){const e=s.thread.process().id();if(this._tracingManager){const t=this._cpuProfiles.get(this._tracingManager.target().id());this._injectCpuProfileEvent(e,s.thread.id(),t)}}else{let e=0;for(const t of this._cpuProfiles){const i=n.TargetManager.instance().targetById(t[0]),s=i&&i.name();this._tracingModel.addEvents(N.TimelineJSProfileProcessor.buildTraceProfileFromCpuProfile(t[1],++e,1===e,s))}}}const s=t.filter((t=>t.name===e.TracingSessionIdForWorker));for(const e of s){const t=e.args.data.workerId,i=this._cpuProfiles.get(t);this._injectCpuProfileEvent(e.thread.process().id(),e.args.data.workerThreadId,i)}this._cpuProfiles=null}tracingBufferUsage(e){this._client.recordingProgress(e)}eventsRetrievalProgress(e){this._client.loadingProgress(e)}}var Je=Object.freeze({__proto__:null,TimelineController:$e,Client:class{recordingProgress(e){}loadingStarted(){}processingStarted(){}loadingProgress(e){}loadingComplete(e){}},RecordingOptions:undefined});class Ke extends w.TimelineOverviewBase{constructor(e,t){super(),this.element.id="timeline-overview-"+e,this.element.classList.add("overview-strip"),this._model=null,t&&(this.element.createChild("div","timeline-overview-strip-title").textContent=t)}setModel(e){this._model=e}_renderBar(e,t,i,n,s){const a=e,r=t-e,o=this.context();o.fillStyle=s,o.fillRect(a,i,r,n)}}class Ye extends Ke{constructor(){super("input",null)}update(){if(super.update(),!this._model)return;const e=this.height(),t=Ri.eventDispatchDesciptors(),i=new Map;let n=-1;for(const e of t){for(const t of e.eventTypes)i.set(t,e);n=Math.max(n,e.priority)}const s=2*window.devicePixelRatio,a=this._model.timelineModel().minimumRecordTime(),r=this._model.timelineModel().maximumRecordTime()-a,o=this.width(),l=o/r;for(let t=0;t<=n;++t)for(const n of this._model.timelineModel().tracks())for(let r=0;r<n.events.length;++r){const h=n.events[r];if(h.name!==U.RecordType.EventDispatch)continue;const d=i.get(h.args.data.type);if(!d||d.priority!==t)continue;if(void 0===h.endTime)continue;const c=E.clamp(Math.floor((h.startTime-a)*l),0,o),m=E.clamp(Math.ceil((h.endTime-a)*l),0,o),u=Math.max(m-c,s);this._renderBar(c,c+u,0,e,d.color)}}}class Qe extends Ke{constructor(){super("network",m.UIString("NET"))}update(){if(super.update(),!this._model)return;const e=this._model.timelineModel(),t=this.height()/2,i=e.minimumRecordTime(),n=e.maximumRecordTime()-i,s=this.width(),a=s/n,r=new Path2D,o=new Path2D,l=Protocol.Network.ResourcePriority,h=new Set([l.VeryHigh,l.High,l.Medium]);for(const n of e.networkRequests()){const e=h.has(n.priority)?r:o,l=Math.max(Math.floor((n.startTime-i)*a),0),d=Math.min(Math.ceil((n.endTime-i)*a+1),s);e.rect(l,0,d-l,t-1)}const d=this.context();d.save(),d.fillStyle="hsl(214, 60%, 60%)",d.fill(r),d.translate(0,t),d.fillStyle="hsl(214, 80%, 80%)",d.fill(o),d.restore()}}const Ze=new WeakMap;class et extends Ke{constructor(){super("cpu-activity",m.UIString("CPU")),this._backgroundCanvas=this.element.createChild("canvas","fill background")}resetCanvas(){super.resetCanvas(),this._backgroundCanvas.width=this.element.clientWidth*window.devicePixelRatio,this._backgroundCanvas.height=this.element.clientHeight*window.devicePixelRatio}update(){if(super.update(),!this._model)return;const e=this._model.timelineModel(),t=4*window.devicePixelRatio,i=this.width(),n=this.height(),s=n,a=e.minimumRecordTime(),r=e.maximumRecordTime()-a,o=t/(i/r),l=Ri.categories(),h=Ri.getTimelineMainEventCategories(),d=h.indexOf("other");console.assert(0===h.indexOf("idle"));for(let e=1;e<h.length;++e)Ze.set(l[h[e]],e);const c=this._backgroundCanvas.getContext("2d");if(!c)throw new Error("Could not find 2d canvas");for(const t of e.tracks())t.type===U.TrackType.MainThread&&t.forMainFrame?m(this.context(),t.events):m(c,t.events);function m(e,c){const m=new at(a,o,(function(e){let i=s;for(let s=1;s<h.length;++s){const a=(e[s]||0)/o*n;i-=a,_[s].bezierCurveTo(u,g[s],u,i,u+t/2,i),g[s]=i}u+=t}));let u=0;const p=[],_=[],g=[];for(let e=0;e<h.length;++e)_[e]=new Path2D,_[e].moveTo(0,n),g[e]=n;U.TimelineModelImpl.forEachEvent(c,(function(e){const t=p.length?p[p.length-1]:0;m.appendInterval(e.startTime,t),p.push(Ze.get(Ri.eventStyle(e).category)||d)}),(function(e){const t=p.pop();void 0!==e.endTime&&t&&m.appendInterval(e.endTime,t)})),m.appendInterval(a+r+o,0);for(let t=h.length-1;t>0;--t)_[t].lineTo(i,n),e.fillStyle=l[h[t]].color,e.fill(_[t])}!function(e){const t=4*window.devicePixelRatio;e.save(),e.lineWidth=t/Math.sqrt(8);for(let s=.5;s<i+n;s+=t)e.moveTo(s,0),e.lineTo(s-n,n);e.globalCompositeOperation="destination-out",e.stroke(),e.restore()}(c)}}class tt extends Ke{constructor(){super("responsiveness",null)}update(){if(super.update(),!this._model)return;const e=this.height(),t=this._model.timelineModel().minimumRecordTime(),i=this._model.timelineModel().maximumRecordTime()-t,n=this.width()/i,s=this._model.frames(),a=this.context(),r=new Path2D,o=new Path2D;for(let e=0;e<s.length;++e){const t=s[e];t.hasWarnings()&&l(t.startTime,t.duration)}for(const e of this._model.timelineModel().tracks()){const t=e.events;for(let e=0;e<t.length;++e){if(!U.TimelineData.forEvent(t[e]).warning)continue;const i=t[e].duration;void 0!==i&&l(t[e].startTime,i)}}function l(i,s){const a=Math.round(n*(i-t)),l=Math.round(n*s);r.rect(a,0,l,e),o.moveTo(a+l,0),o.lineTo(a+l,e)}a.fillStyle="hsl(0, 80%, 90%)",a.strokeStyle="red",a.lineWidth=2*window.devicePixelRatio,a.fill(r),a.stroke(o)}}class it extends Ke{constructor(){super("filmstrip",null),this._frameToImagePromise=new Map,this._lastFrame=null,this._lastElement=null,this.reset()}update(){super.update();const e=this._model?this._model.filmStripModel().frames():[];if(!e.length)return;const t=Symbol("drawGeneration");this._drawGeneration=t,this._imageByFrame(e[0]).then((e=>{if(this._drawGeneration!==t)return;if(!e||!e.naturalWidth||!e.naturalHeight)return;const i=this.height()-2*it.Padding,n=Math.ceil(i*e.naturalWidth/e.naturalHeight),s=Math.min(200/e.naturalWidth,1);this._emptyImage=new Image(e.naturalWidth*s,e.naturalHeight*s),this._drawFrames(n,i)}))}async _imageByFrame(e){let t=this._frameToImagePromise.get(e);if(!t){const i=await e.imageDataPromise();t=H.loadImageFromData(i),this._frameToImagePromise.set(e,t)}return t}_drawFrames(e,t){if(!e||!this._model)return;const i=this._model.filmStripModel();if(!i.frames().length)return;const n=it.Padding,s=this.width(),a=i.zeroTime(),r=i.spanTime()/s,o=this.context(),l=this._drawGeneration;o.beginPath();for(let l=n;l<s;l+=e+2*n){const n=a+(l+e/2)*r,s=i.frameByTimestamp(n);s&&(o.rect(l-.5,.5,e+1,t+1),this._imageByFrame(s).then(h.bind(this,l)))}function h(i,n){this._drawGeneration===l&&n&&o.drawImage(n,i,1,e,t)}o.strokeStyle="#ddd",o.stroke()}async overviewInfoPromise(e){if(!this._model||!this._model.filmStripModel().frames().length)return null;const t=this.calculator();if(!t)return null;const i=t.positionToTime(e),n=this._model.filmStripModel().frameByTimestamp(i);if(n===this._lastFrame)return this._lastElement;const s=n?this._imageByFrame(n):Promise.resolve(this._emptyImage),a=await s,r=document.createElement("div");return r.classList.add("frame"),a&&r.createChild("div","thumbnail").appendChild(a),this._lastFrame=n,this._lastElement=r,r}reset(){this._lastFrame=null,this._lastElement=null,this._frameToImagePromise=new Map,this._imageWidth=0}}it.Padding=2;class nt extends Ke{constructor(){super("framerate",m.UIString("FPS"))}update(){if(super.update(),!this._model)return;const e=this._model.frames();if(!e.length)return;const t=this.height(),i=Number(window.devicePixelRatio),n=t-2*i,s=this._model.timelineModel().minimumRecordTime(),a=this._model.timelineModel().maximumRecordTime()-s,r=this.width()/a,o=t-i,l=this.context(),h=o+10*window.devicePixelRatio;let d=0,c=h;const m=window.devicePixelRatio,u=1&m?.5:0,p=1.5*window.devicePixelRatio;l.beginPath(),l.moveTo(0,c);for(let t=0;t<e.length;++t){const i=e[t];d=Math.round((i.startTime-s)*r)+u,l.lineTo(d,c),l.lineTo(d,c+p),c=i.idle?h:Math.round(o-n*Math.min(16.666666666666668/i.duration,1))-u,l.lineTo(d,c+p),l.lineTo(d,c)}const _=e[e.length-1];_&&(d=Math.round((_.startTime+_.duration-s)*r)+u),l.lineTo(d,c),l.lineTo(d,h),l.fillStyle="hsl(110, 50%, 88%)",l.strokeStyle="hsl(110, 50%, 60%)",l.lineWidth=m,l.fill(),l.stroke()}}class st extends Ke{constructor(){super("memory",m.UIString("HEAP")),this._heapSizeLabel=this.element.createChild("div","memory-graph-label")}resetHeapSizeLabels(){this._heapSizeLabel.textContent=""}update(){super.update();const e=window.devicePixelRatio;if(!this._model)return void this.resetHeapSizeLabels();const t=this._model.timelineModel().tracks().filter((e=>e.type===U.TrackType.MainThread&&e.forMainFrame)).map((e=>e.events)),i=3*e;let n=0,s=1e11;const a=this._model.timelineModel().minimumRecordTime(),r=this._model.timelineModel().maximumRecordTime();function o(e){return e.name===U.RecordType.UpdateCounters}for(let e=0;e<t.length;e++)t[e]=t[e].filter(o);function l(e){const t=e.args.data;t&&t.jsHeapSizeUsed&&(n=Math.max(n,t.jsHeapSizeUsed),s=Math.min(s,t.jsHeapSizeUsed))}for(let e=0;e<t.length;e++)t[e].forEach(l);s=Math.min(s,n);const h=this.width(),d=this.height()-i,c=h/(r-a),u=(d-1)/Math.max(n-s,1),p=new Array(h);function _(e){const t=e.args.data;if(!t||!t.jsHeapSizeUsed)return;const i=Math.round((e.startTime-a)*c),n=Math.round((t.jsHeapSizeUsed-s)*u);p[i]=Math.max(p[i]||0,n)}for(let e=0;e<t.length;e++)t[e].forEach(_);const g=this.context(),f=d+i+1;g.translate(.5,.5),g.beginPath(),g.moveTo(-1,f);let v=0,T=!0,w=0;for(let e=0;e<p.length;e++){if(void 0===p[e])continue;T&&(T=!1,v=p[e],g.lineTo(-1,d-v));const t=p[e];Math.abs(t-v)>2&&Math.abs(e-w)>1&&g.lineTo(e,d-v),v=t,g.lineTo(e,d-v),w=e}g.lineTo(h+1,d-v),g.lineTo(h+1,f),g.closePath(),g.fillStyle="hsla(220, 90%, 70%, 0.2)",g.fill(),g.lineWidth=1,g.strokeStyle="hsl(220, 90%, 70%)",g.stroke(),this._heapSizeLabel.textContent=m.UIString("%s – %s",E.bytesToString(s),E.bytesToString(n))}}class at{constructor(e,t,i){this._lastTime=e,this._quantDuration=t,this._callback=i,this._counters=[],this._remainder=t}appendInterval(e,t){let i=e-this._lastTime;if(i<=this._remainder)return this._counters[t]=(this._counters[t]||0)+i,this._remainder-=i,void(this._lastTime=e);for(this._counters[t]=(this._counters[t]||0)+this._remainder,this._callback(this._counters),i-=this._remainder;i>=this._quantDuration;){const e=[];e[t]=this._quantDuration,this._callback(e),i-=this._quantDuration}this._counters=[],this._counters[t]=i,this._lastTime=e,this._remainder=this._quantDuration-i}}class rt extends Ke{constructor(){super("coverage",m.UIString("COVERAGE")),this._heapSizeLabel=this.element.createChild("div","timeline-overview-coverage-label")}resetHeapSizeLabels(){this._heapSizeLabel.textContent=""}setModel(e){if(super.setModel(e),e){const t=e.mainTarget();t&&(this._coverageModel=t.model(Ee.CoverageModel))}}update(){super.update();const e=window.devicePixelRatio;if(!this._coverageModel)return;let t=0,i=0;const n=new Map,s=new Map;for(const e of this._coverageModel.entries())for(const a of e.entries()){t+=a.size();for(const[e,t]of a.usedByTimestamp()){i+=t;let r=s.get(e);void 0===r&&(r=new Set,s.set(e,r)),r.add(a);const o=n.get(e);void 0===o?n.set(e,t):n.set(e,o+t)}}const a=new Set,r=new Map;let o=0,l=0;const h=Array.from(s.entries()).sort(((e,t)=>e[0]-t[0]));for(const[e,t]of h){for(const e of t.values())a.has(e)||(a.add(e),o+=e.size());l+=n.get(e)||0,r.set(e,l/o)}const d=t?Math.round(100*i/t):0,c=3*e;if(!this._model)return;const m=this._model.timelineModel().minimumRecordTime()/1e3,u=this._model.timelineModel().maximumRecordTime()/1e3,p=this.width(),_=this.height()-c,g=p/(u-m),f=_-1;let v=0;const T=this.context(),w=_+c+1;T.translate(.5,.5),T.beginPath(),T.moveTo(-1,w),T.lineTo(-1,_-v);let S=null;for(const e of this._coverageModel.coverageUpdateTimes()){const t=r.get(e)||S;if(S=t,!t)continue;if(e>u)break;const i=(e-m)*g;v=t*f,T.lineTo(i,_-v)}const y="hsl(220, 90%, 70%)";T.lineTo(p+1,_-v),T.lineTo(p+1,w),T.closePath(),T.fillStyle="hsla(220, 90%, 70%, 0.2)",T.fill(),T.lineWidth=1,T.strokeStyle=y,T.stroke(),S=null;for(const e of this._coverageModel.coverageUpdateTimes()){const t=r.get(e)||S;if(S=t,!t)continue;T.beginPath();const i=(e-m)*g,n=_-t*f;T.arc(i,n,2,0,2*Math.PI,!1),T.closePath(),T.stroke(),T.fillStyle=r.has(e)?y:"hsl(0, 100%, 100%)",T.fill()}this._heapSizeLabel.textContent=d+"% used"}}var ot=Object.freeze({__proto__:null,TimelineEventOverview:Ke,TimelineEventOverviewInput:Ye,TimelineEventOverviewNetwork:Qe,TimelineEventOverviewCPUActivity:et,TimelineEventOverviewResponsiveness:tt,TimelineFilmStripOverview:it,TimelineEventOverviewFrames:nt,TimelineEventOverviewMemory:st,Quantizer:at,TimelineEventOverviewCoverage:rt});class lt extends W.TimelineModelFilter{constructor(){super(),this._minimumRecordDuration=0}setMinimumRecordDuration(e){this._minimumRecordDuration=e}accept(e){return(e.endTime?e.endTime-e.startTime:0)>=this._minimumRecordDuration}}class ht extends W.TimelineModelFilter{constructor(){super()}accept(e){return!Ri.eventStyle(e).category.hidden}}class dt extends W.TimelineModelFilter{constructor(e){super(),this._regExp,this.setRegExp(e||null)}setRegExp(e){this._regExp=e}regExp(){return this._regExp}accept(e){return!this._regExp||Ri.testContentMatching(e,this._regExp)}}var ct=Object.freeze({__proto__:null,IsLong:lt,Category:ht,TimelineRegExp:dt});class mt extends O.VBox{constructor(){super(),this._model=null,this._track=null,this._tree=null,this.element.classList.add("timeline-tree-view"),this._searchResults=[],this.linkifier,this.dataGrid,this._lastHoveredProfileNode,this._textFilter,this._taskFilter,this._startTime,this._endTime,this.splitWidget,this.detailsView,this._searchableView}static eventNameForSorting(e){if(e.name===U.RecordType.JSFrame){const t=e.args.data;return t.functionName+"@"+(t.scriptId||t.url||"")}return e.name+":@"+B.eventURL(e)}setSearchableView(e){this._searchableView=e}setModel(e,t){this._model=e,this._track=t,this.refreshTree()}getToolbarInputAccessiblePlaceHolder(){return""}model(){return this._model}init(){this.linkifier=new fe.Linkifier,this._taskFilter=new W.ExclusiveNameFilter([U.RecordType.Task]),this._textFilter=new dt,this._currentThreadSetting=p.Settings.instance().createSetting("timelineTreeCurrentThread",0),this._currentThreadSetting.addChangeListener(this.refreshTree,this);const e=[];this.populateColumns(e),this.splitWidget=new G.SplitWidget(!0,!0,"timelineTreeViewDetailsSplitWidget");const t=new O.VBox,i=new z.Toolbar("",t.element);this.populateToolbar(i),this.dataGrid=new Re.SortableDataGrid({displayName:R`Performance`,columns:e,refreshCallback:void 0,editCallback:void 0,deleteCallback:void 0}),this.dataGrid.addEventListener(Le.Events.SortingChanged,this._sortingChanged,this),this.dataGrid.element.addEventListener("mousemove",this._onMouseMove.bind(this),!0),this.dataGrid.setResizeMethod(Le.ResizeMethod.Last),this.dataGrid.setRowContextMenuCallback(this._onContextMenu.bind(this)),this.dataGrid.asWidget().show(t.element),this.dataGrid.addEventListener(Le.Events.SelectedNode,this._updateDetailsForSelection,this),this.detailsView=new O.VBox,this.detailsView.element.classList.add("timeline-details-view","timeline-details-view-body"),this.splitWidget.setMainWidget(t),this.splitWidget.setSidebarWidget(this.detailsView),this.splitWidget.hideSidebar(),this.splitWidget.show(this.element),this.splitWidget.addEventListener(G.Events.ShowModeChanged,this._onShowModeChanged,this),this._lastSelectedNode}lastSelectedNode(){return this._lastSelectedNode}updateContents(e){this.setRange(e.startTime(),e.endTime())}setRange(e,t){this._startTime=e,this._endTime=t,this.refreshTree()}filters(){return[this._taskFilter,this._textFilter,...this._model?this._model.filters():[]]}filtersWithoutTextFilter(){return[this._taskFilter,...this._model?this._model.filters():[]]}textFilter(){return this._textFilter}_exposePercentages(){return!1}populateToolbar(e){const t=new z.ToolbarInput(m.UIString("Filter"),this.getToolbarInputAccessiblePlaceHolder());t.addEventListener(z.ToolbarInput.Event.TextChanged,(()=>{const e=t.value();this._textFilter.setRegExp(e?createPlainTextSearchRegex(e,"i"):null),this.refreshTree()}),this),this._textFilterUI=t,e.appendToolbarItem(t)}_modelEvents(){return this._track?this._track.syncEvents():[]}_onHover(e){}_appendContextMenuItems(e,t){}_linkifyLocation(e){if(!this._model)return null;const t=this._model.timelineModel().targetByEvent(e);if(!t)return null;const i=B.eventStackFrame(e);return i?this.linkifier.maybeLinkifyConsoleCallFrame(t,i):null}selectProfileNode(e,t){const i=[];let n=e;for(;n;n=n.parent)i.push(n);for(let e=i.length-1;e>0;--e){const t=this.dataGridNodeForTreeNode(i[e]);t&&t.dataGrid&&t.expand()}const s=this.dataGridNodeForTreeNode(e);s&&s.dataGrid&&(s.reveal(),s.select(t))}refreshTree(){if(this.linkifier.reset(),this.dataGrid.rootNode().removeChildren(),!this._model)return void this._updateDetailsForSelection();this._root=this._buildTree();const e=this._root.children();let t=0,i=0;const n=this._root.totalTime-this._root.selfTime;for(const n of e.values())t=Math.max(t,n.selfTime),i=Math.max(i,n.totalTime);for(const s of e.values()){const e=new pt(s,n,t,i,this);this.dataGrid.insertChild(e)}this._sortingChanged(),this._updateDetailsForSelection(),this._searchableView&&this._searchableView.refreshSearch();const s=this.dataGrid.rootNode();s.children.length>0&&s.children[0].select(!0)}_buildTree(){throw new Error("Not Implemented")}buildTopDownTree(e,t){return new B.TopDownRootNode(this._modelEvents(),this.filters(),this._startTime,this._endTime,e,t)}populateColumns(e){e.push({id:"self",title:m.UIString("Self Time"),width:"120px",fixedWidth:!0,sortable:!0}),e.push({id:"total",title:m.UIString("Total Time"),width:"120px",fixedWidth:!0,sortable:!0}),e.push({id:"activity",title:m.UIString("Activity"),disclosure:!0,sortable:!0})}_sortingChanged(){const e=this.dataGrid.sortColumnId();if(!e)return;let t;switch(e){case"startTime":t=function(e,t){const i=t,n=e._profileNode.event,s=i._profileNode.event;return n.startTime-s.startTime};break;case"self":t=i.bind(null,"selfTime");break;case"total":t=i.bind(null,"totalTime");break;case"activity":t=function(e,t){const i=t,n=e._profileNode.event,s=i._profileNode.event,a=mt.eventNameForSorting(n),r=mt.eventNameForSorting(s);return a.localeCompare(r)};break;default:return void console.assert(!1,"Unknown sort field: "+e)}function i(e,t,i){const n=i;return t._profileNode[e]-n._profileNode[e]}this.dataGrid.sortNodes(t,!this.dataGrid.isSortOrderAscending())}_onShowModeChanged(){this.splitWidget.showMode()!==G.ShowMode.OnlyMain&&(this._lastSelectedNode=void 0,this._updateDetailsForSelection())}_updateDetailsForSelection(){const e=this.dataGrid.selectedNode?this.dataGrid.selectedNode._profileNode:null;if(e===this._lastSelectedNode)return;if(this._lastSelectedNode=e,this.splitWidget.showMode()===G.ShowMode.OnlyMain)return;if(this.detailsView.detachChildWidgets(),this.detailsView.element.removeChildren(),e&&this._showDetailsForNode(e))return;const t=this.detailsView.element.createChild("div","full-widget-dimmed-banner");H.createTextChild(t,m.UIString("Select item for details."))}_showDetailsForNode(e){return!1}_onMouseMove(e){const t=e.target&&e.target instanceof Node?this.dataGrid.dataGridNodeFromNode(e.target):null,i=t&&t._profileNode;i!==this._lastHoveredProfileNode&&(this._lastHoveredProfileNode=i,this._onHover(i))}_onContextMenu(e,t){const i=t;i._linkElement&&!e.containsTarget(i._linkElement)&&e.appendApplicableItems(i._linkElement);const n=i._profileNode;n&&this._appendContextMenuItems(e,n)}dataGridNodeForTreeNode(e){return _t.get(e)||null}searchCanceled(){this._searchResults=[],this._currentResult=0}performSearch(e,t,i){if(this._searchResults=[],this._currentResult=0,!this._root)return;const n=e.toSearchRegex();this._searchResults=this._root.searchTree((e=>Ri.testContentMatching(e,n))),this._searchableView.updateSearchMatchesCount(this._searchResults.length)}jumpToNextSearchResult(){this._searchResults.length&&(this.selectProfileNode(this._searchResults[this._currentResult],!1),this._currentResult=E.mod(this._currentResult+1,this._searchResults.length))}jumpToPreviousSearchResult(){this._searchResults.length&&(this.selectProfileNode(this._searchResults[this._currentResult],!1),this._currentResult=E.mod(this._currentResult-1,this._searchResults.length))}supportsCaseSensitiveSearch(){return!0}supportsRegexSearch(){return!0}}class ut extends Re.SortableDataGridNode{constructor(e,t,i,n,s){super(null,!1),this._populated=!1,this._profileNode=e,this._treeView=s,this._grandTotalTime=t,this._maxSelfTime=i,this._maxTotalTime=n,this._linkElement=null}createCell(e){return"activity"===e?this._createNameCell(e):this._createValueCell(e)||super.createCell(e)}_createNameCell(e){const t=this.createTD(e),i=t.createChild("div","name-container"),n=i.createChild("div","activity-icon-container"),s=n.createChild("div","activity-icon"),a=i.createChild("div","activity-name"),r=this._profileNode.event;if(this._profileNode.isGroupNode()){const e=this._treeView._displayInfoForGroupNode(this._profileNode);a.textContent=e.name,s.style.backgroundColor=e.color,e.icon&&n.insertBefore(e.icon,s)}else if(r){const e=r.args.data,t=e&&e.deoptReason;t&&(i.createChild("div","activity-warning").title=m.UIString("Not optimized: %s",t)),a.textContent=Ri.eventTitle(r),this._linkElement=this._treeView._linkifyLocation(r),this._linkElement&&i.createChild("div","activity-link").appendChild(this._linkElement);const n=Ri.eventStyle(r).category;j.setAccessibleName(s,n.title),s.style.backgroundColor=n.color}return t}_createValueCell(e){if("self"!==e&&"total"!==e&&"startTime"!==e)return null;let t,i,n,s=!1;switch(e){case"startTime":if(n=this._profileNode.event,!this._treeView._model)throw new Error("Unable to find model for tree view");t=(n?n.startTime:0)-this._treeView._model.timelineModel().minimumRecordTime();break;case"self":t=this._profileNode.selfTime,i=this._maxSelfTime,s=!0;break;case"total":t=this._profileNode.totalTime,i=this._maxTotalTime,s=!0;break;default:return null}const a=this.createTD(e);a.className="numeric-column";const r=a.createChild("div");return r.createChild("span").textContent=m.UIString("%.1f ms",t),s&&this._treeView._exposePercentages()&&(r.createChild("span","percent-column").textContent=m.UIString("%.1f %%",t/this._grandTotalTime*100)),i&&(r.classList.add("background-percent-bar"),a.createChild("div","background-bar-container").createChild("div","background-bar").style.width=(100*t/i).toFixed(1)+"%"),a}}class pt extends ut{constructor(e,t,i,n,s){super(e,t,i,n,s),this.setHasChildren(this._profileNode.hasChildren()),_t.set(e,this)}populate(){if(!this._populated&&(this._populated=!0,this._profileNode.children))for(const e of this._profileNode.children().values()){const t=new pt(e,this._grandTotalTime,this._maxSelfTime,this._maxTotalTime,this._treeView);this.insertChildOrdered(t)}}}pt._gridNodeSymbol=Symbol("treeGridNode");const _t=new WeakMap;class gt extends mt{constructor(){super(),this._groupBySetting=p.Settings.instance().createSetting("timelineTreeGroupBy",gt.GroupBy.None),this._groupBySetting.addChangeListener(this.refreshTree.bind(this)),this.init(),this._stackView=new Tt(this),this._stackView.addEventListener(Tt.Events.SelectionChanged,this._onStackViewSelectionChanged,this),this._productByURLCache=new Map,this._colorByURLCache=new Map,this._executionContextNamesByOrigin=new Map}setModel(e,t){super.setModel(e,t)}updateContents(e){this._updateExtensionResolver(),super.updateContents(e);const t=this.dataGrid.rootNode();t.children.length&&t.children[0].select(!0)}_updateExtensionResolver(){this._executionContextNamesByOrigin=new Map;for(const e of n.TargetManager.instance().models(a.RuntimeModel))for(const t of e.executionContexts())this._executionContextNamesByOrigin.set(t.origin,t.name)}_beautifyDomainName(e){return gt._isExtensionInternalURL(e)?e=m.UIString("[Chrome extensions overhead]"):gt._isV8NativeURL(e)?e=m.UIString("[V8 Runtime]"):e.startsWith("chrome-extension")&&(e=this._executionContextNamesByOrigin.get(e)||e),e}_displayInfoForGroupNode(e){const t=Ri.categories(),i=e.id?Ri.eventColor(e.event):t.other.color,n=m.UIString("[unattributed]"),s="symbol"==typeof e.id?void 0:e.id;switch(this._groupBySetting.get()){case gt.GroupBy.Category:{const e=s?t[s]||t.other:{title:n,color:n};return{name:e.title,color:e.color,icon:void 0}}case gt.GroupBy.Domain:case gt.GroupBy.Subdomain:return{name:(s?this._beautifyDomainName(s):void 0)||n,color:i,icon:void 0};case gt.GroupBy.EventName:if(!e.event)throw new Error("Unable to find event for group by operation");return{name:e.event.name===U.RecordType.JSFrame?m.UIString("JavaScript"):Ri.eventTitle(e.event),color:e.event.name===U.RecordType.JSFrame?Ri.eventStyle(e.event).category.color:i,icon:void 0};case gt.GroupBy.URL:break;case gt.GroupBy.Frame:{if(!this._model)throw new Error("Unable to find model for group by frame operation");const e=s?this._model.timelineModel().pageFrameById(s):void 0;return{name:e?Ri.displayNameForFrame(e,80):m.UIString("Page"),color:i,icon:void 0}}default:console.assert(!1,"Unexpected grouping type")}return{name:s||n,color:i,icon:void 0}}populateToolbar(e){super.populateToolbar(e);const t=gt.GroupBy,i=[{label:m.UIString("No Grouping"),value:t.None},{label:m.UIString("Group by Activity"),value:t.EventName},{label:m.UIString("Group by Category"),value:t.Category},{label:m.UIString("Group by Domain"),value:t.Domain},{label:m.UIString("Group by Frame"),value:t.Frame},{label:m.UIString("Group by Subdomain"),value:t.Subdomain},{label:m.UIString("Group by URL"),value:t.URL}];e.appendToolbarItem(new z.ToolbarSettingComboBox(i,this._groupBySetting,R`Group by`)),e.appendSpacer(),e.appendToolbarItem(this.splitWidget.createShowHideSidebarButton(m.UIString("heaviest stack")))}_buildHeaviestStack(e){console.assert(Boolean(e.parent),"Attempt to build stack for tree root");let t=[];for(let i=e;i&&i.parent;i=i.parent)t.push(i);t=t.reverse();for(let i=e;i&&i.children()&&i.children().size;){const e=Array.from(i.children().values());i=e.reduce(((e,t)=>e.totalTime>t.totalTime?e:t)),t.push(i)}return t}_exposePercentages(){return!0}_onStackViewSelectionChanged(){const e=this._stackView.selectedTreeNode();e&&this.selectProfileNode(e,!0)}_showDetailsForNode(e){const t=this._buildHeaviestStack(e);return this._stackView.setStack(t,e),this._stackView.show(this.detailsView.element),!0}_groupingFunction(e){const t=gt.GroupBy;switch(e){case t.None:return null;case t.EventName:return e=>Ri.eventStyle(e).title;case t.Category:return e=>Ri.eventStyle(e).category.name;case t.Subdomain:return this._domainByEvent.bind(this,!1);case t.Domain:return this._domainByEvent.bind(this,!0);case t.URL:return e=>B.eventURL(e)||"";case t.Frame:return e=>U.TimelineData.forEvent(e).frameId;default:return console.assert(!1,"Unexpected aggregation setting: "+e),null}}_domainByEvent(e,t){const i=B.eventURL(t);if(!i)return"";if(gt._isExtensionInternalURL(i))return gt._extensionInternalPrefix;if(gt._isV8NativeURL(i))return gt._v8NativePrefix;const n=_.ParsedURL.fromString(i);if(!n)return"";if("chrome-extension"===n.scheme)return n.scheme+"://"+n.host;if(!e)return n.host;if(/^[.0-9]+$/.test(n.host))return n.host;const s=/([^.]*\.)?[^.]*$/.exec(n.host);return s&&s[0]||""}_appendContextMenuItems(e,t){if(this._groupBySetting.get()!==gt.GroupBy.Frame)return;if(!t.isGroupNode())return;if(!this._model)return;const i=this._model.timelineModel().pageFrameById(t.id);i&&i.ownerNode&&e.appendApplicableItems(i.ownerNode)}static _isExtensionInternalURL(e){return e.startsWith(gt._extensionInternalPrefix)}static _isV8NativeURL(e){return e.startsWith(gt._v8NativePrefix)}}gt._extensionInternalPrefix="extensions::",gt._v8NativePrefix="native ",gt.GroupBy={None:"None",EventName:"EventName",Category:"Category",Domain:"Domain",Subdomain:"Subdomain",URL:"URL",Frame:"Frame"};class ft extends gt{constructor(){super(),this.dataGrid.markColumnAsSortedBy("total",Le.Order.Descending)}getToolbarInputAccessiblePlaceHolder(){return R`Filter call tree`}_buildTree(){const e=this._groupBySetting.get();return this.buildTopDownTree(!1,this._groupingFunction(e))}}class vt extends gt{constructor(){super(),this.dataGrid.markColumnAsSortedBy("self",Le.Order.Descending)}getToolbarInputAccessiblePlaceHolder(){return R`Filter bottom-up`}_buildTree(){return new B.BottomUpRootNode(this._modelEvents(),this.textFilter(),this.filtersWithoutTextFilter(),this._startTime,this._endTime,this._groupingFunction(this._groupBySetting.get()))}}class Tt extends O.VBox{constructor(e){super();this.element.createChild("div","timeline-stack-view-header").textContent=m.UIString("Heaviest stack"),this._treeView=e;const t=[{id:"total",title:m.UIString("Total Time"),fixedWidth:!0,width:"110px"},{id:"activity",title:m.UIString("Activity")}];this._dataGrid=new Ie.ViewportDataGrid({displayName:R`Timeline Stack`,columns:t,deleteCallback:void 0,editCallback:void 0,refreshCallback:void 0}),this._dataGrid.setResizeMethod(Le.ResizeMethod.Last),this._dataGrid.addEventListener(Le.Events.SelectedNode,this._onSelectionChanged,this),this._dataGrid.asWidget().show(this.element)}setStack(e,t){const i=this._dataGrid.rootNode();i.removeChildren();let n=null;const s=Math.max.apply(Math,e.map((e=>e.totalTime)));for(const a of e){const e=new ut(a,s,s,s,this._treeView);i.appendChild(e),a===t&&(n=e)}n&&n.revealAndSelect()}selectedTreeNode(){const e=this._dataGrid.selectedNode;return e&&e._profileNode}_onSelectionChanged(){this.dispatchEventToListeners(Tt.Events.SelectionChanged)}}Tt.Events={SelectionChanged:Symbol("SelectionChanged")};var wt=Object.freeze({__proto__:null,TimelineTreeView:mt,GridNode:ut,TreeGridNode:pt,AggregatedTimelineTreeView:gt,CallTreeTimelineTreeView:ft,BottomUpTimelineTreeView:vt,TimelineStackView:Tt});class St extends mt{constructor(e){super(),this._filtersControl=new yt,this._filtersControl.addEventListener(yt.Events.FilterChanged,this._onFilterChanged,this),this.init(),this._delegate=e,this.dataGrid.markColumnAsSortedBy("startTime",Le.Order.Ascending),this.splitWidget.showBoth(),this._currentTree}filters(){return[...super.filters(),...this._filtersControl.filters()]}updateContents(e){if(super.updateContents(e),e.type()===vi.Type.TraceEvent){const t=e.object();this._selectEvent(t,!0)}}getToolbarInputAccessiblePlaceHolder(){return R`Filter event log`}_buildTree(){return this._currentTree=this.buildTopDownTree(!0,null),this._currentTree}_onFilterChanged(){const e=this.lastSelectedNode(),t=e&&e.event;this.refreshTree(),t&&this._selectEvent(t,!1)}_findNodeWithEvent(e){const t=[this._currentTree.children().values()];for(;t.length;){const i=t[t.length-1].next();if(i.done){t.pop();continue}const n=i.value;if(n.event===e)return n;t.push(n.children().values())}return null}_selectEvent(e,t){const i=this._findNodeWithEvent(e);if(i&&(this.selectProfileNode(i,!1),t)){const e=this.dataGridNodeForTreeNode(i);e&&e.expand()}}populateColumns(e){e.push({id:"startTime",title:m.UIString("Start Time"),width:"80px",fixedWidth:!0,sortable:!0}),super.populateColumns(e),e.filter((e=>e.fixedWidth)).forEach((e=>{e.width="80px"}))}populateToolbar(e){super.populateToolbar(e),this._filtersControl.populateToolbar(e)}_showDetailsForNode(e){const t=e.event;if(!t)return!1;const i=this.model();return!!i&&(Ri.buildTraceEventDetails(t,i.timelineModel(),this.linkifier,!1).then((e=>this.detailsView.element.appendChild(e))),!0)}_onHover(e){this._delegate.highlightEvent(e&&e.event)}}class yt extends g.ObjectWrapper{constructor(){super(),this._categoryFilter=new ht,this._durationFilter=new lt,this._filters=[this._categoryFilter,this._durationFilter]}filters(){return this._filters}populateToolbar(e){const t=new z.ToolbarComboBox(function(){const e=t.selectedOption().value,i=parseInt(e,10);this._durationFilter.setMinimumRecordDuration(i),this._notifyFiltersChanged()}.bind(this),R`Duration filter`);for(const e of yt._durationFilterPresetsMs)t.addOption(t.createOption(e?m.UIString("≥ %d ms",e):m.UIString("All"),String(e)));e.appendToolbarItem(t);const i=new Map,n=Ri.categories();for(const t in n){const a=n[t];if(!a.visible)continue;const r=new z.ToolbarCheckbox(a.title,void 0,s.bind(this,t));r.setChecked(!0),r.inputElement.style.backgroundColor=a.color,i.set(a.name,r),e.appendToolbarItem(r)}function s(e){const t=Ri.categories(),n=i.get(e);t[e].hidden=!n||!n.checked(),this._notifyFiltersChanged()}}_notifyFiltersChanged(){this.dispatchEventToListeners(yt.Events.FilterChanged)}}yt._durationFilterPresetsMs=[0,1,15],yt.Events={FilterChanged:Symbol("FilterChanged")};var bt=Object.freeze({__proto__:null,EventsTimelineTreeView:St,Filters:yt});class Ct extends G.SplitWidget{constructor(e,t){super(!0,!1,"timelineLayersView"),this._model=e,this._showPaintProfilerCallback=t,this.element.classList.add("timeline-layers-view"),this._rightSplitWidget=new G.SplitWidget(!0,!0,"timelineLayersViewDetails"),this._rightSplitWidget.element.classList.add("timeline-layers-view-properties"),this.setMainWidget(this._rightSplitWidget);const i=new O.VBox;this.setSidebarWidget(i),this._layerViewHost=new Fe.LayerViewHost;const n=new De.LayerTreeOutline(this._layerViewHost);i.element.appendChild(n.element),this._layers3DView=new Ne.Layers3DView(this._layerViewHost),this._layers3DView.addEventListener(Ne.Events.PaintProfilerRequested,this._onPaintProfilerRequested,this),this._rightSplitWidget.setMainWidget(this._layers3DView);const s=new Ue.LayerDetailsView(this._layerViewHost);this._rightSplitWidget.setSidebarWidget(s),s.addEventListener(Ue.Events.PaintProfilerRequested,this._onPaintProfilerRequested,this)}showLayerTree(e){this._frameLayerTree=e,this.isShowing()?this._update():this._updateWhenVisible=!0}wasShown(){this._updateWhenVisible&&(this._updateWhenVisible=!1,this._update())}_onPaintProfilerRequested(e){const t=e.data;this._layers3DView.snapshotForSelection(t).then((e=>{e&&this._showPaintProfilerCallback(e.snapshot)}))}_update(){this._frameLayerTree&&this._frameLayerTree.layerTreePromise().then((e=>this._layerViewHost.setLayerTree(e)))}}var xt=Object.freeze({__proto__:null,TimelineLayersView:Ct});class kt extends G.SplitWidget{constructor(e){super(!1,!1),this.element.classList.add("timeline-paint-profiler-view"),this.setSidebarSize(60),this.setResizable(!1),this._frameModel=e,this._logAndImageSplitWidget=new G.SplitWidget(!0,!1),this._logAndImageSplitWidget.element.classList.add("timeline-paint-profiler-log-split"),this.setMainWidget(this._logAndImageSplitWidget),this._imageView=new Mt,this._logAndImageSplitWidget.setMainWidget(this._imageView),this._paintProfilerView=new We.PaintProfilerView(this._imageView.showImage.bind(this._imageView)),this._paintProfilerView.addEventListener(We.Events.WindowChanged,this._onWindowChanged,this),this.setSidebarWidget(this._paintProfilerView),this._logTreeView=new We.PaintProfilerCommandLogView,this._logAndImageSplitWidget.setSidebarWidget(this._logTreeView),this._needsUpdateWhenVisible=!1,this._pendingSnapshot=null,this._event=null,this._paintProfilerModel=null,this._lastLoadedSnapshot=null}wasShown(){this._needsUpdateWhenVisible&&(this._needsUpdateWhenVisible=!1,this._update())}setSnapshot(e){this._releaseSnapshot(),this._pendingSnapshot=e,this._event=null,this._updateWhenVisible()}setEvent(e,t){return this._releaseSnapshot(),this._paintProfilerModel=e,this._pendingSnapshot=null,this._event=t,this._updateWhenVisible(),this._event.name===U.RecordType.Paint?Boolean(U.TimelineData.forEvent(t).picture):this._event.name===U.RecordType.RasterTask&&this._frameModel.hasRasterTile(this._event)}_updateWhenVisible(){this.isShowing()?this._update():this._needsUpdateWhenVisible=!0}_update(){let e;if(this._logTreeView.setCommandLog([]),this._paintProfilerView.setSnapshotAndLog(null,[],null),this._pendingSnapshot)e=Promise.resolve({rect:null,snapshot:this._pendingSnapshot});else if(this._event&&this._event.name===U.RecordType.Paint){e=U.TimelineData.forEvent(this._event).picture.objectPromise().then((e=>this._paintProfilerModel.loadSnapshot(e.skp64))).then((e=>e&&{rect:null,snapshot:e}))}else{if(!this._event||this._event.name!==U.RecordType.RasterTask)return void console.assert(!1,"Unexpected event type or no snapshot");e=this._frameModel.rasterTilePromise(this._event)}function t(e,t,i){this._logTreeView.setCommandLog(i||[]),this._paintProfilerView.setSnapshotAndLog(e,i||[],t)}e.then((e=>{if(this._releaseSnapshot(),!e)return void this._imageView.showImage();const i=e.snapshot;this._lastLoadedSnapshot=i,this._imageView.setMask(e.rect),i.commandLog().then((n=>t.call(this,i,e.rect,n||[])))}))}_releaseSnapshot(){this._lastLoadedSnapshot&&(this._lastLoadedSnapshot.release(),this._lastLoadedSnapshot=null)}_onWindowChanged(){this._logTreeView.updateWindow(this._paintProfilerView.selectionWindow())}}class Mt extends O.Widget{constructor(){super(!0),this.registerRequiredCSS("timeline/timelinePaintProfiler.css",{enableLegacyPatching:!0}),this.contentElement.classList.add("fill","paint-profiler-image-view"),this._imageContainer=this.contentElement.createChild("div","paint-profiler-image-container"),this._imageElement=this._imageContainer.createChild("img"),this._maskElement=this._imageContainer.createChild("div"),this._imageElement.addEventListener("load",this._updateImagePosition.bind(this),!1),this._transformController=new Be.TransformController(this.contentElement,!0),this._transformController.addEventListener(Be.Events.TransformChanged,this._updateImagePosition,this)}onResize(){this._imageElement.src&&this._updateImagePosition()}_updateImagePosition(){const e=this._imageElement.naturalWidth,t=this._imageElement.naturalHeight,i=this.contentElement.clientWidth,n=this.contentElement.clientHeight,s=.1*i,a=.1*n,r=(i-s)/e,o=(n-a)/t,l=Math.min(r,o);if(this._maskRectangle){const i=this._maskElement.style;i.width=e+"px",i.height=t+"px",i.borderLeftWidth=this._maskRectangle.x+"px",i.borderTopWidth=this._maskRectangle.y+"px",i.borderRightWidth=e-this._maskRectangle.x-this._maskRectangle.width+"px",i.borderBottomWidth=t-this._maskRectangle.y-this._maskRectangle.height+"px"}this._transformController.setScaleConstraints(.5,10/l);let h=(new WebKitCSSMatrix).scale(this._transformController.scale(),this._transformController.scale()).translate(i/2,n/2).scale(l,l).translate(-e/2,-t/2);const d=q.boundsForTransformedPoints(h,[0,0,0,e,t,0]);this._transformController.clampOffsets(s-d.maxX,i-s-d.minX,a-d.maxY,n-a-d.minY),h=(new WebKitCSSMatrix).translate(this._transformController.offsetX(),this._transformController.offsetY()).multiply(h),this._imageContainer.style.webkitTransform=h.toString()}showImage(e){this._imageContainer.classList.toggle("hidden",!e),e&&(this._imageElement.src=e)}setMask(e){this._maskRectangle=e,this._maskElement.classList.toggle("hidden",!e)}}var Pt=Object.freeze({__proto__:null,TimelinePaintProfilerView:kt,TimelinePaintImageView:Mt});class Et extends O.VBox{constructor(e){super(),this.element.classList.add("timeline-details"),this._detailsLinkifier=new fe.Linkifier,this._tabbedPane=new X.TabbedPane,this._tabbedPane.show(this.element);const t=Rt;this._defaultDetailsWidget=new O.VBox,this._defaultDetailsWidget.element.classList.add("timeline-details-view"),this._defaultDetailsContentElement=this._defaultDetailsWidget.element.createChild("div","timeline-details-view-body vbox"),this._appendTab(t.Details,m.UIString("Summary"),this._defaultDetailsWidget),this.setPreferredTab(t.Details),this._rangeDetailViews=new Map;const i=new vt;this._appendTab(t.BottomUp,m.UIString("Bottom-Up"),i),this._rangeDetailViews.set(t.BottomUp,i);const n=new ft;this._appendTab(t.CallTree,m.UIString("Call Tree"),n),this._rangeDetailViews.set(t.CallTree,n);const s=new St(e);this._appendTab(t.EventLog,m.UIString("Event Log"),s),this._rangeDetailViews.set(t.EventLog,s),this._additionalMetricsToolbar=new z.Toolbar("timeline-additional-metrics"),this.element.appendChild(this._additionalMetricsToolbar.element),this._tabbedPane.addEventListener(X.Events.TabSelected,this._tabSelected,this),this._model}setModel(e,t){this._model!==e&&(this._model&&this._model.removeEventListener(Oi.WindowChanged,this._onWindowChanged,this),this._model=e,this._model&&this._model.addEventListener(Oi.WindowChanged,this._onWindowChanged,this)),this._track=t,this._tabbedPane.closeTabs([Rt.PaintProfiler,Rt.LayerViewer],!1);for(const i of this._rangeDetailViews.values())i.setModel(e,t);if(this._lazyPaintProfilerView=null,this._lazyLayersView=null,this.setSelection(null),this._additionalMetricsToolbar.removeToolbarItems(),e&&e.timelineModel()){const{estimated:t,time:i}=e.timelineModel().totalBlockingTime(),n=t?` (${R`estimated`})`:"",s=R`Total blocking time: ${i.toFixed(2)}ms${n}`,a=document.createElement("span"),r=H.createWebDevLink("tbt/",R`Learn more`);r.style.marginRight="2px",a.appendChild(H.formatLocalized("%s",[r])),this._additionalMetricsToolbar.appendText(s),this._additionalMetricsToolbar.appendToolbarItem(new z.ToolbarItem(a))}}_setContent(e){const t=this._tabbedPane.otherTabs(Rt.Details);for(let e=0;e<t.length;++e)this._rangeDetailViews.has(t[e])||this._tabbedPane.closeTab(t[e]);this._defaultDetailsContentElement.removeChildren(),this._defaultDetailsContentElement.appendChild(e)}_updateContents(){const e=this._rangeDetailViews.get(this._tabbedPane.selectedTabId||"");if(e){const t=this._model.window();e.updateContents(this._selection||vi.fromRange(t.left,t.right))}}_appendTab(e,t,i,n){this._tabbedPane.appendTab(e,t,i,void 0,void 0,n),this._preferredTabId!==this._tabbedPane.selectedTabId&&this._tabbedPane.selectTab(e)}headerElement(){return this._tabbedPane.headerElement()}setPreferredTab(e){this._preferredTabId=e}_onWindowChanged(e){this._selection||this._updateContentsFromWindow()}_updateContentsFromWindow(){if(!this._model)return void this._setContent($.html`<div/>`);const e=this._model.window();this._updateSelectedRangeStats(e.left,e.right),this._updateContents()}setSelection(e){if(this._detailsLinkifier.reset(),this._selection=e,this._selection){switch(this._selection.type()){case vi.Type.TraceEvent:{const e=this._selection.object();Ri.buildTraceEventDetails(e,this._model.timelineModel(),this._detailsLinkifier,!0).then((t=>this._appendDetailsTabsForTraceEventAndShowDetails(e,t)));break}case vi.Type.Frame:{const e=this._selection.object(),t=this._model.filmStripModelFrame(e);if(this._setContent(Ri.generateDetailsContentForFrame(e,t)),e.layerTree){const t=this._layersView();t.showLayerTree(e.layerTree),this._tabbedPane.hasTab(Rt.LayerViewer)||this._appendTab(Rt.LayerViewer,m.UIString("Layers"),t)}break}case vi.Type.NetworkRequest:{const e=this._selection.object();Ri.buildNetworkRequestDetails(e,this._model.timelineModel(),this._detailsLinkifier).then(this._setContent.bind(this));break}case vi.Type.Range:this._updateSelectedRangeStats(this._selection.startTime(),this._selection.endTime())}this._updateContents()}else this._updateContentsFromWindow()}_tabSelected(e){e.data.isUserGesture&&(this.setPreferredTab(e.data.tabId),this._updateContents())}_layersView(){return this._lazyLayersView||(this._lazyLayersView=new Ct(this._model.timelineModel(),this._showSnapshotInPaintProfiler.bind(this))),this._lazyLayersView}_paintProfilerView(){return this._lazyPaintProfilerView||(this._lazyPaintProfilerView=new kt(this._model.frameModel())),this._lazyPaintProfilerView}_showSnapshotInPaintProfiler(e){const t=this._paintProfilerView();t.setSnapshot(e),this._tabbedPane.hasTab(Rt.PaintProfiler)||this._appendTab(Rt.PaintProfiler,m.UIString("Paint Profiler"),t,!0),this._tabbedPane.selectTab(Rt.PaintProfiler,!0)}_appendDetailsTabsForTraceEventAndShowDetails(e,t){this._setContent(t),e.name!==U.RecordType.Paint&&e.name!==U.RecordType.RasterTask||this._showEventInPaintProfiler(e)}_showEventInPaintProfiler(e){const t=n.TargetManager.instance().models(r.PaintProfilerModel)[0];if(!t)return;const i=this._paintProfilerView();i.setEvent(t,e)&&(this._tabbedPane.hasTab(Rt.PaintProfiler)||this._appendTab(Rt.PaintProfiler,m.UIString("Paint Profiler"),i))}_updateSelectedRangeStats(e,t){if(!this._model||!this._track)return;const i=Ri.statsForTimeRange(this._track.syncEvents(),e,t),n=e-this._model.timelineModel().minimumRecordTime(),s=t-this._model.timelineModel().minimumRecordTime(),a=new Bi(null,null);a.addSection(R`Range: ${Number.millisToString(n)} \u2013 ${Number.millisToString(s)}`);const r=Ri.generatePieChart(i);a.appendElementRow("",r),this._setContent(a.fragment)}}const Rt={Details:"Details",EventLog:"EventLog",CallTree:"CallTree",BottomUp:"BottomUp",PaintProfiler:"PaintProfiler",LayerViewer:"LayerViewer"};var Lt=Object.freeze({__proto__:null,TimelineDetailsView:Et,Tab:Rt});class It extends g.ObjectWrapper{constructor(){super(),this.reset(),this._font="11px "+ye.fontFamily(),this._timelineData=null,this._currentLevel=0,this._performanceModel=null,this._model=null,this._minimumBoundary=0,this._maximumBoundary=0,this._timeSpan=0,this._consoleColorGenerator=new f.Generator({min:30,max:55,count:void 0},{min:70,max:100,count:6},50,.7),this._extensionColorGenerator=new f.Generator({min:210,max:300,count:void 0},{min:70,max:100,count:6},70,.7),this._headerLevel1=this._buildGroupStyle({shareHeaderLine:!1}),this._headerLevel2=this._buildGroupStyle({padding:2,nestingLevel:1,collapsible:!1}),this._staticHeader=this._buildGroupStyle({collapsible:!1}),this._framesHeader=this._buildGroupStyle({useFirstLineForOverview:!0}),this._collapsibleTimingsHeader=this._buildGroupStyle({shareHeaderLine:!0,useFirstLineForOverview:!0,collapsible:!0}),this._timingsHeader=this._buildGroupStyle({shareHeaderLine:!0,useFirstLineForOverview:!0,collapsible:!1}),this._screenshotsHeader=this._buildGroupStyle({useFirstLineForOverview:!0,nestingLevel:1,collapsible:!1,itemsHeight:150}),this._interactionsHeaderLevel1=this._buildGroupStyle({useFirstLineForOverview:!0}),this._interactionsHeaderLevel2=this._buildGroupStyle({padding:2,nestingLevel:1}),this._experienceHeader=this._buildGroupStyle({collapsible:!1}),this._flowEventIndexById=new Map,this._entryData,this._entryTypeByLevel,this._markers,this._asyncColorByInteractionPhase,this._screenshotImageCache,this._extensionInfo,this._entryIndexToTitle,this._asyncColorByCategory,this._lastInitiatorEntry,this._entryParent}_buildGroupStyle(e){const t={padding:4,height:17,collapsible:!0,color:Ve.instance().patchColorText("#222",Ve.ColorUsage.Foreground),backgroundColor:Ve.instance().patchColorText("white",Ve.ColorUsage.Background),font:this._font,nestingLevel:0,shareHeaderLine:!0};return Object.assign(t,e)}setModel(e){this.reset(),this._performanceModel=e,this._model=e&&e.timelineModel()}groupTrack(e){return e.track||null}navStartTimes(){return this._model?this._model.navStartTimes():new Map}entryTitle(e){const i=Wt,n=this._entryType(e);if(n===i.Event){const i=this._entryData[e];return i.phase===t.Phase.AsyncStepInto||i.phase===t.Phase.AsyncStepPast?i.name+":"+i.args.step:Dt.get(i)?m.UIString("On ignore list"):this._performanceModel&&this._performanceModel.timelineModel().isMarkerEvent(i)?Ri.markerShortTitle(i):Ri.eventTitle(i)}if(n===i.ExtensionEvent){return this._entryData[e].name}if(n===i.Screenshot)return"";let s=this._entryIndexToTitle[e];return s||(s=m.UIString("Unexpected entryIndex %d",e),console.error(s)),s}textColor(e){const t=this._entryData[e];return t&&Dt.get(t)?"#888":Yt.textColor}entryFont(e){return this._font}reset(){this._currentLevel=0,this._timelineData=null,this._entryData=[],this._entryParent=[],this._entryTypeByLevel=[],this._entryIndexToTitle=[],this._markers=[],this._asyncColorByCategory=new Map,this._asyncColorByInteractionPhase=new Map,this._extensionInfo=[],this._screenshotImageCache=new Map}maxStackDepth(){return this._currentLevel}timelineData(){return this._timelineData?this._timelineData:(this._timelineData=new S.TimelineData([],[],[],[]),this._model?(this._flowEventIndexById.clear(),this._minimumBoundary=this._model.minimumRecordTime(),this._timeSpan=this._model.isEmpty()?1e3:this._model.maximumRecordTime()-this._minimumBoundary,this._currentLevel=0,this._model.isGenericTrace()?this._processGenericTrace():this._processInspectorTrace(),this._timelineData):this._timelineData)}_processGenericTrace(){const e=this._buildGroupStyle({shareHeaderLine:!1}),t=this._buildGroupStyle({padding:2,nestingLevel:1,shareHeaderLine:!1}),i=Wt.Event,n=new P.Multimap;if(this._model){for(const e of this._model.tracks())null!==e.thread?n.set(e.thread.process(),e):console.error("Failed to process track");for(const s of n.keysArray()){if(n.size>1){const t=`${s.name()} ${s.id()}`;this._appendHeader(t,e,!1)}for(const e of n.get(s)){const n=this._appendSyncEvents(e,e.events,e.name,t,i,!0);!this._timelineData||this._timelineData.selectedGroup&&e.name!==U.TimelineModelImpl.BrowserMainThreadName||(this._timelineData.selectedGroup=n)}}}}_processInspectorTrace(){this._appendFrames(),this._appendInteractionRecords();const e=Wt.Event,t=e=>{switch(e.type){case U.TrackType.Input:return 0;case U.TrackType.Animation:return 1;case U.TrackType.Timings:return 2;case U.TrackType.Console:return 3;case U.TrackType.Experience:return 4;case U.TrackType.MainThread:return e.forMainFrame?5:6;case U.TrackType.Worker:return 7;case U.TrackType.Raster:return 8;case U.TrackType.GPU:return 9;case U.TrackType.Other:return 10;default:return-1}};if(!this._model)return;const i=this._model.tracks().slice();i.sort(((e,i)=>t(e)-t(i)));let n=0;for(const t of i)switch(t.type){case U.TrackType.Input:this._appendAsyncEventsGroup(t,R`Input`,t.asyncEvents,this._interactionsHeaderLevel2,e,!1);break;case U.TrackType.Animation:this._appendAsyncEventsGroup(t,R`Animation`,t.asyncEvents,this._interactionsHeaderLevel2,e,!1);break;case U.TrackType.Timings:{const i=t.asyncEvents.length>0?this._collapsibleTimingsHeader:this._timingsHeader;this._appendHeader(R`Timings`,i,!0).track=t,this._appendPageMetrics(),this._copyPerfMarkEvents(t),this._appendSyncEvents(t,t.events,null,null,e,!0),this._appendAsyncEventsGroup(t,null,t.asyncEvents,null,e,!0);break}case U.TrackType.Console:this._appendAsyncEventsGroup(t,R`Console`,t.asyncEvents,this._headerLevel1,e,!0);break;case U.TrackType.MainThread:if(t.forMainFrame){const i=this._appendSyncEvents(t,t.events,t.url?R`Main \u2014 ${t.url}`:R`Main`,this._headerLevel1,e,!0);i&&this._timelineData&&(this._timelineData.selectedGroup=i)}else this._appendSyncEvents(t,t.events,t.url?R`Frame \u2014 ${t.url}`:R`Subframe`,this._headerLevel1,e,!0);break;case U.TrackType.Worker:this._appendSyncEvents(t,t.events,t.name,this._headerLevel1,e,!0);break;case U.TrackType.Raster:n||this._appendHeader(R`Raster`,this._headerLevel1,!1),++n,this._appendSyncEvents(t,t.events,R`Rasterizer Thread ${n}`,this._headerLevel2,e,!0);break;case U.TrackType.GPU:this._appendSyncEvents(t,t.events,R`GPU`,this._headerLevel1,e,!0);break;case U.TrackType.Other:this._appendSyncEvents(t,t.events,t.name||R`Thread`,this._headerLevel1,e,!0),this._appendAsyncEventsGroup(t,t.name,t.asyncEvents,this._headerLevel1,e,!0);break;case U.TrackType.Experience:this._appendSyncEvents(t,t.events,R`Experience`,this._experienceHeader,e,!0)}this._timelineData&&this._timelineData.selectedGroup&&(this._timelineData.selectedGroup.expanded=!0);for(let e=0;e<this._extensionInfo.length;e++)this._innerAppendExtensionEvents(e);this._markers.sort(((e,t)=>e.startTime()-t.startTime())),this._timelineData&&(this._timelineData.markers=this._markers),this._flowEventIndexById.clear()}minimumBoundary(){return this._minimumBoundary}totalTime(){return this._timeSpan}search(e,i,n){const s=[],a=Wt;this.timelineData();for(let t=0;t<this._entryData.length;++t){if(this._entryType(t)!==a.Event)continue;const r=this._entryData[t];r.startTime>i||((r.endTime||r.startTime)<e||n.accept(r)&&s.push(t))}return s.sort(((e,i)=>t.Event.compareStartTime(this._entryData[e],this._entryData[i]))),s}_appendSyncEvents(e,i,n,s,a,r){if(!i.length)return null;if(!this._performanceModel||!this._model)return null;const o=a===Wt.ExtensionEvent,l=[],h=!o&&Me.experiments.isEnabled("blackboxJSFramesOnTimeline");let d=0,c=null;e&&e.type===U.TrackType.MainThread&&(c=this._appendHeader(n,s,r),c.track=e);for(let a=0;a<i.length;++a){const m=i[a];if(this._performanceModel){const t=this._performanceModel.timelineModel().isInteractiveTimeEvent(m),i=this._performanceModel.timelineModel().isLayoutShiftEvent(m),n=t||i;if(e&&e.type===U.TrackType.MainThread&&n)continue}if(this._performanceModel&&this._performanceModel.timelineModel().isLayoutShiftEvent(m))for(const e of this._performanceModel.frames()){void 0===m.endTime&&m.setEndTime(m.startTime);const t=m.startTime>=e.startTime,i=m.endTime&&m.endTime<=e.endTime;t&&i&&(m.startTime=e.startTime,m.setEndTime(e.endTime))}if(!o&&this._performanceModel.timelineModel().isMarkerEvent(m)&&this._markers.push(new Qt(m.startTime,m.startTime-this._model.minimumRecordTime(),Ri.markerStyleForEvent(m))),!t.TracingModel.isFlowPhase(m.phase)){if(!m.endTime&&m.phase!==t.Phase.Instant)continue;if(t.TracingModel.isAsyncPhase(m.phase))continue;if(!o&&!this._performanceModel.isVisible(m))continue}for(;l.length&&l[l.length-1].endTime<=m.startTime;)l.pop();if(Dt.set(m,!1),h&&this._isIgnoreListedEvent(m)){const e=l[l.length-1];if(e&&Dt.get(e))continue;Dt.set(m,!0)}!c&&n&&(c=this._appendHeader(n,s,r),r&&(c.track=e));const u=this._currentLevel+l.length,p=this._appendEvent(m,u);l.length&&(this._entryParent[p]=l[l.length-1]),!o&&this._performanceModel.timelineModel().isMarkerEvent(m)&&(this._timelineData.entryTotalTimes[this._entryData.length]=void 0),d=Math.max(d,l.length+1),m.endTime&&l.push(m)}return this._entryTypeByLevel.length=this._currentLevel+d,this._entryTypeByLevel.fill(a,this._currentLevel),this._currentLevel+=d,c}_isIgnoreListedEvent(e){if(e.name!==U.RecordType.JSFrame)return!1;const t=e.args.data.url;return t&&this._isIgnoreListedURL(t)}_isIgnoreListedURL(e){return pe.IgnoreListManager.instance().isIgnoreListedURL(e)}_appendAsyncEventsGroup(e,t,i,n,s,a){if(!i.length)return null;const r=[];let o=null;for(let s=0;s<i.length;++s){const l=i[s];if(!this._performanceModel||!this._performanceModel.isVisible(l))continue;!o&&t&&(o=this._appendHeader(t,n,a),a&&(o.track=e));const h=l.startTime;let d;for(d=0;d<r.length&&r[d]>h;++d);this._appendAsyncEvent(l,this._currentLevel+d),r[d]=l.endTime}return this._entryTypeByLevel.length=this._currentLevel+r.length,this._entryTypeByLevel.fill(s,this._currentLevel),this._currentLevel+=r.length,o}_appendInteractionRecords(){if(!this._performanceModel)return;const e=this._performanceModel.interactionRecords();if(e.length){this._appendHeader(R`Interactions`,this._interactionsHeaderLevel1,!1);for(const t of e){const e=this._entryData.length;this._entryData.push(t.data),this._entryIndexToTitle[e]=t.data,this._timelineData&&(this._timelineData.entryLevels[e]=this._currentLevel,this._timelineData.entryTotalTimes[e]=t.end-t.begin,this._timelineData.entryStartTimes[e]=t.begin)}this._entryTypeByLevel[this._currentLevel++]=Wt.InteractionRecord}}_appendPageMetrics(){if(this._entryTypeByLevel[this._currentLevel]=Wt.Event,!this._performanceModel||!this._model)return;const e=[],i=[],n=this._performanceModel.timelineModel();for(const t of this._model.tracks())for(const s of t.events)n.isMarkerEvent(s)&&(n.isLCPCandidateEvent(s)||n.isLCPInvalidateEvent(s)?i.push(s):e.push(s));if(i.length>0){const t=new Map;for(const e of i){const i=e.args.data.navigationId,n=t.get(i);(!n||n.args.data.candidateIndex<e.args.data.candidateIndex)&&t.set(i,e)}const s=Array.from(t.values()).filter((e=>n.isLCPCandidateEvent(e)));e.push(...s)}if(e.sort(t.Event.compareStartTime),this._timelineData){const t=this._timelineData.entryTotalTimes;for(const i of e)this._appendEvent(i,this._currentLevel),t[t.length-1]=Number.NaN}++this._currentLevel}_copyPerfMarkEvents(e){if(this._entryTypeByLevel[this._currentLevel]=Wt.Event,!this._performanceModel||!this._model||!e)return;const i=this._performanceModel.timelineModel(),n=["workerStart","redirectStart","redirectEnd","fetchStart","domainLookupStart","domainLookupEnd","connectStart","connectEnd","secureConnectionStart","requestStart","responseStart","responseEnd","navigationStart","unloadEventStart","unloadEventEnd","redirectStart","redirectEnd","fetchStart","domainLookupStart","domainLookupEnd","connectStart","connectEnd","secureConnectionStart","requestStart","responseStart","responseEnd","domLoading","domInteractive","domContentLoadedEventStart","domContentLoadedEventEnd","domComplete","loadEventStart","loadEventEnd"];for(const s of this._model.tracks())if(s.type===U.TrackType.MainThread)for(const a of s.events)if(i.isUserTimingEvent(a)){if(n.includes(a.name))continue;if(t.TracingModel.isAsyncPhase(a.phase))continue;a.setEndTime(a.startTime),e.events.push(a)}++this._currentLevel}_appendFrames(){if(!this._performanceModel||!this._timelineData||!this._model)return;const e=this._performanceModel.filmStripModel().frames(),t=Boolean(e.length);this._framesHeader.collapsible=t,this._appendHeader(m.UIString("Frames"),this._framesHeader,!1),this._frameGroup=this._timelineData.groups[this._timelineData.groups.length-1];const i=Ri.markerStyleForFrame();this._entryTypeByLevel[this._currentLevel]=Wt.Frame;for(const e of this._performanceModel.frames())this._markers.push(new Qt(e.startTime,e.startTime-this._model.minimumRecordTime(),i)),this._appendFrame(e);if(++this._currentLevel,!t)return;let n;this._appendHeader("",this._screenshotsHeader,!1),this._entryTypeByLevel[this._currentLevel]=Wt.Screenshot;for(const t of e)this._entryData.push(t),this._timelineData.entryLevels.push(this._currentLevel),this._timelineData.entryStartTimes.push(t.timestamp),n&&this._timelineData.entryTotalTimes.push(t.timestamp-n),n=t.timestamp;e.length&&void 0!==n&&this._timelineData.entryTotalTimes.push(this._model.maximumRecordTime()-n),++this._currentLevel}_entryType(e){return this._entryTypeByLevel[this._timelineData.entryLevels[e]]}prepareHighlightedEntryInfo(e){let t,i,n="",s="timeline-info-time";const a=this._entryType(e);if(a===Wt.Event){const s=this._entryData[e],a=s.duration,r=s.selfTime,o=1e-6;if("number"==typeof a&&(n=Math.abs(a-r)>o&&r>o?m.UIString("%s (self %s)",Number.millisToString(a,!0),Number.millisToString(r,!0)):Number.millisToString(a,!0)),t=this._performanceModel&&this._performanceModel.timelineModel().isMarkerEvent(s)?Ri.eventTitle(s):this.entryTitle(e),i=Ri.eventWarning(s),this._model&&this._model.isLayoutShiftEvent(s)){n=R`Occurrences: ${1}`}if(this._model&&this._model.isParseHTMLEvent(s)){const e=s.args.beginData.startLine,i=s.args.endData&&s.args.endData.endLine;t+=` - ${_e.displayNameForURL(s.args.beginData.url)} [${-1!==i||i===e?`${e}...${i}`:e}]`}}else{if(a!==Wt.Frame)return null;{const a=this._entryData[e];n=m.UIString("%s ~ %.0f fps",Number.preciseMillisToString(a.duration,1),1e3/a.duration),a.idle?t=m.UIString("Idle Frame"):a.dropped?(t=m.UIString("Dropped Frame"),s="timeline-info-warning"):t=m.UIString("Frame"),a.hasWarnings()&&(i=document.createElement("span"),i.textContent=m.UIString("Long frame"))}}const r=document.createElement("div"),o=J.createShadowRootWithCoreStyles(r,{cssFile:"timeline/timelineFlamechartPopover.css",enableLegacyPatching:!0,delegatesFocus:void 0}).createChild("div","timeline-flamechart-popover");return o.createChild("span",s).textContent=n,o.createChild("span","timeline-info-title").textContent=t,i&&(i.classList.add("timeline-info-warning"),o.appendChild(i)),r}entryColor(e){function i(e,t,i){let n=e.get(t);if(n)return n;const s=f.Color.parse(i(t));if(!s)throw new Error("Could not parse color from entry");return n=s.setAlpha(.7).asString(f.Format.RGBA)||"",e.set(t,n),n}if(!this._performanceModel||!this._model)return"";const n=Wt,s=this._entryType(e);if(s===n.Event){const n=this._entryData[e];if(this._model.isGenericTrace())return this._genericTraceEventColor(n);if(this._performanceModel.timelineModel().isMarkerEvent(n))return Ri.markerStyleForEvent(n).color;if(!t.TracingModel.isAsyncPhase(n.phase)&&this._colorForEvent)return this._colorForEvent(n);if(n.hasCategory(U.TimelineModelImpl.Category.Console)||n.hasCategory(U.TimelineModelImpl.Category.UserTiming))return this._consoleColorGenerator.colorForID(n.name);if(n.hasCategory(U.TimelineModelImpl.Category.LatencyInfo)){const e=V.TimelineIRModel.phaseForEvent(n)||V.Phases.Uncategorized;return i(this._asyncColorByInteractionPhase,e,Ri.interactionPhaseColor)}const s=Ri.eventStyle(n).category;return i(this._asyncColorByCategory,s,(()=>s.color))}if(s===n.Frame)return"white";if(s===n.InteractionRecord)return"transparent";if(s===n.ExtensionEvent){const t=this._entryData[e];return this._extensionColorGenerator.colorForID(t.name)}return""}_genericTraceEventColor(e){const t=e.categoriesString||e.name;return t?`hsl(${L.hashCode(t)%300+30}, 40%, 70%)`:"#ccc"}_drawFrame(e,t,i,n,s,a,r){const o=this._entryData[e];n+=1,a-=2,t.fillStyle=o.idle?"white":o.dropped?"#f0b7b1":o.hasWarnings()?"#fad1d1":"#d7f0d1",t.fillRect(n,s,a,r);const l=Number.preciseMillisToString(o.duration,1),h=t.measureText(l).width;h<=a&&(t.fillStyle=this.textColor(e),t.fillText(l,n+(a-h)/2,s+r-4))}async _drawScreenshot(e,t,i,n,s,a){const r=this._entryData[e];if(!this._screenshotImageCache.has(r)){this._screenshotImageCache.set(r,null);const e=await r.imageDataPromise(),t=await H.loadImageFromData(e);return this._screenshotImageCache.set(r,t),void this.dispatchEventToListeners(Ut.DataChanged)}const o=this._screenshotImageCache.get(r);if(!o)return;const l=i+1,h=n+1,d=a-2,c=d/o.naturalHeight,m=Math.floor(o.naturalWidth*c);t.save(),t.beginPath(),t.rect(i,n,s,a),t.clip(),t.drawImage(o,l,h,m,d),t.strokeStyle="#ccc",t.strokeRect(l-.5,h-.5,Math.min(s-1,m+1),d),t.restore()}decorateEntry(e,t,i,n,s,a,r,o,l){const h=this._entryData[e],d=this._entryType(e),c=Wt;if(d===c.Frame)return this._drawFrame(e,t,i,n,s,a,r),!0;if(d===c.Screenshot)return this._drawScreenshot(e,t,n,s,a,r),!0;if(d===c.InteractionRecord){const e=Ri.interactionPhaseColor(h);return t.fillStyle=e,t.fillRect(n,s,a-1,2),t.fillRect(n,s-3,2,3),t.fillRect(n+a-3,s-3,2,3),!1}if(d===c.Event){const e=h;if(e.hasCategory(U.TimelineModelImpl.Category.LatencyInfo)){const i=U.TimelineData.forEvent(e).timeWaitingForMainThread;if(i){t.fillStyle="hsla(0, 70%, 60%, 1)";const e=Math.floor(o-n+i*l);t.fillRect(n,s+r-3,e,2)}}U.TimelineData.forEvent(e).warning&&function(e,i){const n=8;t.save(),t.beginPath(),t.rect(e,s,i,r),t.clip(),t.beginPath(),t.fillStyle="red",t.moveTo(e+i-n,s),t.lineTo(e+i,s),t.lineTo(e+i,s+n),t.fill(),t.restore()}(n,a-1.5)}return!1}forceDecoration(e){const t=Wt,i=this._entryType(e);if(i===t.Frame)return!0;if(i===t.Screenshot)return!0;if(i===t.Event){const t=this._entryData[e];return Boolean(U.TimelineData.forEvent(t).warning)}return!1}appendExtensionEvents(e){this._extensionInfo.push(e),this._timelineData&&this._innerAppendExtensionEvents(this._extensionInfo.length-1)}_innerAppendExtensionEvents(e){const t=this._extensionInfo[e],i=Wt.ExtensionEvent,n=[...t.model.sortedProcesses().map((e=>e.sortedThreads()))].flat();if(!n.length)return;const s=!(1!==n.length||n[0].events().length&&n[0].asyncEvents().length);s||this._appendHeader(t.title,this._headerLevel1,!1);const a=s?this._headerLevel2:this._headerLevel1;let r=0;for(const e of n){const n=s?t.title:e.name()||R`Thread ${++r}`;this._appendAsyncEventsGroup(null,n,e.asyncEvents(),a,i,!1),this._appendSyncEvents(null,e.events(),n,a,i,!1)}}_appendHeader(e,t,i){const n={startLevel:this._currentLevel,name:e,style:t,selectable:i};return this._timelineData.groups.push(n),n}_appendEvent(e,t){const i=this._entryData.length;this._entryData.push(e);const n=this._timelineData;return n.entryLevels[i]=t,n.entryTotalTimes[i]=e.duration||Ft,n.entryStartTimes[i]=e.startTime,Nt.set(e,i),i}_appendAsyncEvent(e,i){if(t.TracingModel.isNestableAsyncPhase(e.phase))return void this._appendEvent(e,i);const n=e.steps,s=n.length>1&&n[1].phase===t.Phase.AsyncStepPast?1:0;for(let e=0;e<n.length-1;++e){const t=this._entryData.length;this._entryData.push(n[e+s]);const a=n[e].startTime,r=this._timelineData;r.entryLevels[t]=i,r.entryTotalTimes[t]=n[e+1].startTime-a,r.entryStartTimes[t]=a}}_appendFrame(e){const t=this._entryData.length;this._entryData.push(e),this._entryIndexToTitle[t]=Number.millisToString(e.duration,!0),this._timelineData&&(this._timelineData.entryLevels[t]=this._currentLevel,this._timelineData.entryTotalTimes[t]=e.duration,this._timelineData.entryStartTimes[t]=e.startTime)}createSelection(e){const t=this._entryType(e);let i=null;return t===Wt.Event?i=vi.fromTraceEvent(this._entryData[e]):t===Wt.Frame&&(i=vi.fromFrame(this._entryData[e])),i&&(this._lastSelection=new Kt(i,e)),i}formatValue(e,t){return Number.preciseMillisToString(e,t)}canJumpToEntry(e){return!1}entryIndexForSelection(e){if(!e||e.type()===vi.Type.Range)return-1;if(this._lastSelection&&this._lastSelection.timelineSelection.object()===e.object())return this._lastSelection.entryIndex;const t=this._entryData.indexOf(e.object());return-1!==t&&(this._lastSelection=new Kt(e,t)),t}buildFlowForInitiator(e){if(this._lastInitiatorEntry===e)return!1;this._lastInitiatorEntry=e;let t=this.eventByIndex(e);const i=this._timelineData;if(!i)return!1;for(i.flowStartTimes=[],i.flowStartLevels=[],i.flowEndTimes=[],i.flowEndLevels=[];t;){let e;for(;t&&(e=U.TimelineData.forEvent(t).initiator(),!e);t=this._eventParent(t));if(!e||!t)break;const n=Nt.get(t),s=Nt.get(e);i.flowStartTimes.push(e.endTime||e.startTime),i.flowStartLevels.push(i.entryLevels[s]),i.flowEndTimes.push(t.startTime),i.flowEndLevels.push(i.entryLevels[n]),t=e}return!0}_eventParent(e){const t=Nt.get(e);return void 0===t?null:this._entryParent[t]||null}eventByIndex(e){return e>=0&&this._entryType(e)===Wt.Event?this._entryData[e]:null}setEventColorMapping(e){this._colorForEvent=e}}const Ft=.001,Dt=new WeakMap,Nt=new WeakMap,Ut={DataChanged:Symbol("DataChanged")},Wt={Frame:Symbol("Frame"),Event:Symbol("Event"),InteractionRecord:Symbol("InteractionRecord"),ExtensionEvent:Symbol("ExtensionEvent"),Screenshot:Symbol("Screenshot")};var Bt=Object.freeze({__proto__:null,TimelineFlameChartDataProvider:It,InstantEventVisibleDurationMs:Ft,Events:Ut,EntryType:Wt});class Vt{constructor(){this._font="11px "+ye.fontFamily(),this.setModel(null),this._style={padding:4,height:17,collapsible:!0,color:Ve.instance().patchColorText("#222",Ve.ColorUsage.Foreground),font:this._font,backgroundColor:Ve.instance().patchColorText("white",Ve.ColorUsage.Background),nestingLevel:0,useFirstLineForOverview:!1,useDecoratorsForOverview:!0,shareHeaderLine:!1},this._group={startLevel:0,name:m.UIString("Network"),expanded:!1,style:this._style},this._minimumBoundary=0,this._maximumBoundary=0,this._timeSpan=0,this._requests=[],this._maxLevel=0}setModel(e){this._model=e&&e.timelineModel(),this._timelineData=null}isEmpty(){return this.timelineData(),!this._requests.length}maxStackDepth(){return this._maxLevel}timelineData(){return this._timelineData||(this._requests=[],this._timelineData=new S.TimelineData([],[],[],[]),this._model&&this._appendTimelineData()),this._timelineData}minimumBoundary(){return this._minimumBoundary}totalTime(){return this._timeSpan}setWindowTimes(e,t){this._startTime=e,this._endTime=t,this._updateTimelineData()}createSelection(e){if(-1===e)return null;const t=this._requests[e];return this._lastSelection=new Kt(vi.fromNetworkRequest(t),e),this._lastSelection.timelineSelection}entryIndexForSelection(e){if(!e)return-1;if(this._lastSelection&&this._lastSelection.timelineSelection.object()===e.object())return this._lastSelection.entryIndex;if(e.type()!==vi.Type.NetworkRequest)return-1;const t=e.object(),i=this._requests.indexOf(t);return-1!==i&&(this._lastSelection=new Kt(vi.fromNetworkRequest(t),i)),i}entryColor(e){const t=this._requests[e],i=Ri.networkRequestCategory(t);return Ri.networkCategoryColor(i)}textColor(e){return Yt.textColor}entryTitle(e){const t=this._requests[e],i=new _.ParsedURL(t.url||"");return i.isValid?`${i.displayName} (${i.host})`:t.url||null}entryFont(e){return this._font}decorateEntry(e,t,i,n,s,a,r,o,l){const h=this._requests[e];if(!h.timing)return!1;const d=h.timing,c=h.beginTime(),m=e=>Math.floor(o+(e-c)*l),u=h.getStartTime(),p=h.endTime,{sendStartTime:_,headersEndTime:g}=h.getSendReceiveTiming(),f=Math.max(m(_),o),v=Math.max(m(g),f),T=Math.max(m(h.finishTime||p),v+2),w=m(u),S=Math.max(m(p),T);if(t.fillStyle="hsla(0, 100%, 100%, 0.8)",t.fillRect(f+.5,s+.5,v-f-.5,r-2),t.fillStyle=Ve.instance().patchColorText("white",Ve.ColorUsage.Background),t.fillRect(n,s-.5,f-n,r),t.fillRect(T,s-.5,n+a-T,r),!h.cached()&&d.pushStart){const i=m(1e3*d.pushStart),n=d.pushEnd?m(1e3*d.pushEnd):w,a=E.clamp(n-i-2,0,4),o=1;if(t.save(),t.beginPath(),t.moveTo(i+a,s+r/2),t.lineTo(i,s+o),t.lineTo(n-a,s+o),t.lineTo(n,s+r/2),t.lineTo(n-a,s+r-o),t.lineTo(i,s+r-o),t.closePath(),d.pushEnd)t.fillStyle=this.entryColor(e);else{const s=t.createLinearGradient(i,0,n,0);s.addColorStop(0,this.entryColor(e)),s.addColorStop(1,"white"),t.fillStyle=s}t.globalAlpha=.3,t.fill(),t.restore()}function y(e,i,n){t.moveTo(e,n-3),t.lineTo(e,n+3),t.moveTo(e,n),t.lineTo(i,n)}t.beginPath(),t.lineWidth=1,t.strokeStyle="#ccc";const b=Math.floor(s+r/2)+.5,C=S-.5;if(y(w+.5,f,b),y(C,T,b),t.stroke(),"string"==typeof h.priority){const e=this._colorForPriority(h.priority);e&&(t.fillStyle=e,t.fillRect(f+.5,s+.5,3.5,3.5))}const x=Math.max(f,0),k=T-x;if(k>=20&&(i=this.entryTitle(e)||"",h.fromServiceWorker&&(i="⚙ "+i),i)){const e=4,n=r-5,a=H.trimTextEnd(t,i,k-2*e);t.fillStyle="#333",t.fillText(a,x+e,s+n)}return!0}forceDecoration(e){return!0}prepareHighlightedEntryInfo(e){const t=this._requests[e];if(!t.url)return null;const i=document.createElement("div"),n=J.createShadowRootWithCoreStyles(i,{cssFile:"timeline/timelineFlamechartPopover.css",enableLegacyPatching:!0,delegatesFocus:void 0}).createChild("div","timeline-flamechart-popover"),s=t.getStartTime(),a=t.endTime-s;if(s&&isFinite(a)&&(n.createChild("span","timeline-info-network-time").textContent=Number.millisToString(a,!0)),"string"==typeof t.priority){const e=n.createChild("span");e.textContent=y.uiLabelForNetworkPriority(t.priority),e.style.color=this._colorForPriority(t.priority)||"black"}return n.createChild("span").textContent=L.trimMiddle(t.url,80),i}_colorForPriority(e){if(!this._priorityToValue){const e=Protocol.Network.ResourcePriority;this._priorityToValue=new Map([[e.VeryLow,1],[e.Low,2],[e.Medium,3],[e.High,4],[e.VeryHigh,5]])}const t=this._priorityToValue.get(e);return t?`hsla(214, 80%, 50%, ${t/5})`:null}_appendTimelineData(){this._model&&(this._minimumBoundary=this._model.minimumRecordTime(),this._maximumBoundary=this._model.maximumRecordTime(),this._timeSpan=this._model.isEmpty()?1e3:this._maximumBoundary-this._minimumBoundary,this._model.networkRequests().forEach(this._appendEntry.bind(this)),this._updateTimelineData())}_updateTimelineData(){if(!this._timelineData)return;const e=[];let t=0;for(let i=0;i<this._requests.length;++i){const n=this._requests[i],s=n.beginTime(),a=this._startTime;if(s<this._endTime&&n.endTime>a){for(;e.length&&e[e.length-1]<=s;)e.pop();this._timelineData.entryLevels[i]=e.length,e.push(n.endTime),t=Math.max(t,e.length)}else this._timelineData.entryLevels[i]=-1}for(let e=0;e<this._requests.length;++e)-1===this._timelineData.entryLevels[e]&&(this._timelineData.entryLevels[e]=t);this._timelineData=new S.TimelineData(this._timelineData.entryLevels,this._timelineData.entryTotalTimes,this._timelineData.entryStartTimes,[this._group]),this._maxLevel=t}_appendEntry(e){this._requests.push(e),this._timelineData.entryStartTimes.push(e.beginTime()),this._timelineData.entryTotalTimes.push(e.endTime-e.beginTime()),this._timelineData.entryLevels.push(this._requests.length-1)}preferredHeight(){return this._style.height*(this._group.expanded?E.clamp(this._maxLevel+1,4,8.5):1)}isExpanded(){return this._group&&Boolean(this._group.expanded)}formatValue(e,t){return Number.preciseMillisToString(e,t)}canJumpToEntry(e){return!1}navStartTimes(){return this._model?this._model.navStartTimes():new Map}}var At=Object.freeze({__proto__:null,TimelineFlameChartNetworkDataProvider:Vt});class Ht{constructor(e){this.timeline=e,this.context=e.getContext()}tX(e){return this.timeline.tX(e)}tD(e){return this.timeline.tD(e)}renderLaneLabel(e){const t=e.toLocaleUpperCase();this.context.save(),this.context.font="9px "+ye.fontFamily();const i=this.context.measureText(t),n=i.actualBoundingBoxAscent-i.actualBoundingBoxDescent;this.context.fillStyle="rgba(255, 255, 255, 0.8)",this.context.fillRect(0,1,i.width+12,n+6),this.context.fillStyle="#80868b",this.context.fillText(t,6,n+4),this.context.restore()}render(){}}class Ot extends Ht{constructor(e,t,i){super(e),this.markers=[],this.selectedMarker=null,this.hoverMarker=null,this.context=e.getContext(),this.label=t,this.getMarkerType=i,this.labelMetrics=this.measureLabel(this.label)}handlePointerMove(e){this.hoverMarker=null===e?null:this.markers.find((t=>{const i=this.tX(t.timestamp);return i-5<=e&&e<=i+t.widthIncludingLabel}))||null}handleClick(e){this.selectedMarker=this.hoverMarker}setEvents(e){this.hoverMarker=null,this.selectedMarker=null,this.markers=e.map((e=>this.getMarker(e)))}measureLabel(e){this.context.save(),this.context.font="11px "+ye.fontFamily();const t=this.context.measureText(e);return this.context.restore(),t}measureTimestamp(e){this.context.save(),this.context.font="11px "+ye.fontFamily();const t=this.context.measureText(e);return this.context.restore(),t}getMarker(e){const t=this.getMarkerType(e),i=this.timeline.getTimeSinceLastMainFrameNavigation(e.timestamp),n=Number.preciseMillisToString(i,1),s=this.measureTimestamp(n),a=15+this.labelMetrics.width+5,r=a+5+s.width;return{timestamp:e.timestamp,timestampLabel:n,type:t,timestampMetrics:s,widthIncludingLabel:a,widthIncludingTimestamp:r}}renderLabel(e,t,i){this.context.save(),this.context.font="11px "+ye.fontFamily();const n=i.actualBoundingBoxAscent-i.actualBoundingBoxDescent;this.context.fillStyle="#202124",this.context.fillText(t,this.tX(e)+.5*this.timeline.getLineHeight(),.5*this.timeline.getLineHeight()+.5*n),this.context.restore()}renderTimestamp(e,t,i,n){this.context.save(),this.context.font="11px "+ye.fontFamily();const s=n.actualBoundingBoxAscent-n.actualBoundingBoxDescent;this.context.fillStyle="rgba(0, 0, 0, 0.5)",this.context.fillText(i,this.tX(e)+.5*this.timeline.getLineHeight()+t+5,.5*this.timeline.getLineHeight()+.5*s),this.context.restore()}renderGoodMarkerSymbol(e){this.context.save(),this.context.beginPath(),this.context.strokeStyle="#0cce6b",this.context.moveTo(this.tX(e),2),this.context.lineTo(this.tX(e),5),this.context.moveTo(this.tX(e),19),this.context.lineTo(this.tX(e),22),this.context.stroke(),this.context.beginPath(),this.context.fillStyle="#0cce6b",this.context.arc(this.tX(e),.5*this.timeline.getLineHeight(),5,0,2*Math.PI),this.context.fill(),this.context.restore()}renderMediumMarkerSymbol(e){this.context.save(),this.context.beginPath(),this.context.strokeStyle="#ffa400",this.context.moveTo(this.tX(e),2),this.context.lineTo(this.tX(e),5),this.context.moveTo(this.tX(e),19),this.context.lineTo(this.tX(e),22),this.context.stroke(),this.context.beginPath(),this.context.fillStyle="#ffa400",this.context.rect(this.tX(e)-5,.5*this.timeline.getLineHeight()-5,10,10),this.context.fill(),this.context.restore()}renderBadMarkerSymbol(e){this.context.save(),this.context.beginPath(),this.context.strokeStyle="#ff4e42",this.context.moveTo(this.tX(e),2),this.context.lineTo(this.tX(e),5),this.context.moveTo(this.tX(e),19),this.context.lineTo(this.tX(e),22),this.context.stroke(),this.context.beginPath(),this.context.fillStyle="#ff4e42",this.context.translate(this.tX(e),.5*this.timeline.getLineHeight()),this.context.rotate(45*Math.PI/180),this.context.rect(-4,-4,8,8),this.context.rotate(-45*Math.PI/180),this.context.translate(-this.tX(e),-.5*this.timeline.getLineHeight()),this.context.fill(),this.context.restore()}renderMarker(e,t,i,n){const s=e.timestampLabel,a=this.labelMetrics,r=e.timestampMetrics,o=t,l=i||t,h=e.widthIncludingLabel,d=l?e.widthIncludingTimestamp:h,c=n?this.tD(n.timestamp-e.timestamp):null,m=l||null!==c&&c>h+5;if(l){this.context.save();const t=this.tX(e.timestamp)-5-5,i=1,n=d+10,s=this.timeline.getLineHeight()-2;this.context.fillStyle="rgba(255, 255, 255, 0.8)",this.context.fillRect(t,i,n,s),o&&(this.context.strokeStyle="#1b73e7",this.context.lineWidth=2,this.context.strokeRect(t,i,n,s),this.context.lineWidth=1),this.context.restore()}m&&(a&&this.renderLabel(e.timestamp,this.label,a),l&&this.renderTimestamp(e.timestamp,a?a.width:0,s,r)),"Good"===e.type?this.renderGoodMarkerSymbol(e.timestamp):"Medium"===e.type?this.renderMediumMarkerSymbol(e.timestamp):this.renderBadMarkerSymbol(e.timestamp)}render(){for(let e=0;e<this.markers.length;e++){const t=this.markers[e];t!==this.selectedMarker&&t!==this.hoverMarker&&this.renderMarker(t,!1,!1,e<this.markers.length-1?this.markers[e+1]:null)}this.hoverMarker&&this.hoverMarker!==this.selectedMarker&&this.renderMarker(this.hoverMarker,!1,!0,null),this.selectedMarker&&this.renderMarker(this.selectedMarker,!0,!1,null)}}class Gt extends Ht{constructor(e,t){super(e),this.boxes=[],this.hoverBox=-1,this.selectedBox=-1,this.label=t;const i=document.createElement("canvas"),n=i.getContext("2d");zt(n,CanvasRenderingContext2D);const s=17;i.width=s,i.height=s,n.translate(8.5,8.5),n.rotate(.25*Math.PI),n.translate(-8.5,-8.5),n.fillStyle="#000";for(let e=-17;e<34;e+=3)n.fillRect(e,-17,1,51);const a=this.context.createPattern(i,"repeat");zt(a,CanvasPattern),this.longTaskPattern=a}handlePointerMove(e){this.hoverBox=null===e?-1:this.boxes.findIndex((t=>{const i=this.tX(t.start),n=this.tX(t.start+t.duration);return i<=e&&e<=n}))}handleClick(e){this.selectedBox=this.hoverBox}setTimeboxes(e){this.selectedBox=-1,this.hoverBox=-1,this.boxes=e}renderTimebox(e,t){this.context.save(),this.context.beginPath(),this.context.fillStyle="#669df6",this.context.moveTo(this.tX(e.start)+2,2),this.context.lineTo(this.tX(e.start+e.duration)-2,2),this.context.quadraticCurveTo(this.tX(e.start+e.duration),2,this.tX(e.start+e.duration),4),this.context.lineTo(this.tX(e.start+e.duration),20),this.context.quadraticCurveTo(this.tX(e.start+e.duration),20,this.tX(e.start+e.duration)-2,22),this.context.lineTo(this.tX(e.start)+2,22),this.context.quadraticCurveTo(this.tX(e.start)+2,22,this.tX(e.start),20),this.context.lineTo(this.tX(e.start),4),this.context.quadraticCurveTo(this.tX(e.start),4,this.tX(e.start)+2,2),this.context.closePath(),this.context.fill(),this.context.beginPath(),this.context.fillStyle=this.longTaskPattern,this.context.moveTo(this.tX(e.start+50)+2,2),this.context.lineTo(this.tX(e.start+e.duration)-2,2),this.context.quadraticCurveTo(this.tX(e.start+e.duration),2,this.tX(e.start+e.duration),4),this.context.lineTo(this.tX(e.start+e.duration),20),this.context.quadraticCurveTo(this.tX(e.start+e.duration),20,this.tX(e.start+e.duration)-2,22),this.context.lineTo(this.tX(e.start+50),22),this.context.lineTo(this.tX(e.start+50),2),this.context.closePath(),this.context.fill(),t&&(this.context.beginPath(),this.context.strokeStyle="#ff4e42",this.context.rect(this.tX(e.start)-2,0,this.tD(e.duration)+4,24),this.context.lineWidth=2,this.context.stroke(),this.context.lineWidth=1),this.context.restore()}render(){for(let e=0;e<this.boxes.length;e++)e!==this.hoverBox&&e!==this.selectedBox&&this.renderTimebox(this.boxes[e],!1);-1!==this.hoverBox&&this.renderTimebox(this.boxes[this.hoverBox],!0),-1!==this.selectedBox&&this.renderTimebox(this.boxes[this.selectedBox],!0),this.renderLaneLabel(this.label)}}function zt(e,t){if(!(e instanceof t))throw new TypeError(`Instance expected to be of type ${t.name} but got ${e.constructor.name}`)}class jt extends HTMLElement{constructor(){super(),this.shadow=this.attachShadow({mode:"open"}),this.mainFrameNavigations=[],this.startTime=0,this.duration=1e3,this.maxDuration=1e3,this.width=0,this.height=0,this.hoverLane=null,this.animationFrame=null,this.canvas=document.createElement("canvas"),this.canvas.style.width="100%",this.canvas.style.height=Math.max(120,120)+"px",this.shadow.appendChild(this.canvas),this.canvas.addEventListener("pointermove",this.handlePointerMove.bind(this)),this.canvas.addEventListener("pointerout",this.handlePointerOut.bind(this)),this.canvas.addEventListener("click",this.handleClick.bind(this));const e=this.canvas.getContext("2d");zt(e,CanvasRenderingContext2D),this.context=e,this.fcpLane=new Ot(this,"FCP",(e=>this.getMarkerTypeForFCPEvent(e))),this.lcpLane=new Ot(this,"LCP",(e=>this.getMarkerTypeForLCPEvent(e))),this.layoutShiftsLane=new Ot(this,"LS",(e=>"Bad")),this.longTasksLane=new Gt(this,"Long Tasks")}set data(e){this.startTime=e.startTime||this.startTime,this.duration=e.duration||this.duration,this.maxDuration=e.maxDuration||this.maxDuration,this.mainFrameNavigations=e.mainFrameNavigations||this.mainFrameNavigations,e.fcps&&this.fcpLane.setEvents(e.fcps),e.lcps&&this.lcpLane.setEvents(e.lcps),e.layoutShifts&&this.layoutShiftsLane.setEvents(e.layoutShifts),e.longTasks&&this.longTasksLane.setTimeboxes(e.longTasks),this.scheduleRender()}getContext(){return this.context}getLineHeight(){return 24}handlePointerMove(e){const t=e.offsetX,i=e.offsetY,n=Math.floor(i/24);this.hoverLane=n,this.fcpLane.handlePointerMove(1===this.hoverLane?t:null),this.lcpLane.handlePointerMove(2===this.hoverLane?t:null),this.layoutShiftsLane.handlePointerMove(3===this.hoverLane?t:null),this.longTasksLane.handlePointerMove(4===this.hoverLane?t:null),this.scheduleRender()}handlePointerOut(e){this.fcpLane.handlePointerMove(null),this.lcpLane.handlePointerMove(null),this.layoutShiftsLane.handlePointerMove(null),this.longTasksLane.handlePointerMove(null),this.scheduleRender()}handleClick(e){const t=e.offsetX;this.focus(),this.fcpLane.handleClick(1===this.hoverLane?t:null),this.lcpLane.handleClick(2===this.hoverLane?t:null),this.layoutShiftsLane.handleClick(3===this.hoverLane?t:null),this.longTasksLane.handleClick(4===this.hoverLane?t:null),this.scheduleRender()}tX(e){return(e-this.startTime)/this.duration*this.width}tD(e){return e/this.duration*this.width}setSize(e,t){const i=window.devicePixelRatio;this.width=e,this.height=Math.max(t,120),this.canvas.width=Math.floor(this.width*i),this.canvas.height=Math.floor(this.height*i),this.context.scale(i,i),this.style.width=this.width+"px",this.style.height=this.height+"px",this.render()}connectedCallback(){this.style.display="block",this.tabIndex=0;const e=this.canvas.getBoundingClientRect(),t=e.width,i=e.height;this.setSize(t,i),this.render()}getMarkerTypeForFCPEvent(e){const t=this.getTimeSinceLastMainFrameNavigation(e.timestamp);return t<=2e3?"Good":t<=4e3?"Medium":"Bad"}getMarkerTypeForLCPEvent(e){const t=this.getTimeSinceLastMainFrameNavigation(e.timestamp);return t<=2500?"Good":t<=4e3?"Medium":"Bad"}renderMainFrameNavigations(e){this.context.save(),this.context.strokeStyle="blue",this.context.beginPath();for(const t of e)this.context.moveTo(this.tX(t),0),this.context.lineTo(this.tX(t),this.height);this.context.stroke(),this.context.restore()}getTimeSinceLastMainFrameNavigation(e){let t=0,i=0;for(;t<this.mainFrameNavigations.length&&this.mainFrameNavigations[t]<=e;)i=this.mainFrameNavigations[t],t++;return e-i}render(){this.context.save(),this.context.clearRect(0,0,this.width,this.height),this.context.strokeStyle="#dadce0",this.context.beginPath();for(let e=0;e<5;e++)this.context.moveTo(0,24*e+.5),this.context.lineTo(this.width,24*e+.5);this.context.moveTo(0,119.5),this.context.lineTo(this.width,119.5),this.context.stroke(),this.context.restore(),this.context.save(),this.context.font="11px "+ye.fontFamily();const e=this.context.measureText("Web Vitals"),t=e.actualBoundingBoxAscent-e.actualBoundingBoxDescent;this.context.fillStyle="#202124",this.context.fillText("Web Vitals",6,4+t),this.context.restore(),this.context.save(),this.context.translate(0,Number(24)),this.fcpLane.render(),this.context.translate(0,Number(24)),this.lcpLane.render(),this.context.translate(0,Number(24)),this.layoutShiftsLane.render(),this.context.translate(0,Number(24)),this.longTasksLane.render(),this.context.restore(),this.renderMainFrameNavigations(this.mainFrameNavigations)}scheduleRender(){this.animationFrame||(this.animationFrame=window.requestAnimationFrame((()=>{this.animationFrame=null,this.render()})))}}customElements.define("devtools-timeline-webvitals",jt);var qt=Object.freeze({__proto__:null,LINE_HEIGHT:24,assertInstanceOf:zt,WebVitalsTimeline:jt});class Xt extends O.VBox{constructor(e){super(!0,!0),this.delegate=e,this.element.style.height="120px",this.element.style.flex="0 auto",this.webVitalsTimeline=new jt,this.chartViewport=new b.ChartViewport(this),this.chartViewport.show(this.contentElement),this.chartViewport.alwaysShowVerticalScroll(),this.chartViewport.setContentHeight(114),this.chartViewport.viewportElement.appendChild(this.webVitalsTimeline)}windowChanged(e,t,i){this.delegate.windowChanged(e,t,i)}updateRangeSelection(e,t){this.delegate.updateRangeSelection(e,t)}setSize(e,t){this.webVitalsTimeline.setSize(e,t)}update(){this.webVitalsTimeline.render()}}class $t extends G.SplitWidget{constructor(e,t,i,n,s,a){super(e,t,i,n,s,a),this._webVitals,this._model}setWebVitals(e){this._webVitals=e,this._webVitals.setMinimumSize(0,120)}setWindowTimes(e,t,i){if(!this._webVitals)return;const n=e-(this._model?this._model.timelineModel().minimumRecordTime():0);this._webVitals.chartViewport.setWindowTimes(e,t,i),this._webVitals.webVitalsTimeline.data={startTime:n,duration:t-e,fcps:void 0,lcps:void 0,layoutShifts:void 0,longTasks:void 0,mainFrameNavigations:void 0,maxDuration:void 0}}setModelAndUpdateBoundaries(e){if(this._model=e,!this._webVitals||!e)return;const i=e.window().left,n=e.window().right,s=e.timelineModel(),a=s.tracks().reduce(((e,t)=>e.concat(t.events)),[]),r=e.timelineModel().minimumRecordTime(),o=e=>a.filter(e).map((e=>e.startTime-r)),l=a.filter((e=>s.isLCPCandidateEvent(e)||s.isLCPInvalidateEvent(e))),h=new Map;for(const e of l){const t=e.args.data.navigationId,i=h.get(t);(!i||i.args.data.candidateIndex<e.args.data.candidateIndex)&&h.set(t,e)}const d=Array.from(h.values()).filter((e=>s.isLCPCandidateEvent(e))),c=a.filter((e=>t.TracingModel.isCompletePhase(e.phase)&&s.isLongRunningTask(e))).map((e=>({start:e.startTime-r,duration:e.duration||0})));this._webVitals.chartViewport.setBoundaries(i,n-i),this._webVitals.chartViewport.setWindowTimes(i,n);const m=i-(this._model?this._model.timelineModel().minimumRecordTime():0);this._webVitals.webVitalsTimeline.data={startTime:m,duration:n-i,maxDuration:s.maximumRecordTime(),fcps:a.filter((e=>s.isFCPEvent(e))).map((e=>({timestamp:e.startTime-r,e:e}))),lcps:d.map((e=>e.startTime)).map((e=>({timestamp:e-r}))),layoutShifts:o((e=>s.isLayoutShiftEvent(e))).map((e=>({timestamp:e}))),longTasks:c,mainFrameNavigations:o((e=>s.isMainFrameNavigationStartEvent(e)))}}}class Jt extends O.VBox{constructor(e){super(),this.element.classList.add("timeline-flamechart"),this._delegate=e,this._model=null,this._searchResults,this._eventListeners=[],this._showMemoryGraphSetting=p.Settings.instance().createSetting("timelineShowMemory",!1),this._showWebVitalsSetting=p.Settings.instance().createSetting("timelineWebVitals",!1),this._networkSplitWidget=new G.SplitWidget(!1,!1,"timelineFlamechartMainView",150),this._networkSplitWidget.sidebarElement().style.zIndex="120";const t=p.Settings.instance().createSetting("timelineFlamechartMainViewGroupExpansion",{});this._mainDataProvider=new It,this._mainDataProvider.addEventListener(Ut.DataChanged,(()=>this._mainFlameChart.scheduleUpdate())),this._mainFlameChart=new S.FlameChart(this._mainDataProvider,this,t),this._mainFlameChart.alwaysShowVerticalScroll(),this._mainFlameChart.enableRuler(!1),this._networkFlameChartGroupExpansionSetting=p.Settings.instance().createSetting("timelineFlamechartNetworkViewGroupExpansion",{}),this._networkDataProvider=new Vt,this._networkFlameChart=new S.FlameChart(this._networkDataProvider,this,this._networkFlameChartGroupExpansionSetting),this._networkFlameChart.alwaysShowVerticalScroll(),this._networkFlameChart.disableRangeSelection(),this._networkPane=new O.VBox,this._networkPane.setMinimumSize(23,23),this._networkFlameChart.show(this._networkPane.element),this._splitResizer=this._networkPane.element.createChild("div","timeline-flamechart-resizer"),this._networkSplitWidget.hideDefaultResizer(!0),this._networkSplitWidget.installResizer(this._splitResizer),this._webVitals=new Xt(this),this._mainSplitWidget=new $t(!1,!1,"timelineFlamechartMainAndVitalsView",void 0,120),this._mainSplitWidget.setWebVitals(this._webVitals),this._mainSplitWidget.setMainWidget(this._mainFlameChart),this._mainSplitWidget.setSidebarWidget(this._webVitals),this.toggleWebVitalsLane(),this._networkSplitWidget.setMainWidget(this._mainSplitWidget),this._networkSplitWidget.setSidebarWidget(this._networkPane),this._chartSplitWidget=new G.SplitWidget(!1,!0,"timelineCountersSplitViewState"),this._countersView=new zi(this._delegate),this._chartSplitWidget.setMainWidget(this._networkSplitWidget),this._chartSplitWidget.setSidebarWidget(this._countersView),this._chartSplitWidget.hideDefaultResizer(),this._chartSplitWidget.installResizer(this._countersView.resizerElement()),this._updateCountersGraphToggle(),this._detailsSplitWidget=new G.SplitWidget(!1,!0,"timelinePanelDetailsSplitViewState"),this._detailsSplitWidget.element.classList.add("timeline-details-split"),this._detailsView=new Et(e),this._detailsSplitWidget.installResizer(this._detailsView.headerElement()),this._detailsSplitWidget.setMainWidget(this._chartSplitWidget),this._detailsSplitWidget.setSidebarWidget(this._detailsView),this._detailsSplitWidget.show(this.element),this._onMainEntrySelected=this._onEntrySelected.bind(this,this._mainDataProvider),this._onNetworkEntrySelected=this._onEntrySelected.bind(this,this._networkDataProvider),this._mainFlameChart.addEventListener(S.Events.EntrySelected,this._onMainEntrySelected,this),this._mainFlameChart.addEventListener(S.Events.EntryInvoked,this._onMainEntrySelected,this),this._networkFlameChart.addEventListener(S.Events.EntrySelected,this._onNetworkEntrySelected,this),this._networkFlameChart.addEventListener(S.Events.EntryInvoked,this._onNetworkEntrySelected,this),this._mainFlameChart.addEventListener(S.Events.EntryHighlighted,this._onEntryHighlighted,this),this._nextExtensionIndex=0,this._boundRefresh=this._refresh.bind(this),this._selectedTrack=null,this._mainDataProvider.setEventColorMapping(Ri.eventColor),this._groupBySetting=p.Settings.instance().createSetting("timelineTreeGroupBy",gt.GroupBy.None),this._groupBySetting.addChangeListener(this._updateColorMapper,this),this._updateColorMapper(),this._searchableView}toggleWebVitalsLane(){this._showWebVitalsSetting.get()?(this._mainSplitWidget.showBoth(),this._mainSplitWidget.setSidebarSize(120),this._mainSplitWidget.setResizable(!1),this._mainSplitWidget.hideDefaultResizer(!0)):this._mainSplitWidget.hideSidebar()}_updateColorMapper(){this._urlToColorCache=new Map,this._model&&(this._mainDataProvider.setEventColorMapping(Ri.eventColor),this._mainFlameChart.update())}_onWindowChanged(e){const t=e.data.window,i=Boolean(e.data.animate);this._mainFlameChart.setWindowTimes(t.left,t.right,i),this._networkFlameChart.setWindowTimes(t.left,t.right,i),this._networkDataProvider.setWindowTimes(t.left,t.right),this._mainSplitWidget.setWindowTimes(t.left,t.right,i),this._updateSearchResults(!1,!1)}windowChanged(e,t,i){this._model&&this._model.setWindow({left:e,right:t},i)}updateRangeSelection(e,t){this._delegate.select(vi.fromRange(e,t))}updateSelectedGroup(e,t){if(e!==this._mainFlameChart)return;const i=t?this._mainDataProvider.groupTrack(t):null;this._selectedTrack=i,this._updateTrack()}setModel(e){if(e!==this._model){if(v.EventTarget.removeEventListeners(this._eventListeners),this._model=e,this._selectedTrack=null,this._mainDataProvider.setModel(this._model),this._networkDataProvider.setModel(this._model),this._model){this._eventListeners=[this._model.addEventListener(Oi.WindowChanged,this._onWindowChanged,this),this._model.addEventListener(Oi.ExtensionDataAdded,this._appendExtensionData,this)];const t=this._model.window();this._mainFlameChart.setWindowTimes(t.left,t.right),this._networkFlameChart.setWindowTimes(t.left,t.right),this._networkDataProvider.setWindowTimes(t.left,t.right),this._mainSplitWidget.setModelAndUpdateBoundaries(e),this._updateSearchResults(!1,!1)}this._updateColorMapper(),this._updateTrack(),this._nextExtensionIndex=0,this._appendExtensionData(),this._refresh()}}_updateTrack(){this._countersView.setModel(this._model,this._selectedTrack),this._detailsView.setModel(this._model,this._selectedTrack)}_refresh(){this._networkDataProvider.isEmpty()?(this._mainFlameChart.enableRuler(!0),this._networkSplitWidget.hideSidebar()):(this._mainFlameChart.enableRuler(!1),this._networkSplitWidget.showBoth(),this.resizeToPreferredHeights()),this._mainFlameChart.reset(),this._networkFlameChart.reset(),this._updateSearchResults(!1,!1)}_appendExtensionData(){if(!this._model)return;const e=this._model.extensionInfo();for(;this._nextExtensionIndex<e.length;)this._mainDataProvider.appendExtensionEvents(e[this._nextExtensionIndex++]);this._mainFlameChart.scheduleUpdate()}_onEntryHighlighted(t){e.OverlayModel.hideDOMNodeHighlight();const i=t.data,n=this._mainDataProvider.eventByIndex(i);if(!n)return;const s=this._model&&this._model.timelineModel().targetByEvent(n);if(!s)return;const a=U.TimelineData.forEvent(n).backendNodeId;a&&new o.DeferredDOMNode(s,a).highlight()}highlightEvent(e){const t=e?this._mainDataProvider.entryIndexForSelection(vi.fromTraceEvent(e)):-1;t>=0?this._mainFlameChart.highlightEntry(t):this._mainFlameChart.hideHighlight()}willHide(){this._networkFlameChartGroupExpansionSetting.removeChangeListener(this.resizeToPreferredHeights,this),this._showMemoryGraphSetting.removeChangeListener(this._updateCountersGraphToggle,this),pe.IgnoreListManager.instance().removeChangeListener(this._boundRefresh)}wasShown(){this._networkFlameChartGroupExpansionSetting.addChangeListener(this.resizeToPreferredHeights,this),this._showMemoryGraphSetting.addChangeListener(this._updateCountersGraphToggle,this),pe.IgnoreListManager.instance().addChangeListener(this._boundRefresh),this._needsResizeToPreferredHeights&&this.resizeToPreferredHeights(),this._mainFlameChart.scheduleUpdate(),this._networkFlameChart.scheduleUpdate()}_updateCountersGraphToggle(){this._showMemoryGraphSetting.get()?this._chartSplitWidget.showBoth():this._chartSplitWidget.hideSidebar()}setSelection(e){let t=this._mainDataProvider.entryIndexForSelection(e);this._mainFlameChart.setSelectedEntry(t),t=this._networkDataProvider.entryIndexForSelection(e),this._networkFlameChart.setSelectedEntry(t),this._detailsView&&this._detailsView.setSelection(e)}_onEntrySelected(e,t){const i=t.data;Me.experiments.isEnabled("timelineEventInitiators")&&e===this._mainDataProvider&&this._mainDataProvider.buildFlowForInitiator(i)&&this._mainFlameChart.scheduleUpdate(),this._delegate.select(e.createSelection(i))}resizeToPreferredHeights(){this.isShowing()?(this._needsResizeToPreferredHeights=!1,this._networkPane.element.classList.toggle("timeline-network-resizer-disabled",!this._networkDataProvider.isExpanded()),this._networkSplitWidget.setSidebarSize(this._networkDataProvider.preferredHeight()+this._splitResizer.clientHeight+S.HeaderHeight+2)):this._needsResizeToPreferredHeights=!0}setSearchableView(e){this._searchableView=e}jumpToNextSearchResult(){if(!this._searchResults||!this._searchResults.length)return;const e=void 0!==this._selectedSearchResult?this._searchResults.indexOf(this._selectedSearchResult):-1;this._selectSearchResult(E.mod(e+1,this._searchResults.length))}jumpToPreviousSearchResult(){if(!this._searchResults||!this._searchResults.length)return;const e=void 0!==this._selectedSearchResult?this._searchResults.indexOf(this._selectedSearchResult):0;this._selectSearchResult(E.mod(e-1,this._searchResults.length))}supportsCaseSensitiveSearch(){return!0}supportsRegexSearch(){return!0}_selectSearchResult(e){this._searchableView.updateCurrentMatchIndex(e),this._searchResults&&(this._selectedSearchResult=this._searchResults[e],this._delegate.select(this._mainDataProvider.createSelection(this._selectedSearchResult)))}_updateSearchResults(e,t){const i=this._selectedSearchResult;if(delete this._selectedSearchResult,this._searchResults=[],!this._searchRegex||!this._model)return;const n=new dt(this._searchRegex),s=this._model.window();if(this._searchResults=this._mainDataProvider.search(s.left,s.right,n),this._searchableView.updateSearchMatchesCount(this._searchResults.length),!e||!this._searchResults.length)return;let a=this._searchResults.indexOf(i);-1===a&&(a=t?this._searchResults.length-1:0),this._selectSearchResult(a)}searchCanceled(){void 0!==this._selectedSearchResult&&this._delegate.select(null),delete this._searchResults,delete this._selectedSearchResult,delete this._searchRegex}performSearch(e,t,i){this._searchRegex=e.toSearchRegex(),this._updateSearchResults(t,i)}}class Kt{constructor(e,t){this.timelineSelection=e,this.entryIndex=t}}const Yt={textColor:"#333"};class Qt{constructor(e,t,i){this._startTime=e,this._startOffset=t,this._style=i}startTime(){return this._startTime}color(){return this._style.color}title(){if(this._style.lowPriority)return null;const e=Number.millisToString(this._startOffset);return R`${this._style.title} at ${e}`}draw(e,t,i,n){this._style.lowPriority&&n<4||(e.save(),this._style.tall&&(e.strokeStyle=this._style.color,e.lineWidth=this._style.lineWidth,e.translate(this._style.lineWidth<1||1&this._style.lineWidth?.5:0,.5),e.beginPath(),e.moveTo(t,0),e.setLineDash(this._style.dashStyle),e.lineTo(t,e.canvas.height),e.stroke()),e.restore())}}var Zt=Object.freeze({__proto__:null,TimelineFlameChartView:Jt,Selection:Kt,FlameChartStyle:Yt,TimelineFlameChartMarker:Qt,ColorBy:{URL:"URL"}});class ei{constructor(){this._recordings=[],this._action=K.ActionRegistry.instance().action("timeline.show-history"),this._nextNumberByDomain=new Map,this._button=new ai(this._action),j.markAsMenuButton(this._button.element),this.clear(),this._allOverviews=[{constructor:tt,height:3},{constructor:nt,height:16},{constructor:et,height:20},{constructor:Qe,height:8}],this._totalHeight=this._allOverviews.reduce(((e,t)=>e+t.height),0),this._enabled=!0,this._lastActiveModel=null}addRecording(e){this._lastActiveModel=e,this._recordings.unshift(e),this._buildPreview(e);const t=this._title(e);this._button.setText(t);const i=this._action.title();if(j.setAccessibleName(this._button.element,R`Current Session: ${t}. ${i}`),this._updateState(),this._recordings.length<=ti)return;const n=this._recordings.reduce(((e,t)=>s(e)<s(t)?e:t));function s(e){const t=ei._dataForModel(e);if(!t)throw new Error("Unable to find data for model");return t.lastUsed}this._recordings.splice(this._recordings.indexOf(n),1),n.dispose()}setEnabled(e){this._enabled=e,this._updateState()}button(){return this._button}clear(){this._recordings.forEach((e=>e.dispose())),this._recordings=[],this._lastActiveModel=null,this._updateState(),this._button.setText(m.UIString("(no recordings)")),this._nextNumberByDomain.clear()}async showHistoryDropDown(){if(this._recordings.length<2||!this._enabled)return null;const e=await si.show(this._recordings,this._lastActiveModel,this._button.element);if(!e)return null;return this._recordings.indexOf(e)<0?(console.assert(!1,"selected recording not found"),null):(this._setCurrentModel(e),e)}cancelIfShowing(){si.cancelIfShowing()}navigate(e){if(!this._enabled||!this._lastActiveModel)return null;const t=this._recordings.indexOf(this._lastActiveModel);if(t<0)return null;const i=E.clamp(t+e,0,this._recordings.length-1),n=this._recordings[i];return this._setCurrentModel(n),n}_setCurrentModel(e){const t=ei._dataForModel(e);if(!t)throw new Error("Unable to find data for model");t.lastUsed=Date.now(),this._lastActiveModel=e;const i=this._title(e),n=this._action.title();this._button.setText(i),j.setAccessibleName(this._button.element,R`Current Session: ${i}. ${n}`)}_updateState(){this._action.setEnabled(this._recordings.length>1&&this._enabled)}static _previewElement(e){const t=ei._dataForModel(e);if(!t)throw new Error("Unable to find data for model");const i=e.recordStartTime();return t.time.textContent=i?m.UIString("(%s ago)",ei._coarseAge(i)):"",t.preview}static _coarseAge(e){const t=Math.round((Date.now()-e)/1e3);if(t<50)return m.UIString("moments");const i=Math.round(t/60);if(i<50)return m.UIString("%s m",i);const n=Math.round(i/60);return m.UIString("%s h",n)}_title(e){const t=ei._dataForModel(e);if(!t)throw new Error("Unable to find data for model");return t.title}_buildPreview(e){const t=_.ParsedURL.fromString(e.timelineModel().pageURL()),i=t?t.host:"",n=this._nextNumberByDomain.get(i)||1,s=m.UIString("%s #%d",i,n);this._nextNumberByDomain.set(i,n+1);const a=document.createElement("span"),r=document.createElement("div");r.classList.add("preview-item"),r.classList.add("vbox");const o={preview:r,title:s,time:a,lastUsed:Date.now()};ni.set(e,o),r.appendChild(this._buildTextDetails(e,s,a));const l=r.createChild("div","hbox");return l.appendChild(this._buildScreenshotThumbnail(e)),l.appendChild(this._buildOverview(e)),o.preview}_buildTextDetails(e,t,i){const n=document.createElement("div");n.classList.add("text-details"),n.classList.add("hbox");const s=n.createChild("span","name");s.textContent=t,j.setAccessibleName(s,t);const a=e.tracingModel(),r=Number.millisToString(a.maximumRecordTime()-a.minimumRecordTime(),!1),o=n.createChild("span","time");return o.appendChild(document.createTextNode(r)),o.appendChild(i),n}_buildScreenshotThumbnail(e){const t=document.createElement("div");t.classList.add("screenshot-thumb");t.style.width=1.5*this._totalHeight+"px",t.style.height=this._totalHeight+"px";const i=e.filmStripModel().frames(),n=i[i.length-1];return n?(n.imageDataPromise().then((e=>H.loadImageFromData(e))).then((e=>e&&t.appendChild(e))),t):t}_buildOverview(e){const t=document.createElement("div");t.style.width=ii+"px",t.style.height=this._totalHeight+"px";const i=t.createChild("canvas");i.width=window.devicePixelRatio*ii,i.height=window.devicePixelRatio*this._totalHeight;const n=i.getContext("2d");let s=0;for(const t of this._allOverviews){const i=new t.constructor;i.setCanvasSize(ii,t.height),i.setModel(e),i.update();const a=i.context(),r=a.getImageData(0,0,a.canvas.width,a.canvas.height);n&&n.putImageData(r,0,s),s+=t.height*window.devicePixelRatio}return t}static _dataForModel(e){return ni.get(e)||null}}const ti=5,ii=450,ni=new WeakMap;class si{constructor(e){this._glassPane=new Y.GlassPane,this._glassPane.setSizeBehavior(Y.SizeBehavior.MeasureContent),this._glassPane.setOutsideClickCallback((()=>this._close(null))),this._glassPane.setPointerEventsBehavior(Y.PointerEventsBehavior.BlockedByGlassPane),this._glassPane.setAnchorBehavior(Y.AnchorBehavior.PreferBottom),this._glassPane.element.addEventListener("blur",(()=>this._close(null)));const t=J.createShadowRootWithCoreStyles(this._glassPane.contentElement,{cssFile:"timeline/timelineHistoryManager.css",enableLegacyPatching:!0,delegatesFocus:void 0}).createChild("div","drop-down"),i=new Q.ListModel;this._listControl=new Z.ListControl(i,this,Z.ListMode.NonViewport),this._listControl.element.addEventListener("mousemove",this._onMouseMove.bind(this),!1),i.replaceAll(e),j.markAsMenu(this._listControl.element),j.setAccessibleName(this._listControl.element,R`Select Timeline Session`),t.appendChild(this._listControl.element),t.addEventListener("keydown",this._onKeyDown.bind(this),!1),t.addEventListener("click",this._onClick.bind(this),!1),this._focusRestorer=new H.ElementFocusRestorer(this._listControl.element),this._selectionDone=null}static show(e,t,i){if(si._instance)return Promise.resolve(null);return new si(e)._show(i,t)}static cancelIfShowing(){si._instance&&si._instance._close(null)}_show(e,t){return si._instance=this,this._glassPane.setContentAnchorBox(e.boxInWindow()),this._glassPane.show(this._glassPane.contentElement.ownerDocument),this._listControl.element.focus(),this._listControl.selectItem(t),new Promise((e=>{this._selectionDone=e}))}_onMouseMove(e){const t=e.target.enclosingNodeOrSelfWithClass("preview-item"),i=t&&this._listControl.itemForNode(t);i&&this._listControl.selectItem(i)}_onClick(e){e.target.enclosingNodeOrSelfWithClass("preview-item")&&this._close(this._listControl.selectedItem())}_onKeyDown(e){switch(e.key){case"Tab":case"Escape":this._close(null);break;case"Enter":this._close(this._listControl.selectedItem());break;default:return}e.consume(!0)}_close(e){this._selectionDone&&this._selectionDone(e),this._focusRestorer.restore(),this._glassPane.hide(),si._instance=null}createElementForItem(e){const t=ei._previewElement(e);return j.markAsMenuItem(t),t.classList.remove("selected"),t}heightForItem(e){return console.assert(!1,"Should not be called"),0}isItemSelectable(e){return!0}selectedItemChanged(e,t,i,n){i&&i.classList.remove("selected"),n&&n.classList.add("selected")}updateSelectedItemARIA(e,t){return!1}}si._instance=null;class ai extends z.ToolbarItem{constructor(e){const t=document.createElement("button");t.classList.add("history-dropdown-button"),super(t),J.appendStyle(this.element,"timeline/historyToolbarButton.css",{enableLegacyPatching:!0}),this._contentElement=this.element.createChild("span","content");const i=ee.Icon.create("smallicon-triangle-down");this.element.appendChild(i),this.element.addEventListener("click",(()=>{e.execute()}),!1),this.setEnabled(e.enabled()),e.addEventListener(te.Events.Enabled,(e=>this.setEnabled(e.data))),this.setTitle(e.title())}setText(e){this._contentElement.textContent=e}}var ri=Object.freeze({__proto__:null,TimelineHistoryManager:ei,maxRecordings:ti,previewWidth:ii,DropDown:si,ToolbarButton:ai,PreviewData:undefined});let oi=null,li=null;class hi{static isUiDevTools(){return"true"===Me.Runtime.queryParam("uiDevTools")}static categorizeEvents(){if(oi)return oi;const e=di,t=hi.categories(),i=t.drawing,n=t.rasterizing,s=t.layout,a=t.painting,r=t.other,o={};return o[e.ViewPaint]=new Li(R`View::Paint`,a),o[e.ViewOnPaint]=new Li(R`View::OnPaint`,a),o[e.ViewPaintChildren]=new Li(R`View::PaintChildren`,a),o[e.ViewOnPaintBackground]=new Li(R`View::OnPaintBackground`,a),o[e.ViewOnPaintBorder]=new Li(R`View::OnPaintBorder`,a),o[e.LayerPaintContentsToDisplayList]=new Li(R`Layer::PaintContentsToDisplayList`,a),o[e.ViewLayout]=new Li(R`View::Layout`,s),o[e.ViewLayoutBoundsChanged]=new Li(R`View::Layout(bounds_changed)`,s),o[e.RasterTask]=new Li(R`RasterTask`,n),o[e.RasterizerTaskImplRunOnWorkerThread]=new Li(R`RasterizerTaskImpl::RunOnWorkerThread`,n),o[e.DirectRendererDrawFrame]=new Li(R`DirectRenderer::DrawFrame`,i),o[e.BeginFrame]=new Li(R`Frame Start`,i,!0),o[e.DrawFrame]=new Li(R`Draw Frame`,i,!0),o[e.NeedsBeginFrameChanged]=new Li(R`NeedsBeginFrameChanged`,i,!0),o[e.ThreadControllerImplRunTask]=new Li(R`ThreadControllerImpl::RunTask`,r),oi=o,o}static categories(){return li||(li={layout:new Wi("layout",R`Layout`,!0,"hsl(214, 67%, 74%)","hsl(214, 67%, 66%)"),rasterizing:new Wi("rasterizing",R`Rasterizing`,!0,"hsl(43, 83%, 72%)","hsl(43, 83%, 64%) "),drawing:new Wi("drawing",R`Drawing`,!0,"hsl(256, 67%, 76%)","hsl(256, 67%, 70%)"),painting:new Wi("painting",R`Painting`,!0,"hsl(109, 33%, 64%)","hsl(109, 33%, 55%)"),other:new Wi("other",R`System`,!1,"hsl(0, 0%, 87%)","hsl(0, 0%, 79%)"),idle:new Wi("idle",R`Idle`,!1,"hsl(0, 0%, 98%)","hsl(0, 0%, 98%)")},li)}static getMainCategoriesList(){return["idle","drawing","painting","rasterizing","layout","other"]}}const di={ViewPaint:"View::Paint",ViewOnPaint:"View::OnPaint",ViewPaintChildren:"View::PaintChildren",ViewOnPaintBackground:"View::OnPaintBackground",ViewOnPaintBorder:"View::OnPaintBorder",ViewLayout:"View::Layout",ViewLayoutBoundsChanged:"View::Layout(bounds_changed)",LayerPaintContentsToDisplayList:"Layer::PaintContentsToDisplayList",DirectRendererDrawFrame:"DirectRenderer::DrawFrame",RasterTask:"RasterTask",RasterizerTaskImplRunOnWorkerThread:"RasterizerTaskImpl::RunOnWorkerThread",BeginFrame:"BeginFrame",DrawFrame:"DrawFrame",NeedsBeginFrameChanged:"NeedsBeginFrameChanged",ThreadControllerImplRunTask:"ThreadControllerImpl::RunTask"};var ci=Object.freeze({__proto__:null,UIDevtoolsUtils:hi,RecordType:di});class mi extends $e{constructor(e,t){super(e,t),Ri.setEventStylesMap(hi.categorizeEvents()),Ri.setCategories(hi.categories()),Ri.setTimelineMainEventCategories(hi.getMainCategoriesList())}}var ui=Object.freeze({__proto__:null,UIDevtoolsController:mi});let pi;class _i extends ie.Panel{constructor(){super("timeline"),this.registerRequiredCSS("timeline/timelinePanel.css",{enableLegacyPatching:!0}),this.element.addEventListener("contextmenu",this._contextMenu.bind(this),!1),this._dropTarget=new ne.DropTarget(this.element,[ne.Type.File,ne.Type.URI],m.UIString("Drop timeline file or URL here"),this._handleDrop.bind(this)),this._recordingOptionUIControls=[],this._state=gi.Idle,this._recordingPageReload=!1,this._millisecondsToRecordAfterLoadEvent=5e3,this._toggleRecordAction=K.ActionRegistry.instance().action("timeline.toggle-recording"),this._recordReloadAction=K.ActionRegistry.instance().action("timeline.record-reload"),this._historyManager=new ei,this._performanceModel=null,this._viewModeSetting=p.Settings.instance().createSetting("timelineViewMode",fi.FlameChart),this._disableCaptureJSProfileSetting=p.Settings.instance().createSetting("timelineDisableJSSampling",!1),this._disableCaptureJSProfileSetting.setTitle(m.UIString("Disable JavaScript samples")),this._captureLayersAndPicturesSetting=p.Settings.instance().createSetting("timelineCaptureLayersAndPictures",!1),this._captureLayersAndPicturesSetting.setTitle(m.UIString("Enable advanced paint instrumentation (slow)")),this._showScreenshotsSetting=p.Settings.instance().createSetting("timelineShowScreenshots",!0),this._showScreenshotsSetting.setTitle(m.UIString("Screenshots")),this._showScreenshotsSetting.addChangeListener(this._updateOverviewControls,this),this._startCoverage=p.Settings.instance().createSetting("timelineStartCoverage",!1),this._startCoverage.setTitle(R`Coverage`),Me.experiments.isEnabled("recordCoverageWithPerformanceTracing")||this._startCoverage.set(!1),this._showMemorySetting=p.Settings.instance().createSetting("timelineShowMemory",!1),this._showMemorySetting.setTitle(m.UIString("Memory")),this._showMemorySetting.addChangeListener(this._onModeChanged,this),this._showWebVitalsSetting=p.Settings.instance().createSetting("timelineWebVitals",!1),this._showWebVitalsSetting.setTitle(R`Web Vitals`),this._showWebVitalsSetting.addChangeListener(this._onWebVitalsChanged,this);const e=this.element.createChild("div","timeline-toolbar-container");this._panelToolbar=new z.Toolbar("timeline-main-toolbar",e),this._panelRightToolbar=new z.Toolbar("",e),this._createSettingsPane(),this._updateShowSettingsToolbarButton(),this._timelinePane=new O.VBox,this._timelinePane.show(this.element);const t=this._timelinePane.element.createChild("div","hbox");t.id="timeline-overview-panel",this._overviewPane=new w.TimelineOverviewPane("timeline"),this._overviewPane.addEventListener(w.Events.WindowChanged,this._onOverviewWindowChanged.bind(this)),this._overviewPane.show(t),this._overviewControls=[],this._statusPaneContainer=this._timelinePane.element.createChild("div","status-pane-container fill"),this._createFileSelector(),n.TargetManager.instance().addModelListener(l.ResourceTreeModel,l.Events.Load,this._loadEventFired,this),this._flameChart=new Jt(this),this._searchableView=new se.SearchableView(this._flameChart,null),this._searchableView.setMinimumSize(0,100),this._searchableView.element.classList.add("searchable-view"),this._searchableView.show(this._timelinePane.element),this._flameChart.show(this._searchableView.element),this._flameChart.setSearchableView(this._searchableView),this._searchableView.hideWidget(),this._onModeChanged(),this._onWebVitalsChanged(),this._populateToolbar(),this._showLandingPage(),this._updateTimelineControls(),we.ExtensionServer.instance().addEventListener(we.Events.TraceProviderAdded,this._appendExtensionsToToolbar,this),n.TargetManager.instance().addEventListener(n.Events.SuspendStateChanged,this._onSuspendStateChanged,this),this._showSettingsPaneButton,this._showSettingsPaneSetting,this._settingsPane,this._controller,this._clearButton,this._loadButton,this._saveButton,this._statusPane,this._landingPage}static instance(e={forceNew:null}){const{forceNew:t}=e;return pi&&!t||(pi=new _i),pi}searchableView(){return this._searchableView}wasShown(){ae.Context.instance().setFlavor(_i,this),be.panelLoaded("timeline","DevTools.Launch.Timeline")}willHide(){ae.Context.instance().setFlavor(_i,null),this._historyManager.cancelIfShowing()}loadFromEvents(e){this._state===gi.Idle&&(this._prepareToLoadTimeline(),this._loader=Oe.loadFromEvents(e,this))}_onOverviewWindowChanged(e){if(!this._performanceModel)return;const t=e.data.startTime,i=e.data.endTime;this._performanceModel.setWindow({left:t,right:i},!0)}_onModelWindowChanged(e){const t=e.data.window;this._overviewPane.setWindowTimes(t.left,t.right)}_setState(e){this._state=e,this._updateTimelineControls()}_createSettingCheckbox(e,t){const i=new z.ToolbarSettingCheckbox(e,t);return this._recordingOptionUIControls.push(i),i}_populateToolbar(){this._panelToolbar.appendToolbarItem(z.Toolbar.createActionButton(this._toggleRecordAction)),this._panelToolbar.appendToolbarItem(z.Toolbar.createActionButton(this._recordReloadAction)),this._clearButton=new z.ToolbarButton(m.UIString("Clear"),"largeicon-clear"),this._clearButton.addEventListener(z.ToolbarButton.Events.Click,(()=>this._onClearButton())),this._panelToolbar.appendToolbarItem(this._clearButton),this._loadButton=new z.ToolbarButton(m.UIString("Load profile…"),"largeicon-load"),this._loadButton.addEventListener(z.ToolbarButton.Events.Click,(()=>this._selectFileToLoad())),this._saveButton=new z.ToolbarButton(m.UIString("Save profile…"),"largeicon-download"),this._saveButton.addEventListener(z.ToolbarButton.Events.Click,(e=>{this._saveToFile()})),this._panelToolbar.appendSeparator(),this._panelToolbar.appendToolbarItem(this._loadButton),this._panelToolbar.appendToolbarItem(this._saveButton),this._panelToolbar.appendSeparator(),this._panelToolbar.appendToolbarItem(this._historyManager.button()),this._panelToolbar.appendSeparator(),this._panelToolbar.appendSeparator(),this._showScreenshotsToolbarCheckbox=this._createSettingCheckbox(this._showScreenshotsSetting,m.UIString("Capture screenshots")),this._panelToolbar.appendToolbarItem(this._showScreenshotsToolbarCheckbox),this._showMemoryToolbarCheckbox=this._createSettingCheckbox(this._showMemorySetting,m.UIString("Show memory timeline")),this._panelToolbar.appendToolbarItem(this._showMemoryToolbarCheckbox),this._showWebVitalsToolbarCheckbox=this._createSettingCheckbox(this._showWebVitalsSetting,R`Show Web Vitals`),this._panelToolbar.appendToolbarItem(this._showWebVitalsToolbarCheckbox),Me.experiments.isEnabled("recordCoverageWithPerformanceTracing")&&(this._startCoverageCheckbox=this._createSettingCheckbox(this._startCoverage,R`Record coverage with performance trace`),this._panelToolbar.appendToolbarItem(this._startCoverageCheckbox)),this._panelToolbar.appendToolbarItem(z.Toolbar.createActionButtonForId("components.collect-garbage")),this._panelRightToolbar.appendSeparator(),this._panelRightToolbar.appendToolbarItem(this._showSettingsPaneButton)}_createSettingsPane(){this._showSettingsPaneSetting=p.Settings.instance().createSetting("timelineShowSettingsToolbar",!1),this._showSettingsPaneButton=new z.ToolbarSettingToggle(this._showSettingsPaneSetting,"largeicon-settings-gear",m.UIString("Capture settings")),h.MultitargetNetworkManager.instance().addEventListener(h.MultitargetNetworkManager.Events.ConditionsChanged,this._updateShowSettingsToolbarButton,this),xe.throttlingManager().addEventListener(xe.Events.RateChanged,this._updateShowSettingsToolbarButton,this),this._disableCaptureJSProfileSetting.addChangeListener(this._updateShowSettingsToolbarButton,this),this._captureLayersAndPicturesSetting.addChangeListener(this._updateShowSettingsToolbarButton,this),this._settingsPane=new O.HBox,this._settingsPane.element.classList.add("timeline-settings-pane"),this._settingsPane.show(this.element);const e=new z.Toolbar("",this._settingsPane.element);e.element.classList.add("flex-auto"),e.makeVertical(),e.appendToolbarItem(this._createSettingCheckbox(this._disableCaptureJSProfileSetting,m.UIString("Disables JavaScript sampling, reduces overhead when running against mobile devices"))),e.appendToolbarItem(this._createSettingCheckbox(this._captureLayersAndPicturesSetting,m.UIString("Captures advanced paint instrumentation, introduces significant performance overhead")));const t=new O.VBox;t.element.classList.add("flex-auto"),t.show(this._settingsPane.element);const i=new z.Toolbar("",t.element);i.appendText(m.UIString("Network:")),this._networkThrottlingSelect=this._createNetworkConditionsSelect(),i.appendToolbarItem(this._networkThrottlingSelect);const n=new z.Toolbar("",t.element);n.appendText(m.UIString("CPU:")),this._cpuThrottlingSelect=xe.throttlingManager().createCPUThrottlingSelector(),n.appendToolbarItem(this._cpuThrottlingSelect),this._showSettingsPaneSetting.addChangeListener(this._updateSettingsPaneVisibility.bind(this)),this._updateSettingsPaneVisibility()}_appendExtensionsToToolbar(e){const t=e.data,i=_i._settingForTraceProvider(t),n=this._createSettingCheckbox(i,t.longDisplayName());this._panelToolbar.appendToolbarItem(n)}static _settingForTraceProvider(e){let t=wi.get(e);if(!t){const i=e.persistentIdentifier();t=p.Settings.instance().createSetting(i,!1),t.setTitle(e.shortDisplayName()),wi.set(e,t)}return t}_createNetworkConditionsSelect(){const e=new z.ToolbarComboBox(null,R`Network conditions`);return e.setMaxWidth(140),xe.throttlingManager().decorateSelectWithNetworkThrottling(e.selectElement()),e}_prepareToLoadTimeline(){console.assert(this._state===gi.Idle),this._setState(gi.Loading),this._performanceModel&&(this._performanceModel.dispose(),this._performanceModel=null)}_createFileSelector(){this._fileSelectorElement&&this._fileSelectorElement.remove(),this._fileSelectorElement=H.createFileSelectorElement(this._loadFromFile.bind(this)),this._timelinePane.element.appendChild(this._fileSelectorElement)}_contextMenu(e){const t=new re.ContextMenu(e);t.appendItemsAtLocation("timelineMenu"),t.show()}async _saveToFile(){if(this._state!==gi.Idle)return;const e=this._performanceModel;if(!e)return;const t=new Date,i="Profile-"+I.toISO8601Compact(t)+".json",n=new ue.FileOutputStream;if(!await n.open(i))return;const s=await e.save(n);s&&u.Console.instance().error(m.UIString("Failed to save timeline: %s (%s, %s)",s.message,s.name,s.code))}async _showHistory(){const e=await this._historyManager.showHistoryDropDown();e&&e!==this._performanceModel&&this._setModel(e)}_navigateHistory(e){const t=this._historyManager.navigate(e);return t&&t!==this._performanceModel&&this._setModel(t),!0}_selectFileToLoad(){this._fileSelectorElement&&this._fileSelectorElement.click()}_loadFromFile(e){this._state===gi.Idle&&(this._prepareToLoadTimeline(),this._loader=Oe.loadFromFile(e,this),this._createFileSelector())}_loadFromURL(e){this._state===gi.Idle&&(this._prepareToLoadTimeline(),this._loader=Oe.loadFromURL(e,this))}_updateOverviewControls(){this._overviewControls=[],this._overviewControls.push(new tt),Me.experiments.isEnabled("inputEventsOnTimelineOverview")&&this._overviewControls.push(new Ye),this._overviewControls.push(new nt),this._overviewControls.push(new et),this._overviewControls.push(new Qe),this._showScreenshotsSetting.get()&&this._performanceModel&&this._performanceModel.filmStripModel().frames().length&&this._overviewControls.push(new it),this._showMemorySetting.get()&&this._overviewControls.push(new st),this._startCoverage.get()&&this._overviewControls.push(new rt);for(const e of this._overviewControls)e.setModel(this._performanceModel);this._overviewPane.setOverviewControls(this._overviewControls)}_onModeChanged(){this._updateOverviewControls(),this.doResize(),this.select(null)}_onWebVitalsChanged(){this._flameChart.toggleWebVitalsLane()}_updateSettingsPaneVisibility(){this._showSettingsPaneSetting.get()?this._settingsPane.showWidget():this._settingsPane.hideWidget()}_updateShowSettingsToolbarButton(){const e=[];if(1!==xe.throttlingManager().cpuThrottlingRate()&&e.push(m.UIString("- CPU throttling is enabled")),h.MultitargetNetworkManager.instance().isThrottling()&&e.push(m.UIString("- Network throttling is enabled")),this._captureLayersAndPicturesSetting.get()&&e.push(m.UIString("- Significant overhead due to paint instrumentation")),this._disableCaptureJSProfileSetting.get()&&e.push(m.UIString("- JavaScript sampling is disabled")),this._showSettingsPaneButton.setDefaultWithRedColor(e.length>0),this._showSettingsPaneButton.setToggleWithRedColor(e.length>0),e.length){const t=document.createElement("div");e.forEach((e=>{t.createChild("div").textContent=e})),this._showSettingsPaneButton.setTitle(t.textContent||"")}else this._showSettingsPaneButton.setTitle(m.UIString("Capture settings"))}_setUIControlsEnabled(e){this._recordingOptionUIControls.forEach((t=>t.setEnabled(e)))}async _getCoverageViewWidget(){const e=oe.ViewManager.instance().view("coverage");return await e.widget()}async _startRecording(){console.assert(!this._statusPane,"Status pane is already opened."),this._setState(gi.StartPending);const e={enableJSSampling:!this._disableCaptureJSProfileSetting.get(),capturePictures:this._captureLayersAndPicturesSetting.get(),captureFilmStrip:this._showScreenshotsSetting.get(),startCoverage:this._startCoverage.get()};e.startCoverage&&await oe.ViewManager.instance().showView("coverage").then((()=>this._getCoverageViewWidget())).then((e=>e.ensureRecordingStarted())),this._showRecordingStarted();const t=we.ExtensionServer.instance().traceProviders().filter((e=>_i._settingForTraceProvider(e).get())),i=n.TargetManager.instance().mainTarget();hi.isUiDevTools()?this._controller=new mi(i,this):this._controller=new $e(i,this),this._setUIControlsEnabled(!1),this._hideLandingPage();const s=await this._controller.startRecording(e,t);s[ke.ProtocolError]?this._recordingFailed(s[ke.ProtocolError]):this._recordingStarted()}async _stopRecording(){if(this._statusPane&&(this._statusPane.finish(),this._statusPane.updateStatus(m.UIString("Stopping timeline…")),this._statusPane.updateProgressBar(m.UIString("Received"),0)),this._setState(gi.StopPending),this._startCoverage.get()&&await oe.ViewManager.instance().showView("coverage").then((()=>this._getCoverageViewWidget())).then((e=>e.stopRecording())),this._controller){const e=await this._controller.stopRecording();this._performanceModel=e,this._setUIControlsEnabled(!0),this._controller.dispose(),this._controller=null}}_recordingFailed(e){this._statusPane&&this._statusPane.hide(),this._statusPane=new Ti({description:e,buttonText:R`Close`,buttonDisabled:!1,showProgress:void 0,showTimer:void 0},(()=>this.loadingComplete(null))),this._statusPane.showPane(this._statusPaneContainer),this._statusPane.updateStatus(R`Recording failed`),this._setState(gi.RecordingFailed),this._performanceModel=null,this._setUIControlsEnabled(!0),this._controller&&(this._controller.dispose(),this._controller=null)}_onSuspendStateChanged(){this._updateTimelineControls()}_updateTimelineControls(){const e=gi;this._toggleRecordAction.setToggled(this._state===e.Recording),this._toggleRecordAction.setEnabled(this._state===e.Recording||this._state===e.Idle),this._recordReloadAction.setEnabled(this._state===e.Idle),this._historyManager.setEnabled(this._state===e.Idle),this._clearButton.setEnabled(this._state===e.Idle),this._panelToolbar.setEnabled(this._state!==e.Loading),this._panelRightToolbar.setEnabled(this._state!==e.Loading),this._dropTarget.setEnabled(this._state===e.Idle),this._loadButton.setEnabled(this._state===e.Idle),this._saveButton.setEnabled(this._state===e.Idle&&Boolean(this._performanceModel))}_toggleRecording(){this._state===gi.Idle?(this._recordingPageReload=!1,this._startRecording(),be.actionTaken(Ce.Action.TimelineStarted)):this._state===gi.Recording&&this._stopRecording()}_recordReload(){this._state===gi.Idle&&(this._recordingPageReload=!0,this._startRecording(),be.actionTaken(Ce.Action.TimelinePageReloadStarted))}_onClearButton(){this._historyManager.clear(),this._clear()}_clear(){this._showLandingPage(),this._reset()}_reset(){C.Performance.instance().reset(),this._setModel(null)}_applyFilters(e){e.timelineModel().isGenericTrace()||Me.experiments.isEnabled("timelineShowAllEvents")||e.setFilters([Ri.visibleEventsFilter()])}_setModel(e){if(this._performanceModel&&this._performanceModel.removeEventListener(Oi.WindowChanged,this._onModelWindowChanged,this),this._performanceModel=e,e?(this._searchableView.showWidget(),this._applyFilters(e)):this._searchableView.hideWidget(),this._flameChart.setModel(e),this._updateOverviewControls(),this._overviewPane.reset(),e&&this._performanceModel){this._performanceModel.addEventListener(Oi.WindowChanged,this._onModelWindowChanged,this),this._overviewPane.setNavStartTimes(e.timelineModel().navStartTimes()),this._overviewPane.setBounds(e.timelineModel().minimumRecordTime(),e.timelineModel().maximumRecordTime()),C.Performance.instance().reset();for(const t of e.timelineModel().cpuProfiles())C.Performance.instance().appendCPUProfile(t);this._setMarkers(e.timelineModel()),this._flameChart.setSelection(null),this._overviewPane.setWindowTimes(e.window().left,e.window().right)}for(const t of this._overviewControls)t.setModel(e);this._flameChart&&this._flameChart.resizeToPreferredHeights(),this._updateTimelineControls()}_recordingStarted(){if(this._recordingPageReload&&this._controller){const e=this._controller.mainTarget().model(l.ResourceTreeModel);e&&e.reloadPage()}this._reset(),this._setState(gi.Recording),this._showRecordingStarted(),this._statusPane&&(this._statusPane.enableAndFocusButton(),this._statusPane.updateStatus(m.UIString("Profiling…")),this._statusPane.updateProgressBar(m.UIString("Buffer usage"),0),this._statusPane.startTimer()),this._hideLandingPage()}recordingProgress(e){this._statusPane&&this._statusPane.updateProgressBar(m.UIString("Buffer usage"),100*e)}_showLandingPage(){if(this._landingPage)return void this._landingPage.show(this._statusPaneContainer);function e(e,t){const i=document.createElement(e);return i.textContent=t,i}const t=le.XLink.create("https://developers.google.com/web/tools/chrome-devtools/evaluate-performance/",m.UIString("Learn more")),i=e("b",he.ShortcutRegistry.instance().shortcutsForAction("timeline.toggle-recording")[0].title()),n=e("b",he.ShortcutRegistry.instance().shortcutsForAction("timeline.record-reload")[0].title()),s=e("b",m.UIString("WASD"));this._landingPage=new O.VBox,this._landingPage.contentElement.classList.add("timeline-landing-page","fill");const a=this._landingPage.contentElement.createChild("div"),r=H.createInlineButton(z.Toolbar.createActionButton(this._toggleRecordAction)),o=H.createInlineButton(z.Toolbar.createActionButtonForId("timeline.record-reload"));a.createChild("p").appendChild(H.formatLocalized("Click the record button %s or hit %s to start a new recording.\nClick the reload button %s or hit %s to record the page load.",[r,i,o,n])),a.createChild("p").appendChild(H.formatLocalized("After recording, select an area of interest in the overview by dragging.\nThen, zoom and pan the timeline with the mousewheel or %s keys.\n%s",[s,t])),this._landingPage.show(this._statusPaneContainer)}_hideLandingPage(){this._landingPage.detach()}loadingStarted(){this._hideLandingPage(),this._statusPane&&this._statusPane.hide(),this._statusPane=new Ti({showProgress:!0,showTimer:void 0,buttonDisabled:void 0,buttonText:void 0,description:void 0},(()=>this._cancelLoading())),this._statusPane.showPane(this._statusPaneContainer),this._statusPane.updateStatus(m.UIString("Loading profile…")),this._loader||this._statusPane.finish(),this.loadingProgress(0)}loadingProgress(e){"number"==typeof e&&this._statusPane&&this._statusPane.updateProgressBar(m.UIString("Received"),100*e)}processingStarted(){this._statusPane&&this._statusPane.updateStatus(m.UIString("Processing profile…"))}loadingComplete(e){delete this._loader,this._setState(gi.Idle),this._statusPane&&this._statusPane.hide(),this._statusPane=null,e?(this._performanceModel||(this._performanceModel=new Hi),this._performanceModel.setTracingModel(e),this._setModel(this._performanceModel),this._historyManager.addRecording(this._performanceModel),this._startCoverage.get()&&oe.ViewManager.instance().showView("coverage").then((()=>this._getCoverageViewWidget())).then((e=>e.processBacklog())).then((()=>this._updateOverviewControls()))):this._clear()}_showRecordingStarted(){this._statusPane||(this._statusPane=new Ti({showTimer:!0,showProgress:!0,buttonDisabled:!0,description:void 0,buttonText:void 0},(()=>this._stopRecording())),this._statusPane.showPane(this._statusPaneContainer),this._statusPane.updateStatus(m.UIString("Initializing profiler…")))}_cancelLoading(){this._loader&&this._loader.cancel()}_setMarkers(e){const t=new Map,i=U.RecordType,n=e.minimumRecordTime();for(const s of e.timeMarkerEvents())s.name!==i.TimeStamp&&s.name!==i.ConsoleTime&&t.set(s.startTime,Ri.createEventDivider(s,n));for(const i of e.navStartTimes().values())t.set(i.startTime,Ri.createEventDivider(i,n));this._overviewPane.setMarkers(t)}async _loadEventFired(e){if(this._state!==gi.Recording||!this._recordingPageReload||!this._controller||this._controller.mainTarget()!==e.data.resourceTreeModel.target())return;const t=this._controller;await new Promise((e=>setTimeout(e,this._millisecondsToRecordAfterLoadEvent))),t===this._controller&&this._state===gi.Recording&&this._stopRecording()}_frameForSelection(e){switch(e.type()){case vi.Type.Frame:return e.object();case vi.Type.Range:return null;case vi.Type.TraceEvent:return this._performanceModel?this._performanceModel.frameModel().frames(e._endTime,e._endTime)[0]:null;default:return console.assert(!1,"Should never be reached"),null}}_jumpToFrame(e){const t=this._selection&&this._frameForSelection(this._selection);if(!t||!this._performanceModel)return;const i=this._performanceModel.frames();let n=i.indexOf(t);console.assert(n>=0,"Can't find current frame in the frame list"),n=E.clamp(n+e,0,i.length-1);const s=i[n];return this._revealTimeRange(s.startTime,s.endTime),this.select(vi.fromFrame(s)),!0}select(e){this._selection=e,this._flameChart.setSelection(e)}selectEntryAtTime(e,i){if(e){for(let n=F.upperBound(e,i,((e,t)=>e-t.startTime))-1;n>=0;--n){const s=e[n],a=s.endTime||s.startTime;if(t.TracingModel.isTopLevelEvent(s)&&a<i)break;if(this._performanceModel&&this._performanceModel.isVisible(s)&&a>=i)return void this.select(vi.fromTraceEvent(s))}this.select(null)}}highlightEvent(e){this._flameChart.highlightEvent(e)}_revealTimeRange(e,t){if(!this._performanceModel)return;const i=this._performanceModel.window();let n=0;i.right<t?n=t-i.right:i.left>e&&(n=e-i.left),this._performanceModel.setWindow({left:i.left+n,right:i.right+n},!0)}_handleDrop(e){const t=e.items;if(!t.length)return;const i=t[0];if("string"===i.kind){const t=e.getData("text/uri-list");new _.ParsedURL(t).isValid&&this._loadFromURL(t)}else if("file"===i.kind){const e=t[0].webkitGetAsEntry();if(!e.isFile)return;e.file(this._loadFromFile.bind(this))}}}const gi={Idle:Symbol("Idle"),StartPending:Symbol("StartPending"),Recording:Symbol("Recording"),StopPending:Symbol("StopPending"),Loading:Symbol("Loading"),RecordingFailed:Symbol("RecordingFailed")},fi={FlameChart:"FlameChart",BottomUp:"BottomUp",CallTree:"CallTree",EventLog:"EventLog"};class vi{constructor(e,t,i,n){this._type=e,this._startTime=t,this._endTime=i,this._object=n||null}static fromFrame(e){return new vi(vi.Type.Frame,e.startTime,e.endTime,e)}static fromNetworkRequest(e){return new vi(vi.Type.NetworkRequest,e.startTime,e.endTime||e.startTime,e)}static fromTraceEvent(e){return new vi(vi.Type.TraceEvent,e.startTime,e.endTime||e.startTime+1,e)}static fromRange(e,t){return new vi(vi.Type.Range,e,t)}type(){return this._type}object(){return this._object}startTime(){return this._startTime}endTime(){return this._endTime}}vi.Type={Frame:"Frame",NetworkRequest:"NetworkRequest",TraceEvent:"TraceEvent",Range:"Range"};class Ti extends O.VBox{constructor(e,t){super(!0),this.registerRequiredCSS("timeline/timelineStatusDialog.css",{enableLegacyPatching:!0}),this.contentElement.classList.add("timeline-status-dialog");const i=this.contentElement.createChild("div","status-dialog-line status");if(i.createChild("div","label").textContent=m.UIString("Status"),this._status=i.createChild("div","content"),j.markAsStatus(this._status),e.showTimer){const e=this.contentElement.createChild("div","status-dialog-line time");e.createChild("div","label").textContent=m.UIString("Time"),this._time=e.createChild("div","content")}if(e.showProgress){const e=this.contentElement.createChild("div","status-dialog-line progress");this._progressLabel=e.createChild("div","label"),this._progressBar=e.createChild("div","indicator-container").createChild("div","indicator"),j.markAsProgressBar(this._progressBar)}if("string"==typeof e.description){const t=this.contentElement.createChild("div","status-dialog-line description");t.createChild("div","label").textContent=R`Description`,this._description=t.createChild("div","content"),this._description.innerText=e.description}const n=e.buttonText||R`Stop`;this._button=H.createTextButton(n,t,"",!0),this._button.disabled=!1==!e.buttonDisabled,this.contentElement.createChild("div","stop-button").appendChild(this._button),this._progressLabel,this._progressBar,this._startTime,this._time}finish(){this._stopTimer(),this._button.disabled=!0}hide(){this.element.parentNode.classList.remove("tinted"),this.element.remove()}showPane(e){this.show(e),e.classList.add("tinted")}enableAndFocusButton(){this._button.disabled=!1,this._button.focus()}updateStatus(e){this._status.textContent=e}updateProgressBar(e,t){this._progressLabel.textContent=e,this._progressBar.style.width=t.toFixed(1)+"%",j.setValueNow(this._progressBar,t),this._updateTimer()}startTimer(){this._startTime=Date.now(),this._timeUpdateTimer=setInterval(this._updateTimer.bind(this,!1),1e3),this._updateTimer()}_stopTimer(){this._timeUpdateTimer&&(clearInterval(this._timeUpdateTimer),this._updateTimer(!0),delete this._timeUpdateTimer)}_updateTimer(e){if(!this._timeUpdateTimer)return;const t=(Date.now()-this._startTime)/1e3;this._time.textContent=m.UIString("%s sec",t.toFixed(e?1:0))}}const wi=new WeakMap;var Si=Object.freeze({__proto__:null,TimelinePanel:_i,State:gi,ViewMode:fi,rowHeight:18,headerHeight:20,TimelineSelection:vi,TimelineModeViewDelegate:class{select(e){}selectEntryAtTime(e,t){}highlightEvent(e){}},StatusPane:Ti,LoadTimelineHandler:class{handleQueryParam(e){oe.ViewManager.instance().showView("timeline").then((()=>{_i.instance()._loadFromURL(window.decodeURIComponent(e))}))}},ActionDelegate:class{handleAction(e,t){const i=ae.Context.instance().flavor(_i);switch(console.assert(i&&i instanceof _i),t){case"timeline.toggle-recording":return i._toggleRecording(),!0;case"timeline.record-reload":return i._recordReload(),!0;case"timeline.save-to-file":return i._saveToFile(),!0;case"timeline.load-from-file":return i._selectFileToLoad(),!0;case"timeline.jump-to-previous-frame":return i._jumpToFrame(-1),!0;case"timeline.jump-to-next-frame":return i._jumpToFrame(1),!0;case"timeline.show-history":return i._showHistory(),!0;case"timeline.previous-recording":return i._navigateHistory(1),!0;case"timeline.next-recording":return i._navigateHistory(-1),!0}return!1}}});let yi,bi,Ci,xi,ki,Mi,Pi;const Ei=new WeakMap;class Ri{static _initEventStyles(){if(yi)return yi;const e=U.RecordType,t=Ri.categories(),i=t.rendering,n=t.scripting,s=t.loading,a=t.experience,r=t.painting,o=t.other,l=t.idle,h={};return h[e.Task]=new Li(R`Task`,o),h[e.Program]=new Li(R`Other`,o),h[e.Animation]=new Li(R`Animation`,i),h[e.EventDispatch]=new Li(R`Event`,n),h[e.RequestMainThreadFrame]=new Li(R`Request Main Thread Frame`,i,!0),h[e.BeginFrame]=new Li(R`Frame Start`,i,!0),h[e.BeginMainThreadFrame]=new Li(R`Frame Start (main thread)`,i,!0),h[e.DrawFrame]=new Li(R`Draw Frame`,i,!0),h[e.HitTest]=new Li(R`Hit Test`,i),h[e.ScheduleStyleRecalculation]=new Li(R`Schedule Style Recalculation`,i),h[e.RecalculateStyles]=new Li(R`Recalculate Style`,i),h[e.UpdateLayoutTree]=new Li(R`Recalculate Style`,i),h[e.InvalidateLayout]=new Li(R`Invalidate Layout`,i,!0),h[e.Layout]=new Li(R`Layout`,i),h[e.PaintSetup]=new Li(R`Paint Setup`,r),h[e.PaintImage]=new Li(R`Paint Image`,r,!0),h[e.UpdateLayer]=new Li(R`Update Layer`,r,!0),h[e.UpdateLayerTree]=new Li(R`Update Layer Tree`,i),h[e.Paint]=new Li(R`Paint`,r),h[e.RasterTask]=new Li(R`Rasterize Paint`,r),h[e.ScrollLayer]=new Li(R`Scroll`,i),h[e.CompositeLayers]=new Li(R`Composite Layers`,r),h[e.ParseHTML]=new Li(R`Parse HTML`,s),h[e.ParseAuthorStyleSheet]=new Li(R`Parse Stylesheet`,s),h[e.TimerInstall]=new Li(R`Install Timer`,n),h[e.TimerRemove]=new Li(R`Remove Timer`,n),h[e.TimerFire]=new Li(R`Timer Fired`,n),h[e.XHRReadyStateChange]=new Li(R`XHR Ready State Change`,n),h[e.XHRLoad]=new Li(R`XHR Load`,n),h[e.CompileScript]=new Li(R`Compile Script`,n),h[e.EvaluateScript]=new Li(R`Evaluate Script`,n),h[e.CompileModule]=new Li(R`Compile Module`,n),h[e.EvaluateModule]=new Li(R`Evaluate Module`,n),h[e.StreamingCompileScript]=new Li(R`Streaming Compile Task`,o),h[e.StreamingCompileScriptWaiting]=new Li(R`Waiting for Network`,l),h[e.StreamingCompileScriptParsing]=new Li(R`Parse and Compile`,n),h[e.WasmStreamFromResponseCallback]=new Li(R`Streaming Wasm Response`,n),h[e.WasmCompiledModule]=new Li(R`Compiled Wasm Module`,n),h[e.WasmCachedModule]=new Li(R`Cached Wasm Module`,n),h[e.WasmModuleCacheHit]=new Li(R`Wasm Module Cache Hit`,n),h[e.WasmModuleCacheInvalid]=new Li(R`Wasm Module Cache Invalid`,n),h[e.FrameStartedLoading]=new Li(R`Frame Started Loading`,s,!0),h[e.MarkLoad]=new Li(R`Onload Event`,n,!0),h[e.MarkDOMContent]=new Li(R`DOMContentLoaded Event`,n,!0),h[e.MarkFirstPaint]=new Li(R`First Paint`,r,!0),h[e.MarkFCP]=new Li(R`First Contentful Paint`,i,!0),h[e.MarkLCPCandidate]=new Li(R`Largest Contentful Paint`,i,!0),h[e.TimeStamp]=new Li(R`Timestamp`,n),h[e.ConsoleTime]=new Li(R`Console Time`,n),h[e.UserTiming]=new Li(R`User Timing`,n),h[e.ResourceWillSendRequest]=new Li(R`Will Send Request`,s),h[e.ResourceSendRequest]=new Li(R`Send Request`,s),h[e.ResourceReceiveResponse]=new Li(R`Receive Response`,s),h[e.ResourceFinish]=new Li(R`Finish Loading`,s),h[e.ResourceReceivedData]=new Li(R`Receive Data`,s),h[e.RunMicrotasks]=new Li(R`Run Microtasks`,n),h[e.FunctionCall]=new Li(R`Function Call`,n),h[e.GCEvent]=new Li(R`GC Event`,n),h[e.MajorGC]=new Li(R`Major GC`,n),h[e.MinorGC]=new Li(R`Minor GC`,n),h[e.JSFrame]=new Li(R`JS Frame`,n),h[e.RequestAnimationFrame]=new Li(R`Request Animation Frame`,n),h[e.CancelAnimationFrame]=new Li(R`Cancel Animation Frame`,n),h[e.FireAnimationFrame]=new Li(R`Animation Frame Fired`,n),h[e.RequestIdleCallback]=new Li(R`Request Idle Callback`,n),h[e.CancelIdleCallback]=new Li(R`Cancel Idle Callback`,n),h[e.FireIdleCallback]=new Li(R`Fire Idle Callback`,n),h[e.WebSocketCreate]=new Li(R`Create WebSocket`,n),h[e.WebSocketSendHandshakeRequest]=new Li(R`Send WebSocket Handshake`,n),h[e.WebSocketReceiveHandshakeResponse]=new Li(R`Receive WebSocket Handshake`,n),h[e.WebSocketDestroy]=new Li(R`Destroy WebSocket`,n),h[e.EmbedderCallback]=new Li(R`Embedder Callback`,n),h[e.DecodeImage]=new Li(R`Image Decode`,r),h[e.ResizeImage]=new Li(R`Image Resize`,r),h[e.GPUTask]=new Li(R`GPU`,t.gpu),h[e.LatencyInfo]=new Li(R`Input Latency`,n),h[e.GCCollectGarbage]=new Li(R`DOM GC`,n),h[e.CryptoDoEncrypt]=new Li(R`Encrypt`,n),h[e.CryptoDoEncryptReply]=new Li(R`Encrypt Reply`,n),h[e.CryptoDoDecrypt]=new Li(R`Decrypt`,n),h[e.CryptoDoDecryptReply]=new Li(R`Decrypt Reply`,n),h[e.CryptoDoDigest]=new Li(R`Digest`,n),h[e.CryptoDoDigestReply]=new Li(R`Digest Reply`,n),h[e.CryptoDoSign]=new Li(R`Sign`,n),h[e.CryptoDoSignReply]=new Li(R`Sign Reply`,n),h[e.CryptoDoVerify]=new Li(R`Verify`,n),h[e.CryptoDoVerifyReply]=new Li(R`Verify Reply`,n),h[e.AsyncTask]=new Li(R`Async Task`,t.async),h[e.LayoutShift]=new Li(R`Layout Shift`,a),yi=h,h}static setEventStylesMap(e){yi=e}static inputEventDisplayName(e){if(!bi){const e=V.InputEvents;bi=new Map([[e.Char,R`Key Character`],[e.KeyDown,R`Key Down`],[e.KeyDownRaw,R`Key Down`],[e.KeyUp,R`Key Up`],[e.Click,R`Click`],[e.ContextMenu,R`Context Menu`],[e.MouseDown,R`Mouse Down`],[e.MouseMove,R`Mouse Move`],[e.MouseUp,R`Mouse Up`],[e.MouseWheel,R`Mouse Wheel`],[e.ScrollBegin,R`Scroll Begin`],[e.ScrollEnd,R`Scroll End`],[e.ScrollUpdate,R`Scroll Update`],[e.FlingStart,R`Fling Start`],[e.FlingCancel,R`Fling Halt`],[e.Tap,R`Tap`],[e.TapCancel,R`Tap Halt`],[e.ShowPress,R`Tap Begin`],[e.TapDown,R`Tap Down`],[e.TouchCancel,R`Touch Cancel`],[e.TouchEnd,R`Touch End`],[e.TouchMove,R`Touch Move`],[e.TouchStart,R`Touch Start`],[e.PinchBegin,R`Pinch Begin`],[e.PinchEnd,R`Pinch End`],[e.PinchUpdate,R`Pinch Update`]])}return bi.get(e)||null}static frameDisplayName(e){if(!N.TimelineJSProfileProcessor.isNativeRuntimeFrame(e))return H.beautifyFunctionName(e.functionName);const t=N.TimelineJSProfileProcessor.nativeGroup(e.functionName),i=N.TimelineJSProfileProcessor.NativeGroups;switch(t){case i.Compile:return R`Compile`;case i.Parse:return R`Parse`}return e.functionName}static testContentMatching(e,t){const i=[Ri.eventStyle(e).title],n=U.TimelineData.forEvent(e).url;return n&&i.push(n),function e(t,n){if(!n)return;for(const s in t){const a=t[s],r=typeof a;"string"===r?i.push(a):"number"===r?i.push(String(a)):"object"===r&&e(a,n-1)}}(e.args,2),t.test(i.join("|"))}static eventURL(e){const t=e.args.data||e.args.beginData,i=t&&t.url;if(i)return i;const n=t&&t.stackTrace,s=n&&n.length&&n[0]||U.TimelineData.forEvent(e).topFrame();return s&&s.url||null}static eventStyle(e){const t=Ri._initEventStyles();if(e.hasCategory(U.TimelineModelImpl.Category.Console)||e.hasCategory(U.TimelineModelImpl.Category.UserTiming))return new Li(e.name,Ri.categories().scripting);if(e.hasCategory(U.TimelineModelImpl.Category.LatencyInfo)){const t="InputLatency::",i=e.name.startsWith(t)?e.name.substr(t.length):e.name,n=Ri.inputEventDisplayName(i);return new Li(n||i,Ri.categories().scripting)}let i=t[e.name];return i||(i=new Li(e.name,Ri.categories().other,!0),t[e.name]=i),i}static eventColor(e){if(e.name===U.RecordType.JSFrame){const t=e.args.data;if(Ri.isUserFrame(t))return Ri.colorForId(t.url)}const t=Ri.eventStyle(e).category.color;if(e.name===U.RecordType.StreamingCompileScriptWaiting){const e=f.Color.parse(Ri.categories().scripting.color);if(!e)throw new Error("Unable to parse color from TimelineUIUtils.categories().scripting.color");return e.setAlpha(.3).asString(null)}return t}static eventColorByProduct(e,t,i){const n=Ri.eventURL(i)||"";let s=t.get(n);if(s)return s;const a="#f2ecdc",r=_.ParsedURL.fromString(n);if(!r)return a;const o=r.host;return e.rootFrames().some((e=>new _.ParsedURL(e.url).host===o))&&(s=a),s||(s=a),t.set(n,s),s}static eventTitle(e){const t=U.RecordType,i=e.args.data;if(e.name===t.JSFrame)return Ri.frameDisplayName(i);const n=Ri.eventStyle(e).title;return e.hasCategory(U.TimelineModelImpl.Category.Console)?n:e.name===t.TimeStamp?R`${n}: ${i.message}`:e.name===t.Animation&&i&&i.name?R`${n}: ${i.name}`:e.name===t.EventDispatch&&i&&i.type?R`${n}: ${i.type}`:n}static _interactionPhaseStyles(){let e=Ci;return e||(e=new Map([[V.Phases.Idle,{color:"white",label:"Idle"}],[V.Phases.Response,{color:"hsl(43, 83%, 64%)",label:R`Response`}],[V.Phases.Scroll,{color:"hsl(256, 67%, 70%)",label:R`Scroll`}],[V.Phases.Fling,{color:"hsl(256, 67%, 70%)",label:R`Fling`}],[V.Phases.Drag,{color:"hsl(256, 67%, 70%)",label:R`Drag`}],[V.Phases.Animation,{color:"hsl(256, 67%, 70%)",label:R`Animation`}],[V.Phases.Uncategorized,{color:"hsl(0, 0%, 87%)",label:R`Uncategorized`}]]),Ci=e),e}static interactionPhaseColor(e){const t=Ri._interactionPhaseStyles().get(e);if(!t)throw new Error("Unknown phase "+e);return t.color}static interactionPhaseLabel(e){const t=Ri._interactionPhaseStyles().get(e);if(!t)throw new Error("Unknown phase "+e);return t.label}static isUserFrame(e){return"0"!==e.scriptId&&!(e.url&&e.url.startsWith("native "))}static networkRequestCategory(e){const t=Ii;switch(e.mimeType){case"text/html":return t.HTML;case"application/javascript":case"application/x-javascript":case"text/javascript":return t.Script;case"text/css":return t.Style;case"audio/ogg":case"image/gif":case"image/jpeg":case"image/png":case"image/svg+xml":case"image/webp":case"image/x-icon":case"font/opentype":case"font/woff2":case"application/font-woff":return t.Media;default:return t.Other}}static networkCategoryColor(e){const t=Ii;switch(e){case t.HTML:return"hsl(214, 67%, 66%)";case t.Script:return"hsl(43, 83%, 64%)";case t.Style:return"hsl(256, 67%, 70%)";case t.Media:return"hsl(109, 33%, 55%)";default:return"hsl(0, 0%, 70%)"}}static async buildDetailsTextForTraceEvent(e,t){const i=U.RecordType;let n;const s=e.args.data;switch(e.name){case i.GCEvent:case i.MajorGC:case i.MinorGC:{const t=e.args.usedHeapSizeBefore-e.args.usedHeapSizeAfter;n=m.UIString("%s collected",E.bytesToString(t));break}case i.FunctionCall:s&&(n=await a(s.scriptId,s.lineNumber,s.columnNumber));break;case i.JSFrame:n=Ri.frameDisplayName(s);break;case i.EventDispatch:n=s?s.type:null;break;case i.Paint:{const e=Ri.quadWidth(s.clip),t=Ri.quadHeight(s.clip);e&&t&&(n=m.UIString("%d × %d",e,t));break}case i.ParseHTML:{const t=e.args.beginData.startLine,i=e.args.endData&&e.args.endData.endLine,s=_e.displayNameForURL(e.args.beginData.url);n=i>=0?m.UIString("%s [%s…%s]",s,t+1,i+1):m.UIString("%s [%s…]",s,t+1);break}case i.CompileModule:n=_e.displayNameForURL(e.args.fileName);break;case i.CompileScript:case i.EvaluateScript:{const e=s&&s.url;e&&(n=_e.displayNameForURL(e)+":"+(s.lineNumber+1));break}case i.WasmCompiledModule:case i.WasmModuleCacheHit:{const t=e.args.url;t&&(n=_e.displayNameForURL(t));break}case i.StreamingCompileScript:case i.XHRReadyStateChange:case i.XHRLoad:{const e=s.url;e&&(n=_e.displayNameForURL(e));break}case i.TimeStamp:n=s.message;break;case i.WebSocketCreate:case i.WebSocketSendHandshakeRequest:case i.WebSocketReceiveHandshakeResponse:case i.WebSocketDestroy:case i.ResourceWillSendRequest:case i.ResourceSendRequest:case i.ResourceReceivedData:case i.ResourceReceiveResponse:case i.ResourceFinish:case i.PaintImage:case i.DecodeImage:case i.ResizeImage:case i.DecodeLazyPixelRef:{const t=U.TimelineData.forEvent(e).url;t&&(n=_e.displayNameForURL(t));break}case i.EmbedderCallback:n=s.callbackName;break;case i.Animation:n=s&&s.name;break;case i.AsyncTask:n=s?s.name:null;break;default:n=e.hasCategory(U.TimelineModelImpl.Category.Console)?null:await async function(){const t=U.TimelineData.forEvent(e).topFrame();if(!t)return null;let i=await a(t.scriptId,t.lineNumber,t.columnNumber);i||(i=t.url,"number"==typeof t.lineNumber&&(i+=":"+(t.lineNumber+1)));return i}()}return n;async function a(e,i,n){const s=t?t.model(d.DebuggerModel):null;if(!t||t.isDisposed()||!e||!s)return null;const a=s.createRawLocationByScriptId(e,i,n);if(!a)return null;const r=await ge.DebuggerWorkspaceBinding.instance().rawLocationToUILocation(a);return r?r.linkText():null}}static async buildDetailsNodeForTraceEvent(e,t,i){const n=U.RecordType;let s,a=null;const r=e.args.data;switch(e.name){case n.GCEvent:case n.MajorGC:case n.MinorGC:case n.EventDispatch:case n.Paint:case n.Animation:case n.EmbedderCallback:case n.ParseHTML:case n.WasmStreamFromResponseCallback:case n.WasmCompiledModule:case n.WasmModuleCacheHit:case n.WasmCachedModule:case n.WasmModuleCacheInvalid:case n.WebSocketCreate:case n.WebSocketSendHandshakeRequest:case n.WebSocketReceiveHandshakeResponse:case n.WebSocketDestroy:s=await Ri.buildDetailsTextForTraceEvent(e,t);break;case n.PaintImage:case n.DecodeImage:case n.ResizeImage:case n.DecodeLazyPixelRef:case n.XHRReadyStateChange:case n.XHRLoad:case n.ResourceWillSendRequest:case n.ResourceSendRequest:case n.ResourceReceivedData:case n.ResourceReceiveResponse:case n.ResourceFinish:{const t=U.TimelineData.forEvent(e).url;if(t){const e={tabStop:!0,className:void 0,columnNumber:void 0,text:void 0,lineNumber:void 0,preventClick:void 0,maxLength:void 0,bypassURLTrimming:void 0};a=fe.Linkifier.linkifyURL(t,e)}break}case n.FunctionCall:case n.JSFrame:{a=document.createElement("span"),H.createTextChild(a,Ri.frameDisplayName(r));const e=o(r.scriptId,r.url,r.lineNumber,r.columnNumber);e&&(H.createTextChild(a," @ "),a.appendChild(e));break}case n.CompileModule:a=o("",e.args.fileName,0,0);break;case n.CompileScript:case n.EvaluateScript:{const e=r.url;e&&(a=o("",e,r.lineNumber,0));break}case n.StreamingCompileScript:{const e=r.url;e&&(a=o("",e,0,0));break}default:e.hasCategory(U.TimelineModelImpl.Category.Console)?s=null:a=function(){const n=U.TimelineData.forEvent(e).topFrame();return n?i.maybeLinkifyConsoleCallFrame(t,n,{className:"timeline-details",tabStop:!0,columnNumber:void 0}):null}()}return!a&&s&&(a=document.createTextNode(s)),a;function o(e,n,s,a){const r={columnNumber:a,className:"timeline-details",tabStop:!0};return i.linkifyScriptLocation(t,e,n,s,r)}}static buildDetailsNodeForPerformanceEvent(e){let t="https://developers.google.com/web/fundamentals/performance/user-centric-performance-metrics#user-centric_performance_metrics",i="page performance metrics";const n=U.RecordType;switch(e.name){case n.MarkLCPCandidate:t="https://web.dev/largest-contentful-paint",i="largest contentful paint";break;case n.MarkFCP:t="https://web.dev/first-contentful-paint",i="first contentful paint"}return $.html`<div>${le.XLink.create(t,R`Learn more`)} about ${i}.</div>`}static buildCompilationCacheDetails(e,t){"producedCacheSize"in e?(t.appendTextRow(R`Compilation cache status`,R`script saved to cache`),t.appendTextRow(R`Compilation cache size`,E.bytesToString(e.producedCacheSize))):"consumedCacheSize"in e?(t.appendTextRow(R`Compilation cache status`,R`script loaded from cache`),t.appendTextRow(R`Compilation cache size`,E.bytesToString(e.consumedCacheSize))):e&&"cacheRejected"in e&&e.cacheRejected?t.appendTextRow(R`Compilation cache status`,R`failed to load script from cache`):t.appendTextRow(R`Compilation cache status`,R`script not eligible`)}static async buildTraceEventDetails(e,i,n,s){const a=i.targetByEvent(e);let r=null;if(a){const t=a;if(void 0===e[Ni]){let i=null;const n=U.TimelineData.forEvent(e).url;n?i=await ve.ImagePreview.build(t,n,!1,{imageAltText:ve.ImagePreview.defaultAltTextForImageURL(n),precomputedFeatures:void 0}):U.TimelineData.forEvent(e).picture&&(i=await Ri.buildPicturePreviewContent(e,t)),e[Ni]=i}const i=new Set,n=U.TimelineData.forEvent(e);n.backendNodeId&&i.add(n.backendNodeId);const s=U.InvalidationTracker.invalidationEventsFor(e);if(s&&Ri._collectInvalidationNodeIds(i,s),i.size){const e=t.model(o.DOMModel);e&&(r=await e.pushNodesByBackendIdsToFrontend(i))}}const l=U.RecordType;let h;e.name===l.LayoutShift&&(s=!1);const d=new Bi(i.targetByEvent(e),n),c=i.isMarkerEvent(e)?Ri.markerStyleForEvent(e).color:Ri.eventStyle(e).category.color;d.addSection(Ri.eventTitle(e),c);const m=e.args.data,u=U.TimelineData.forEvent(e),p=u.initiator();let _=null;if(u.warning&&d.appendWarningRow(e),e.name===l.JSFrame&&m.deoptReason&&d.appendWarningRow(e,U.TimelineModelImpl.WarningType.V8Deopt),s&&!Number.isNaN(e.duration||0)&&(d.appendTextRow(R`Total Time`,Number.millisToString(e.duration||0,!0)),d.appendTextRow(R`Self Time`,Number.millisToString(e.selfTime,!0))),i.isGenericTrace()){for(const t in e.args)try{d.appendTextRow(t,JSON.stringify(e.args[t]))}catch(i){d.appendTextRow(t,`<${typeof e.args[t]}>`)}return d.fragment}switch(e.name){case l.GCEvent:case l.MajorGC:case l.MinorGC:{const t=e.args.usedHeapSizeBefore-e.args.usedHeapSizeAfter;d.appendTextRow(R`Collected`,E.bytesToString(t));break}case l.JSFrame:case l.FunctionCall:{const t=await Ri.buildDetailsNodeForTraceEvent(e,i.targetByEvent(e),n);t&&d.appendElementRow(R`Function`,t);break}case l.TimerFire:case l.TimerInstall:case l.TimerRemove:d.appendTextRow(R`Timer ID`,m.timerId),e.name===l.TimerInstall&&(d.appendTextRow(R`Timeout`,Number.millisToString(m.timeout)),d.appendTextRow(R`Repeats`,!m.singleShot));break;case l.FireAnimationFrame:d.appendTextRow(R`Callback ID`,m.id);break;case l.ResourceWillSendRequest:case l.ResourceSendRequest:case l.ResourceReceiveResponse:case l.ResourceReceivedData:case l.ResourceFinish:if(_=u.url,_){const e={tabStop:!0,className:void 0,columnNumber:void 0,lineNumber:void 0,text:void 0,preventClick:void 0,maxLength:void 0,bypassURLTrimming:void 0};d.appendElementRow(R`Resource`,fe.Linkifier.linkifyURL(_,e))}if(m.requestMethod&&d.appendTextRow(R`Request Method`,m.requestMethod),"number"==typeof m.statusCode&&d.appendTextRow(R`Status Code`,m.statusCode),m.mimeType&&d.appendTextRow(R`MIME Type`,m.mimeType),"priority"in m){const e=y.uiLabelForNetworkPriority(m.priority);d.appendTextRow(R`Priority`,e)}m.encodedDataLength&&d.appendTextRow(R`Encoded Data`,R`${m.encodedDataLength} Bytes`),m.decodedBodyLength&&d.appendTextRow(R`Decoded Body`,R`${m.decodedBodyLength} Bytes`);break;case l.CompileModule:d.appendLocationRow(R`Module`,e.args.fileName,0);break;case l.CompileScript:{_=m&&m.url,_&&d.appendLocationRow(R`Script`,_,m.lineNumber,m.columnNumber);const e=m.streamed;d.appendTextRow(R`Streamed`,e+(e?"":": "+m.notStreamedReason)),Ri.buildCompilationCacheDetails(m,d);break}case l.EvaluateScript:_=m&&m.url,_&&d.appendLocationRow(R`Script`,_,m.lineNumber,m.columnNumber);break;case l.WasmStreamFromResponseCallback:case l.WasmCompiledModule:case l.WasmCachedModule:case l.WasmModuleCacheHit:case l.WasmModuleCacheInvalid:if(m){_=e.args.url,_&&d.appendTextRow(R`Url`,_);const t=e.args.producedCachedSize;t&&d.appendTextRow(R`Produced Cache Size`,t);const i=e.args.consumedCachedSize;i&&d.appendTextRow(R`Consumed Cache Size`,i)}break;case l.Paint:{const e=m.clip;d.appendTextRow(R`Location`,R`(${e[0]}, ${e[1]})`);const t=Ri.quadWidth(e),i=Ri.quadHeight(e);d.appendTextRow(R`Dimensions`,R`${t} × ${i}`)}case l.PaintSetup:case l.Rasterize:case l.ScrollLayer:h=R`Layer Root`;break;case l.PaintImage:case l.DecodeLazyPixelRef:case l.DecodeImage:case l.ResizeImage:case l.DrawLazyPixelRef:if(h=R`Owner Element`,_=u.url,_){const e={tabStop:!0,className:void 0,columnNumber:void 0,lineNumber:void 0,text:void 0,preventClick:void 0,maxLength:void 0,bypassURLTrimming:void 0};d.appendElementRow(R`Image URL`,fe.Linkifier.linkifyURL(_,e))}break;case l.ParseAuthorStyleSheet:if(_=m.styleSheetUrl,_){const e={tabStop:!0,className:void 0,columnNumber:void 0,lineNumber:void 0,text:void 0,preventClick:void 0,maxLength:void 0,bypassURLTrimming:void 0};d.appendElementRow(R`Stylesheet URL`,fe.Linkifier.linkifyURL(_,e))}break;case l.UpdateLayoutTree:case l.RecalculateStyles:d.appendTextRow(R`Elements Affected`,e.args.elementCount);break;case l.Layout:{const t=e.args.beginData;d.appendTextRow(R`Nodes That Need Layout`,R`${t.dirtyObjects} of ${t.totalObjects}`),h=R`Layout root`;break}case l.ConsoleTime:d.appendTextRow(R`Message`,e.name);break;case l.WebSocketCreate:case l.WebSocketSendHandshakeRequest:case l.WebSocketReceiveHandshakeResponse:case l.WebSocketDestroy:{const e=p?p.args.data:m;void 0!==e.webSocketURL&&d.appendTextRow(R`URL`,e.webSocketURL),void 0!==e.webSocketProtocol&&d.appendTextRow(R`WebSocket Protocol`,e.webSocketProtocol),void 0!==m.message&&d.appendTextRow(R`Message`,m.message);break}case l.EmbedderCallback:d.appendTextRow(R`Callback Function`,m.callbackName);break;case l.Animation:e.phase===t.Phase.NestableAsyncInstant&&d.appendTextRow(R`State`,m.state);break;case l.ParseHTML:{const t=e.args.beginData,i=t.startLine-1,n=e.args.endData?e.args.endData.endLine-1:void 0;_=t.url,_&&d.appendLocationRange(R`Range`,_,i,n);break}case l.FireIdleCallback:d.appendTextRow(R`Allotted Time`,Number.millisToString(m.allottedMilliseconds)),d.appendTextRow(R`Invoked by Timeout`,m.timedOut);case l.RequestIdleCallback:case l.CancelIdleCallback:d.appendTextRow(R`Callback ID`,m.id);break;case l.EventDispatch:d.appendTextRow(R`Type`,m.type);break;case l.MarkLCPCandidate:d.appendTextRow(R`Type`,String(m.type)),d.appendTextRow(R`Size`,String(m.size));case l.MarkFirstPaint:case l.MarkFCP:case l.MarkLoad:case l.MarkDOMContent:{let t=e.startTime-i.minimumRecordTime();const{navigationId:n}=e.args.data;if(n){const s=i.navStartTimes().get(n);s&&(t=e.startTime-s.startTime)}d.appendTextRow(R`Timestamp`,Number.preciseMillisToString(t,1)),d.appendElementRow(R`Details`,Ri.buildDetailsNodeForPerformanceEvent(e));break}case l.LayoutShift:{const e=document.createElement("span"),t=H.createWebDevLink("cls/",R`Cumulative Layout Shifts`);e.appendChild(H.formatLocalized("%s can result in poor user experiences.",[t])),d.appendElementRow(R`Warning`,e,!0),d.appendTextRow(R`Score`,m.score.toPrecision(4)),d.appendTextRow(R`Cumulative Score`,m.cumulative_score.toPrecision(4)),d.appendTextRow(R`Had recent input`,m.had_recent_input?R`Yes`:R`No`);for(const e of m.impacted_nodes){const t=new Ae(e.old_rect),i=new Ae(e.new_rect),n=await T.Linkifier.linkify(t),s=await T.Linkifier.linkify(i);d.appendElementRow(R`Moved from`,n),d.appendElementRow(R`Moved to`,s)}break}default:{const t=await Ri.buildDetailsNodeForTraceEvent(e,i.targetByEvent(e),n);t&&d.appendElementRow(R`Details`,t);break}}u.timeWaitingForMainThread&&d.appendTextRow(R`Time Waiting for Main Thread`,Number.millisToString(u.timeWaitingForMainThread,!0));const g=r&&r.get(u.backendNodeId);if(g){const e=await T.Linkifier.linkify(g);d.appendElementRow(h||R`Related Node`,e)}e[Ni]&&(d.addSection(R`Preview`),d.appendElementRow("",e[Ni])),(p||u.stackTraceForSelfOrInitiator()||U.InvalidationTracker.invalidationEventsFor(e))&&Ri._generateCauses(e,i.targetByEvent(e),r,d);const f={};if(s&&Ri._aggregatedStatsForTraceEvent(f,i,e)){d.addSection(R`Aggregated Time`);const t=Ri.generatePieChart(f,Ri.eventStyle(e).category,e.selfTime);d.appendElementRow("",t)}return d.fragment}static statsForTimeRange(e,i,n){if(!e.length)return{idle:n-i};!function(e){if(e[Vi])return;const i={},n=[];let s=0;function a(e,t){let n=i[e];if(n||(n={time:[],value:[]},i[e]=n),n.time.length&&n.time[n.time.length-1]===t||s>t)return;const a=n.value.length>0?n.value[n.value.length-1]:0;n.value.push(a+t-s),n.time.push(t)}function r(e,t,i){e&&a(e,i),s=i,t&&a(t,i)}U.TimelineModelImpl.forEachEvent(e,(function(e){const t=Ri.eventStyle(e).category.name,i=n.length?n[n.length-1]:null;t!==i&&r(i||null,t,e.startTime),n.push(t)}),(function(e){const t=n.pop(),i=n.length?n[n.length-1]:null;t!==i&&r(t||null,i||null,e.endTime||0)}),void 0,void 0,void 0,function(){const e=Ri.visibleEventsFilter();return i=>e.accept(i)||t.TracingModel.isTopLevelEvent(i)}());e[Vi]=i}(e);const s=function(e,t){const i=Object.assign({},e);for(const e in t)i[e]-=t[e];return i}(r(n),r(i)),a=Object.values(s).reduce(((e,t)=>e+t),0);return s.idle=Math.max(0,n-i-a),s;function r(t){const i={},n=e[Vi];for(const e in n){const s=n[e],a=F.upperBound(s.time,t,F.DEFAULT_COMPARATOR);let r;if(0===a)r=0;else if(a===s.time.length)r=s.value[s.value.length-1];else{const e=s.time[a-1],i=s.time[a],n=s.value[a-1];r=n+(s.value[a]-n)*(t-e)/(i-e)}i[e]=r}return i}}static async buildNetworkRequestDetails(e,t,i){const n=t.targetByEvent(e.children[0]),s=new Bi(n,i),a=Ri.networkRequestCategory(e),r=Ri.networkCategoryColor(a);if(s.addSection(R`Network request`,r),e.url){const t={tabStop:!0,className:void 0,columnNumber:void 0,text:void 0,lineNumber:void 0,preventClick:void 0,maxLength:void 0,bypassURLTrimming:void 0};s.appendElementRow(R`URL`,fe.Linkifier.linkifyURL(e.url,t))}const o=e.endTime-(e.getStartTime()||-1/0);if(isFinite(o)){let t=Number.millisToString(o,!0);const i=(e.finishTime||e.getStartTime())-e.getStartTime(),n=e.endTime-(e.finishTime||0);if(isFinite(i)&&isFinite(n)){const s=Number.millisToString(i,!0),a=Number.millisToString(n,!0),r=e.cached()?R`load from cache`:R`network transfer`;t+=R` (${s} ${r} + ${a} resource loading)`}s.appendTextRow(R`Duration`,t)}if(e.requestMethod&&s.appendTextRow(R`Request Method`,e.requestMethod),"string"==typeof e.priority){const t=y.uiLabelForNetworkPriority(e.priority);s.appendTextRow(R`Priority`,t)}e.mimeType&&s.appendTextRow(R`Mime Type`,e.mimeType);let l="";e.memoryCached()?l+=R` (from memory cache)`:e.cached()?l+=R` (from cache)`:e.timing&&e.timing.pushStart&&(l+=R` (from push)`),e.fromServiceWorker&&(l+=R` (from service worker)`),!e.encodedDataLength&&l||(l=`${E.bytesToString(e.encodedDataLength)}${l}`),s.appendTextRow(R`Encoded Data`,l),e.decodedBodyLength&&s.appendTextRow(R`Decoded Body`,E.bytesToString(e.decodedBodyLength));const h=R`Initiator`,d=e.children[0],c=U.TimelineData.forEvent(d).topFrame();if(c){const e=i.maybeLinkifyConsoleCallFrame(n,c,{tabStop:!0,className:void 0,columnNumber:void 0});e&&s.appendElementRow(h,e)}else{const e=U.TimelineData.forEvent(d).initiator();if(e){const t=U.TimelineData.forEvent(e).url;if(t){const e=i.maybeLinkifyScriptLocation(n,null,t,0,{tabStop:!0,className:void 0,columnNumber:void 0});e&&s.appendElementRow(h,e)}}}if(!Ei.get(e)&&e.url&&n){const t=await ve.ImagePreview.build(n,e.url,!1,{imageAltText:ve.ImagePreview.defaultAltTextForImageURL(e.url),precomputedFeatures:void 0});Ei.set(e,t)}const m=Ei.get(e);return m&&s.appendElementRow(R`Preview`,m),s.fragment}static _stackTraceFromCallFrames(e){return{callFrames:e}}static _generateCauses(e,t,i,n){const s=U.RecordType;let a,r;switch(e.name){case s.TimerFire:a=R`Timer Installed`;break;case s.FireAnimationFrame:a=R`Animation Frame Requested`;break;case s.FireIdleCallback:a=R`Idle Callback Requested`;break;case s.UpdateLayoutTree:case s.RecalculateStyles:r=R`Recalculation Forced`;break;case s.Layout:a=R`First Layout Invalidation`,r=R`Layout Forced`}const o=U.TimelineData.forEvent(e);o.stackTrace&&o.stackTrace.length&&(n.addSection(R`Call Stacks`),n.appendStackTrace(r||R`Stack Trace`,Ri._stackTraceFromCallFrames(o.stackTrace)));const l=U.TimelineData.forEvent(e).initiator();if(U.InvalidationTracker.invalidationEventsFor(e)&&t)n.addSection(R`Invalidations`),Ri._generateInvalidations(e,t,i,n);else if(l){const t=e.startTime-l.startTime;n.appendTextRow(R`Pending for`,Number.preciseMillisToString(t,1));const i=document.createElement("span");i.classList.add("devtools-link"),j.markAsLink(i),i.tabIndex=0,i.textContent=R`Reveal`,i.addEventListener("click",(()=>{_i.instance().select(vi.fromTraceEvent(l))})),i.addEventListener("keydown",(e=>{"Enter"===e.key&&(_i.instance().select(vi.fromTraceEvent(l)),e.consume(!0))})),n.appendElementRow(R`Initiator`,i);const s=U.TimelineData.forEvent(l).stackTrace;s&&n.appendStackTrace(a||R`First Invalidated`,Ri._stackTraceFromCallFrames(s))}}static _generateInvalidations(e,t,i,n){const s=U.InvalidationTracker.invalidationEventsFor(e);if(!s)return;const a={};for(const e of s)a[e.type]||(a[e.type]=[]),a[e.type].push(e);Object.keys(a).forEach((function(e){Ri._generateInvalidationsForType(e,t,a[e],i,n)}))}static _generateInvalidationsForType(e,t,i,n,s){let a;switch(e){case U.RecordType.StyleRecalcInvalidationTracking:a=R`Style Invalidations`;break;case U.RecordType.LayoutInvalidationTracking:a=R`Layout Invalidations`;break;default:a=R`Other Invalidations`}const r=new de.TreeOutlineInShadow;r.registerRequiredCSS("timeline/invalidationsTree.css",{enableLegacyPatching:!1}),r.element.classList.add("invalidations-tree");(function(e){const t=new Map;for(let i=0;i<e.length;i++){const n=e[i];let s="";n.cause.reason&&(s+=n.cause.reason+"."),n.cause.stackTrace&&n.cause.stackTrace.forEach((function(e){s+=e.functionName+".",s+=e.scriptId+".",s+=e.url+".",s+=e.lineNumber+".",s+=e.columnNumber+"."}));const a=t.get(s);a?a.push(n):t.set(s,[n])}return[...t.values()]})(i).forEach((function(e){const i=new Di(t,n,s,e);r.appendChild(i)})),s.appendElementRow(a,r.element,!1,!0)}static _collectInvalidationNodeIds(e,t){D.addAll(e,t.map((e=>e.nodeId)).filter((e=>e)))}static _aggregatedStatsForTraceEvent(e,i,n){const s=i.inspectedTargetEvents();const a=F.binaryIndexOf(s,n.startTime,(function(e,t){return e-t.startTime}));if(a<0)return!1;let r=!1;const o=n.endTime;if(o)for(let t=a;t<s.length;t++){const i=s[t];if(i.startTime>=o)break;if(!i.selfTime)continue;if(i.thread!==n.thread)continue;t>a&&(r=!0);const l=Ri.eventStyle(i).category.name;e[l]=(e[l]||0)+i.selfTime}if(t.TracingModel.isAsyncPhase(n.phase)){if(n.endTime){let t=0;for(const i in e)t+=e[i];e.idle=Math.max(0,n.endTime-n.startTime-t)}return!1}return r}static async buildPicturePreviewContent(e,t){const i=await new A.LayerPaintEvent(e,t).snapshotPromise();if(!i)return null;const n=i.snapshot.replay();i.snapshot.release();const s=await n;if(!s)return null;const a=document.createElement("div");J.appendStyle(a,"components/imagePreview.css",{enableLegacyPatching:!1}),a.classList.add("image-preview-container","vbox","link");const r=a.createChild("img");r.src=s,r.alt=ve.ImagePreview.defaultAltTextForImageURL(s);return a.createChild("a").textContent=R`Paint Profiler`,j.markAsLink(a),a.tabIndex=0,a.addEventListener("click",(()=>_i.instance().select(vi.fromTraceEvent(e))),!1),a.addEventListener("keydown",(t=>{"Enter"===t.key&&(_i.instance().select(vi.fromTraceEvent(e)),t.consume(!0))})),a}static createEventDivider(e,t){const i=document.createElement("div");i.classList.add("resources-event-divider");const n=Number.millisToString(e.startTime-t);ce.Tooltip.install(i,m.UIString("%s at %s",Ri.eventTitle(e),n));const s=Ri.markerStyleForEvent(e);return s.tall&&(i.style.backgroundColor=s.color),i}static _visibleTypes(){const e=Ri._initEventStyles(),t=[];for(const i in e)e[i].hidden||t.push(i);return t}static visibleEventsFilter(){return new W.TimelineVisibleEventsFilter(Ri._visibleTypes())}static categories(){return xi||(xi={loading:new Wi("loading",R`Loading`,!0,"hsl(214, 67%, 74%)","hsl(214, 67%, 66%)"),experience:new Wi("experience",R`Experience`,!1,"hsl(5, 80%, 74%)","hsl(5, 80%, 66%)"),scripting:new Wi("scripting",R`Scripting`,!0,"hsl(43, 83%, 72%)","hsl(43, 83%, 64%) "),rendering:new Wi("rendering",R`Rendering`,!0,"hsl(256, 67%, 76%)","hsl(256, 67%, 70%)"),painting:new Wi("painting",R`Painting`,!0,"hsl(109, 33%, 64%)","hsl(109, 33%, 55%)"),gpu:new Wi("gpu",R`GPU`,!1,"hsl(109, 33%, 64%)","hsl(109, 33%, 55%)"),async:new Wi("async",R`Async`,!1,"hsl(0, 100%, 50%)","hsl(0, 100%, 40%)"),other:new Wi("other",R`System`,!1,"hsl(0, 0%, 87%)","hsl(0, 0%, 79%)"),idle:new Wi("idle",R`Idle`,!1,"hsl(0, 0%, 98%)","hsl(0, 0%, 98%)")},xi)}static setCategories(e){xi=e}static getTimelineMainEventCategories(){return ki||(ki=["idle","loading","painting","rendering","scripting","other"],ki)}static setTimelineMainEventCategories(e){ki=e}static generatePieChart(e,t,i){let n=0;for(const t in e)n+=e[t];const s=document.createElement("div");s.classList.add("timeline-details-view-pie-chart-wrapper"),s.classList.add("hbox");const a=new x.PieChart,r=[];function o(e,t,i,n){i&&r.push({value:i,color:n,title:t})}if(t){i&&o(t.name,m.UIString("%s (self)",t.title),i,t.color);const n=e[t.name]-(i||0);n>0&&o(t.name,m.UIString("%s (children)",t.title),n,t.childColor)}for(const i in Ri.categories()){const n=Ri.categories()[i];n!==t&&o(n.name,n.title,e[n.name],n.childColor)}a.data={chartName:R`Time spent in rendering`,size:110,formatter:e=>Number.preciseMillisToString(e),showLegend:!0,total:n,slices:r};return s.createChild("div","vbox").appendChild(a),s}static generateDetailsContentForFrame(e,t){const i=new Bi(null,null);i.addSection(R`Frame`);const n=Ri.frameDuration(e);i.appendElementRow(R`Duration`,n,e.hasWarnings());const s=e.endTime-e.startTime;if(i.appendTextRow(R`FPS`,Math.floor(1e3/s)),i.appendTextRow(R`CPU time`,Number.millisToString(e.cpuTime,!0)),t){const e=document.createElement("div");e.classList.add("timeline-filmstrip-preview"),t.imageDataPromise().then((e=>H.loadImageFromData(e))).then((t=>t&&e.appendChild(t))),i.appendElementRow("",e),e.addEventListener("click",function(e){new k.Dialog(e,0)}.bind(null,t),!1)}return e.layerTree&&i.appendElementRow(R`Layer tree`,fe.Linkifier.linkifyRevealable(e.layerTree,R`Show`)),i.fragment}static frameDuration(e){const t=m.UIString("%s (at %s)",Number.millisToString(e.endTime-e.startTime,!0),Number.millisToString(e.startTimeOffset,!0));if(!e.hasWarnings())return H.formatLocalized("%s",[t]);const i=le.XLink.create("https://developers.google.com/web/fundamentals/performance/rendering/",R`jank`);return H.formatLocalized("%s. Long frame times are an indication of %s",[t,i])}static createFillStyle(e,t,i,n,s,a){const r=e.createLinearGradient(0,0,t,i);return r.addColorStop(0,n),r.addColorStop(.25,s),r.addColorStop(.75,s),r.addColorStop(1,a),r}static quadWidth(e){return Math.round(Math.sqrt(Math.pow(e[0]-e[2],2)+Math.pow(e[1]-e[3],2)))}static quadHeight(e){return Math.round(Math.sqrt(Math.pow(e[0]-e[6],2)+Math.pow(e[1]-e[7],2)))}static eventDispatchDesciptors(){if(Mi)return Mi;const e="hsl(40,100%,80%)",t="hsl(40,100%,50%)";return Mi=[new Ui(1,e,["mousemove","mouseenter","mouseleave","mouseout","mouseover"]),new Ui(1,e,["pointerover","pointerout","pointerenter","pointerleave","pointermove"]),new Ui(2,"hsl(90,100%,40%)",["wheel"]),new Ui(3,t,["click","mousedown","mouseup"]),new Ui(3,t,["touchstart","touchend","touchmove","touchcancel"]),new Ui(3,t,["pointerdown","pointerup","pointercancel","gotpointercapture","lostpointercapture"]),new Ui(3,"hsl(256,100%,75%)",["keydown","keyup","keypress"])],Mi}static markerShortTitle(e){const t=U.RecordType;switch(e.name){case t.MarkDOMContent:return R`DCL`;case t.MarkLoad:return R`L`;case t.MarkFirstPaint:return R`FP`;case t.MarkFCP:return R`FCP`;case t.MarkLCPCandidate:return R`LCP`}return null}static markerStyleForEvent(e){const t=[6,4],i=Ri.eventTitle(e),n=U.RecordType;if(e.name!==n.NavigationStart&&(e.hasCategory(U.TimelineModelImpl.Category.Console)||e.hasCategory(U.TimelineModelImpl.Category.UserTiming)))return{title:i,dashStyle:t,lineWidth:.5,color:e.hasCategory(U.TimelineModelImpl.Category.UserTiming)?"purple":"orange",tall:!1,lowPriority:!1};let s=!1,a="grey";switch(e.name){case n.NavigationStart:a="#FF9800",s=!0;break;case n.FrameStartedLoading:a="green",s=!0;break;case n.MarkDOMContent:a="#0867CB",s=!0;break;case n.MarkLoad:a="#B31412",s=!0;break;case n.MarkFirstPaint:a="#228847",s=!0;break;case n.MarkFCP:a="#1A6937",s=!0;break;case n.MarkLCPCandidate:a="#1A3422",s=!0;break;case n.TimeStamp:a="orange"}return{title:i,dashStyle:t,lineWidth:.5,color:a,tall:s,lowPriority:!1}}static markerStyleForFrame(){return{title:R`Frame`,color:"rgba(100, 100, 100, 0.4)",lineWidth:3,dashStyle:[3],tall:!0,lowPriority:!0}}static colorForId(e){return Pi||(Pi=new f.Generator({min:30,max:330,count:void 0},{min:50,max:80,count:3},85),Pi.setColorForID("","#f2ecdc")),Pi.colorForID(e)}static eventWarning(e,t){const i=U.TimelineData.forEvent(e),n=t||i.warning;if(!n)return null;const s=U.TimelineModelImpl.WarningType,a=document.createElement("span"),r=e.args.data;switch(n){case s.ForcedStyle:case s.ForcedLayout:{const e=H.createDocumentationLink("../../fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing#avoid-forced-synchronous-layouts",R`Forced reflow`);a.appendChild(H.formatLocalized("%s is a likely performance bottleneck.",[e]));break}case s.IdleDeadlineExceeded:{const t=Number.millisToString((e.duration||0)-r.allottedMilliseconds,!0);a.textContent=R`Idle callback execution extended beyond deadline by ${t}`;break}case s.LongHandler:a.textContent=m.UIString("Handler took %s",Number.millisToString(e.duration||0,!0));break;case s.LongRecurringHandler:a.textContent=m.UIString("Recurring handler took %s",Number.millisToString(e.duration||0,!0));break;case s.LongTask:{const t=H.createDocumentationLink("../../fundamentals/performance/rail#goals-and-guidelines",R`Long task`);a.appendChild(H.formatLocalized("%s took %s.",[t,Number.millisToString(e.duration||0,!0)]));break}case s.V8Deopt:a.appendChild(le.XLink.create("https://github.com/GoogleChrome/devtools-docs/issues/53",m.UIString("Not optimized"))),H.createTextChild(a,m.UIString(": %s",r.deoptReason));break;default:console.assert(!1,"Unhandled TimelineModel.WarningType")}return a}static displayNameForFrame(e,t){return t||(t=30),e.url.startsWith("about:")?`"${L.trimMiddle(e.name,t)}"`:e.url.trimEnd(t)}}class Li{constructor(e,t,i=!1){this.title=e,this.category=t,this.hidden=i}}const Ii={HTML:Symbol("HTML"),Script:Symbol("Script"),Style:Symbol("Style"),Media:Symbol("Media"),Other:Symbol("Other")},Fi=Symbol("aggregatedStats");class Di extends de.TreeElement{constructor(e,t,i,n){super("",!0),this.listItemElement.classList.add("header"),this.selectable=!1,this.toggleOnClick=!0,this._relatedNodesMap=t,this._contentHelper=i,this._invalidations=n,this.title=this._createTitle(e)}_createTitle(e){const t=this._invalidations[0],i=t.cause.reason||R`Unknown cause`,n=t.cause.stackTrace&&t.cause.stackTrace[0],s=this._getTruncatedNodesElement(this._invalidations);if(null===s)return H.formatLocalized(i,[]);const a=H.formatLocalized("%s for %s",[i,s]);if(n&&this._contentHelper.linkifier()){const t=document.createElement("span");t.classList.add("monospace");const i=H.formatLocalized("%s. %s",[a,t]);t.createChild("span").textContent=Ri.frameDisplayName(n);const s=this._contentHelper.linkifier();if(s){const i=s.maybeLinkifyConsoleCallFrame(e,n);i&&(i.textContent&&""!==i.textContent||(i.textContent=R`unknown`),t.createChild("span").textContent=" @ ",t.createChild("span").appendChild(i))}return i}return a}async onpopulate(){const e=document.createElement("div");e.classList.add("content");const t=this._invalidations[0];if(t.cause.stackTrace){const i=e.createChild("div");H.createTextChild(i,R`Stack trace:`),this._contentHelper.createChildStackTraceElement(i,Ri._stackTraceFromCallFrames(t.cause.stackTrace))}H.createTextChild(e,1!==this._invalidations.length?R`Nodes:`:R`Node:`);const i=e.createChild("div","node-list");let n=!0;for(let e=0;e<this._invalidations.length;e++){const t=this._invalidations[e],s=this._createInvalidationNode(t,!0);if(s){n||H.createTextChild(i,R`, `),n=!1,i.appendChild(s);const e=t.extraData?", "+t.extraData:"";t.changedId?H.createTextChild(i,m.UIString('(changed id to "%s"%s)',t.changedId,e)):t.changedClass?H.createTextChild(i,m.UIString('(changed class to "%s"%s)',t.changedClass,e)):t.changedAttribute?H.createTextChild(i,m.UIString('(changed attribute to "%s"%s)',t.changedAttribute,e)):t.changedPseudo?H.createTextChild(i,m.UIString('(changed pesudo to "%s"%s)',t.changedPseudo,e)):t.selectorPart&&H.createTextChild(i,m.UIString('(changed "%s"%s)',t.selectorPart,e))}}const s=new de.TreeElement(e,!1);s.selectable=!1,this.appendChild(s)}_getTruncatedNodesElement(e){const t=[],i={};for(let n=0;n<e.length;n++){const s=e[n],a=this._createInvalidationNode(s,!1);a.addEventListener("click",(e=>e.consume()),!1),a&&s.nodeId&&!i[s.nodeId]&&(t.push(a),i[s.nodeId]=!0)}if(1===t.length){const e=t[0];return e instanceof HTMLSpanElement?e:null}return 2===t.length?H.formatLocalized("%s and %s",t):3===t.length?H.formatLocalized("%s, %s, and 1 other",t.slice(0,2)):t.length>=4?H.formatLocalized("%s, %s, and %s others",[...t.slice(0,2),(t.length-2).toString()]):null}_createInvalidationNode(e,t){const i=e.nodeId&&this._relatedNodesMap?this._relatedNodesMap.get(e.nodeId):null;if(i){const e=document.createElement("span");return T.Linkifier.linkify(i).then((t=>e.appendChild(t))),e}if(e.nodeName){const t=document.createElement("span");return t.textContent=m.UIString("[ %s ]",e.nodeName),t}if(t){const e=document.createElement("span");return H.createTextChild(e,m.UIString("[ unknown node ]"))}throw new Error("Unable to create invalidation node")}}const Ni=Symbol("previewElement");class Ui{constructor(e,t,i){this.priority=e,this.color=t,this.eventTypes=i}}class Wi extends g.ObjectWrapper{constructor(e,t,i,n,s){super(),this.name=e,this.title=t,this.visible=i,this.childColor=n,this.color=s,this.hidden=!1}get hidden(){return Boolean(this._hidden)}set hidden(e){this._hidden=e,this.dispatchEventToListeners(Wi.Events.VisibilityChanged,this)}}Wi.Events={VisibilityChanged:Symbol("VisibilityChanged")};class Bi{constructor(e,t){this.fragment=document.createDocumentFragment(),this._linkifier=t,this._target=e,this.element=document.createElement("div"),this.element.classList.add("timeline-details-view-block"),this._tableElement=this.element.createChild("div","vbox timeline-details-chip-body"),this.fragment.appendChild(this.element)}addSection(e,t){if(this._tableElement.hasChildNodes()?(this.element=document.createElement("div"),this.element.classList.add("timeline-details-view-block"),this.fragment.appendChild(this.element)):this.element.removeChildren(),e){const i=this.element.createChild("div","timeline-details-chip-title");t&&(i.createChild("div").style.backgroundColor=t),H.createTextChild(i,e)}this._tableElement=this.element.createChild("div","vbox timeline-details-chip-body"),this.fragment.appendChild(this.element)}linkifier(){return this._linkifier}appendTextRow(e,t){const i=this._tableElement.createChild("div","timeline-details-view-row");i.createChild("div","timeline-details-view-row-title").textContent=e,i.createChild("div","timeline-details-view-row-value").textContent=t.toString()}appendElementRow(e,t,i,n){const s=this._tableElement.createChild("div","timeline-details-view-row");i&&s.classList.add("timeline-details-warning"),n&&s.classList.add("timeline-details-stack-values");s.createChild("div","timeline-details-view-row-title").textContent=e;const a=s.createChild("div","timeline-details-view-row-value");t instanceof Node?a.appendChild(t):H.createTextChild(a,t||"")}appendLocationRow(e,t,i,n){if(!this._linkifier||!this._target)return;const s={tabStop:!0,className:void 0,columnNumber:n,text:void 0,lineNumber:void 0,preventClick:void 0,maxLength:void 0,bypassURLTrimming:void 0},a=this._linkifier.maybeLinkifyScriptLocation(this._target,null,t,i,s);a&&this.appendElementRow(e,a)}appendLocationRange(e,t,i,n){if(!this._linkifier||!this._target)return;const s=document.createElement("span"),a=this._linkifier.maybeLinkifyScriptLocation(this._target,null,t,i,{tabStop:!0,className:void 0,columnNumber:void 0});a&&(s.appendChild(a),H.createTextChild(s,L.sprintf(" [%s…%s]",i+1,(n||0)+1||"")),this.appendElementRow(e,s))}appendStackTrace(e,t){if(!this._linkifier||!this._target)return;const i=this._tableElement.createChild("div","timeline-details-view-row");i.createChild("div","timeline-details-view-row-title").textContent=e,this.createChildStackTraceElement(i,t)}createChildStackTraceElement(e,t){if(!this._linkifier||!this._target)return;e.classList.add("timeline-details-stack-values");const i=e.createChild("div","timeline-details-view-row-value timeline-details-view-row-stack-trace"),n=Te.buildStackTracePreviewContents(this._target,this._linkifier,{stackTrace:t,tabStops:!0,contentUpdated:void 0});i.appendChild(n.element)}appendWarningRow(e,t){const i=Ri.eventWarning(e,t);i&&this.appendElementRow(R`Warning`,i,!0)}}const Vi=Symbol("categoryBreakdownCache");var Ai=Object.freeze({__proto__:null,TimelineUIUtils:Ri,TimelineRecordStyle:Li,NetworkCategory:Ii,aggregatedStatsKey:Fi,InvalidationsGroupElement:Di,previewElementSymbol:Ni,EventDispatchTypeDescriptor:Ui,TimelineCategory:Wi,TimelinePopupContentHelper:class{constructor(e){this._contentTable=document.createElement("table");const t=this._createCell(m.UIString("%s - Details",e),"timeline-details-title");t.colSpan=2;const i=document.createElement("tr");i.appendChild(t),this._contentTable.appendChild(i)}contentTable(){return this._contentTable}_createCell(e,t){const i=document.createElement("label");H.createTextChild(i,String(e));const n=document.createElement("td");return n.className="timeline-details",t&&(n.className+=" "+t),n.textContent=e.toString(),n}appendTextRow(e,t){const i=document.createElement("tr");i.appendChild(this._createCell(e,"timeline-details-row-title")),i.appendChild(this._createCell(t,"timeline-details-row-data")),this._contentTable.appendChild(i)}appendElementRow(e,t){const i=document.createElement("tr"),n=this._createCell(e,"timeline-details-row-title");i.appendChild(n);const s=document.createElement("td");s.className="details",t instanceof Node?s.appendChild(t):H.createTextChild(s,t||""),i.appendChild(s),this._contentTable.appendChild(i)}},TimelineDetailsContentHelper:Bi,categoryBreakdownCacheSymbol:Vi,TimelineMarkerStyle:undefined});class Hi extends g.ObjectWrapper{constructor(){super(),this._mainTarget=null,this._tracingModel=null,this._filters=[],this._timelineModel=new U.TimelineModelImpl,this._frameModel=new A.TimelineFrameModel((e=>Ri.eventStyle(e).category.name)),this._filmStripModel=null,this._irModel=new V.TimelineIRModel,this._window={left:0,right:1/0},this._extensionTracingModels=[],this._recordStartTime=void 0}setMainTarget(e){this._mainTarget=e}mainTarget(){return this._mainTarget}setRecordStartTime(e){this._recordStartTime=e}recordStartTime(){return this._recordStartTime}setFilters(e){this._filters=e}filters(){return this._filters}isVisible(e){return this._filters.every((t=>t.accept(e)))}setTracingModel(e){this._tracingModel=e,this._timelineModel.setEvents(e);let t=null,i=null;for(const e of this._timelineModel.tracks())e.type===U.TrackType.Input&&(t=e.asyncEvents),e.type===U.TrackType.Animation&&(i=e.asyncEvents);(t||i)&&this._irModel.populate(t||[],i||[]);const n=this._timelineModel.tracks().filter((e=>e.type===U.TrackType.MainThread&&e.forMainFrame&&e.events.length)).map((e=>{const t=e.events[0];return{thread:t.thread,time:t.startTime}}));this._frameModel.addTraceEvents(this._mainTarget,this._timelineModel.inspectedTargetEvents(),n);for(const e of this._extensionTracingModels)e.model.adjustTime(this._tracingModel.minimumRecordTime()+e.timeOffset/1e3-this._recordStartTime);this._autoWindowTimes()}addExtensionEvents(e,t,i){this._extensionTracingModels.push({model:t,title:e,timeOffset:i}),this._tracingModel&&(t.adjustTime(this._tracingModel.minimumRecordTime()+i/1e3-this._recordStartTime),this.dispatchEventToListeners(Oi.ExtensionDataAdded))}tracingModel(){if(!this._tracingModel)throw"call setTracingModel before accessing PerformanceModel";return this._tracingModel}timelineModel(){return this._timelineModel}filmStripModel(){if(this._filmStripModel)return this._filmStripModel;if(!this._tracingModel)throw"call setTracingModel before accessing PerformanceModel";return this._filmStripModel=new c.FilmStripModel(this._tracingModel),this._filmStripModel}frames(){return this._frameModel.frames()}frameModel(){return this._frameModel}interactionRecords(){return this._irModel.interactionRecords()}extensionInfo(){return this._extensionTracingModels}dispose(){this._tracingModel&&this._tracingModel.dispose();for(const e of this._extensionTracingModels)e.model.dispose()}filmStripModelFrame(e){const t=e.idle?e.startTime:e.endTime,i=this._filmStripModel.frameByTimestamp(t);return i&&i.timestamp-e.endTime<10?i:null}save(e){if(!this._tracingModel)throw"call setTracingModel before accessing PerformanceModel";return this._tracingModel.backingStorage().writeToStream(e)}setWindow(e,t){this._window=e,this.dispatchEventToListeners(Oi.WindowChanged,{window:e,animate:t})}window(){return this._window}_autoWindowTimes(){const e=this._timelineModel;let t=[];for(const i of e.tracks())i.type===U.TrackType.MainThread&&i.forMainFrame&&(t=i.tasks);if(!t.length)return void this.setWindow({left:e.minimumRecordTime(),right:e.maximumRecordTime()});function i(e,i){let n=e,s=(t[n].startTime+t[n].endTime)/2,a=0;const r=Math.sign(i-e);for(let o=e;o!==i;o+=r){const e=t[o],i=(e.startTime+e.endTime)/2;a<.1*Math.abs(s-i)&&(n=o,s=i,a=0),a+=e.duration}return n}const n=i(t.length-1,0),s=i(0,n);let a=t[s].startTime,r=t[n].endTime;const o=r-a;o<.1*(e.maximumRecordTime()-e.minimumRecordTime())?(a=e.minimumRecordTime(),r=e.maximumRecordTime()):(a=Math.max(a-.05*o,e.minimumRecordTime()),r=Math.min(r+.05*o,e.maximumRecordTime())),this.setWindow({left:a,right:r})}}const Oi={ExtensionDataAdded:Symbol("ExtensionDataAdded"),WindowChanged:Symbol("WindowChanged")};var Gi=Object.freeze({__proto__:null,PerformanceModel:Hi,Events:Oi,Window:undefined});class zi extends O.VBox{constructor(e){super(),this.element.id="memory-graphs-container",this._delegate=e,this._calculator=new Xi,this._model,this._header=new O.HBox,this._header.element.classList.add("timeline-memory-header"),this._header.show(this.element),this._toolbar=new z.Toolbar("timeline-memory-toolbar"),this._header.element.appendChild(this._toolbar.element),this._graphsContainer=new O.VBox,this._graphsContainer.show(this.element);const t=new O.VBoxWithResizeCallback(this._resize.bind(this));t.show(this._graphsContainer.element),this._createCurrentValuesBar(),this._canvasContainer=t.element,this._canvasContainer.id="memory-graphs-canvas-container",this._canvas=document.createElement("canvas"),this._canvasContainer.appendChild(this._canvas),this._canvas.id="memory-counters-graph",this._canvasContainer.addEventListener("mouseover",this._onMouseMove.bind(this),!0),this._canvasContainer.addEventListener("mousemove",this._onMouseMove.bind(this),!0),this._canvasContainer.addEventListener("mouseleave",this._onMouseLeave.bind(this),!0),this._canvasContainer.addEventListener("click",this._onClick.bind(this),!0),this._timelineGrid=new M.TimelineGrid,this._canvasContainer.appendChild(this._timelineGrid.dividersElement),this._counters=[],this._counterUI=[],this._countersByName=new Map,this._countersByName.set("jsHeapSizeUsed",this._createCounter(m.UIString("JS Heap"),m.UIString("JS Heap: %s"),"hsl(220, 90%, 43%)",E.bytesToString)),this._countersByName.set("documents",this._createCounter(m.UIString("Documents"),m.UIString("Documents: %s"),"hsl(0, 90%, 43%)")),this._countersByName.set("nodes",this._createCounter(m.UIString("Nodes"),m.UIString("Nodes: %s"),"hsl(120, 90%, 43%)")),this._countersByName.set("jsEventListeners",this._createCounter(m.UIString("Listeners"),m.UIString("Listeners: %s"),"hsl(38, 90%, 43%)")),this._gpuMemoryCounter=this._createCounter(m.UIString("GPU Memory"),m.UIString("GPU Memory: %s"),"hsl(300, 90%, 43%)",E.bytesToString),this._countersByName.set("gpuMemoryUsedKB",this._gpuMemoryCounter)}setModel(e,t){this._model!==e&&(this._model&&this._model.removeEventListener(Oi.WindowChanged,this._onWindowChanged,this),this._model=e,this._model&&this._model.addEventListener(Oi.WindowChanged,this._onWindowChanged,this)),this._calculator.setZeroTime(e?e.timelineModel().minimumRecordTime():0);for(let e=0;e<this._counters.length;++e)this._counters[e].reset(),this._counterUI[e].reset();if(this.scheduleRefresh(),this._track=t,!t)return;const i=t.syncEvents();for(let e=0;e<i.length;++e){const t=i[e];if(t.name!==U.RecordType.UpdateCounters)continue;const n=t.args.data;if(!n)return;for(const e in n){const i=this._countersByName.get(e);i&&i.appendSample(t.startTime,n[e])}const s="gpuMemoryLimitKB";s in n&&this._gpuMemoryCounter.setLimit(n[s])}}_createCurrentValuesBar(){this._currentValuesBar=this._graphsContainer.element.createChild("div"),this._currentValuesBar.id="counter-values-bar"}_createCounter(e,t,i,n){const s=new ji;return this._counters.push(s),this._counterUI.push(new qi(this,e,t,i,s,n)),s}resizerElement(){return this._header.element}_resize(){const e=this._canvas.parentElement;this._canvas.width=e.clientWidth*window.devicePixelRatio,this._canvas.height=e.clientHeight*window.devicePixelRatio,this._calculator.setDisplayWidth(this._canvas.width),this.refresh()}_onWindowChanged(e){const t=e.data.window;this._calculator.setWindow(t.left,t.right),this.scheduleRefresh()}scheduleRefresh(){H.invokeOnceAfterBatchUpdate(this,this.refresh)}draw(){this._clear();for(const e of this._counters)e._calculateVisibleIndexes(this._calculator),e._calculateXValues(this._canvas.width);for(const e of this._counterUI)e._drawGraph(this._canvas)}_onClick(e){const t=e.x-this._canvasContainer.totalOffsetLeft();let i,n=1/0;for(const e of this._counterUI){if(!e.counter.times.length)continue;const s=e._recordIndexAt(t),a=Math.abs(t*window.devicePixelRatio-e.counter.x[s]);a<n&&(n=a,i=e.counter.times[s])}void 0!==i&&this._track&&this._delegate.selectEntryAtTime(this._track.events.length?this._track.events:this._track.asyncEvents,i)}_onMouseLeave(e){delete this._markerXPosition,this._clearCurrentValueAndMarker()}_clearCurrentValueAndMarker(){for(let e=0;e<this._counterUI.length;e++)this._counterUI[e]._clearCurrentValueAndMarker()}_onMouseMove(e){const t=e.x-this._canvasContainer.totalOffsetLeft();this._markerXPosition=t,this._refreshCurrentValues()}_refreshCurrentValues(){if(void 0!==this._markerXPosition)for(let e=0;e<this._counterUI.length;++e)this._counterUI[e].updateCurrentValue(this._markerXPosition)}refresh(){this._timelineGrid.updateDividers(this._calculator),this.draw(),this._refreshCurrentValues()}_clear(){const e=this._canvas.getContext("2d");if(!e)throw new Error("Unable to get canvas context");e.clearRect(0,0,e.canvas.width,e.canvas.height)}}class ji{constructor(){this.times=[],this.values=[],this.x=[],this._minimumIndex=0,this._maximumIndex=0,this._maxTime=0,this._minTime=0}appendSample(e,t){this.values.length&&this.values[this.values.length-1]===t||(this.times.push(e),this.values.push(t))}reset(){this.times=[],this.values=[]}setLimit(e){this._limitValue=e}_calculateBounds(){let e,t;for(let i=this._minimumIndex;i<=this._maximumIndex;i++){const n=this.values[i];(void 0===t||n<t)&&(t=n),(void 0===e||n>e)&&(e=n)}return t=t||0,e=e||1,this._limitValue&&(e>.5*this._limitValue&&(e=Math.max(e,this._limitValue)),t=Math.min(t,this._limitValue)),{min:t,max:e}}_calculateVisibleIndexes(e){const t=e.minimumBoundary(),i=e.maximumBoundary();this._minimumIndex=E.clamp(F.upperBound(this.times,t,F.DEFAULT_COMPARATOR)-1,0,this.times.length-1),this._maximumIndex=E.clamp(F.lowerBound(this.times,i,F.DEFAULT_COMPARATOR),0,this.times.length-1),this._minTime=t,this._maxTime=i}_calculateXValues(e){if(!this.values.length)return;const t=e/(this._maxTime-this._minTime);this.x=new Array(this.values.length);for(let e=this._minimumIndex+1;e<=this._maximumIndex;e++)this.x[e]=t*(this.times[e]-this._minTime)}}class qi{constructor(e,t,i,n,s,a){this._countersPane=e,this.counter=s,this._formatter=a||Number.withThousandsSeparator,this._setting=p.Settings.instance().createSetting("timelineCountersGraph-"+t,!0),this._setting.setTitle(t),this._filter=new z.ToolbarSettingCheckbox(this._setting,t),this._filter.inputElement.classList.add("-theme-preserve-input");const r=f.Color.parse(n);if(r){const e=r.setAlpha(.5).asString(f.Format.RGBA),t=this._filter.element;e&&(t.style.backgroundColor=e),t.style.borderColor="transparent"}this._filter.inputElement.addEventListener("click",this._toggleCounterGraph.bind(this)),e._toolbar.appendToolbarItem(this._filter),this._range=this._filter.element.createChild("span","range"),this._value=e._currentValuesBar.createChild("span","memory-counter-value"),this._value.style.color=n,this.graphColor=n,r&&(this.limitColor=r.setAlpha(.3).asString(f.Format.RGBA)),this.graphYValues=[],this._verticalPadding=10,this._currentValueLabel=i,this._marker=e._canvasContainer.createChild("div","memory-counter-marker"),this._marker.style.backgroundColor=n,this._clearCurrentValueAndMarker()}reset(){this._range.textContent=""}setRange(e,t){const i=this._formatter(e),n=this._formatter(t);this._range.textContent=m.UIString("[%s – %s]",i,n)}_toggleCounterGraph(){this._value.classList.toggle("hidden",!this._filter.checked()),this._countersPane.refresh()}_recordIndexAt(e){return F.upperBound(this.counter.x,e*window.devicePixelRatio,F.DEFAULT_COMPARATOR,this.counter._minimumIndex+1,this.counter._maximumIndex+1)-1}updateCurrentValue(e){if(!this.visible()||!this.counter.values.length||!this.counter.x)return;const t=this._recordIndexAt(e),i=Number.withThousandsSeparator(this.counter.values[t]);this._value.textContent=m.UIString(this._currentValueLabel,i);const n=this.graphYValues[t]/window.devicePixelRatio;this._marker.style.left=e+"px",this._marker.style.top=n+"px",this._marker.classList.remove("hidden")}_clearCurrentValueAndMarker(){this._value.textContent="",this._marker.classList.add("hidden")}_drawGraph(e){const t=e.getContext("2d");if(!t)throw new Error("Unable to get canvas context");const i=e.width,n=e.height-2*this._verticalPadding;if(n<=0)return void(this.graphYValues=[]);const s=this._verticalPadding,a=this.counter,r=a.values;if(!r.length)return;const o=a._calculateBounds(),l=o.min,h=o.max;if(this.setRange(l,h),!this.visible())return;const d=this.graphYValues,c=h-l,m=c?n/c:1;t.save(),t.lineWidth=window.devicePixelRatio,t.lineWidth%2&&t.translate(.5,.5),t.beginPath();let u=r[a._minimumIndex],p=Math.round(s+n-(u-l)*m);t.moveTo(0,p);let _=a._minimumIndex;for(;_<=a._maximumIndex;_++){const e=Math.round(a.x[_]);t.lineTo(e,p);const i=r[_];void 0!==i&&(u=i),p=Math.round(s+n-(u-l)*m),t.lineTo(e,p),d[_]=p}if(d.length=_,t.lineTo(i,p),t.strokeStyle=this.graphColor,t.stroke(),a._limitValue){const e=Math.round(s+n-(a._limitValue-l)*m);t.moveTo(0,e),t.lineTo(i,e),this.limitColor&&(t.strokeStyle=this.limitColor),t.stroke()}t.closePath(),t.restore()}visible(){return this._filter.checked()}}class Xi{constructor(){this._minimumBoundary=0,this._maximumBoundary=0,this._workingArea=0,this._zeroTime=0}setZeroTime(e){this._zeroTime=e}computePosition(e){return(e-this._minimumBoundary)/this.boundarySpan()*this._workingArea}setWindow(e,t){this._minimumBoundary=e,this._maximumBoundary=t}setDisplayWidth(e){this._workingArea=e}formatValue(e,t){return Number.preciseMillisToString(e-this.zeroTime(),t)}maximumBoundary(){return this._maximumBoundary}minimumBoundary(){return this._minimumBoundary}zeroTime(){return this._zeroTime}boundarySpan(){return this._maximumBoundary-this._minimumBoundary}}var $i=Object.freeze({__proto__:null,CountersGraph:zi,Counter:ji,CounterUI:qi,Calculator:Xi});export{He as CLSLinkifier,$i as CountersGraph,bt as EventsTimelineTreeView,Xe as ExtensionTracingSession,Gi as PerformanceModel,Je as TimelineController,Lt as TimelineDetailsView,ot as TimelineEventOverview,ct as TimelineFilters,Bt as TimelineFlameChartDataProvider,At as TimelineFlameChartNetworkDataProvider,Zt as TimelineFlameChartView,ri as TimelineHistoryManager,xt as TimelineLayersView,je as TimelineLoader,Pt as TimelinePaintProfilerView,Si as TimelinePanel,wt as TimelineTreeView,Ai as TimelineUIUtils,ui as UIDevtoolsController,ci as UIDevtoolsUtils,qt as WebVitalsTimeline};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as RootModule from'../root/root.js';RootModule.Runtime.cachedResources.set("timeline/historyToolbarButton.css","/*\n * Copyright 2017 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.content {\n margin-left: 5px;\n}\n\n.history-dropdown-button {\n width: 160px;\n height: 26px;\n text-align: left;\n display: flex;\n border: 1px solid transparent;\n}\n\n.history-dropdown-button[disabled] {\n opacity: 50%;\n border: 1px solid transparent;\n}\n\n.history-dropdown-button > .content {\n padding-right: 5px;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1 1;\n min-width: 35px;\n}\n\n.history-dropdown-button:focus-visible::before {\n content: \"\";\n position: absolute;\n top: 2px;\n left: 0;\n right: 0;\n bottom: 2px;\n border-radius: 2px;\n background: rgb(0 0 0 / 8%);\n}\n\n@media (forced-colors: active) {\n .history-dropdown-button[disabled] {\n opacity: 100%;\n }\n\n .history-dropdown-button[disabled] [is=ui-icon].icon-mask {\n background-color: GrayText;\n }\n}\n\n/*# sourceURL=timeline/historyToolbarButton.css */");RootModule.Runtime.cachedResources.set("timeline/invalidationsTree.css","/*\n * Copyright 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.header,\n.children,\n.content {\n min-height: initial;\n line-height: initial;\n}\n\n/* This TreeElement is always expanded and has no arrow. */\n\n/* FIXME(crbug.com/475618): Implement this in TreeElement. */\n\n.children li::before {\n display: none;\n}\n\n.content {\n margin-bottom: 4px;\n}\n\n.content .stack-preview-container {\n margin-left: 8px;\n}\n\n.content .node-list {\n margin-left: 10px;\n}\n\n/*# sourceURL=timeline/invalidationsTree.css */");RootModule.Runtime.cachedResources.set("timeline/timelineFlamechartPopover.css","/*\n * Copyright (c) 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.timeline-flamechart-popover {\n overflow: hidden;\n}\n\n.timeline-flamechart-popover span {\n margin-right: 5px;\n}\n\n.timeline-flamechart-popover span.timeline-info-network-time {\n color: #009;\n}\n\n.timeline-flamechart-popover span.timeline-info-time {\n color: #282;\n}\n\n.timeline-flamechart-popover span.timeline-info-warning {\n color: #e44;\n}\n\n.timeline-flamechart-popover span.timeline-info-warning * {\n color: inherit;\n}\n\n/*# sourceURL=timeline/timelineFlamechartPopover.css */");RootModule.Runtime.cachedResources.set("timeline/timelineHistoryManager.css","/*\n * Copyright 2017 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.drop-down {\n padding: 1px;\n box-shadow: var(--drop-shadow);\n background: var(--color-background);\n}\n\n.preview-item {\n border-color: transparent;\n border-style: solid;\n border-width: 1px 5px;\n padding: 2px 0;\n margin: 2px 1px;\n}\n\n.preview-item.selected {\n border-color: var(--selection-bg-color);\n}\n\n.preview-item canvas {\n width: 100%;\n height: 100%;\n}\n\n.text-details {\n font-size: 11px;\n padding: 3px;\n}\n\n.text-details span {\n flex: 1 0;\n padding-left: 8px;\n padding-right: 8px;\n}\n\n.text-details .name {\n font-weight: bold;\n}\n\n.text-details span.time {\n color: #555;\n text-align: right;\n}\n\n.screenshot-thumb {\n display: flex;\n border: 1px solid #ccc;\n margin: 2px 4px;\n}\n\n.screenshot-thumb img {\n margin: auto;\n max-width: 100%;\n max-height: 100%;\n}\n\n/*# sourceURL=timeline/timelineHistoryManager.css */");RootModule.Runtime.cachedResources.set("timeline/timelinePanel.css","/*\n * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.\n * Copyright (C) 2009 Anthony Ricaud <rik@webkit.org>\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n *\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of Apple Computer, Inc. (\"Apple\") nor the names of\n * its contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n.timeline-toolbar-container {\n display: flex;\n flex: none;\n}\n\n.timeline-toolbar-container > .toolbar {\n background-color: var(--toolbar-bg-color);\n border-bottom: var(--divider-border);\n}\n\n.timeline-main-toolbar {\n flex: 1 1 auto;\n}\n\n.timeline-settings-pane {\n flex: none;\n background-color: var(--toolbar-bg-color);\n border-bottom: var(--divider-border);\n}\n\n#timeline-overview-panel {\n flex: none;\n position: relative;\n border-bottom: 1px solid #bbb;\n}\n\n#timeline-overview-grid {\n background-color: rgb(255 255 255);\n}\n\n#timeline-overview-grid .timeline-grid-header {\n height: 12px;\n}\n\n#timeline-overview-grid .resources-dividers-label-bar {\n pointer-events: auto;\n height: 12px;\n}\n\n#timeline-overview-grid .resources-divider-label {\n top: 1px;\n}\n\n.timeline-details-split {\n flex: auto;\n}\n\n.timeline.panel .status-pane-container {\n z-index: 1000;\n display: flex;\n align-items: center;\n pointer-events: none;\n}\n\n.timeline.panel .status-pane-container.tinted {\n background-color: lightgray;\n pointer-events: auto;\n}\n\n#timeline-overview-panel .overview-strip {\n margin-top: 2px;\n justify-content: center;\n}\n\n#timeline-overview-panel .overview-strip .timeline-overview-strip-title {\n color: #666;\n font-size: 10px;\n font-weight: bold;\n z-index: 100;\n background-color: rgb(255 255 255 / 70%);\n padding: 0 4px;\n position: absolute;\n top: -2px;\n right: 0;\n}\n\n#timeline-overview-cpu-activity {\n flex-basis: 20px;\n}\n\n#timeline-overview-network {\n flex-basis: 8px;\n}\n\n#timeline-overview-framerate {\n flex-basis: 16px;\n margin-top: 0 !important;\n}\n\n#timeline-overview-filmstrip {\n flex-basis: 30px;\n}\n\n#timeline-overview-memory {\n flex-basis: 20px;\n}\n\n#timeline-overview-framerate::before,\n#timeline-overview-network::before,\n#timeline-overview-cpu-activity::before {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n border-bottom: 1px solid hsl(0deg 0% 0% / 6%);\n z-index: -200;\n}\n\n.overview-strip .background {\n z-index: -10;\n}\n\n#timeline-overview-responsiveness {\n flex-basis: 5px;\n margin-top: 0 !important;\n}\n\n#timeline-overview-input {\n flex-basis: 6px;\n}\n\n#timeline-overview-pane {\n flex: auto;\n position: relative;\n overflow: hidden;\n}\n\n#timeline-overview-container {\n display: flex;\n flex-direction: column;\n flex: none;\n position: relative;\n overflow: hidden;\n}\n\n#timeline-overview-container canvas {\n width: 100%;\n height: 100%;\n}\n\n.popover ul {\n margin: 0;\n padding: 0;\n list-style-type: none;\n}\n\n.memory-graph-label {\n position: absolute;\n right: 0;\n bottom: 0;\n font-size: 9px;\n color: #888;\n white-space: nowrap;\n padding: 0 4px;\n background-color: hsl(0deg 0% 100% / 80%);\n}\n\n#memory-graphs-canvas-container {\n overflow: hidden;\n flex: auto;\n position: relative;\n}\n\n#memory-counters-graph {\n flex: auto;\n}\n\n#memory-graphs-canvas-container .memory-counter-marker {\n position: absolute;\n border-radius: 3px;\n width: 5px;\n height: 5px;\n margin-left: -3px;\n margin-top: -2px;\n}\n\n#memory-graphs-container .timeline-memory-header {\n flex: 0 0 26px;\n background-color: #eee;\n border-bottom: 1px solid #ddd;\n justify-content: space-between;\n}\n\n#memory-graphs-container .timeline-memory-header::after {\n content: \"\";\n background-image: url(Images/toolbarResizerVertical.png);\n background-repeat: no-repeat;\n background-position: right center, center;\n flex: 20px 0 0;\n margin: 0 4px;\n}\n\n.timeline-memory-toolbar {\n flex-shrink: 1;\n}\n\n.memory-counter-value {\n margin: 8px;\n}\n\n#counter-values-bar {\n flex: 0 0 20px;\n border-top: solid 1px lightgray;\n width: 100%;\n overflow: hidden;\n line-height: 18px;\n}\n\n#timeline-overview-coverage {\n flex-basis: 20px;\n}\n\n.timeline-overview-coverage-label {\n position: absolute;\n right: 0;\n bottom: 0;\n font-size: 9px;\n color: #888;\n white-space: nowrap;\n padding: 0 4px;\n background-color: hsl(0deg 0% 100% / 80%);\n}\n\n.timeline-details {\n vertical-align: top;\n}\n\n.timeline-details-title {\n border-bottom: 1px solid #b8b8b8;\n font-weight: bold;\n padding-bottom: 5px;\n padding-top: 0;\n white-space: nowrap;\n}\n\n.timeline-details-row-title {\n font-weight: bold;\n text-align: right;\n white-space: nowrap;\n}\n\n.timeline-details-row-data {\n white-space: nowrap;\n}\n\n.timeline-details-view {\n color: #333;\n overflow: hidden;\n}\n\n.timeline-details-view-body {\n flex: auto;\n overflow: auto;\n position: relative;\n background-color: var(--toolbar-bg-color);\n user-select: text;\n}\n\n.timeline-details-view-block {\n flex: none;\n display: flex;\n background-color: var(--color-background);\n flex-direction: column;\n padding-bottom: 5px;\n border-bottom: var(--divider-border);\n}\n\n.timeline-details-view-row {\n padding-left: 10px;\n line-height: 20px;\n}\n\n.timeline-details-view-block .timeline-details-stack-values {\n flex-direction: column !important;\n}\n\n.timeline-details-chip-title {\n font-size: 13px;\n padding: 8px;\n display: flex;\n align-items: center;\n}\n\n.timeline-details-view-row-title:not(:empty) {\n color: rgb(152 152 152);\n overflow: hidden;\n padding-right: 10px;\n display: inline-block;\n}\n\n.timeline-details-warning {\n background-color: rgb(250 209 209 / 48%);\n}\n\n.timeline-details-warning .timeline-details-view-row-title {\n color: red;\n}\n\n.timeline-details-view-row-value {\n display: inline-block;\n user-select: text;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.timeline-details-warning .timeline-details-view-row-value {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.timeline-details-view-row-value .stack-preview-container {\n line-height: 11px;\n}\n\n.timeline-details-view-pie-chart-wrapper {\n margin: 4px 0;\n}\n\n.timeline-details-view-pie-chart {\n margin-top: 5px;\n}\n\n.timeline-details-view-row-stack-trace {\n padding: 4px 0;\n line-height: inherit;\n}\n\n.timeline-flamechart {\n overflow: hidden;\n}\n\n.timeline-flamechart-resizer {\n flex: 8px 0 0;\n background-color: var(--toolbar-bg-color);\n border: 1px #a3a3a3;\n border-style: solid none;\n display: flex;\n flex-direction: row;\n align-items: flex-end;\n justify-content: center;\n}\n\n.timeline-network-resizer-disabled > .timeline-flamechart-resizer {\n display: none;\n}\n\n.timeline-flamechart-resizer::after {\n content: \"...\";\n font-size: 14px;\n margin-bottom: -1px;\n}\n\n.timeline-layers-view-properties table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.timeline-layers-view-properties td {\n border: 1px solid #e1e1e1;\n line-height: 22px;\n}\n\n.timeline-filmstrip-preview > img {\n margin-top: 5px;\n max-width: 500px;\n max-height: 300px;\n cursor: pointer;\n border: 1px solid #ddd;\n}\n\n.timeline-tree-view {\n display: flex;\n overflow: hidden;\n}\n\n.timeline-tree-view .toolbar {\n background-color: var(--toolbar-bg-color);\n border-bottom: var(--divider-border);\n}\n\n.timeline-tree-view .data-grid {\n border: none;\n flex: auto;\n}\n\n.timeline-tree-view .data-grid .data-container {\n overflow-y: scroll;\n top: 21px;\n}\n\n.timeline-tree-view .data-grid.data-grid-fits-viewport .corner {\n display: table-cell;\n}\n\n.timeline-tree-view .data-grid table.data {\n background: var(--color-background);\n}\n\n.timeline-tree-view .data-grid tr:not(.selected) .highlight {\n background-color: rgb(255 230 179);\n}\n\n.timeline-tree-view .data-grid tr:hover td:not(.bottom-filler-td) {\n background-color: rgb(0 0 0 / 10%);\n}\n\n.timeline-tree-view .data-grid td.numeric-column {\n text-align: right;\n position: relative;\n}\n\n.timeline-tree-view .data-grid div.background-percent-bar {\n float: right;\n}\n\n.timeline-tree-view .data-grid span.percent-column {\n color: #888;\n width: 45px;\n display: inline-block;\n}\n\n.timeline-tree-view .data-grid tr.selected span {\n color: inherit;\n}\n\n.timeline-tree-view .data-grid .name-container {\n display: flex;\n align-items: center;\n padding-left: 2px;\n}\n\n.timeline-tree-view .data-grid .name-container .activity-icon {\n width: 12px;\n height: 12px;\n border: 1px solid rgb(0 0 0 / 5%);\n margin: 3px 0;\n}\n\n.timeline-tree-view .data-grid .name-container .activity-icon-container {\n margin-right: 3px;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n overflow: hidden;\n}\n\n.timeline-tree-view .data-grid .name-container .activity-warning::after {\n content: \"[deopt]\";\n margin: 0 4px;\n line-height: 12px;\n font-size: 10px;\n color: #777;\n}\n\n.timeline-tree-view .data-grid tr.selected .name-container .activity-warning::after {\n color: white;\n}\n\n.timeline-tree-view .data-grid .name-container .activity-link {\n flex: auto;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-left: 5px;\n}\n\n.timeline-tree-view .data-grid .background-bar-container {\n position: absolute;\n left: 3px;\n right: 0;\n}\n\n.timeline-tree-view .data-grid .background-bar {\n float: right;\n height: 18px;\n background-color: hsl(43deg 84% 64% / 20%);\n border-bottom: 1px solid hsl(43deg 84% 64%);\n}\n\n.timeline-tree-view .data-grid .selected .background-bar {\n background-color: rgb(255 255 255 / 30%);\n border-bottom-color: rgb(255 255 255 / 90%);\n}\n\n.timeline-tree-view .timeline-details-view-body .full-widget-dimmed-banner {\n background-color: inherit;\n}\n\n.timeline-details .filter-input-field {\n width: 120px;\n}\n\n.timeline-tree-view .data-grid .header-container {\n height: 21px;\n}\n\n.timeline-stack-view-header {\n height: 27px;\n background-color: var(--toolbar-bg-color);\n padding: 6px 10px;\n color: #5a5a5a;\n white-space: nowrap;\n border-bottom: var(--divider-border);\n}\n\n.timeline-landing-page {\n position: absolute;\n background-color: var(--color-background);\n justify-content: center;\n align-items: center;\n overflow: auto;\n font-size: 13px;\n color: #777;\n}\n\n@media (forced-colors: active) {\n .timeline-tree-view .data-grid .name-container .activity-icon {\n forced-color-adjust: none;\n }\n\n .timeline-tree-view .data-grid tr.selected span.percent-column,\n .timeline-tree-view .data-grid tr.selected div.background-percent-bar span,\n .timeline-tree-view .data-grid tr.selected .name-container .activity-link .devtools-link {\n color: HighlightText;\n }\n\n .timeline-tree-view .data-grid .background-bar,\n .timeline-tree-view .data-grid tr:hover td:not(.bottom-filler-td) {\n background-color: transparent;\n }\n\n .timeline-tree-view .data-grid tr.selected .background-bar {\n background-color: transparent;\n border-bottom-color: HighlightText;\n }\n}\n\n.timeline-additional-metrics {\n display: flex;\n flex: 0 0 27px;\n background-color: var(--toolbar-bg-color);\n border-top: var(--divider-border);\n overflow: hidden;\n z-index: 100;\n}\n\n.timeline-details-view-row-stack-trace div {\n white-space: nowrap;\n text-overflow: ellipsis;\n line-height: 12px;\n}\n\n.timeline-details-view-body > div {\n overflow-y: hidden;\n overflow-x: auto;\n}\n\n.timeline-landing-page > div {\n max-width: 450px;\n margin: 10px;\n}\n\n.timeline-details-chip-title > div {\n width: 12px;\n height: 12px;\n border: 1px solid rgb(0 0 0 / 20%);\n display: inline-block;\n margin-right: 4px;\n content: \" \";\n}\n\n.timeline-paint-profiler-log-split > div:last-child {\n background-color: #eee;\n z-index: 0;\n}\n\n.timeline-layers-view > div:last-child,\n.timeline-layers-view-properties > div:last-child {\n background-color: #eee;\n}\n\n.timeline.panel .status-pane-container > div {\n pointer-events: auto;\n}\n\n.timeline-landing-page > div > p {\n flex: none;\n white-space: pre-line;\n}\n\n.timeline-tree-view .data-grid .name-container div {\n flex: none;\n}\n\n/*# sourceURL=timeline/timelinePanel.css */");RootModule.Runtime.cachedResources.set("timeline/timelinePaintProfiler.css","/*\n * Copyright 2016 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.paint-profiler-image-view {\n overflow: hidden;\n}\n\n.paint-profiler-image-view .paint-profiler-image-container {\n transform-origin: 0 0;\n}\n\n.paint-profiler-image-view .paint-profiler-image-container div {\n border-color: rgb(100 100 100 / 40%);\n border-style: solid;\n z-index: 100;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.paint-profiler-image-view img {\n border: solid 1px black;\n}\n\n/*# sourceURL=timeline/timelinePaintProfiler.css */");RootModule.Runtime.cachedResources.set("timeline/timelineStatusDialog.css","/*\n * Copyright (c) 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.timeline-status-dialog {\n display: flex;\n flex-direction: column;\n padding: 16px 16px 12px 16px;\n align-self: center;\n background-color: var(--color-background);\n box-shadow: var(--drop-shadow);\n}\n\n.status-dialog-line {\n margin: 2px;\n height: 14px;\n display: flex;\n align-items: baseline;\n}\n\n.status-dialog-line .label {\n display: inline-block;\n width: 80px;\n text-align: right;\n color: #aaa;\n margin-right: 10px;\n}\n\n.timeline-status-dialog .progress .indicator-container {\n display: inline-block;\n width: 200px;\n height: 8px;\n background-color: #f4f4f4;\n}\n\n.timeline-status-dialog .progress .indicator {\n background-color: rgb(112 166 255);\n height: 100%;\n width: 0;\n margin: 0;\n}\n\n.timeline-status-dialog .stop-button {\n margin-top: 8px;\n height: 100%;\n align-self: flex-end;\n}\n\n.timeline-status-dialog .stop-button button {\n min-width: 80px;\n}\n\n@media (forced-colors: active) {\n .timeline-status-dialog {\n border: 1px solid canvastext;\n }\n\n .timeline-status-dialog .progress .indicator-container {\n border: 1px solid ButtonText;\n background-color: ButtonFace;\n }\n\n .timeline-status-dialog .progress .indicator {\n forced-color-adjust: none;\n background-color: ButtonText;\n }\n}\n\n/*# sourceURL=timeline/timelineStatusDialog.css */");
|