lighthouse 12.1.0 → 12.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/cli/cli-flags.d.ts +2 -2
- package/cli/cli-flags.js +1 -1
- package/cli/sentry-prompt.js +2 -2
- package/cli/test/smokehouse/frontends/lib.d.ts +1 -1
- package/cli/test/smokehouse/lib/concurrent-mapper.d.ts +6 -6
- package/cli/test/smokehouse/lighthouse-runners/bundle.d.ts +1 -1
- package/cli/test/smokehouse/lighthouse-runners/cli.d.ts +1 -2
- package/cli/test/smokehouse/lighthouse-runners/devtools.d.ts +1 -1
- package/cli/test/smokehouse/report-assert.d.ts +0 -1
- package/cli/test/smokehouse/version-check.d.ts +3 -3
- package/core/audits/accessibility/accesskeys.d.ts +3 -3
- package/core/audits/accessibility/aria-allowed-attr.d.ts +3 -3
- package/core/audits/accessibility/aria-allowed-role.d.ts +3 -3
- package/core/audits/accessibility/aria-command-name.d.ts +3 -3
- package/core/audits/accessibility/aria-conditional-attr.d.ts +3 -3
- package/core/audits/accessibility/aria-deprecated-role.d.ts +3 -3
- package/core/audits/accessibility/aria-dialog-name.d.ts +3 -3
- package/core/audits/accessibility/aria-hidden-body.d.ts +3 -3
- package/core/audits/accessibility/aria-hidden-focus.d.ts +3 -3
- package/core/audits/accessibility/aria-input-field-name.d.ts +3 -3
- package/core/audits/accessibility/aria-meter-name.d.ts +3 -3
- package/core/audits/accessibility/aria-progressbar-name.d.ts +3 -3
- package/core/audits/accessibility/aria-prohibited-attr.d.ts +3 -3
- package/core/audits/accessibility/aria-required-attr.d.ts +3 -3
- package/core/audits/accessibility/aria-required-children.d.ts +3 -3
- package/core/audits/accessibility/aria-required-parent.d.ts +3 -3
- package/core/audits/accessibility/aria-roles.d.ts +3 -3
- package/core/audits/accessibility/aria-text.d.ts +3 -3
- package/core/audits/accessibility/aria-toggle-field-name.d.ts +3 -3
- package/core/audits/accessibility/aria-tooltip-name.d.ts +3 -3
- package/core/audits/accessibility/aria-treeitem-name.d.ts +3 -3
- package/core/audits/accessibility/aria-valid-attr-value.d.ts +3 -3
- package/core/audits/accessibility/aria-valid-attr.d.ts +3 -3
- package/core/audits/accessibility/axe-audit.d.ts +1 -1
- package/core/audits/accessibility/button-name.d.ts +3 -3
- package/core/audits/accessibility/bypass.d.ts +3 -3
- package/core/audits/accessibility/color-contrast.d.ts +3 -3
- package/core/audits/accessibility/definition-list.d.ts +3 -3
- package/core/audits/accessibility/dlitem.d.ts +3 -3
- package/core/audits/accessibility/document-title.d.ts +3 -3
- package/core/audits/accessibility/duplicate-id-aria.d.ts +3 -3
- package/core/audits/accessibility/empty-heading.d.ts +3 -3
- package/core/audits/accessibility/form-field-multiple-labels.d.ts +3 -3
- package/core/audits/accessibility/frame-title.d.ts +3 -3
- package/core/audits/accessibility/heading-order.d.ts +3 -3
- package/core/audits/accessibility/html-has-lang.d.ts +3 -3
- package/core/audits/accessibility/html-lang-valid.d.ts +3 -3
- package/core/audits/accessibility/html-xml-lang-mismatch.d.ts +3 -3
- package/core/audits/accessibility/identical-links-same-purpose.d.ts +3 -3
- package/core/audits/accessibility/image-alt.d.ts +3 -3
- package/core/audits/accessibility/image-redundant-alt.d.ts +3 -3
- package/core/audits/accessibility/input-button-name.d.ts +3 -3
- package/core/audits/accessibility/input-image-alt.d.ts +3 -3
- package/core/audits/accessibility/label-content-name-mismatch.d.ts +3 -3
- package/core/audits/accessibility/label.d.ts +3 -3
- package/core/audits/accessibility/landmark-one-main.d.ts +3 -3
- package/core/audits/accessibility/link-in-text-block.d.ts +3 -3
- package/core/audits/accessibility/link-name.d.ts +3 -3
- package/core/audits/accessibility/list.d.ts +3 -3
- package/core/audits/accessibility/listitem.d.ts +3 -3
- package/core/audits/accessibility/meta-refresh.d.ts +3 -3
- package/core/audits/accessibility/meta-viewport.d.ts +3 -3
- package/core/audits/accessibility/object-alt.d.ts +3 -3
- package/core/audits/accessibility/select-name.d.ts +3 -3
- package/core/audits/accessibility/skip-link.d.ts +3 -3
- package/core/audits/accessibility/tabindex.d.ts +3 -3
- package/core/audits/accessibility/table-duplicate-name.d.ts +3 -3
- package/core/audits/accessibility/table-fake-caption.d.ts +3 -3
- package/core/audits/accessibility/target-size.d.ts +3 -3
- package/core/audits/accessibility/td-has-header.d.ts +3 -3
- package/core/audits/accessibility/td-headers-attr.d.ts +3 -3
- package/core/audits/accessibility/th-has-data-cells.d.ts +3 -3
- package/core/audits/accessibility/valid-lang.d.ts +3 -3
- package/core/audits/accessibility/video-caption.d.ts +3 -3
- package/core/audits/audit.d.ts +17 -17
- package/core/audits/autocomplete.d.ts +9 -9
- package/core/audits/bf-cache.d.ts +10 -10
- package/core/audits/bootup-time.d.ts +7 -7
- package/core/audits/byte-efficiency/byte-efficiency-audit.d.ts +6 -8
- package/core/audits/byte-efficiency/byte-efficiency-audit.js +3 -6
- package/core/audits/byte-efficiency/duplicated-javascript.d.ts +4 -4
- package/core/audits/byte-efficiency/efficient-animated-content.d.ts +3 -4
- package/core/audits/byte-efficiency/legacy-javascript.d.ts +7 -8
- package/core/audits/byte-efficiency/modern-image-formats.d.ts +3 -3
- package/core/audits/byte-efficiency/offscreen-images.d.ts +3 -4
- package/core/audits/byte-efficiency/render-blocking-resources.d.ts +5 -9
- package/core/audits/byte-efficiency/render-blocking-resources.js +10 -16
- package/core/audits/byte-efficiency/total-byte-weight.d.ts +4 -4
- package/core/audits/byte-efficiency/unminified-css.d.ts +3 -3
- package/core/audits/byte-efficiency/unminified-javascript.d.ts +3 -3
- package/core/audits/byte-efficiency/unused-css-rules.d.ts +3 -3
- package/core/audits/byte-efficiency/unused-javascript.d.ts +3 -3
- package/core/audits/byte-efficiency/uses-long-cache-ttl.d.ts +4 -6
- package/core/audits/byte-efficiency/uses-optimized-images.d.ts +3 -3
- package/core/audits/byte-efficiency/uses-responsive-images-snapshot.d.ts +4 -4
- package/core/audits/byte-efficiency/uses-responsive-images.d.ts +4 -5
- package/core/audits/byte-efficiency/uses-text-compression.d.ts +3 -3
- package/core/audits/critical-request-chains.d.ts +3 -3
- package/core/audits/csp-xss.d.ts +8 -8
- package/core/audits/deprecations.d.ts +6 -6
- package/core/audits/dobetterweb/charset.d.ts +3 -3
- package/core/audits/dobetterweb/doctype.d.ts +9 -9
- package/core/audits/dobetterweb/dom-size.d.ts +9 -9
- package/core/audits/dobetterweb/geolocation-on-start.d.ts +3 -3
- package/core/audits/dobetterweb/inspector-issues.d.ts +6 -6
- package/core/audits/dobetterweb/js-libraries.d.ts +3 -3
- package/core/audits/dobetterweb/no-document-write.d.ts +3 -3
- package/core/audits/dobetterweb/notification-on-start.d.ts +3 -3
- package/core/audits/dobetterweb/paste-preventing-inputs.d.ts +3 -3
- package/core/audits/dobetterweb/uses-http2.d.ts +7 -11
- package/core/audits/dobetterweb/uses-http2.js +2 -5
- package/core/audits/dobetterweb/uses-passive-event-listeners.d.ts +3 -3
- package/core/audits/errors-in-console.d.ts +4 -4
- package/core/audits/font-display.d.ts +4 -4
- package/core/audits/image-aspect-ratio.d.ts +5 -5
- package/core/audits/image-size-responsive.d.ts +7 -7
- package/core/audits/is-on-https.d.ts +10 -10
- package/core/audits/largest-contentful-paint-element.d.ts +9 -9
- package/core/audits/layout-shifts.d.ts +9 -9
- package/core/audits/lcp-lazy-loaded.d.ts +3 -3
- package/core/audits/long-tasks.d.ts +11 -11
- package/core/audits/long-tasks.js +5 -5
- package/core/audits/mainthread-work-breakdown.d.ts +5 -5
- package/core/audits/metrics/cumulative-layout-shift.d.ts +1 -1
- package/core/audits/metrics/first-contentful-paint.d.ts +1 -1
- package/core/audits/metrics/first-meaningful-paint.d.ts +1 -1
- package/core/audits/metrics/interaction-to-next-paint.d.ts +1 -1
- package/core/audits/metrics/interactive.d.ts +1 -1
- package/core/audits/metrics/largest-contentful-paint.d.ts +1 -1
- package/core/audits/metrics/max-potential-fid.d.ts +2 -4
- package/core/audits/metrics/speed-index.d.ts +1 -1
- package/core/audits/metrics/total-blocking-time.d.ts +1 -1
- package/core/audits/network-rtt.d.ts +2 -2
- package/core/audits/network-server-latency.d.ts +2 -2
- package/core/audits/non-composited-animations.d.ts +9 -9
- package/core/audits/oopif-iframe-test-audit.d.ts +5 -5
- package/core/audits/preload-fonts.d.ts +3 -3
- package/core/audits/prioritize-lcp-image.d.ts +7 -7
- package/core/audits/redirects-http.d.ts +3 -3
- package/core/audits/redirects.d.ts +2 -3
- package/core/audits/resource-summary.d.ts +1 -1
- package/core/audits/screenshot-thumbnails.d.ts +2 -3
- package/core/audits/script-treemap-data.d.ts +1 -1
- package/core/audits/seo/canonical.d.ts +8 -8
- package/core/audits/seo/crawlable-anchors.d.ts +4 -4
- package/core/audits/seo/font-size.d.ts +11 -11
- package/core/audits/seo/hreflang.d.ts +6 -6
- package/core/audits/seo/http-status-code.d.ts +3 -3
- package/core/audits/seo/is-crawlable.d.ts +9 -10
- package/core/audits/seo/link-text.d.ts +4 -4
- package/core/audits/seo/manual/structured-data.d.ts +2 -2
- package/core/audits/seo/meta-description.d.ts +4 -4
- package/core/audits/seo/robots-txt.d.ts +6 -6
- package/core/audits/server-response-time.d.ts +4 -4
- package/core/audits/third-party-cookies.d.ts +4 -4
- package/core/audits/third-party-facades.d.ts +11 -12
- package/core/audits/third-party-summary.d.ts +5 -6
- package/core/audits/third-party-summary.js +7 -4
- package/core/audits/unsized-images.d.ts +3 -3
- package/core/audits/user-timings.d.ts +6 -6
- package/core/audits/uses-rel-preconnect.d.ts +5 -5
- package/core/audits/uses-rel-preload.d.ts +7 -7
- package/core/audits/uses-rel-preload.js +8 -6
- package/core/audits/valid-source-maps.d.ts +6 -7
- package/core/audits/viewport.d.ts +4 -4
- package/core/audits/work-during-interaction.d.ts +11 -12
- package/core/computed/computed-artifact.d.ts +2 -2
- package/core/computed/critical-request-chains.d.ts +9 -11
- package/core/computed/critical-request-chains.js +6 -6
- package/core/computed/document-urls.d.ts +3 -8
- package/core/computed/document-urls.js +1 -1
- package/core/computed/entity-classification.d.ts +6 -8
- package/core/computed/image-records.d.ts +3 -5
- package/core/computed/js-bundles.d.ts +2 -4
- package/core/computed/lcp-image-record.d.ts +3 -5
- package/core/computed/load-simulator.d.ts +7 -11
- package/core/computed/load-simulator.js +1 -1
- package/core/computed/main-resource.d.ts +5 -7
- package/core/computed/main-resource.js +1 -1
- package/core/computed/main-thread-tasks.d.ts +1 -3
- package/core/computed/metrics/cumulative-layout-shift.d.ts +2 -14
- package/core/computed/metrics/first-contentful-paint-all-frames.d.ts +1 -3
- package/core/computed/metrics/first-contentful-paint.d.ts +1 -3
- package/core/computed/metrics/interactive.d.ts +1 -3
- package/core/computed/metrics/lantern-first-contentful-paint.d.ts +3 -7
- package/core/computed/metrics/lantern-first-contentful-paint.js +3 -5
- package/core/computed/metrics/lantern-interactive.d.ts +3 -7
- package/core/computed/metrics/lantern-interactive.js +3 -5
- package/core/computed/metrics/lantern-largest-contentful-paint.d.ts +3 -7
- package/core/computed/metrics/lantern-largest-contentful-paint.js +3 -5
- package/core/computed/metrics/lantern-max-potential-fid.d.ts +3 -7
- package/core/computed/metrics/lantern-max-potential-fid.js +3 -5
- package/core/computed/metrics/lantern-metric.d.ts +8 -8
- package/core/computed/metrics/lantern-metric.js +1 -1
- package/core/computed/metrics/lantern-speed-index.d.ts +3 -7
- package/core/computed/metrics/lantern-speed-index.js +3 -5
- package/core/computed/metrics/lantern-total-blocking-time.d.ts +3 -7
- package/core/computed/metrics/lantern-total-blocking-time.js +1 -3
- package/core/computed/metrics/largest-contentful-paint-all-frames.d.ts +1 -3
- package/core/computed/metrics/largest-contentful-paint.d.ts +1 -3
- package/core/computed/metrics/lcp-breakdown.d.ts +3 -9
- package/core/computed/metrics/max-potential-fid.d.ts +1 -3
- package/core/computed/metrics/responsiveness.d.ts +7 -10
- package/core/computed/metrics/speed-index.d.ts +1 -3
- package/core/computed/metrics/time-to-first-byte.d.ts +1 -3
- package/core/computed/metrics/timing-summary.d.ts +8 -13
- package/core/computed/metrics/total-blocking-time.d.ts +1 -3
- package/core/computed/metrics/total-blocking-time.js +1 -1
- package/core/computed/module-duplication.d.ts +2 -8
- package/core/computed/navigation-insights.d.ts +2 -4
- package/core/computed/network-analysis.d.ts +2 -4
- package/core/computed/network-analysis.js +1 -1
- package/core/computed/network-records.d.ts +1 -3
- package/core/computed/page-dependency-graph.d.ts +9 -14
- package/core/computed/page-dependency-graph.js +3 -4
- package/core/computed/processed-navigation.d.ts +2 -5
- package/core/computed/processed-trace.d.ts +1 -3
- package/core/computed/resource-summary.d.ts +6 -10
- package/core/computed/screenshots.d.ts +1 -6
- package/core/computed/speedline.d.ts +1 -3
- package/core/computed/tbt-impact-tasks.d.ts +4 -5
- package/core/computed/tbt-impact-tasks.js +31 -8
- package/core/computed/trace-engine-result.d.ts +1 -3
- package/core/computed/trace-engine-result.js +10 -1
- package/core/computed/unused-css.d.ts +7 -9
- package/core/computed/unused-javascript-summary.d.ts +3 -5
- package/core/computed/user-timings.d.ts +3 -5
- package/core/computed/viewport-meta.d.ts +7 -9
- package/core/config/config-helpers.d.ts +5 -5
- package/core/config/config.d.ts +3 -3
- package/core/config/constants.d.ts +6 -6
- package/core/config/filters.d.ts +8 -8
- package/core/config/validation.d.ts +1 -1
- package/core/gather/driver/environment.d.ts +5 -5
- package/core/gather/driver/environment.js +1 -1
- package/core/gather/driver/execution-context.d.ts +6 -6
- package/core/gather/driver/navigation.d.ts +3 -3
- package/core/gather/driver/network-monitor.d.ts +6 -6
- package/core/gather/driver/storage.d.ts +4 -4
- package/core/gather/driver/target-manager.d.ts +4 -5
- package/core/gather/driver/target-manager.js +1 -1
- package/core/gather/driver/wait-for-condition.d.ts +3 -3
- package/core/gather/driver/wait-for-condition.js +4 -4
- package/core/gather/driver.d.ts +1 -1
- package/core/gather/gatherers/accessibility.d.ts +1 -1
- package/core/gather/gatherers/anchor-elements.d.ts +1 -1
- package/core/gather/gatherers/bf-cache-failures.d.ts +3 -3
- package/core/gather/gatherers/cache-contents.d.ts +1 -1
- package/core/gather/gatherers/console-messages.d.ts +1 -1
- package/core/gather/gatherers/css-usage.d.ts +1 -1
- package/core/gather/gatherers/devtools-log-compat.d.ts +3 -3
- package/core/gather/gatherers/devtools-log.d.ts +3 -3
- package/core/gather/gatherers/dobetterweb/doctype.d.ts +1 -1
- package/core/gather/gatherers/dobetterweb/domstats.d.ts +1 -1
- package/core/gather/gatherers/dobetterweb/optimized-images.d.ts +6 -7
- package/core/gather/gatherers/dobetterweb/response-compression.d.ts +4 -5
- package/core/gather/gatherers/full-page-screenshot.d.ts +3 -3
- package/core/gather/gatherers/iframe-elements.d.ts +1 -1
- package/core/gather/gatherers/image-elements.d.ts +1 -1
- package/core/gather/gatherers/inputs.d.ts +1 -1
- package/core/gather/gatherers/inspector-issues.d.ts +2 -2
- package/core/gather/gatherers/js-usage.d.ts +1 -1
- package/core/gather/gatherers/link-elements.d.ts +6 -10
- package/core/gather/gatherers/link-elements.js +5 -12
- package/core/gather/gatherers/main-document-content.d.ts +2 -2
- package/core/gather/gatherers/meta-elements.d.ts +1 -1
- package/core/gather/gatherers/network-user-agent.d.ts +4 -4
- package/core/gather/gatherers/root-causes.d.ts +3 -4
- package/core/gather/gatherers/seo/font-size.d.ts +19 -19
- package/core/gather/gatherers/seo/robots-txt.d.ts +1 -1
- package/core/gather/gatherers/source-maps.d.ts +2 -2
- package/core/gather/gatherers/stacks.d.ts +2 -2
- package/core/gather/gatherers/stylesheets.d.ts +1 -9
- package/core/gather/gatherers/stylesheets.js +8 -39
- package/core/gather/gatherers/trace-compat.d.ts +3 -3
- package/core/gather/gatherers/trace-elements.d.ts +4 -6
- package/core/gather/navigation-runner.d.ts +3 -4
- package/core/gather/runner-helpers.d.ts +3 -3
- package/core/gather/session.d.ts +4 -4
- package/core/gather/session.js +1 -1
- package/core/gather/snapshot-runner.d.ts +2 -2
- package/core/gather/timespan-runner.d.ts +3 -3
- package/core/index.d.cts +1 -7
- package/core/index.d.ts +6 -6
- package/core/lib/arbitrary-equality-map.d.ts +2 -2
- package/core/lib/asset-saver.d.ts +3 -3
- package/core/lib/asset-saver.js +1 -1
- package/core/lib/bf-cache-strings.d.ts +117 -117
- package/core/lib/cdt/Platform.d.ts +1 -1
- package/core/lib/cdt/SDK.d.ts +1 -1
- package/core/lib/cdt/generated/ParsedURL.js +2 -2
- package/core/lib/cdt/generated/SourceMap.d.ts +11 -11
- package/core/lib/cdt/generated/SourceMap.js +3 -3
- package/core/lib/csp-evaluator.d.ts +20 -20
- package/core/lib/deprecation-description.d.ts +3 -3
- package/core/lib/deprecations-strings.d.ts +112 -112
- package/core/lib/i18n/i18n.d.ts +48 -48
- package/core/lib/icons.d.ts +3 -3
- package/core/lib/lantern/lantern.d.ts +2 -19
- package/core/lib/lantern/lantern.js +2 -45
- package/core/lib/lantern-trace-saver.d.ts +5 -7
- package/core/lib/lantern-trace-saver.js +2 -3
- package/core/lib/lh-error.d.ts +87 -87
- package/core/lib/lighthouse-compatibility.d.ts +1 -1
- package/core/lib/manifest-parser.d.ts +1 -1
- package/core/lib/minify-devtoolslog.d.ts +1 -1
- package/core/lib/navigation-error.d.ts +4 -6
- package/core/lib/navigation-error.js +2 -2
- package/core/lib/network-recorder.js +1 -1
- package/core/lib/network-request.d.ts +5 -5
- package/core/lib/network-request.js +2 -2
- package/core/lib/page-functions.d.ts +2 -2
- package/core/lib/script-helpers.d.ts +0 -1
- package/core/lib/sentry.d.ts +8 -8
- package/core/lib/stack-packs.d.ts +1 -1
- package/core/lib/trace-engine.d.ts +2 -2
- package/core/lib/tracehouse/cpu-profile-model.d.ts +8 -8
- package/core/lib/tracehouse/cpu-profile-model.js +2 -2
- package/core/lib/tracehouse/main-thread-tasks.d.ts +5 -5
- package/core/lib/tracehouse/task-groups.d.ts +6 -38
- package/core/lib/tracehouse/task-summary.d.ts +0 -1
- package/core/lib/tracehouse/trace-processor.d.ts +9 -9
- package/core/lib/traces/metric-trace-events.d.ts +1 -1
- package/core/lib/url-utils.d.ts +4 -4
- package/core/runner.d.ts +3 -4
- package/core/runner.js +0 -1
- package/core/scoring.d.ts +0 -1
- package/core/user-flow.d.ts +5 -5
- package/dist/report/bundle.esm.js +1 -1
- package/dist/report/flow.js +1 -1
- package/dist/report/standalone.js +1 -1
- package/eslint-local-rules.d.cts +4 -1
- package/flow-report/src/i18n/localized-strings.d.ts +1 -1
- package/flow-report/src/i18n/ui-strings.d.ts +43 -43
- package/package.json +7 -7
- package/readme.md +0 -2
- package/report/generator/file-namer.d.ts +2 -2
- package/report/generator/flow-report-assets.d.ts +1 -1
- package/report/generator/report-generator.d.ts +4 -4
- package/report/renderer/api.d.ts +2 -5
- package/report/renderer/category-renderer.d.ts +8 -8
- package/report/renderer/components.d.ts +2 -2
- package/report/renderer/crc-details-renderer.d.ts +2 -2
- package/report/renderer/details-renderer.d.ts +7 -7
- package/report/renderer/dom.d.ts +7 -7
- package/report/renderer/drop-down-menu.d.ts +1 -1
- package/report/renderer/drop-down-menu.js +15 -17
- package/report/renderer/element-screenshot-renderer.d.ts +3 -3
- package/report/renderer/explodey-gauge.d.ts +2 -2
- package/report/renderer/features-util.d.ts +1 -1
- package/report/renderer/performance-category-renderer.d.ts +1 -1
- package/report/renderer/report-globals.d.ts +1 -1
- package/report/renderer/report-renderer.d.ts +1 -1
- package/report/renderer/report-ui-features.d.ts +1 -1
- package/report/renderer/report-utils.d.ts +62 -62
- package/report/renderer/snippet-renderer.d.ts +9 -9
- package/report/renderer/swap-locale-feature.d.ts +2 -2
- package/report/renderer/topbar-features.d.ts +2 -2
- package/report/types/augment-dom.d.ts +0 -11
- package/shared/localization/format.d.ts +3 -3
- package/shared/localization/locales/en-US.json +1 -1
- package/shared/localization/locales/en-XL.json +1 -1
- package/shared/localization/locales.d.ts +1 -1
- package/shared/type-verifiers.d.ts +1 -1
- package/shared/util.d.ts +6 -6
- package/tsconfig.json +1 -11
- package/types/artifacts.d.ts +4 -4
- package/types/gatherer.d.ts +4 -5
- package/types/internal/node.d.ts +0 -6
- package/types/internal/query-selector.d.ts +2 -2
- package/core/lib/lantern/BaseNode.d.ts +0 -163
- package/core/lib/lantern/BaseNode.js +0 -369
- package/core/lib/lantern/BaseNode.test.js +0 -385
- package/core/lib/lantern/CpuNode.d.ts +0 -43
- package/core/lib/lantern/CpuNode.js +0 -99
- package/core/lib/lantern/LanternError.d.ts +0 -8
- package/core/lib/lantern/LanternError.js +0 -9
- package/core/lib/lantern/Metric.d.ts +0 -69
- package/core/lib/lantern/Metric.js +0 -137
- package/core/lib/lantern/NetworkNode.d.ts +0 -49
- package/core/lib/lantern/NetworkNode.js +0 -136
- package/core/lib/lantern/PageDependencyGraph.d.ts +0 -82
- package/core/lib/lantern/PageDependencyGraph.js +0 -610
- package/core/lib/lantern/PageDependencyGraph.test.js +0 -654
- package/core/lib/lantern/TBTUtils.d.ts +0 -44
- package/core/lib/lantern/TBTUtils.js +0 -76
- package/core/lib/lantern/TBTUtils.test.d.ts +0 -2
- package/core/lib/lantern/TBTUtils.test.js +0 -130
- package/core/lib/lantern/TraceEngineComputationData.d.ts +0 -25
- package/core/lib/lantern/TraceEngineComputationData.js +0 -466
- package/core/lib/lantern/metrics/FirstContentfulPaint.d.ts +0 -79
- package/core/lib/lantern/metrics/FirstContentfulPaint.js +0 -198
- package/core/lib/lantern/metrics/FirstContentfulPaint.test.js +0 -54
- package/core/lib/lantern/metrics/Interactive.d.ts +0 -20
- package/core/lib/lantern/metrics/Interactive.js +0 -109
- package/core/lib/lantern/metrics/Interactive.test.js +0 -56
- package/core/lib/lantern/metrics/LargestContentfulPaint.d.ts +0 -19
- package/core/lib/lantern/metrics/LargestContentfulPaint.js +0 -105
- package/core/lib/lantern/metrics/LargestContentfulPaint.test.js +0 -42
- package/core/lib/lantern/metrics/MaxPotentialFID.d.ts +0 -24
- package/core/lib/lantern/metrics/MaxPotentialFID.js +0 -91
- package/core/lib/lantern/metrics/MetricTestUtils.d.ts +0 -19
- package/core/lib/lantern/metrics/MetricTestUtils.js +0 -48
- package/core/lib/lantern/metrics/SpeedIndex.d.ts +0 -32
- package/core/lib/lantern/metrics/SpeedIndex.js +0 -142
- package/core/lib/lantern/metrics/SpeedIndex.test.js +0 -83
- package/core/lib/lantern/metrics/TotalBlockingTime.d.ts +0 -25
- package/core/lib/lantern/metrics/TotalBlockingTime.js +0 -125
- package/core/lib/lantern/metrics/__snapshots__/FirstContentfulPaint.test.js.snap +0 -11
- package/core/lib/lantern/metrics/__snapshots__/Interactive.test.js.snap +0 -17
- package/core/lib/lantern/metrics/metrics.d.ts +0 -9
- package/core/lib/lantern/metrics/metrics.js +0 -16
- package/core/lib/lantern/simulation/ConnectionPool.d.ts +0 -48
- package/core/lib/lantern/simulation/ConnectionPool.js +0 -152
- package/core/lib/lantern/simulation/ConnectionPool.test.js +0 -195
- package/core/lib/lantern/simulation/Constants.d.ts +0 -52
- package/core/lib/lantern/simulation/Constants.js +0 -48
- package/core/lib/lantern/simulation/DNSCache.d.ts +0 -42
- package/core/lib/lantern/simulation/DNSCache.js +0 -74
- package/core/lib/lantern/simulation/DNSCache.test.js +0 -72
- package/core/lib/lantern/simulation/NetworkAnalyzer.d.ts +0 -209
- package/core/lib/lantern/simulation/NetworkAnalyzer.js +0 -597
- package/core/lib/lantern/simulation/NetworkAnalyzer.test.js +0 -475
- package/core/lib/lantern/simulation/SimulationTimingMap.d.ts +0 -153
- package/core/lib/lantern/simulation/SimulationTimingMap.js +0 -219
- package/core/lib/lantern/simulation/Simulator.d.ts +0 -157
- package/core/lib/lantern/simulation/Simulator.js +0 -593
- package/core/lib/lantern/simulation/Simulator.test.js +0 -434
- package/core/lib/lantern/simulation/TCPConnection.test.d.ts +0 -2
- package/core/lib/lantern/simulation/TCPConnection.test.js +0 -374
- package/core/lib/lantern/simulation/TcpConnection.d.ts +0 -89
- package/core/lib/lantern/simulation/TcpConnection.js +0 -230
- package/core/lib/lantern/simulation/simulation.d.ts +0 -21
- package/core/lib/lantern/simulation/simulation.js +0 -28
- package/core/lib/lantern/types/lantern.d.ts +0 -256
- package/core/lib/lantern/types/lantern.js +0 -7
package/dist/report/flow.js
CHANGED
|
@@ -2607,7 +2607,7 @@ details[open] .lh-clump-toggletext--hide { display: block;}
|
|
|
2607
2607
|
}
|
|
2608
2608
|
}
|
|
2609
2609
|
`),t.append(n);let a=e.createElement("div","lh-topbar"),i=e.createElementNS("http://www.w3.org/2000/svg","svg","lh-topbar__logo");i.setAttribute("role","img"),i.setAttribute("title","Lighthouse logo"),i.setAttribute("fill","none"),i.setAttribute("xmlns","http://www.w3.org/2000/svg"),i.setAttribute("viewBox","0 0 48 48");let o=e.createElementNS("http://www.w3.org/2000/svg","path");o.setAttribute("d","m14 7 10-7 10 7v10h5v7h-5l5 24H9l5-24H9v-7h5V7Z"),o.setAttribute("fill","#F63");let r=e.createElementNS("http://www.w3.org/2000/svg","path");r.setAttribute("d","M31.561 24H14l-1.689 8.105L31.561 24ZM18.983 48H9l1.022-4.907L35.723 32.27l1.663 7.98L18.983 48Z"),r.setAttribute("fill","#FFA385");let s=e.createElementNS("http://www.w3.org/2000/svg","path");s.setAttribute("fill","#FF3"),s.setAttribute("d","M20.5 10h7v7h-7z"),i.append(" ",o," ",r," ",s," ");let p=e.createElement("a","lh-topbar__url");p.setAttribute("href",""),p.setAttribute("target","_blank"),p.setAttribute("rel","noopener");let c=e.createElement("div","lh-tools"),l=e.createElement("div","lh-tools-locale lh-hidden"),d=e.createElement("button","lh-button lh-tool-locale__button");d.setAttribute("id","lh-button__swap-locales"),d.setAttribute("title","Show Language Picker"),d.setAttribute("aria-label","Toggle language picker"),d.setAttribute("aria-haspopup","menu"),d.setAttribute("aria-expanded","false"),d.setAttribute("aria-controls","lh-tools-locale__selector-wrapper");let m=e.createElementNS("http://www.w3.org/2000/svg","svg");m.setAttribute("width","20px"),m.setAttribute("height","20px"),m.setAttribute("viewBox","0 0 24 24"),m.setAttribute("fill","currentColor");let h=e.createElementNS("http://www.w3.org/2000/svg","path");h.setAttribute("d","M0 0h24v24H0V0z"),h.setAttribute("fill","none");let g=e.createElementNS("http://www.w3.org/2000/svg","path");g.setAttribute("d","M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"),m.append(h,g),d.append(" ",m," ");let _=e.createElement("div","lh-tools-locale__selector-wrapper");_.setAttribute("id","lh-tools-locale__selector-wrapper"),_.setAttribute("role","menu"),_.setAttribute("aria-labelledby","lh-button__swap-locales"),_.setAttribute("aria-hidden","true"),_.append(" "," "),l.append(" ",d," ",_," ");let f=e.createElement("button","lh-tools__button");f.setAttribute("id","lh-tools-button"),f.setAttribute("title","Tools menu"),f.setAttribute("aria-label","Toggle report tools menu"),f.setAttribute("aria-haspopup","menu"),f.setAttribute("aria-expanded","false"),f.setAttribute("aria-controls","lh-tools-dropdown");let y=e.createElementNS("http://www.w3.org/2000/svg","svg");y.setAttribute("width","100%"),y.setAttribute("height","100%"),y.setAttribute("viewBox","0 0 24 24");let P=e.createElementNS("http://www.w3.org/2000/svg","path");P.setAttribute("d","M0 0h24v24H0z"),P.setAttribute("fill","none");let A=e.createElementNS("http://www.w3.org/2000/svg","path");A.setAttribute("d","M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"),y.append(" ",P," ",A," "),f.append(" ",y," ");let U=e.createElement("div","lh-tools__dropdown");U.setAttribute("id","lh-tools-dropdown"),U.setAttribute("role","menu"),U.setAttribute("aria-labelledby","lh-tools-button");let b=e.createElement("a","lh-report-icon lh-report-icon--print");b.setAttribute("role","menuitem"),b.setAttribute("tabindex","-1"),b.setAttribute("href","#"),b.setAttribute("data-i18n","dropdownPrintSummary"),b.setAttribute("data-action","print-summary");let w=e.createElement("a","lh-report-icon lh-report-icon--print");w.setAttribute("role","menuitem"),w.setAttribute("tabindex","-1"),w.setAttribute("href","#"),w.setAttribute("data-i18n","dropdownPrintExpanded"),w.setAttribute("data-action","print-expanded");let S=e.createElement("a","lh-report-icon lh-report-icon--copy");S.setAttribute("role","menuitem"),S.setAttribute("tabindex","-1"),S.setAttribute("href","#"),S.setAttribute("data-i18n","dropdownCopyJSON"),S.setAttribute("data-action","copy");let N=e.createElement("a","lh-report-icon lh-report-icon--download lh-hidden");N.setAttribute("role","menuitem"),N.setAttribute("tabindex","-1"),N.setAttribute("href","#"),N.setAttribute("data-i18n","dropdownSaveHTML"),N.setAttribute("data-action","save-html");let B=e.createElement("a","lh-report-icon lh-report-icon--download");B.setAttribute("role","menuitem"),B.setAttribute("tabindex","-1"),B.setAttribute("href","#"),B.setAttribute("data-i18n","dropdownSaveJSON"),B.setAttribute("data-action","save-json");let H=e.createElement("a","lh-report-icon lh-report-icon--open");H.setAttribute("role","menuitem"),H.setAttribute("tabindex","-1"),H.setAttribute("href","#"),H.setAttribute("data-i18n","dropdownViewer"),H.setAttribute("data-action","open-viewer");let G=e.createElement("a","lh-report-icon lh-report-icon--open");G.setAttribute("role","menuitem"),G.setAttribute("tabindex","-1"),G.setAttribute("href","#"),G.setAttribute("data-i18n","dropdownSaveGist"),G.setAttribute("data-action","save-gist");let W=e.createElement("a","lh-report-icon lh-report-icon--open lh-hidden");W.setAttribute("role","menuitem"),W.setAttribute("tabindex","-1"),W.setAttribute("href","#"),W.setAttribute("data-i18n","dropdownViewUnthrottledTrace"),W.setAttribute("data-action","view-unthrottled-trace");let J=e.createElement("a","lh-report-icon lh-report-icon--dark");return J.setAttribute("role","menuitem"),J.setAttribute("tabindex","-1"),J.setAttribute("href","#"),J.setAttribute("data-i18n","dropdownDarkTheme"),J.setAttribute("data-action","toggle-dark"),U.append(" ",b," ",w," ",S," "," ",N," ",B," ",H," ",G," "," ",W," ",J," "),c.append(" ",l," ",f," ",U," "),a.append(" "," ",i," ",p," ",c," "),t.append(a),t}function Eo(e){let t=e.createFragment(),n=e.createElement("div","lh-warnings lh-warnings--toplevel"),a=e.createElement("p","lh-warnings__msg"),i=e.createElement("ul");return n.append(" ",a," ",i," "),t.append(n),t}function ka(e,t){switch(t){case"3pFilter":return oo(e);case"audit":return ro(e);case"categoryHeader":return so(e);case"chevron":return lo(e);case"clump":return po(e);case"crc":return uo(e);case"crcChain":return co(e);case"elementScreenshot":return mo(e);case"explodeyGauge":return ho(e);case"footer":return go(e);case"fraction":return fo(e);case"gauge":return vo(e);case"heading":return bo(e);case"metric":return yo(e);case"scorescale":return _o(e);case"scoresWrapper":return Co(e);case"snippet":return wo(e);case"snippetContent":return xo(e);case"snippetHeader":return So(e);case"snippetLine":return ko(e);case"styles":return Po(e);case"topbar":return Ao(e);case"warningsToplevel":return Eo(e)}throw new Error("unexpected component: "+t)}var re=class{constructor(t,n){this._document=t,this._lighthouseChannel="unknown",this._componentCache=new Map,this.rootEl=n}createElement(t,n){let a=this._document.createElement(t);if(n)for(let i of n.split(/\s+/))i&&a.classList.add(i);return a}createElementNS(t,n,a){let i=this._document.createElementNS(t,n);if(a)for(let o of a.split(/\s+/))o&&i.classList.add(o);return i}createSVGElement(t,n){return this._document.createElementNS("http://www.w3.org/2000/svg",t,n)}createFragment(){return this._document.createDocumentFragment()}createTextNode(t){return this._document.createTextNode(t)}createChildOf(t,n,a){let i=this.createElement(n,a);return t.append(i),i}createComponent(t){let n=this._componentCache.get(t);if(n){let i=n.cloneNode(!0);return this.findAll("style",i).forEach(o=>o.remove()),i}return n=ka(this,t),this._componentCache.set(t,n),n.cloneNode(!0)}clearComponentCache(){this._componentCache.clear()}convertMarkdownLinkSnippets(t,n={}){let a=this.createElement("span");for(let i of I.splitMarkdownLink(t)){let o=i.text.includes("`")?this.convertMarkdownCodeSnippets(i.text):i.text;if(!i.isLink){a.append(o);continue}let r=new URL(i.linkHref);(["https://developers.google.com","https://web.dev","https://developer.chrome.com"].includes(r.origin)||n.alwaysAppendUtmSource)&&(r.searchParams.set("utm_source","lighthouse"),r.searchParams.set("utm_medium",this._lighthouseChannel));let p=this.createElement("a");p.rel="noopener",p.target="_blank",p.append(o),this.safelySetHref(p,r.href),a.append(p)}return a}safelySetHref(t,n){if(n=n||"",n.startsWith("#")){t.href=n;return}let a=["https:","http:"],i;try{i=new URL(n)}catch{}i&&a.includes(i.protocol)&&(t.href=i.href)}safelySetBlobHref(t,n){if(n.type!=="text/html"&&n.type!=="application/json")throw new Error("Unsupported blob type");let a=URL.createObjectURL(n);t.href=a}convertMarkdownCodeSnippets(t){let n=this.createElement("span");for(let a of I.splitMarkdownCodeSpans(t))if(a.isCode){let i=this.createElement("code");i.textContent=a.text,n.append(i)}else n.append(this._document.createTextNode(a.text));return n}setLighthouseChannel(t){this._lighthouseChannel=t}document(){return this._document}isDevTools(){return!!this._document.querySelector(".lh-devtools")}find(t,n=this.rootEl??this._document){let a=this.maybeFind(t,n);if(a===null)throw new Error(`query ${t} not found`);return a}maybeFind(t,n){return n.querySelector(t)}findAll(t,n){return Array.from(n.querySelectorAll(t))}fireEventOn(t,n=this._document,a){let i=new CustomEvent(t,a?{detail:a}:void 0);n.dispatchEvent(i)}saveFile(t,n){let a=this.createElement("a");a.download=n,this.safelySetBlobHref(a,t),this._document.body.append(a),a.click(),this._document.body.removeChild(a),setTimeout(()=>URL.revokeObjectURL(a.href),500)}};var se=class{constructor(t,n){this.dom=t,this.detailsRenderer=n}get _clumpTitles(){return{warning:v.strings.warningAuditsGroupTitle,manual:v.strings.manualAuditsGroupTitle,passed:v.strings.passedAuditsGroupTitle,notApplicable:v.strings.notApplicableAuditsGroupTitle}}renderAudit(t){let n=v.strings,a=this.dom.createComponent("audit"),i=this.dom.find("div.lh-audit",a);i.id=t.result.id;let o=t.result.scoreDisplayMode;t.result.displayValue&&(this.dom.find(".lh-audit__display-text",i).textContent=t.result.displayValue);let r=this.dom.find(".lh-audit__title",i);r.append(this.dom.convertMarkdownCodeSnippets(t.result.title));let s=this.dom.find(".lh-audit__description",i);s.append(this.dom.convertMarkdownLinkSnippets(t.result.description));for(let m of t.relevantMetrics||[]){let h=this.dom.createChildOf(s,"span","lh-audit__adorn");h.title=`Relevant to ${m.result.title}`,h.textContent=m.acronym||m.id}t.stackPacks&&t.stackPacks.forEach(m=>{let h=this.dom.createElement("img","lh-audit__stackpack__img");h.src=m.iconDataURL,h.alt=m.title;let g=this.dom.convertMarkdownLinkSnippets(m.description,{alwaysAppendUtmSource:!0}),_=this.dom.createElement("div","lh-audit__stackpack");_.append(h,g),this.dom.find(".lh-audit__stackpacks",i).append(_)});let p=this.dom.find("details",i);if(t.result.details){let m=this.detailsRenderer.render(t.result.details);m&&(m.classList.add("lh-details"),p.append(m))}if(this.dom.find(".lh-chevron-container",i).append(this._createChevron()),this._setRatingClass(i,t.result.score,o),t.result.scoreDisplayMode==="error"){i.classList.add("lh-audit--error");let m=this.dom.find(".lh-audit__display-text",i);m.textContent=n.errorLabel,m.classList.add("lh-tooltip-boundary");let h=this.dom.createChildOf(m,"div","lh-tooltip lh-tooltip--error");h.textContent=t.result.errorMessage||n.errorMissingAuditInfo}else if(t.result.explanation){let m=this.dom.createChildOf(r,"div","lh-audit-explanation");m.textContent=t.result.explanation}let c=t.result.warnings;if(!c||c.length===0)return i;let l=this.dom.find("summary",p),d=this.dom.createChildOf(l,"div","lh-warnings");if(this.dom.createChildOf(d,"span").textContent=n.warningHeader,c.length===1)d.append(this.dom.createTextNode(c.join("")));else{let m=this.dom.createChildOf(d,"ul");for(let h of c){let g=this.dom.createChildOf(m,"li");g.textContent=h}}return i}injectFinalScreenshot(t,n,a){let i=n["final-screenshot"];if(!i||i.scoreDisplayMode==="error"||!i.details||i.details.type!=="screenshot")return null;let o=this.dom.createElement("img","lh-final-ss-image"),r=i.details.data;o.src=r,o.alt=i.title;let s=this.dom.find(".lh-category .lh-category-header",t),p=this.dom.createElement("div","lh-category-headercol"),c=this.dom.createElement("div","lh-category-headercol lh-category-headercol--separator"),l=this.dom.createElement("div","lh-category-headercol");p.append(...s.childNodes),p.append(a),l.append(o),s.append(p,c,l),s.classList.add("lh-category-header__finalscreenshot")}_createChevron(){let t=this.dom.createComponent("chevron");return this.dom.find("svg.lh-chevron",t)}_setRatingClass(t,n,a){let i=E.calculateRating(n,a);return t.classList.add(`lh-audit--${a.toLowerCase()}`),a!=="informative"&&t.classList.add(`lh-audit--${i}`),t}renderCategoryHeader(t,n,a){let i=this.dom.createComponent("categoryHeader"),o=this.dom.find(".lh-score__gauge",i),r=this.renderCategoryScore(t,n,a);if(o.append(r),t.description){let s=this.dom.convertMarkdownLinkSnippets(t.description);this.dom.find(".lh-category-header__description",i).append(s)}return i}renderAuditGroup(t){let n=this.dom.createElement("div","lh-audit-group"),a=this.dom.createElement("div","lh-audit-group__header");this.dom.createChildOf(a,"span","lh-audit-group__title").textContent=t.title,n.append(a);let i=null;return t.description&&(i=this.dom.convertMarkdownLinkSnippets(t.description),i.classList.add("lh-audit-group__description","lh-audit-group__footer"),n.append(i)),[n,i]}_renderGroupedAudits(t,n){let a=new Map,i="NotAGroup";a.set(i,[]);for(let r of t){let s=r.group||i,p=a.get(s)||[];p.push(r),a.set(s,p)}let o=[];for(let[r,s]of a){if(r===i){for(let d of s)o.push(this.renderAudit(d));continue}let p=n[r],[c,l]=this.renderAuditGroup(p);for(let d of s)c.insertBefore(this.renderAudit(d),l);c.classList.add(`lh-audit-group--${r}`),o.push(c)}return o}renderUnexpandableClump(t,n){let a=this.dom.createElement("div");return this._renderGroupedAudits(t,n).forEach(o=>a.append(o)),a}renderClump(t,{auditRefsOrEls:n,description:a,openByDefault:i}){let o=this.dom.createComponent("clump"),r=this.dom.find(".lh-clump",o);i&&r.setAttribute("open","");let s=this.dom.find(".lh-audit-group__header",r),p=this._clumpTitles[t];this.dom.find(".lh-audit-group__title",s).textContent=p;let c=this.dom.find(".lh-audit-group__itemcount",r);c.textContent=`(${n.length})`;let l=n.map(m=>m instanceof HTMLElement?m:this.renderAudit(m));r.append(...l);let d=this.dom.find(".lh-audit-group",o);if(a){let m=this.dom.convertMarkdownLinkSnippets(a);m.classList.add("lh-audit-group__description","lh-audit-group__footer"),d.append(m)}return this.dom.find(".lh-clump-toggletext--show",d).textContent=v.strings.show,this.dom.find(".lh-clump-toggletext--hide",d).textContent=v.strings.hide,r.classList.add(`lh-clump--${t.toLowerCase()}`),d}renderCategoryScore(t,n,a){let i;if(a&&E.shouldDisplayAsFraction(a.gatherMode)?i=this.renderCategoryFraction(t):i=this.renderScoreGauge(t,n),a?.omitLabel&&this.dom.find(".lh-gauge__label,.lh-fraction__label",i).remove(),a?.onPageAnchorRendered){let o=this.dom.find("a",i);a.onPageAnchorRendered(o)}return i}renderScoreGauge(t,n){let a=this.dom.createComponent("gauge"),i=this.dom.find("a.lh-gauge__wrapper",a);E.isPluginCategory(t.id)&&i.classList.add("lh-gauge__wrapper--plugin");let o=Number(t.score),r=this.dom.find(".lh-gauge",a),s=this.dom.find("circle.lh-gauge-arc",r);s&&this._setGaugeArc(s,o);let p=Math.round(o*100),c=this.dom.find("div.lh-gauge__percentage",a);return c.textContent=p.toString(),t.score===null&&(c.classList.add("lh-gauge--error"),c.textContent="",c.title=v.strings.errorLabel),t.auditRefs.length===0||this.hasApplicableAudits(t)?i.classList.add(`lh-gauge__wrapper--${E.calculateRating(t.score)}`):(i.classList.add("lh-gauge__wrapper--not-applicable"),c.textContent="-",c.title=v.strings.notApplicableAuditsGroupTitle),this.dom.find(".lh-gauge__label",a).textContent=t.title,a}renderCategoryFraction(t){let n=this.dom.createComponent("fraction"),a=this.dom.find("a.lh-fraction__wrapper",n),{numPassed:i,numPassableAudits:o,totalWeight:r}=E.calculateCategoryFraction(t),s=i/o,p=this.dom.find(".lh-fraction__content",n),c=this.dom.createElement("span");c.textContent=`${i}/${o}`,p.append(c);let l=E.calculateRating(s);return r===0&&(l="null"),a.classList.add(`lh-fraction__wrapper--${l}`),this.dom.find(".lh-fraction__label",n).textContent=t.title,n}hasApplicableAudits(t){return t.auditRefs.some(n=>n.result.scoreDisplayMode!=="notApplicable")}_setGaugeArc(t,n){let a=2*Math.PI*Number(t.getAttribute("r")),i=Number(t.getAttribute("stroke-width")),o=.25*i/a;t.style.transform=`rotate(${-90+o*360}deg)`;let r=n*a-i/2;n===0&&(t.style.opacity="0"),n===1&&(r=a),t.style.strokeDasharray=`${Math.max(r,0)} ${a}`}_auditHasWarning(t){return!!t.result.warnings?.length}_getClumpIdForAuditRef(t){let n=t.result.scoreDisplayMode;return n==="manual"||n==="notApplicable"?n:E.showAsPassed(t.result)?this._auditHasWarning(t)?"warning":"passed":"failed"}render(t,n={},a){let i=this.dom.createElement("div","lh-category");i.id=t.id,i.append(this.renderCategoryHeader(t,n,a));let o=new Map;o.set("failed",[]),o.set("warning",[]),o.set("manual",[]),o.set("passed",[]),o.set("notApplicable",[]);for(let s of t.auditRefs){if(s.group==="hidden")continue;let p=this._getClumpIdForAuditRef(s),c=o.get(p);c.push(s),o.set(p,c)}for(let s of o.values())s.sort((p,c)=>c.weight-p.weight);let r=o.get("failed")?.length;for(let[s,p]of o){if(p.length===0)continue;if(s==="failed"){let m=this.renderUnexpandableClump(p,n);m.classList.add("lh-clump--failed"),i.append(m);continue}let c=s==="manual"?t.manualDescription:void 0,l=s==="warning"||s==="manual"&&r===0,d=this.renderClump(s,{auditRefsOrEls:p,description:c,openByDefault:l});i.append(d)}return i}};var je=class{static initTree(t){let n=0,a=Object.keys(t);return a.length>0&&(n=t[a[0]].request.startTime),{tree:t,startTime:n,transferSize:0}}static createSegment(t,n,a,i,o,r){let s=t[n],p=Object.keys(t),c=p.indexOf(n)===p.length-1,l=!!s.children&&Object.keys(s.children).length>0,d=Array.isArray(o)?o.slice(0):[];return typeof r<"u"&&d.push(!r),{node:s,isLastChild:c,hasChildren:l,startTime:a,transferSize:i+s.request.transferSize,treeMarkers:d}}static createChainNode(t,n,a){let i=t.createComponent("crcChain");t.find(".lh-crc-node",i).setAttribute("title",n.node.request.url);let o=t.find(".lh-crc-node__tree-marker",i);n.treeMarkers.forEach(d=>{let m=d?"lh-tree-marker lh-vert":"lh-tree-marker";o.append(t.createElement("span",m),t.createElement("span","lh-tree-marker"))});let r=n.isLastChild?"lh-tree-marker lh-up-right":"lh-tree-marker lh-vert-right",s=n.hasChildren?"lh-tree-marker lh-horiz-down":"lh-tree-marker lh-right";o.append(t.createElement("span",r),t.createElement("span","lh-tree-marker lh-right"),t.createElement("span",s));let p=n.node.request.url,c=a.renderTextURL(p),l=t.find(".lh-crc-node__tree-value",i);if(l.append(c),!n.hasChildren){let{startTime:d,endTime:m,transferSize:h}=n.node.request,g=t.createElement("span","lh-crc-node__chain-duration");g.textContent=" - "+v.i18n.formatMilliseconds((m-d)*1e3)+", ";let _=t.createElement("span","lh-crc-node__chain-duration");_.textContent=v.i18n.formatBytesToKiB(h,.01),l.append(g,_)}return i}static buildTree(t,n,a,i,o,r){if(i.append(_e.createChainNode(t,a,r)),a.node.children)for(let s of Object.keys(a.node.children)){let p=_e.createSegment(a.node.children,s,a.startTime,a.transferSize,a.treeMarkers,a.isLastChild);_e.buildTree(t,n,p,i,o,r)}}static render(t,n,a){let i=t.createComponent("crc"),o=t.find(".lh-crc",i);t.find(".lh-crc-initial-nav",i).textContent=v.strings.crcInitialNavigation,t.find(".lh-crc__longest_duration_label",i).textContent=v.strings.crcLongestDurationLabel,t.find(".lh-crc__longest_duration",i).textContent=v.i18n.formatMilliseconds(n.longestChain.duration);let r=_e.initTree(n.chains);for(let s of Object.keys(r.tree)){let p=_e.createSegment(r.tree,s,r.startTime,r.transferSize);_e.buildTree(t,i,p,o,n,a)}return t.find(".lh-crc-container",i)}},_e=je;function Lo(e,t){return t.left<=e.width&&0<=t.right&&t.top<=e.height&&0<=t.bottom}function Pa(e,t,n){return e<t?t:e>n?n:e}function Uo(e){return{x:e.left+e.width/2,y:e.top+e.height/2}}var le=class e{static getScreenshotPositions(t,n,a){let i=Uo(t),o=Pa(i.x-n.width/2,0,a.width-n.width),r=Pa(i.y-n.height/2,0,a.height-n.height);return{screenshot:{left:o,top:r},clip:{left:t.left-o,top:t.top-r}}}static renderClipPathInScreenshot(t,n,a,i,o){let r=t.find("clipPath",n),s=`clip-${v.getUniqueSuffix()}`;r.id=s,n.style.clipPath=`url(#${s})`;let p=a.top/o.height,c=p+i.height/o.height,l=a.left/o.width,d=l+i.width/o.width,m=[`0,0 1,0 1,${p} 0,${p}`,`0,${c} 1,${c} 1,1 0,1`,`0,${p} ${l},${p} ${l},${c} 0,${c}`,`${d},${p} 1,${p} 1,${c} ${d},${c}`];for(let h of m){let g=t.createElementNS("http://www.w3.org/2000/svg","polygon");g.setAttribute("points",h),r.append(g)}}static installFullPageScreenshot(t,n){t.style.setProperty("--element-screenshot-url",`url('${n.data}')`)}static installOverlayFeature(t){let{dom:n,rootEl:a,overlayContainerEl:i,fullPageScreenshot:o}=t,r="lh-screenshot-overlay--enabled";a.classList.contains(r)||(a.classList.add(r),a.addEventListener("click",s=>{let p=s.target;if(!p)return;let c=p.closest(".lh-node > .lh-element-screenshot");if(!c)return;let l=n.createElement("div","lh-element-screenshot__overlay");i.append(l);let d={width:l.clientWidth*.95,height:l.clientHeight*.8},m={width:Number(c.dataset.rectWidth),height:Number(c.dataset.rectHeight),left:Number(c.dataset.rectLeft),right:Number(c.dataset.rectLeft)+Number(c.dataset.rectWidth),top:Number(c.dataset.rectTop),bottom:Number(c.dataset.rectTop)+Number(c.dataset.rectHeight)},h=e.render(n,o.screenshot,m,d);if(!h){l.remove();return}l.append(h),l.addEventListener("click",()=>l.remove())}))}static _computeZoomFactor(t,n){let i={x:n.width/t.width,y:n.height/t.height},o=.75*Math.min(i.x,i.y);return Math.min(1,o)}static render(t,n,a,i){if(!Lo(n,a))return null;let o=t.createComponent("elementScreenshot"),r=t.find("div.lh-element-screenshot",o);r.dataset.rectWidth=a.width.toString(),r.dataset.rectHeight=a.height.toString(),r.dataset.rectLeft=a.left.toString(),r.dataset.rectTop=a.top.toString();let s=this._computeZoomFactor(a,i),p={width:i.width/s,height:i.height/s};p.width=Math.min(n.width,p.width),p.height=Math.min(n.height,p.height);let c={width:p.width*s,height:p.height*s},l=e.getScreenshotPositions(a,p,{width:n.width,height:n.height}),d=t.find("div.lh-element-screenshot__image",r);d.style.width=c.width+"px",d.style.height=c.height+"px",d.style.backgroundPositionY=-(l.screenshot.top*s)+"px",d.style.backgroundPositionX=-(l.screenshot.left*s)+"px",d.style.backgroundSize=`${n.width*s}px ${n.height*s}px`;let m=t.find("div.lh-element-screenshot__element-marker",r);m.style.width=a.width*s+"px",m.style.height=a.height*s+"px",m.style.left=l.clip.left*s+"px",m.style.top=l.clip.top*s+"px";let h=t.find("div.lh-element-screenshot__mask",r);return h.style.width=c.width+"px",h.style.height=c.height+"px",e.renderClipPathInScreenshot(t,h,l.clip,a,p),r}};var To=["http://","https://","data:"],Io=["bytes","numeric","ms","timespanMs"],Ce=class{constructor(t,n={}){this._dom=t,this._fullPageScreenshot=n.fullPageScreenshot,this._entities=n.entities}render(t){switch(t.type){case"filmstrip":return this._renderFilmstrip(t);case"list":return this._renderList(t);case"table":case"opportunity":return this._renderTable(t);case"criticalrequestchain":return je.render(this._dom,t,this);case"screenshot":case"debugdata":case"treemap-data":return null;default:return this._renderUnknown(t.type,t)}}_renderBytes(t){let n=v.i18n.formatBytesToKiB(t.value,t.granularity||.1),a=this._renderText(n);return a.title=v.i18n.formatBytes(t.value),a}_renderMilliseconds(t){let n;return t.displayUnit==="duration"?n=v.i18n.formatDuration(t.value):n=v.i18n.formatMilliseconds(t.value,t.granularity||10),this._renderText(n)}renderTextURL(t){let n=t,a,i,o;try{let s=I.parseURL(n);a=s.file==="/"?s.origin:s.file,i=s.file==="/"||s.hostname===""?"":`(${s.hostname})`,o=n}catch{a=n}let r=this._dom.createElement("div","lh-text__url");if(r.append(this._renderLink({text:a,url:n})),i){let s=this._renderText(i);s.classList.add("lh-text__url-host"),r.append(s)}return o&&(r.title=n,r.dataset.url=n),r}_renderLink(t){let n=this._dom.createElement("a");if(this._dom.safelySetHref(n,t.url),!n.href){let a=this._renderText(t.text);return a.classList.add("lh-link"),a}return n.rel="noopener",n.target="_blank",n.textContent=t.text,n.classList.add("lh-link"),n}_renderText(t){let n=this._dom.createElement("div","lh-text");return n.textContent=t,n}_renderNumeric(t){let n=v.i18n.formatNumber(t.value,t.granularity||.1),a=this._dom.createElement("div","lh-numeric");return a.textContent=n,a}_renderThumbnail(t){let n=this._dom.createElement("img","lh-thumbnail"),a=t;return n.src=a,n.title=a,n.alt="",n}_renderUnknown(t,n){console.error(`Unknown details type: ${t}`,n);let a=this._dom.createElement("details","lh-unknown");return this._dom.createChildOf(a,"summary").textContent=`We don't know how to render audit details of type \`${t}\`. The Lighthouse version that collected this data is likely newer than the Lighthouse version of the report renderer. Expand for the raw JSON.`,this._dom.createChildOf(a,"pre").textContent=JSON.stringify(n,null,2),a}_renderTableValue(t,n){if(t==null)return null;if(typeof t=="object")switch(t.type){case"code":return this._renderCode(t.value);case"link":return this._renderLink(t);case"node":return this.renderNode(t);case"numeric":return this._renderNumeric(t);case"source-location":return this.renderSourceLocation(t);case"url":return this.renderTextURL(t.value);default:return this._renderUnknown(t.type,t)}switch(n.valueType){case"bytes":{let a=Number(t);return this._renderBytes({value:a,granularity:n.granularity})}case"code":{let a=String(t);return this._renderCode(a)}case"ms":{let a={value:Number(t),granularity:n.granularity,displayUnit:n.displayUnit};return this._renderMilliseconds(a)}case"numeric":{let a=Number(t);return this._renderNumeric({value:a,granularity:n.granularity})}case"text":{let a=String(t);return this._renderText(a)}case"thumbnail":{let a=String(t);return this._renderThumbnail(a)}case"timespanMs":{let a=Number(t);return this._renderMilliseconds({value:a})}case"url":{let a=String(t);return To.some(i=>a.startsWith(i))?this.renderTextURL(a):this._renderCode(a)}default:return this._renderUnknown(n.valueType,t)}}_getDerivedSubItemsHeading(t){return t.subItemsHeading?{key:t.subItemsHeading.key||"",valueType:t.subItemsHeading.valueType||t.valueType,granularity:t.subItemsHeading.granularity||t.granularity,displayUnit:t.subItemsHeading.displayUnit||t.displayUnit,label:""}:null}_renderTableRow(t,n){let a=this._dom.createElement("tr");for(let i of n){if(!i||!i.key){this._dom.createChildOf(a,"td","lh-table-column--empty");continue}let o=t[i.key],r;if(o!=null&&(r=this._renderTableValue(o,i)),r){let s=`lh-table-column--${i.valueType}`;this._dom.createChildOf(a,"td",s).append(r)}else this._dom.createChildOf(a,"td","lh-table-column--empty")}return a}_renderTableRowsFromItem(t,n){let a=this._dom.createFragment();if(a.append(this._renderTableRow(t,n)),!t.subItems)return a;let i=n.map(this._getDerivedSubItemsHeading);if(!i.some(Boolean))return a;for(let o of t.subItems.items){let r=this._renderTableRow(o,i);r.classList.add("lh-sub-item-row"),a.append(r)}return a}_adornEntityGroupRow(t){let n=t.dataset.entity;if(!n)return;let a=this._entities?.find(o=>o.name===n);if(!a)return;let i=this._dom.find("td",t);if(a.category){let o=this._dom.createElement("span");o.classList.add("lh-audit__adorn"),o.textContent=a.category,i.append(" ",o)}if(a.isFirstParty){let o=this._dom.createElement("span");o.classList.add("lh-audit__adorn","lh-audit__adorn1p"),o.textContent=v.strings.firstPartyChipLabel,i.append(" ",o)}if(a.homepage){let o=this._dom.createElement("a");o.href=a.homepage,o.target="_blank",o.title=v.strings.openInANewTabTooltip,o.classList.add("lh-report-icon--external"),i.append(" ",o)}}_renderEntityGroupRow(t,n){let a={...n[0]};a.valueType="text";let i=[a,...n.slice(1)],o=this._dom.createFragment();return o.append(this._renderTableRow(t,i)),this._dom.find("tr",o).classList.add("lh-row--group"),o}_getEntityGroupItems(t){let{items:n,headings:a,sortedBy:i}=t;if(!n.length||t.isEntityGrouped||!n.some(l=>l.entity))return[];let o=new Set(t.skipSumming||[]),r=[];for(let l of a)!l.key||o.has(l.key)||Io.includes(l.valueType)&&r.push(l.key);let s=a[0].key;if(!s)return[];let p=new Map;for(let l of n){let d=typeof l.entity=="string"?l.entity:void 0,m=p.get(d)||{[s]:d||v.strings.unattributable,entity:d};for(let h of r)m[h]=Number(m[h]||0)+Number(l[h]||0);p.set(d,m)}let c=[...p.values()];return i&&c.sort(E.getTableItemSortComparator(i)),c}_renderTable(t){if(!t.items.length)return this._dom.createElement("span");let n=this._dom.createElement("table","lh-table"),a=this._dom.createChildOf(n,"thead"),i=this._dom.createChildOf(a,"tr");for(let s of t.headings){let c=`lh-table-column--${s.valueType||"text"}`,l=this._dom.createElement("div","lh-text");l.textContent=s.label,this._dom.createChildOf(i,"th",c).append(l)}let o=this._getEntityGroupItems(t),r=this._dom.createChildOf(n,"tbody");if(o.length)for(let s of o){let p=typeof s.entity=="string"?s.entity:void 0,c=this._renderEntityGroupRow(s,t.headings);for(let d of t.items.filter(m=>m.entity===p))c.append(this._renderTableRowsFromItem(d,t.headings));let l=this._dom.findAll("tr",c);p&&l.length&&(l.forEach(d=>d.dataset.entity=p),this._adornEntityGroupRow(l[0])),r.append(c)}else{let s=!0;for(let p of t.items){let c=this._renderTableRowsFromItem(p,t.headings),l=this._dom.findAll("tr",c),d=l[0];if(typeof p.entity=="string"&&(d.dataset.entity=p.entity),t.isEntityGrouped&&p.entity)d.classList.add("lh-row--group"),this._adornEntityGroupRow(d);else for(let m of l)m.classList.add(s?"lh-row--even":"lh-row--odd");s=!s,r.append(c)}}return n}_renderList(t){let n=this._dom.createElement("div","lh-list");return t.items.forEach(a=>{let i=this.render(a);i&&n.append(i)}),n}renderNode(t){let n=this._dom.createElement("span","lh-node");if(t.nodeLabel){let r=this._dom.createElement("div");r.textContent=t.nodeLabel,n.append(r)}if(t.snippet){let r=this._dom.createElement("div");r.classList.add("lh-node__snippet"),r.textContent=t.snippet,n.append(r)}if(t.selector&&(n.title=t.selector),t.path&&n.setAttribute("data-path",t.path),t.selector&&n.setAttribute("data-selector",t.selector),t.snippet&&n.setAttribute("data-snippet",t.snippet),!this._fullPageScreenshot)return n;let a=t.lhId&&this._fullPageScreenshot.nodes[t.lhId];if(!a||a.width===0||a.height===0)return n;let i={width:147,height:100},o=le.render(this._dom,this._fullPageScreenshot.screenshot,a,i);return o&&n.prepend(o),n}renderSourceLocation(t){if(!t.url)return null;let n=`${t.url}:${t.line+1}:${t.column}`,a;t.original&&(a=`${t.original.file||"<unmapped>"}:${t.original.line+1}:${t.original.column}`);let i;if(t.urlProvider==="network"&&a)i=this._renderLink({url:t.url,text:a}),i.title=`maps to generated location ${n}`;else if(t.urlProvider==="network"&&!a)i=this.renderTextURL(t.url),this._dom.find(".lh-link",i).textContent+=`:${t.line+1}:${t.column}`;else if(t.urlProvider==="comment"&&a)i=this._renderText(`${a} (from source map)`),i.title=`${n} (from sourceURL)`;else if(t.urlProvider==="comment"&&!a)i=this._renderText(`${n} (from sourceURL)`);else return null;return i.classList.add("lh-source-location"),i.setAttribute("data-source-url",t.url),i.setAttribute("data-source-line",String(t.line)),i.setAttribute("data-source-column",String(t.column)),i}_renderFilmstrip(t){let n=this._dom.createElement("div","lh-filmstrip");for(let a of t.items){let i=this._dom.createChildOf(n,"div","lh-filmstrip__frame"),o=this._dom.createChildOf(i,"img","lh-filmstrip__thumbnail");o.src=a.data,o.alt="Screenshot"}return n}_renderCode(t){let n=this._dom.createElement("pre","lh-code");return n.textContent=t,n}};function Aa(e){let t=e.createComponent("explodeyGauge");return e.find(".lh-exp-gauge-component",t)}function Ea(e,t,n){let a=e.find("div.lh-exp-gauge__wrapper",t);a.className="",a.classList.add("lh-exp-gauge__wrapper",`lh-exp-gauge__wrapper--${E.calculateRating(n.score)}`),No(e,a,n)}function Ro(e,t,n){n=n||e/32;let a=e/n,i=.5*n,o=a+i+n,r=2*Math.PI*a,s=Math.acos(1-.5*Math.pow(.5*n/a,2))*a,p=2*Math.PI*o,c=Math.acos(1-.5*Math.pow(.5*n/o,2))*o;return{radiusInner:a,radiusOuter:o,circumferenceInner:r,circumferenceOuter:p,getArcLength:()=>Math.max(0,Number(t*r)),getMetricArcLength:(l,d=!1)=>{let m=d?0:2*c;return Math.max(0,Number(l*p-i-m))},endDiffInner:s,endDiffOuter:c,strokeWidth:n,strokeGap:i}}function No(e,t,n){let o=Number(n.score),{radiusInner:r,radiusOuter:s,circumferenceInner:p,circumferenceOuter:c,getArcLength:l,getMetricArcLength:d,endDiffInner:m,endDiffOuter:h,strokeWidth:g,strokeGap:_}=Ro(128,o),f=e.find("svg.lh-exp-gauge",t);e.find(".lh-exp-gauge__label",f).textContent=n.title,f.setAttribute("viewBox",[-64,-64/2,128,128/2].join(" ")),f.style.setProperty("--stroke-width",`${g}px`),f.style.setProperty("--circle-meas",(2*Math.PI).toFixed(4));let y=e.find("g.lh-exp-gauge__outer",t),P=e.find("g.lh-exp-gauge__inner",t),A=e.find("circle.lh-cover",y),U=e.find("circle.lh-exp-gauge__arc",P),b=e.find("text.lh-exp-gauge__percentage",P);y.style.setProperty("--scale-initial",String(r/s)),y.style.setProperty("--radius",`${s}px`),A.style.setProperty("--radius",`${.5*(r+s)}px`),A.setAttribute("stroke-width",String(_)),f.style.setProperty("--radius",`${r}px`),U.setAttribute("stroke-dasharray",`${l()} ${(p-l()).toFixed(4)}`),U.setAttribute("stroke-dashoffset",String(.25*p-m)),b.textContent=Math.round(o*100).toString();let w=s+g,S=s-g,N=n.auditRefs.filter(L=>L.group==="metrics"&&L.weight),B=N.reduce((L,D)=>L+=D.weight,0),H=.25*c-h-.5*_,G=-.5*Math.PI;y.querySelectorAll(".metric").forEach(L=>{N.map(q=>`metric--${q.id}`).find(q=>L.classList.contains(q))||L.remove()}),N.forEach((L,D)=>{let z=L.acronym??L.id,q=!y.querySelector(`.metric--${z}`),V=e.maybeFind(`g.metric--${z}`,y)||e.createSVGElement("g"),me=e.maybeFind(`.metric--${z} circle.lh-exp-gauge--faded`,y)||e.createSVGElement("circle"),Se=e.maybeFind(`.metric--${z} circle.lh-exp-gauge--miniarc`,y)||e.createSVGElement("circle"),de=e.maybeFind(`.metric--${z} circle.lh-exp-gauge-hovertarget`,y)||e.createSVGElement("circle"),K=e.maybeFind(`.metric--${z} text.metric__label`,y)||e.createSVGElement("text"),Y=e.maybeFind(`.metric--${z} text.metric__value`,y)||e.createSVGElement("text");V.classList.add("metric",`metric--${z}`),me.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge--faded"),Se.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge--miniarc"),de.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge-hovertarget");let he=L.weight/B,Zt=d(he),Kt=L.result.score?L.result.score*he:0,Xt=d(Kt),ei=he*c,Yt=d(he,!0),Qt=E.calculateRating(L.result.score,L.result.scoreDisplayMode);V.style.setProperty("--metric-rating",Qt),V.style.setProperty("--metric-color",`var(--color-${Qt})`),V.style.setProperty("--metric-offset",`${H}`),V.style.setProperty("--i",D.toString()),me.setAttribute("stroke-dasharray",`${Zt} ${c-Zt}`),Se.style.setProperty("--metric-array",`${Xt} ${c-Xt}`),de.setAttribute("stroke-dasharray",`${Yt} ${c-Yt-h}`),K.classList.add("metric__label"),Y.classList.add("metric__value"),K.textContent=z,Y.textContent=`+${Math.round(Kt*100)}`;let en=G+he*Math.PI,ke=Math.cos(en),Pe=Math.sin(en);switch(!0){case ke>0:Y.setAttribute("text-anchor","end");break;case ke<0:K.setAttribute("text-anchor","end");break;case ke===0:K.setAttribute("text-anchor","middle"),Y.setAttribute("text-anchor","middle");break}switch(!0){case Pe>0:K.setAttribute("dominant-baseline","hanging");break;case Pe<0:Y.setAttribute("dominant-baseline","hanging");break;case Pe===0:K.setAttribute("dominant-baseline","middle"),Y.setAttribute("dominant-baseline","middle");break}K.setAttribute("x",(w*ke).toFixed(2)),K.setAttribute("y",(w*Pe).toFixed(2)),Y.setAttribute("x",(S*ke).toFixed(2)),Y.setAttribute("y",(S*Pe).toFixed(2)),q&&(V.appendChild(me),V.appendChild(Se),V.appendChild(de),V.appendChild(K),V.appendChild(Y),y.appendChild(V)),H-=ei,G+=he*2*Math.PI});let W=y.querySelector(".lh-exp-gauge-underhovertarget")||e.createSVGElement("circle");W.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge-hovertarget","lh-exp-gauge-underhovertarget");let J=d(1,!0);if(W.setAttribute("stroke-dasharray",`${J} ${c-J-h}`),W.isConnected||y.prepend(W),f.dataset.listenersSetup)return;f.dataset.listenersSetup=!0,xe(f),f.addEventListener("pointerover",L=>{if(L.target===f&&f.classList.contains("state--expanded")){f.classList.remove("state--expanded"),f.classList.contains("state--highlight")&&(f.classList.remove("state--highlight"),e.find(".metric--highlight",f).classList.remove("metric--highlight"));return}if(!(L.target instanceof Element))return;let D=L.target.parentNode;if(D instanceof SVGElement){if(D&&D===P){f.classList.contains("state--expanded")?f.classList.contains("state--highlight")&&(f.classList.remove("state--highlight"),e.find(".metric--highlight",f).classList.remove("metric--highlight")):f.classList.add("state--expanded");return}if(D&&D.classList&&D.classList.contains("metric")){let z=D.style.getPropertyValue("--metric-rating");if(t.style.setProperty("--color-highlight",`var(--color-${z}-secondary)`),!f.classList.contains("state--highlight"))f.classList.add("state--highlight"),D.classList.add("metric--highlight");else{let q=e.find(".metric--highlight",f);D!==q&&(q.classList.remove("metric--highlight"),D.classList.add("metric--highlight"))}}}}),f.addEventListener("mouseleave",()=>{f.classList.remove("state--highlight"),f.querySelector(".metric--highlight")?.classList.remove("metric--highlight")});async function xe(L){if(await new Promise(K=>setTimeout(K,1e3)),L.classList.contains("state--expanded"))return;let D=e.find(".lh-exp-gauge__inner",L),z=`uniq-${Math.random()}`;D.setAttribute("id",z);let q=e.createSVGElement("use");q.setAttribute("href",`#${z}`),L.appendChild(q);let V=2.5;L.style.setProperty("--peek-dur",`${V}s`),L.classList.add("state--peek","state--expanded");let me=()=>{L.classList.remove("state--peek","state--expanded"),q.remove()},Se=setTimeout(()=>{L.removeEventListener("mouseenter",de),me()},V*1e3*1.5);function de(){clearTimeout(Se),me()}L.addEventListener("mouseenter",de,{once:!0})}}var dt=class extends se{_renderMetric(t){let n=this.dom.createComponent("metric"),a=this.dom.find(".lh-metric",n);a.id=t.result.id;let i=E.calculateRating(t.result.score,t.result.scoreDisplayMode);a.classList.add(`lh-metric--${i}`);let o=this.dom.find(".lh-metric__title",n);o.textContent=t.result.title;let r=this.dom.find(".lh-metric__value",n);r.textContent=t.result.displayValue||"";let s=this.dom.find(".lh-metric__description",n);if(s.append(this.dom.convertMarkdownLinkSnippets(t.result.description)),t.result.scoreDisplayMode==="error"){s.textContent="",r.textContent="Error!";let p=this.dom.createChildOf(s,"span");p.textContent=t.result.errorMessage||"Report error: no metric information"}else t.result.scoreDisplayMode==="notApplicable"&&(r.textContent="--");return a}_getScoringCalculatorHref(t){let n=t.filter(d=>d.group==="metrics"),a=t.find(d=>d.id==="interactive"),i=t.find(d=>d.id==="first-cpu-idle"),o=t.find(d=>d.id==="first-meaningful-paint");a&&n.push(a),i&&n.push(i),o&&typeof o.result.score=="number"&&n.push(o);let r=d=>Math.round(d*100)/100,p=[...n.map(d=>{let m;return typeof d.result.numericValue=="number"?(m=d.id==="cumulative-layout-shift"?r(d.result.numericValue):Math.round(d.result.numericValue),m=m.toString()):m="null",[d.acronym||d.id,m]})];v.reportJson&&(p.push(["device",v.reportJson.configSettings.formFactor]),p.push(["version",v.reportJson.lighthouseVersion]));let c=new URLSearchParams(p),l=new URL("https://googlechrome.github.io/lighthouse/scorecalc/");return l.hash=c.toString(),l.href}overallImpact(t,n){if(!t.result.metricSavings)return{overallImpact:0,overallLinearImpact:0};let a=0,i=0;for(let[o,r]of Object.entries(t.result.metricSavings)){if(r===void 0)continue;let s=n.find(h=>h.acronym===o);if(!s||s.result.score===null)continue;let p=s.result.numericValue;if(!p)continue;let c=r/p*s.weight;i+=c;let l=s.result.scoringOptions;if(!l)continue;let m=(I.computeLogNormalScore(l,p-r)-s.result.score)*s.weight;a+=m}return{overallImpact:a,overallLinearImpact:i}}render(t,n,a){let i=v.strings,o=this.dom.createElement("div","lh-category");o.id=t.id,o.append(this.renderCategoryHeader(t,n,a));let r=t.auditRefs.filter(b=>b.group==="metrics");if(r.length){let[b,w]=this.renderAuditGroup(n.metrics),S=this.dom.createElement("input","lh-metrics-toggle__input"),N=`lh-metrics-toggle${v.getUniqueSuffix()}`;S.setAttribute("aria-label","Toggle the display of metric descriptions"),S.type="checkbox",S.id=N,b.prepend(S);let B=this.dom.find(".lh-audit-group__header",b),H=this.dom.createChildOf(B,"label","lh-metrics-toggle__label");H.htmlFor=N;let G=this.dom.createChildOf(H,"span","lh-metrics-toggle__labeltext--show"),W=this.dom.createChildOf(H,"span","lh-metrics-toggle__labeltext--hide");G.textContent=v.strings.expandView,W.textContent=v.strings.collapseView;let J=this.dom.createElement("div","lh-metrics-container");if(b.insertBefore(J,w),r.forEach(xe=>{J.append(this._renderMetric(xe))}),o.querySelector(".lh-gauge__wrapper")){let xe=this.dom.find(".lh-category-header__description",o),L=this.dom.createChildOf(xe,"div","lh-metrics__disclaimer"),D=this.dom.convertMarkdownLinkSnippets(i.varianceDisclaimer);L.append(D);let z=this.dom.createChildOf(L,"a","lh-calclink");z.target="_blank",z.textContent=i.calculatorLink,this.dom.safelySetHref(z,this._getScoringCalculatorHref(t.auditRefs))}b.classList.add("lh-audit-group--metrics"),o.append(b)}let s=this.dom.createChildOf(o,"div","lh-filmstrip-container"),c=t.auditRefs.find(b=>b.id==="screenshot-thumbnails")?.result;if(c?.details){s.id=c.id;let b=this.detailsRenderer.render(c.details);b&&s.append(b)}let l=t.auditRefs.filter(b=>b.group==="diagnostics").map(b=>{let{overallImpact:w,overallLinearImpact:S}=this.overallImpact(b,r),N=b.result.guidanceLevel||1,B=this.renderAudit(b);return{auditRef:b,auditEl:B,overallImpact:w,overallLinearImpact:S,guidanceLevel:N}}),d=l.filter(b=>!E.showAsPassed(b.auditRef.result)),m=l.filter(b=>E.showAsPassed(b.auditRef.result)),[h,g]=this.renderAuditGroup(n.diagnostics);h.classList.add("lh-audit-group--diagnostics");function _(b){for(let w of l)if(b==="All")w.auditEl.hidden=!1;else{let S=w.auditRef.result.metricSavings?.[b]===void 0;w.auditEl.hidden=S}d.sort((w,S)=>{let N=w.auditRef.result.score||0,B=S.auditRef.result.score||0;if(N!==B)return N-B;if(b!=="All"){let H=w.auditRef.result.metricSavings?.[b]??-1,G=S.auditRef.result.metricSavings?.[b]??-1;if(H!==G)return G-H}return w.overallImpact!==S.overallImpact?S.overallImpact*S.guidanceLevel-w.overallImpact*w.guidanceLevel:w.overallImpact===0&&S.overallImpact===0&&w.overallLinearImpact!==S.overallLinearImpact?S.overallLinearImpact*S.guidanceLevel-w.overallLinearImpact*w.guidanceLevel:S.guidanceLevel-w.guidanceLevel});for(let w of d)h.insertBefore(w.auditEl,g)}let f=new Set;for(let b of d){let w=b.auditRef.result.metricSavings||{};for(let[S,N]of Object.entries(w))typeof N=="number"&&f.add(S)}let y=r.filter(b=>b.acronym&&f.has(b.acronym));if(y.length&&this.renderMetricAuditFilter(y,o,_),_("All"),d.length&&o.append(h),!m.length)return o;let P={auditRefsOrEls:m.map(b=>b.auditEl),groupDefinitions:n},A=this.renderClump("passed",P);if(o.append(A),(!a||a?.gatherMode==="navigation")&&t.score!==null){let b=Aa(this.dom);Ea(this.dom,b,t),this.dom.find(".lh-score__gauge",o).replaceWith(b)}return o}renderMetricAuditFilter(t,n,a){let i=this.dom.createElement("div","lh-metricfilter"),o=this.dom.createChildOf(i,"span","lh-metricfilter__text");o.textContent=v.strings.showRelevantAudits;let r=[{acronym:"All",id:"All"},...t],s=v.getUniqueSuffix();for(let p of r){let c=`metric-${p.acronym}-${s}`,l=this.dom.createChildOf(i,"input","lh-metricfilter__radio");l.type="radio",l.name=`metricsfilter-${s}`,l.id=c;let d=this.dom.createChildOf(i,"label","lh-metricfilter__label");d.htmlFor=c,d.title="result"in p?p.result.title:"",d.textContent=p.acronym||p.id,p.acronym==="All"&&(l.checked=!0,d.classList.add("lh-metricfilter__label--active")),n.append(i),l.addEventListener("input",m=>{for(let g of n.querySelectorAll("label.lh-metricfilter__label"))g.classList.toggle("lh-metricfilter__label--active",g.htmlFor===c);n.classList.toggle("lh-category--filtered",p.acronym!=="All"),a(p.acronym||"All");let h=n.querySelectorAll("div.lh-audit-group, details.lh-audit-group");for(let g of h){g.hidden=!1;let _=Array.from(g.querySelectorAll("div.lh-audit")),f=!!_.length&&_.every(y=>y.hidden);g.hidden=f}})}}};var ht=class{constructor(t){this._dom=t,this._opts={}}renderReport(t,n,a){if(!this._dom.rootEl&&n){console.warn("Please adopt the new report API in renderer/api.js.");let o=n.closest(".lh-root");o?this._dom.rootEl=o:(n.classList.add("lh-root","lh-vars"),this._dom.rootEl=n)}else this._dom.rootEl&&n&&(this._dom.rootEl=n);a&&(this._opts=a),this._dom.setLighthouseChannel(t.configSettings.channel||"unknown");let i=E.prepareReportResult(t);return this._dom.rootEl.textContent="",this._dom.rootEl.append(this._renderReport(i)),this._opts.occupyEntireViewport&&this._dom.rootEl.classList.add("lh-max-viewport"),this._dom.rootEl}_renderReportTopbar(t){let n=this._dom.createComponent("topbar"),a=this._dom.find("a.lh-topbar__url",n);return a.textContent=t.finalDisplayedUrl,a.title=t.finalDisplayedUrl,this._dom.safelySetHref(a,t.finalDisplayedUrl),n}_renderReportHeader(){let t=this._dom.createComponent("heading"),n=this._dom.createComponent("scoresWrapper");return this._dom.find(".lh-scores-wrapper-placeholder",t).replaceWith(n),t}_renderReportFooter(t){let n=this._dom.createComponent("footer");return this._renderMetaBlock(t,n),this._dom.find(".lh-footer__version_issue",n).textContent=v.strings.footerIssue,this._dom.find(".lh-footer__version",n).textContent=t.lighthouseVersion,n}_renderMetaBlock(t,n){let a=E.getEmulationDescriptions(t.configSettings||{}),i=t.userAgent.match(/(\w*Chrome\/[\d.]+)/),o=Array.isArray(i)?i[1].replace("/"," ").replace("Chrome","Chromium"):"Chromium",r=t.configSettings.channel,s=t.environment.benchmarkIndex.toFixed(0),p=t.environment.credits?.["axe-core"],c=[`${v.strings.runtimeSettingsBenchmark}: ${s}`,`${v.strings.runtimeSettingsCPUThrottling}: ${a.cpuThrottling}`];a.screenEmulation&&c.push(`${v.strings.runtimeSettingsScreenEmulation}: ${a.screenEmulation}`),p&&c.push(`${v.strings.runtimeSettingsAxeVersion}: ${p}`);let l=v.strings.runtimeAnalysisWindow;t.gatherMode==="timespan"?l=v.strings.runtimeAnalysisWindowTimespan:t.gatherMode==="snapshot"&&(l=v.strings.runtimeAnalysisWindowSnapshot);let d=[["date",`Captured at ${v.i18n.formatDateTime(t.fetchTime)}`],["devices",`${a.deviceEmulation} with Lighthouse ${t.lighthouseVersion}`,c.join(`
|
|
2610
|
-
`)],["samples-one",v.strings.runtimeSingleLoad,v.strings.runtimeSingleLoadTooltip],["stopwatch",l],["networkspeed",`${a.summary}`,`${v.strings.runtimeSettingsNetworkThrottling}: ${a.networkThrottling}`],["chrome",`Using ${o}`+(r?` with ${r}`:""),`${v.strings.runtimeSettingsUANetwork}: "${t.environment.networkUserAgent}"`]],m=this._dom.find(".lh-meta__items",n);for(let[h,g,_]of d){let f=this._dom.createChildOf(m,"li","lh-meta__item");if(f.textContent=g,_){f.classList.add("lh-tooltip-boundary");let y=this._dom.createChildOf(f,"div","lh-tooltip");y.textContent=_}f.classList.add("lh-report-icon",`lh-report-icon--${h}`)}}_renderReportWarnings(t){if(!t.runWarnings||t.runWarnings.length===0)return this._dom.createElement("div");let n=this._dom.createComponent("warningsToplevel"),a=this._dom.find(".lh-warnings__msg",n);a.textContent=v.strings.toplevelWarningsMessage;let i=[];for(let o of t.runWarnings){let r=this._dom.createElement("li");r.append(this._dom.convertMarkdownLinkSnippets(o)),i.push(r)}return this._dom.find("ul",n).append(...i),n}_renderScoreGauges(t,n,a){let i=[],o=[];for(let r of Object.values(t.categories)){let p=(a[r.id]||n).renderCategoryScore(r,t.categoryGroups||{},{gatherMode:t.gatherMode}),c=this._dom.find("a.lh-gauge__wrapper, a.lh-fraction__wrapper",p);c&&(this._dom.safelySetHref(c,`#${r.id}`),c.addEventListener("click",l=>{if(!c.matches('[href^="#"]'))return;let d=c.getAttribute("href"),m=this._dom.rootEl;if(!d||!m)return;let h=this._dom.find(d,m);l.preventDefault(),h.scrollIntoView()}),this._opts.onPageAnchorRendered?.(c)),E.isPluginCategory(r.id)?o.push(p):i.push(p)}return[...i,...o]}_renderReport(t){v.apply({providedStrings:t.i18n.rendererFormattedStrings,i18n:new ce(t.configSettings.locale),reportJson:t});let n=new Ce(this._dom,{fullPageScreenshot:t.fullPageScreenshot??void 0,entities:t.entities}),a=new se(this._dom,n),i={performance:new dt(this._dom,n)},o=this._dom.createElement("div");o.append(this._renderReportHeader());let r=this._dom.createElement("div","lh-container"),s=this._dom.createElement("div","lh-report");s.append(this._renderReportWarnings(t));let p;Object.keys(t.categories).length===1?o.classList.add("lh-header--solo-category"):p=this._dom.createElement("div","lh-scores-header");let l=this._dom.createElement("div");if(l.classList.add("lh-scorescale-wrap"),l.append(this._dom.createComponent("scorescale")),p){let g=this._dom.find(".lh-scores-container",o);p.append(...this._renderScoreGauges(t,a,i)),g.append(p,l);let _=this._dom.createElement("div","lh-sticky-header");_.append(...this._renderScoreGauges(t,a,i)),r.append(_)}let d=this._dom.createElement("div","lh-categories");s.append(d);let m={gatherMode:t.gatherMode};for(let g of Object.values(t.categories)){let _=i[g.id]||a;_.dom.createChildOf(d,"div","lh-category-wrapper").append(_.render(g,t.categoryGroups,m))}a.injectFinalScreenshot(d,t.audits,l);let h=this._dom.createFragment();return this._opts.omitGlobalStyles||h.append(this._dom.createComponent("styles")),this._opts.omitTopbar||h.append(this._renderReportTopbar(t)),h.append(r),s.append(this._renderReportFooter(t)),r.append(o,s),t.fullPageScreenshot&&le.installFullPageScreenshot(this._dom.rootEl,t.fullPageScreenshot.screenshot),h}};function we(e,t){let n=e.rootEl;typeof t>"u"?n.classList.toggle("lh-dark"):n.classList.toggle("lh-dark",t)}var Do=typeof btoa<"u"?btoa:e=>Buffer.from(e).toString("base64"),zo=typeof atob<"u"?atob:e=>Buffer.from(e,"base64").toString();async function jo(e,t){let n=new TextEncoder().encode(e);if(t.gzip)if(typeof CompressionStream<"u"){let o=new CompressionStream("gzip"),r=o.writable.getWriter();r.write(n),r.close();let s=await new Response(o.readable).arrayBuffer();n=new Uint8Array(s)}else n=window.pako.gzip(e);let a="",i=5e3;for(let o=0;o<n.length;o+=i)a+=String.fromCharCode(...n.subarray(o,o+i));return Do(a)}function Mo(e,t){let n=zo(e),a=Uint8Array.from(n,i=>i.charCodeAt(0));return t.gzip?window.pako.ungzip(a,{to:"string"}):new TextDecoder().decode(a)}var La={toBase64:jo,fromBase64:Mo};function Vt(){let e=window.location.host.endsWith(".vercel.app"),t=new URLSearchParams(window.location.search).has("dev");return e?`https://${window.location.host}/gh-pages`:t?"http://localhost:7333":"https://googlechrome.github.io/lighthouse"}function $t(e){let t=e.generatedTime,n=e.fetchTime||t;return`${e.lighthouseVersion}-${e.finalDisplayedUrl}-${n}`}function Ho(e,t,n){let a=new URL(t).origin;window.addEventListener("message",function o(r){r.origin===a&&i&&r.data.opened&&(i.postMessage(e,a),window.removeEventListener("message",o))});let i=window.open(t,n)}async function Ua(e,t,n){let a=new URL(t),i=!!window.CompressionStream;a.hash=await La.toBase64(JSON.stringify(e),{gzip:i}),i&&a.searchParams.set("gzip","1"),window.open(a.toString(),n)}async function Ta(e){let t="viewer-"+$t(e),n=Vt()+"/viewer/";await Ua({lhr:e},n,t)}async function Ia(e){let t="viewer-"+$t(e),n=Vt()+"/viewer/";Ho({lhr:e},n,t)}function Ra(e){if(!e.audits["script-treemap-data"].details)throw new Error("no script treemap data found");let n={lhr:{mainDocumentUrl:e.mainDocumentUrl,finalUrl:e.finalUrl,finalDisplayedUrl:e.finalDisplayedUrl,audits:{"script-treemap-data":e.audits["script-treemap-data"]},configSettings:{locale:e.configSettings.locale}}},a=Vt()+"/treemap/",i="treemap-"+$t(e);Ua(n,a,i)}var gt=class{constructor(t){this._dom=t,this._toggleEl,this._menuEl,this.onDocumentKeyDown=this.onDocumentKeyDown.bind(this),this.onToggleClick=this.onToggleClick.bind(this),this.onToggleKeydown=this.onToggleKeydown.bind(this),this.onMenuFocusOut=this.onMenuFocusOut.bind(this),this.onMenuKeydown=this.onMenuKeydown.bind(this),this._getNextMenuItem=this._getNextMenuItem.bind(this),this._getNextSelectableNode=this._getNextSelectableNode.bind(this),this._getPreviousMenuItem=this._getPreviousMenuItem.bind(this)}setup(t){this._toggleEl=this._dom.find(".lh-topbar button.lh-tools__button",this._dom.rootEl),this._toggleEl.addEventListener("click",this.onToggleClick),this._toggleEl.addEventListener("keydown",this.onToggleKeydown),this._menuEl=this._dom.find(".lh-topbar div.lh-tools__dropdown",this._dom.rootEl),this._menuEl.addEventListener("keydown",this.onMenuKeydown),this._menuEl.addEventListener("click",t)}close(){this._toggleEl.classList.remove("lh-active"),this._toggleEl.setAttribute("aria-expanded","false"),this._menuEl.contains(this._dom.document().activeElement)&&this._toggleEl.focus(),this._menuEl.removeEventListener("focusout",this.onMenuFocusOut),this._dom.document().removeEventListener("keydown",this.onDocumentKeyDown)}open(t){this._toggleEl.classList.contains("lh-active")?t.focus():this._menuEl.addEventListener("transitionend",()=>{t.focus()},{once:!0}),this._toggleEl.classList.add("lh-active"),this._toggleEl.setAttribute("aria-expanded","true"),this._menuEl.addEventListener("focusout",this.onMenuFocusOut),this._dom.document().addEventListener("keydown",this.onDocumentKeyDown)}onToggleClick(t){t.preventDefault(),t.stopImmediatePropagation(),this._toggleEl.classList.contains("lh-active")?this.close():this.open(this._getNextMenuItem())}onToggleKeydown(t){switch(t.code){case"ArrowUp":t.preventDefault(),this.open(this._getPreviousMenuItem());break;case"ArrowDown":case"Enter":case" ":t.preventDefault(),this.open(this._getNextMenuItem());break;default:}}onMenuKeydown(t){let n=t.target;switch(t.code){case"ArrowUp":t.preventDefault(),this._getPreviousMenuItem(n).focus();break;case"ArrowDown":t.preventDefault(),this._getNextMenuItem(n).focus();break;case"Home":t.preventDefault(),this._getNextMenuItem().focus();break;case"End":t.preventDefault(),this._getPreviousMenuItem().focus();break;default:}}onDocumentKeyDown(t){t.keyCode===27&&this.close()}onMenuFocusOut(t){let n=t.relatedTarget;this._menuEl.contains(n)||this.close()}_getNextSelectableNode(t,n){let a=t.filter(o=>!(!(o instanceof HTMLElement)||o.hasAttribute("disabled")||window.getComputedStyle(o).display==="none")),i=n?a.indexOf(n)+1:0;return i>=a.length&&(i=0),a[i]}_getNextMenuItem(t){let n=Array.from(this._menuEl.childNodes);return this._getNextSelectableNode(n,t)}_getPreviousMenuItem(t){let n=Array.from(this._menuEl.childNodes).reverse();return this._getNextSelectableNode(n,t)}};var ft=class{constructor(t,n){this.lhr,this._reportUIFeatures=t,this._dom=n,this._dropDownMenu=new gt(this._dom),this._copyAttempt=!1,this.topbarEl,this.categoriesEl,this.stickyHeaderEl,this.highlightEl,this.onDropDownMenuClick=this.onDropDownMenuClick.bind(this),this.onKeyUp=this.onKeyUp.bind(this),this.onCopy=this.onCopy.bind(this),this.collapseAllDetails=this.collapseAllDetails.bind(this)}enable(t){this.lhr=t,this._dom.rootEl.addEventListener("keyup",this.onKeyUp),this._dom.document().addEventListener("copy",this.onCopy),this._dropDownMenu.setup(this.onDropDownMenuClick),this._setUpCollapseDetailsAfterPrinting(),this._dom.find(".lh-topbar__logo",this._dom.rootEl).addEventListener("click",()=>we(this._dom)),this._setupStickyHeader()}onDropDownMenuClick(t){t.preventDefault();let n=t.target;if(!(!n||!n.hasAttribute("data-action"))){switch(n.getAttribute("data-action")){case"copy":this.onCopyButtonClick();break;case"print-summary":this.collapseAllDetails(),this._print();break;case"print-expanded":this.expandAllDetails(),this._print();break;case"save-json":{let a=JSON.stringify(this.lhr,null,2);this._reportUIFeatures._saveFile(new Blob([a],{type:"application/json"}));break}case"save-html":{let a=this._reportUIFeatures.getReportHtml();try{this._reportUIFeatures._saveFile(new Blob([a],{type:"text/html"}))}catch(i){this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"error",msg:"Could not export as HTML. "+i.message})}break}case"open-viewer":{this._dom.isDevTools()?Ta(this.lhr):Ia(this.lhr);break}case"save-gist":{this._reportUIFeatures.saveAsGist();break}case"toggle-dark":{we(this._dom);break}case"view-unthrottled-trace":this._reportUIFeatures._opts.onViewTrace?.()}this._dropDownMenu.close()}}onCopy(t){this._copyAttempt&&t.clipboardData&&(t.preventDefault(),t.clipboardData.setData("text/plain",JSON.stringify(this.lhr,null,2)),this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:"Report JSON copied to clipboard"})),this._copyAttempt=!1}onCopyButtonClick(){this._dom.fireEventOn("lh-analytics",this._dom.document(),{cmd:"send",fields:{hitType:"event",eventCategory:"report",eventAction:"copy"}});try{this._dom.document().queryCommandSupported("copy")&&(this._copyAttempt=!0,this._dom.document().execCommand("copy")||(this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"warn",msg:"Your browser does not support copy to clipboard."})))}catch(t){this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:t.message})}}onKeyUp(t){(t.ctrlKey||t.metaKey)&&t.keyCode===80&&this._dropDownMenu.close()}expandAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map(n=>n.open=!0)}collapseAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map(n=>n.open=!1)}_print(){this._reportUIFeatures._opts.onPrintOverride?this._reportUIFeatures._opts.onPrintOverride(this._dom.rootEl):self.print()}resetUIState(){this._dropDownMenu.close()}_getScrollParent(t){let{overflowY:n}=window.getComputedStyle(t);return n!=="visible"&&n!=="hidden"?t:t.parentElement?this._getScrollParent(t.parentElement):document}_setUpCollapseDetailsAfterPrinting(){"onbeforeprint"in self?self.addEventListener("afterprint",this.collapseAllDetails):self.matchMedia("print").addListener(n=>{n.matches?this.expandAllDetails():this.collapseAllDetails()})}_setupStickyHeader(){this.topbarEl=this._dom.find("div.lh-topbar",this._dom.rootEl),this.categoriesEl=this._dom.find("div.lh-categories",this._dom.rootEl),window.requestAnimationFrame(()=>window.requestAnimationFrame(()=>{try{this.stickyHeaderEl=this._dom.find("div.lh-sticky-header",this._dom.rootEl)}catch{return}this.highlightEl=this._dom.createChildOf(this.stickyHeaderEl,"div","lh-highlighter");let t=this._getScrollParent(this._dom.find(".lh-container",this._dom.rootEl));t.addEventListener("scroll",()=>this._updateStickyHeader());let n=t instanceof window.Document?document.documentElement:t;new window.ResizeObserver(()=>this._updateStickyHeader()).observe(n)}))}_updateStickyHeader(){if(!this.stickyHeaderEl)return;let t=this.topbarEl.getBoundingClientRect().bottom,n=this.categoriesEl.getBoundingClientRect().top,a=t>=n,o=Array.from(this._dom.rootEl.querySelectorAll(".lh-category")).filter(d=>d.getBoundingClientRect().top-window.innerHeight/2<0),r=o.length>0?o.length-1:0,s=this.stickyHeaderEl.querySelectorAll(".lh-gauge__wrapper, .lh-fraction__wrapper"),p=s[r],c=s[0].getBoundingClientRect().left,l=p.getBoundingClientRect().left-c;this.highlightEl.style.transform=`translate(${l}px)`,this.stickyHeaderEl.classList.toggle("lh-sticky-header--visible",a)}};function Na(e,t){let n=t?new Date(t):new Date,a=n.toLocaleTimeString("en-US",{hour12:!1}),i=n.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"}).split("/");i.unshift(i.pop());let o=i.join("-");return`${e}_${o}_${a}`.replace(/[/?<>\\:*|"]/g,"-")}function Da(e){let t=new URL(e.finalDisplayedUrl).hostname;return Na(t,e.fetchTime)}function za(e){let t=e.steps[0].lhr,n=e.name.replace(/\s/g,"-");return Na(n,t.fetchTime)}function Fo(e){return Array.from(e.tBodies[0].rows)}var vt=class{constructor(t,n={}){this.json,this._dom=t,this._opts=n,this._topbar=n.omitTopbar?null:new ft(this,t),this.onMediaQueryChange=this.onMediaQueryChange.bind(this)}initFeatures(t){this.json=t,this._fullPageScreenshot=I.getFullPageScreenshot(t),this._topbar&&(this._topbar.enable(t),this._topbar.resetUIState()),this._setupMediaQueryListeners(),this._setupThirdPartyFilter(),this._setupElementScreenshotOverlay(this._dom.rootEl);let n=this._dom.isDevTools()||this._opts.disableDarkMode||this._opts.disableAutoDarkModeAndFireworks;!n&&window.matchMedia("(prefers-color-scheme: dark)").matches&&we(this._dom,!0);let i=["performance","accessibility","best-practices","seo"].every(p=>{let c=t.categories[p];return c&&c.score===1}),o=this._opts.disableFireworks||this._opts.disableAutoDarkModeAndFireworks;if(i&&!o&&(this._enableFireworks(),n||we(this._dom,!0)),t.categories.performance&&t.categories.performance.auditRefs.some(p=>!!(p.group==="metrics"&&t.audits[p.id].errorMessage))){let p=this._dom.find("input.lh-metrics-toggle__input",this._dom.rootEl);p.checked=!0}this.json.audits["script-treemap-data"]&&this.json.audits["script-treemap-data"].details&&this.addButton({text:v.strings.viewTreemapLabel,icon:"treemap",onClick:()=>Ra(this.json)}),this._opts.onViewTrace&&(t.configSettings.throttlingMethod==="simulate"?this._dom.find('a[data-action="view-unthrottled-trace"]',this._dom.rootEl).classList.remove("lh-hidden"):this.addButton({text:v.strings.viewTraceLabel,onClick:()=>this._opts.onViewTrace?.()})),this._opts.getStandaloneReportHTML&&this._dom.find('a[data-action="save-html"]',this._dom.rootEl).classList.remove("lh-hidden");for(let p of this._dom.findAll("[data-i18n]",this._dom.rootEl)){let l=p.getAttribute("data-i18n");p.textContent=v.strings[l]}}addButton(t){let n=this._dom.rootEl.querySelector(".lh-audit-group--metrics");if(!n)return;let a=n.querySelector(".lh-buttons");a||(a=this._dom.createChildOf(n,"div","lh-buttons"));let i=["lh-button"];t.icon&&(i.push("lh-report-icon"),i.push(`lh-report-icon--${t.icon}`));let o=this._dom.createChildOf(a,"button",i.join(" "));return o.textContent=t.text,o.addEventListener("click",t.onClick),o}resetUIState(){this._topbar&&this._topbar.resetUIState()}getReportHtml(){if(!this._opts.getStandaloneReportHTML)throw new Error("`getStandaloneReportHTML` is not set");return this.resetUIState(),this._opts.getStandaloneReportHTML()}saveAsGist(){throw new Error("Cannot save as gist from base report")}_enableFireworks(){this._dom.find(".lh-scores-container",this._dom.rootEl).classList.add("lh-score100")}_setupMediaQueryListeners(){let t=self.matchMedia("(max-width: 500px)");t.addListener(this.onMediaQueryChange),this.onMediaQueryChange(t)}_resetUIState(){this._topbar&&this._topbar.resetUIState()}onMediaQueryChange(t){this._dom.rootEl.classList.toggle("lh-narrow",t.matches)}_setupThirdPartyFilter(){let t=["uses-rel-preconnect","third-party-facades"],n=["legacy-javascript"];Array.from(this._dom.rootEl.querySelectorAll("table.lh-table")).filter(o=>o.querySelector("td.lh-table-column--url, td.lh-table-column--source-location")).filter(o=>{let r=o.closest(".lh-audit");if(!r)throw new Error(".lh-table not within audit");return!t.includes(r.id)}).forEach(o=>{let r=Fo(o),s=r.filter(f=>!f.classList.contains("lh-sub-item-row")),p=this._getThirdPartyRows(s,I.getFinalDisplayedUrl(this.json)),c=r.some(f=>f.classList.contains("lh-row--even")),l=this._dom.createComponent("3pFilter"),d=this._dom.find("input",l);d.addEventListener("change",f=>{let y=f.target instanceof HTMLInputElement&&!f.target.checked,P=!0,A=s[0];for(;A;){let U=y&&p.includes(A);do A.classList.toggle("lh-row--hidden",U),c&&(A.classList.toggle("lh-row--even",!U&&P),A.classList.toggle("lh-row--odd",!U&&!P)),A=A.nextElementSibling;while(A&&A.classList.contains("lh-sub-item-row"));U||(P=!P)}});let m=p.filter(f=>!f.classList.contains("lh-row--group")).length;this._dom.find(".lh-3p-filter-count",l).textContent=`${m}`,this._dom.find(".lh-3p-ui-string",l).textContent=v.strings.thirdPartyResourcesLabel;let h=p.length===s.length,g=!p.length;if((h||g)&&(this._dom.find("div.lh-3p-filter",l).hidden=!0),!o.parentNode)return;o.parentNode.insertBefore(l,o);let _=o.closest(".lh-audit");if(!_)throw new Error(".lh-table not within audit");n.includes(_.id)&&!h&&d.click()})}_setupElementScreenshotOverlay(t){this._fullPageScreenshot&&le.installOverlayFeature({dom:this._dom,rootEl:t,overlayContainerEl:t,fullPageScreenshot:this._fullPageScreenshot})}_getThirdPartyRows(t,n){let a=I.getEntityFromUrl(n,this.json.entities),i=this.json.entities?.find(r=>r.isFirstParty===!0)?.name,o=[];for(let r of t){if(i){if(!r.dataset.entity||r.dataset.entity===i)continue}else{let s=r.querySelector("div.lh-text__url");if(!s)continue;let p=s.dataset.url;if(!p||!(I.getEntityFromUrl(p,this.json.entities)!==a))continue}o.push(r)}return o}_saveFile(t){let n=t.type.match("json")?".json":".html",a=Da({finalDisplayedUrl:I.getFinalDisplayedUrl(this.json),fetchTime:this.json.fetchTime})+n;this._opts.onSaveFileOverride?this._opts.onSaveFileOverride(t,a):this._dom.saveFile(t,a)}};function ja(e,t={}){let n=document.createElement("article");n.classList.add("lh-root","lh-vars");let a=new re(n.ownerDocument,n);return new ht(a).renderReport(e,n,t),new vt(a,t).initFeatures(e),n}function Ma(e,t){let n=new re(document,document.documentElement),a=new Ce(n);return new se(n,a).renderCategoryScore(e,{},t)}function Ha(e,t){new re(document,document.documentElement).saveFile(e,t)}function Fa(e){return new re(document,document.documentElement).convertMarkdownCodeSnippets(e)}function Ba(){return new re(document,document.documentElement).createComponent("styles")}var Oa=({category:e,href:t,gatherMode:n})=>{let a=ie(()=>Ma(e,{gatherMode:n,omitLabel:!0,onPageAnchorRendered:i=>i.href=t}),[e,t]);return u("div",{ref:a,"data-testid":"CategoryScore"})};var Ga=({text:e})=>{let t=ie(()=>Fa(e),[e]);return u("span",{ref:t})};var Bo=2;function Oo(e,t){switch(e){case"navigation":return t.navigationReport;case"timespan":return t.timespanReport;case"snapshot":return t.snapshotReport}}function Go(e,t){switch(e){case"pass":return t.ratingPass;case"average":return t.ratingAverage;case"fail":return t.ratingFail;case"error":return t.ratingError}}function Va(e){return e.weight*(1-e.result.score)}var Vo=({audit:e})=>{let t=E.calculateRating(e.result.score,e.result.scoreDisplayMode);return u("div",{className:`SummaryTooltipAudit SummaryTooltipAudit--${t}`,children:u(Ga,{text:e.result.title})})},$o=({category:e})=>{let t=M();function n(i){return i.result.score!==null&&i.group!=="metrics"&&i.group!=="hidden"&&(i.weight>0||i.group==="diagnostics")&&!E.showAsPassed(i.result)}let a=e.auditRefs.filter(n).sort((i,o)=>{let r=Va(i),s=Va(o);if(r!==s)return s-r;if(i.result.score!==o.result.score)return i.result.score-o.result.score;let p=i.result.metricSavings?.LCP||0;return(o.result.metricSavings?.LCP||0)-p}).splice(0,Bo);return a.length?u("div",{className:"SummaryTooltipAudits",children:[u("div",{className:"SummaryTooltipAudits__title",children:t.highestImpact}),a.map(i=>u(Vo,{audit:i},i.id))]}):null},Wo=({category:e,gatherMode:t,url:n})=>{let a=M(),i=mt(),{numPassed:o,numPassableAudits:r,numInformative:s,totalWeight:p}=E.calculateCategoryFraction(e),c=ze(),l=E.shouldDisplayAsFraction(t),d=l?o/r:e.score,m=d===null?"error":E.calculateRating(d);return u("div",{className:"SummaryTooltip",children:[u("div",{className:"SummaryTooltip__title",children:Oo(t,a)}),u("div",{className:"SummaryTooltip__url",children:n}),u(Z,{}),u("div",{className:"SummaryTooltip__category",children:[u("div",{className:"SummaryTooltip__category-title",children:e.title}),p!==0&&u("div",{className:`SummaryTooltip__rating SummaryTooltip__rating--${m}`,children:[u("span",{children:Go(m,a)}),!l&&e.score!==null&&u(j,{children:[u("span",{children:" · "}),u("span",{children:c.formatter.formatInteger(e.score*100)})]})]})]}),u("div",{className:"SummaryTooltip__fraction",children:[u("span",{children:i(a.passedAuditCount,{numPassed:o})}),u("span",{children:" / "}),u("span",{children:i(a.passableAuditCount,{numPassableAudits:r})})]}),s!==0&&u("div",{className:"SummaryTooltip__informative",children:i(a.informativeAuditCount,{numInformative:s})}),u($o,{category:e})]})},$a=({category:e,href:t,gatherMode:n,finalDisplayedUrl:a})=>u("div",{className:"SummaryCategory",children:e?u("div",{className:"SummaryCategory__content",children:[u(Oa,{category:e,href:t,gatherMode:n}),u(Wo,{category:e,gatherMode:n,url:a})]}):u("div",{className:"SummaryCategory__null","data-testid":"SummaryCategory__null"})});var Jo=["performance","accessibility","best-practices","seo"],qo=40,Zo=({lhr:e})=>{let t=M();return u("div",{className:"SummaryNavigationHeader","data-testid":"SummaryNavigationHeader",children:[u(oe,{}),u("div",{className:"SummaryNavigationHeader__url",children:u("a",{rel:"noopener",target:"_blank",href:e.finalDisplayedUrl,children:e.finalDisplayedUrl})}),u("div",{className:"SummaryNavigationHeader__category",children:t.categoryPerformance}),u("div",{className:"SummaryNavigationHeader__category",children:t.categoryAccessibility}),u("div",{className:"SummaryNavigationHeader__category",children:t.categoryBestPractices}),u("div",{className:"SummaryNavigationHeader__category",children:t.categorySeo})]})},Ko=({lhr:e,label:t,hashIndex:n})=>{let a=Q(()=>E.prepareReportResult(e),[e]),i=M(),o=Qe(e.gatherMode,i);return u("div",{className:"SummaryFlowStep",children:[e.gatherMode==="navigation"||n===0?u(Zo,{lhr:e}):u("div",{className:"SummaryFlowStep__separator",children:[u(oe,{}),u(Z,{})]}),u(et,{lhr:e,width:qo}),u(oe,{mode:e.gatherMode}),u("div",{className:"SummaryFlowStep__label",children:[u("div",{className:"SummaryFlowStep__mode",children:o}),u("a",{className:"SummaryFlowStep__link",href:`#index=${n}`,children:t})]}),Jo.map(r=>u($a,{category:a.categories[r],href:`#index=${n}&anchor=${r}`,gatherMode:e.gatherMode,finalDisplayedUrl:e.finalDisplayedUrl},r))]})},Xo=()=>{let e=$();return u("div",{className:"SummaryFlow",children:e.steps.map((t,n)=>u(Ko,{lhr:t.lhr,label:t.name,hashIndex:n},t.lhr.fetchTime))})},Yo=()=>{let e=$(),t=M(),n=mt(),a=0,i=0,o=0;for(let p of e.steps)switch(p.lhr.gatherMode){case"navigation":a++;break;case"timespan":i++;break;case"snapshot":o++;break}let r=[];a&&r.push(n(t.navigationReportCount,{numNavigation:a})),i&&r.push(n(t.timespanReportCount,{numTimespan:i})),o&&r.push(n(t.snapshotReportCount,{numSnapshot:o}));let s=r.join(" · ");return u("div",{className:"SummaryHeader",children:[u("div",{className:"SummaryHeader__title",children:t.summary}),u("div",{className:"SummaryHeader__subtitle",children:s})]})},Qo=({children:e})=>u("div",{className:"SummarySectionHeader",children:[u("div",{className:"SummarySectionHeader__content",children:e}),u(Z,{})]}),Wa=()=>{let e=M();return u("div",{className:"Summary","data-testid":"Summary",children:[u(Yo,{}),u(Z,{}),u(Qo,{children:e.allReports}),u(Xo,{})]})};function er(e,t){let n=e.cloneNode(!0);if(!n.hash)return n;let a=e.hash.substr(1);n.hash=`#index=${t}&anchor=${a}`,n.onclick=i=>{i.preventDefault();let o=document.getElementById(a);o&&o.scrollIntoView()},e.replaceWith(n)}var Ja=({hashState:e})=>{let t=ie(()=>ja(e.currentLhr,{disableFireworks:!0,disableDarkMode:!0,omitTopbar:!0,omitGlobalStyles:!0,onPageAnchorRendered:n=>er(n,e.index)}),[e]);return u("div",{ref:t,"data-testid":"Report"})};var Wt=e=>{let t=M();return u("div",{className:"HelpDialogColumn",children:[u("div",{className:"HelpDialogColumn__legend",children:[u("div",{className:"HelpDialogColumnTimeline",children:[e.icon,u("div",{className:"HelpDialogColumnTimeline__line"})]}),u("div",{className:"HelpDialogColumn__legend-label",children:e.userFriendlyModeLabel})]}),u("div",{className:"HelpDialogColumn__header",children:[u("div",{className:"HelpDialogColumn__header-title",children:e.lighthouseOfficialModeLabel}),u("p",{children:e.modeDescription})]}),u("div",{className:"HelpDialogColumn__use-cases",children:[u("p",{children:e.useCaseInstruction}),u("ul",{children:e.useCases.map((n,a)=>u("li",{children:n},a))})]}),u("div",{className:"HelpDialogColumn__categories",children:[u("p",{children:t.categories}),u("ul",{children:e.availableCategories.map((n,a)=>u("li",{children:n},a))})]})]})},qa=({onClose:e})=>{let t=M();return u("div",{className:"HelpDialog",children:[u("div",{className:"HelpDialog__title",children:[u("div",{children:t.helpDialogTitle}),u("div",{style:{flexGrow:1}}),u("button",{className:"HelpDialog__close",onClick:e,children:u(Nn,{})})]}),u("div",{className:"HelpDialog__columns",children:[u(Wt,{icon:u(Ke,{}),userFriendlyModeLabel:t.navigationDescription,lighthouseOfficialModeLabel:t.navigationReport,modeDescription:t.navigationLongDescription,useCaseInstruction:t.helpUseCaseInstructionNavigation,useCases:[t.helpUseCaseNavigation1,t.helpUseCaseNavigation2,t.helpUseCaseNavigation3],availableCategories:[t.categoryPerformance,t.categoryAccessibility,t.categoryBestPractices,t.categorySeo]}),u(Wt,{icon:u(Xe,{}),userFriendlyModeLabel:t.timespanDescription,lighthouseOfficialModeLabel:t.timespanReport,modeDescription:t.timespanLongDescription,useCaseInstruction:t.helpUseCaseInstructionTimespan,useCases:[t.helpUseCaseTimespan1,t.helpUseCaseTimespan2],availableCategories:[t.categoryPerformance,t.categoryBestPractices]}),u(Wt,{icon:u(Ye,{}),userFriendlyModeLabel:t.snapshotDescription,lighthouseOfficialModeLabel:t.snapshotReport,modeDescription:t.snapshotLongDescription,useCaseInstruction:t.helpUseCaseInstructionSnapshot,useCases:[t.helpUseCaseSnapshot1,t.helpUseCaseSnapshot2],availableCategories:[t.categoryPerformance,t.categoryAccessibility,t.categoryBestPractices,t.categorySeo]})]})]})};function Jt(e,t){let n=new Blob([t],{type:"text/html"}),a=za(e)+".html";Jt.saveFile(n,a)}Jt.saveFile=Ha;var tr=()=>u("svg",{role:"img",class:"lh-topbar__logo",title:"Lighthouse logo",width:"24",height:"24",fill:"none",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48",children:[u("path",{d:"m14 7 10-7 10 7v10h5v7h-5l5 24H9l5-24H9v-7h5V7Z",fill:"#F63"}),u("path",{d:"M31.561 24H14l-1.689 8.105L31.561 24ZM18.983 48H9l1.022-4.907L35.723 32.27l1.663 7.98L18.983 48Z",fill:"#FFA385"}),u("path",{fill:"#FF3",d:"M20.5 10h7v7h-7z"})]}),bt=({onClick:e,label:t,children:n})=>u("button",{className:"TopbarButton",onClick:e,"aria-label":t,children:n}),Za=({onMenuClick:e})=>{let t=$(),n=M(),[a,i]=ae(!1),{getReportHtml:o,saveAsGist:r}=Gn();return u("div",{className:"Topbar",children:[u(bt,{onClick:e,label:"Button that opens and closes the sidebar",children:u(Mn,{})}),u("div",{className:"Topbar__logo",children:u(tr,{})}),u("div",{className:"Topbar__title",children:n.title}),o&&u(bt,{onClick:()=>{let s=o(t);Jt(t,s)},label:"Button that saves the report as HTML",children:n.save}),r&&u(bt,{onClick:()=>r(t),label:"Button that saves the report to a gist",children:n.dropdownSaveGist}),u("div",{style:{flexGrow:1}}),u(bt,{onClick:()=>i(s=>!s),label:"Button that toggles the help dialog",children:u("div",{className:"Topbar__help-label",children:[u(Hn,{}),n.helpLabel]})}),a?u(qa,{onClose:()=>i(!1)}):null]})};var nr=80,ar=120,qt=({lhr:e,position:t})=>{let n=t==="main"?ar:nr;return u("div",{className:`HeaderThumbnail HeaderThumbnail--${t}`,children:[u(et,{lhr:e,height:n}),u("div",{className:"HeaderThumbnail__icon",children:u(Pt,{mode:e.gatherMode})})]})},Ka=({hashState:e})=>{let t=$(),{index:n}=e,a=t.steps[n],i=t.steps[n-1],o=t.steps[n+1],r=M(),s=Qe(a.lhr.gatherMode,r);return u("div",{className:"Header",children:[i&&u(j,{children:[t.steps[n-2]&&u("div",{className:"Header__segment"}),u("div",{className:"Header__prev-thumbnail",children:[u(qt,{lhr:i.lhr,position:"prev"}),u("div",{className:"Header__segment"})]}),u("a",{className:"Header__prev-title",href:`#index=${n-1}`,children:i.name})]}),u("div",{className:"Header__current-thumbnail",children:u(qt,{lhr:a.lhr,position:"main"})}),u("div",{className:"Header__current-title",children:[a.name,u("div",{className:"Header__current-description",children:s})]}),o&&u(j,{children:[u("div",{className:"Header__next-thumbnail",children:[u("div",{className:"Header__segment"}),u(qt,{lhr:o.lhr,position:"next"})]}),u("a",{className:"Header__next-title",href:`#index=${n+1}`,children:o.name}),t.steps[n+2]&&u("div",{className:"Header__segment"})]})]})};var Xa=()=>{let e=ie(Ba);return u("div",{ref:e})};function ir(e){return!e||!e.anchor?null:document.getElementById(e.anchor)}var or=()=>{let e=be(),t=qe(null);return Je(()=>{let n=ir(e);n?n.scrollIntoView():t.current&&(t.current.scrollTop=0)},[e]),u("div",{ref:t,className:"Content",children:e?u(j,{children:[u(Ka,{hashState:e}),u(Ja,{hashState:e})]}):u(Wa,{})})},Ya=({flowResult:e,options:t})=>{let[n,a]=ae(!1),i=Q(()=>t||{},[t]);return u(kt.Provider,{value:i,children:u(St.Provider,{value:e,children:u(wa,{children:[u(Xa,{}),u("div",{className:ve("App",{"App--collapsed":n}),"data-testid":"App",children:[u(Za,{onMenuClick:()=>a(o=>!o)}),u(Sa,{}),u(or,{})]})]})})})};function Qa(e,t,n){t.classList.add("flow-vars","lh-vars","lh-root"),bn(_t(Ya,{flowResult:e,options:n}),t)}function rr(){let e=document.body.querySelector("main");if(!e)throw Error("Container element not found");Qa(window.__LIGHTHOUSE_FLOW_JSON__,e,{getReportHtml:()=>document.documentElement.outerHTML})}window.__initLighthouseFlowReport__=rr;window.__initLighthouseFlowReport__();})();
|
|
2610
|
+
`)],["samples-one",v.strings.runtimeSingleLoad,v.strings.runtimeSingleLoadTooltip],["stopwatch",l],["networkspeed",`${a.summary}`,`${v.strings.runtimeSettingsNetworkThrottling}: ${a.networkThrottling}`],["chrome",`Using ${o}`+(r?` with ${r}`:""),`${v.strings.runtimeSettingsUANetwork}: "${t.environment.networkUserAgent}"`]],m=this._dom.find(".lh-meta__items",n);for(let[h,g,_]of d){let f=this._dom.createChildOf(m,"li","lh-meta__item");if(f.textContent=g,_){f.classList.add("lh-tooltip-boundary");let y=this._dom.createChildOf(f,"div","lh-tooltip");y.textContent=_}f.classList.add("lh-report-icon",`lh-report-icon--${h}`)}}_renderReportWarnings(t){if(!t.runWarnings||t.runWarnings.length===0)return this._dom.createElement("div");let n=this._dom.createComponent("warningsToplevel"),a=this._dom.find(".lh-warnings__msg",n);a.textContent=v.strings.toplevelWarningsMessage;let i=[];for(let o of t.runWarnings){let r=this._dom.createElement("li");r.append(this._dom.convertMarkdownLinkSnippets(o)),i.push(r)}return this._dom.find("ul",n).append(...i),n}_renderScoreGauges(t,n,a){let i=[],o=[];for(let r of Object.values(t.categories)){let p=(a[r.id]||n).renderCategoryScore(r,t.categoryGroups||{},{gatherMode:t.gatherMode}),c=this._dom.find("a.lh-gauge__wrapper, a.lh-fraction__wrapper",p);c&&(this._dom.safelySetHref(c,`#${r.id}`),c.addEventListener("click",l=>{if(!c.matches('[href^="#"]'))return;let d=c.getAttribute("href"),m=this._dom.rootEl;if(!d||!m)return;let h=this._dom.find(d,m);l.preventDefault(),h.scrollIntoView()}),this._opts.onPageAnchorRendered?.(c)),E.isPluginCategory(r.id)?o.push(p):i.push(p)}return[...i,...o]}_renderReport(t){v.apply({providedStrings:t.i18n.rendererFormattedStrings,i18n:new ce(t.configSettings.locale),reportJson:t});let n=new Ce(this._dom,{fullPageScreenshot:t.fullPageScreenshot??void 0,entities:t.entities}),a=new se(this._dom,n),i={performance:new dt(this._dom,n)},o=this._dom.createElement("div");o.append(this._renderReportHeader());let r=this._dom.createElement("div","lh-container"),s=this._dom.createElement("div","lh-report");s.append(this._renderReportWarnings(t));let p;Object.keys(t.categories).length===1?o.classList.add("lh-header--solo-category"):p=this._dom.createElement("div","lh-scores-header");let l=this._dom.createElement("div");if(l.classList.add("lh-scorescale-wrap"),l.append(this._dom.createComponent("scorescale")),p){let g=this._dom.find(".lh-scores-container",o);p.append(...this._renderScoreGauges(t,a,i)),g.append(p,l);let _=this._dom.createElement("div","lh-sticky-header");_.append(...this._renderScoreGauges(t,a,i)),r.append(_)}let d=this._dom.createElement("div","lh-categories");s.append(d);let m={gatherMode:t.gatherMode};for(let g of Object.values(t.categories)){let _=i[g.id]||a;_.dom.createChildOf(d,"div","lh-category-wrapper").append(_.render(g,t.categoryGroups,m))}a.injectFinalScreenshot(d,t.audits,l);let h=this._dom.createFragment();return this._opts.omitGlobalStyles||h.append(this._dom.createComponent("styles")),this._opts.omitTopbar||h.append(this._renderReportTopbar(t)),h.append(r),s.append(this._renderReportFooter(t)),r.append(o,s),t.fullPageScreenshot&&le.installFullPageScreenshot(this._dom.rootEl,t.fullPageScreenshot.screenshot),h}};function we(e,t){let n=e.rootEl;typeof t>"u"?n.classList.toggle("lh-dark"):n.classList.toggle("lh-dark",t)}var Do=typeof btoa<"u"?btoa:e=>Buffer.from(e).toString("base64"),zo=typeof atob<"u"?atob:e=>Buffer.from(e,"base64").toString();async function jo(e,t){let n=new TextEncoder().encode(e);if(t.gzip)if(typeof CompressionStream<"u"){let o=new CompressionStream("gzip"),r=o.writable.getWriter();r.write(n),r.close();let s=await new Response(o.readable).arrayBuffer();n=new Uint8Array(s)}else n=window.pako.gzip(e);let a="",i=5e3;for(let o=0;o<n.length;o+=i)a+=String.fromCharCode(...n.subarray(o,o+i));return Do(a)}function Mo(e,t){let n=zo(e),a=Uint8Array.from(n,i=>i.charCodeAt(0));return t.gzip?window.pako.ungzip(a,{to:"string"}):new TextDecoder().decode(a)}var La={toBase64:jo,fromBase64:Mo};function Vt(){let e=window.location.host.endsWith(".vercel.app"),t=new URLSearchParams(window.location.search).has("dev");return e?`https://${window.location.host}/gh-pages`:t?"http://localhost:7333":"https://googlechrome.github.io/lighthouse"}function $t(e){let t=e.generatedTime,n=e.fetchTime||t;return`${e.lighthouseVersion}-${e.finalDisplayedUrl}-${n}`}function Ho(e,t,n){let a=new URL(t).origin;window.addEventListener("message",function o(r){r.origin===a&&i&&r.data.opened&&(i.postMessage(e,a),window.removeEventListener("message",o))});let i=window.open(t,n)}async function Ua(e,t,n){let a=new URL(t),i=!!window.CompressionStream;a.hash=await La.toBase64(JSON.stringify(e),{gzip:i}),i&&a.searchParams.set("gzip","1"),window.open(a.toString(),n)}async function Ta(e){let t="viewer-"+$t(e),n=Vt()+"/viewer/";await Ua({lhr:e},n,t)}async function Ia(e){let t="viewer-"+$t(e),n=Vt()+"/viewer/";Ho({lhr:e},n,t)}function Ra(e){if(!e.audits["script-treemap-data"].details)throw new Error("no script treemap data found");let n={lhr:{mainDocumentUrl:e.mainDocumentUrl,finalUrl:e.finalUrl,finalDisplayedUrl:e.finalDisplayedUrl,audits:{"script-treemap-data":e.audits["script-treemap-data"]},configSettings:{locale:e.configSettings.locale}}},a=Vt()+"/treemap/",i="treemap-"+$t(e);Ua(n,a,i)}var gt=class{constructor(t){this._dom=t,this._toggleEl,this._menuEl,this.onDocumentKeyDown=this.onDocumentKeyDown.bind(this),this.onToggleClick=this.onToggleClick.bind(this),this.onToggleKeydown=this.onToggleKeydown.bind(this),this.onMenuFocusOut=this.onMenuFocusOut.bind(this),this.onMenuKeydown=this.onMenuKeydown.bind(this),this._getNextMenuItem=this._getNextMenuItem.bind(this),this._getNextSelectableNode=this._getNextSelectableNode.bind(this),this._getPreviousMenuItem=this._getPreviousMenuItem.bind(this)}setup(t){this._toggleEl=this._dom.find(".lh-topbar button.lh-tools__button",this._dom.rootEl),this._toggleEl.addEventListener("click",this.onToggleClick),this._toggleEl.addEventListener("keydown",this.onToggleKeydown),this._menuEl=this._dom.find(".lh-topbar div.lh-tools__dropdown",this._dom.rootEl),this._menuEl.addEventListener("keydown",this.onMenuKeydown),this._menuEl.addEventListener("click",t)}close(){this._toggleEl.classList.remove("lh-active"),this._toggleEl.setAttribute("aria-expanded","false"),this._menuEl.contains(this._dom.document().activeElement)&&this._toggleEl.focus(),this._menuEl.removeEventListener("focusout",this.onMenuFocusOut),this._dom.document().removeEventListener("keydown",this.onDocumentKeyDown)}open(t){this._toggleEl.classList.contains("lh-active")?t.focus():this._menuEl.addEventListener("transitionend",()=>{t.focus()},{once:!0}),this._toggleEl.classList.add("lh-active"),this._toggleEl.setAttribute("aria-expanded","true"),this._menuEl.addEventListener("focusout",this.onMenuFocusOut),this._dom.document().addEventListener("keydown",this.onDocumentKeyDown)}onToggleClick(t){t.preventDefault(),t.stopImmediatePropagation(),this._toggleEl.classList.contains("lh-active")?this.close():this.open(this._getNextMenuItem())}onToggleKeydown(t){switch(t.code){case"ArrowUp":t.preventDefault(),this.open(this._getPreviousMenuItem());break;case"ArrowDown":case"Enter":case" ":t.preventDefault(),this.open(this._getNextMenuItem());break;default:}}onMenuKeydown(t){let n=t.target;switch(t.code){case"ArrowUp":t.preventDefault(),this._getPreviousMenuItem(n).focus();break;case"ArrowDown":t.preventDefault(),this._getNextMenuItem(n).focus();break;case"Home":t.preventDefault(),this._getNextMenuItem().focus();break;case"End":t.preventDefault(),this._getPreviousMenuItem().focus();break;default:}}onDocumentKeyDown(t){t.keyCode===27&&this.close()}onMenuFocusOut(t){let n=t.relatedTarget;this._menuEl.contains(n)||this.close()}_getNextSelectableNode(t,n){let a=t.filter(o=>o instanceof HTMLElement).filter(o=>!(o.hasAttribute("disabled")||window.getComputedStyle(o).display==="none")),i=n?a.indexOf(n)+1:0;return i>=a.length&&(i=0),a[i]}_getNextMenuItem(t){let n=Array.from(this._menuEl.childNodes);return this._getNextSelectableNode(n,t)}_getPreviousMenuItem(t){let n=Array.from(this._menuEl.childNodes).reverse();return this._getNextSelectableNode(n,t)}};var ft=class{constructor(t,n){this.lhr,this._reportUIFeatures=t,this._dom=n,this._dropDownMenu=new gt(this._dom),this._copyAttempt=!1,this.topbarEl,this.categoriesEl,this.stickyHeaderEl,this.highlightEl,this.onDropDownMenuClick=this.onDropDownMenuClick.bind(this),this.onKeyUp=this.onKeyUp.bind(this),this.onCopy=this.onCopy.bind(this),this.collapseAllDetails=this.collapseAllDetails.bind(this)}enable(t){this.lhr=t,this._dom.rootEl.addEventListener("keyup",this.onKeyUp),this._dom.document().addEventListener("copy",this.onCopy),this._dropDownMenu.setup(this.onDropDownMenuClick),this._setUpCollapseDetailsAfterPrinting(),this._dom.find(".lh-topbar__logo",this._dom.rootEl).addEventListener("click",()=>we(this._dom)),this._setupStickyHeader()}onDropDownMenuClick(t){t.preventDefault();let n=t.target;if(!(!n||!n.hasAttribute("data-action"))){switch(n.getAttribute("data-action")){case"copy":this.onCopyButtonClick();break;case"print-summary":this.collapseAllDetails(),this._print();break;case"print-expanded":this.expandAllDetails(),this._print();break;case"save-json":{let a=JSON.stringify(this.lhr,null,2);this._reportUIFeatures._saveFile(new Blob([a],{type:"application/json"}));break}case"save-html":{let a=this._reportUIFeatures.getReportHtml();try{this._reportUIFeatures._saveFile(new Blob([a],{type:"text/html"}))}catch(i){this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"error",msg:"Could not export as HTML. "+i.message})}break}case"open-viewer":{this._dom.isDevTools()?Ta(this.lhr):Ia(this.lhr);break}case"save-gist":{this._reportUIFeatures.saveAsGist();break}case"toggle-dark":{we(this._dom);break}case"view-unthrottled-trace":this._reportUIFeatures._opts.onViewTrace?.()}this._dropDownMenu.close()}}onCopy(t){this._copyAttempt&&t.clipboardData&&(t.preventDefault(),t.clipboardData.setData("text/plain",JSON.stringify(this.lhr,null,2)),this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:"Report JSON copied to clipboard"})),this._copyAttempt=!1}onCopyButtonClick(){this._dom.fireEventOn("lh-analytics",this._dom.document(),{cmd:"send",fields:{hitType:"event",eventCategory:"report",eventAction:"copy"}});try{this._dom.document().queryCommandSupported("copy")&&(this._copyAttempt=!0,this._dom.document().execCommand("copy")||(this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"warn",msg:"Your browser does not support copy to clipboard."})))}catch(t){this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:t.message})}}onKeyUp(t){(t.ctrlKey||t.metaKey)&&t.keyCode===80&&this._dropDownMenu.close()}expandAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map(n=>n.open=!0)}collapseAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map(n=>n.open=!1)}_print(){this._reportUIFeatures._opts.onPrintOverride?this._reportUIFeatures._opts.onPrintOverride(this._dom.rootEl):self.print()}resetUIState(){this._dropDownMenu.close()}_getScrollParent(t){let{overflowY:n}=window.getComputedStyle(t);return n!=="visible"&&n!=="hidden"?t:t.parentElement?this._getScrollParent(t.parentElement):document}_setUpCollapseDetailsAfterPrinting(){"onbeforeprint"in self?self.addEventListener("afterprint",this.collapseAllDetails):self.matchMedia("print").addListener(n=>{n.matches?this.expandAllDetails():this.collapseAllDetails()})}_setupStickyHeader(){this.topbarEl=this._dom.find("div.lh-topbar",this._dom.rootEl),this.categoriesEl=this._dom.find("div.lh-categories",this._dom.rootEl),window.requestAnimationFrame(()=>window.requestAnimationFrame(()=>{try{this.stickyHeaderEl=this._dom.find("div.lh-sticky-header",this._dom.rootEl)}catch{return}this.highlightEl=this._dom.createChildOf(this.stickyHeaderEl,"div","lh-highlighter");let t=this._getScrollParent(this._dom.find(".lh-container",this._dom.rootEl));t.addEventListener("scroll",()=>this._updateStickyHeader());let n=t instanceof window.Document?document.documentElement:t;new window.ResizeObserver(()=>this._updateStickyHeader()).observe(n)}))}_updateStickyHeader(){if(!this.stickyHeaderEl)return;let t=this.topbarEl.getBoundingClientRect().bottom,n=this.categoriesEl.getBoundingClientRect().top,a=t>=n,o=Array.from(this._dom.rootEl.querySelectorAll(".lh-category")).filter(d=>d.getBoundingClientRect().top-window.innerHeight/2<0),r=o.length>0?o.length-1:0,s=this.stickyHeaderEl.querySelectorAll(".lh-gauge__wrapper, .lh-fraction__wrapper"),p=s[r],c=s[0].getBoundingClientRect().left,l=p.getBoundingClientRect().left-c;this.highlightEl.style.transform=`translate(${l}px)`,this.stickyHeaderEl.classList.toggle("lh-sticky-header--visible",a)}};function Na(e,t){let n=t?new Date(t):new Date,a=n.toLocaleTimeString("en-US",{hour12:!1}),i=n.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"}).split("/");i.unshift(i.pop());let o=i.join("-");return`${e}_${o}_${a}`.replace(/[/?<>\\:*|"]/g,"-")}function Da(e){let t=new URL(e.finalDisplayedUrl).hostname;return Na(t,e.fetchTime)}function za(e){let t=e.steps[0].lhr,n=e.name.replace(/\s/g,"-");return Na(n,t.fetchTime)}function Fo(e){return Array.from(e.tBodies[0].rows)}var vt=class{constructor(t,n={}){this.json,this._dom=t,this._opts=n,this._topbar=n.omitTopbar?null:new ft(this,t),this.onMediaQueryChange=this.onMediaQueryChange.bind(this)}initFeatures(t){this.json=t,this._fullPageScreenshot=I.getFullPageScreenshot(t),this._topbar&&(this._topbar.enable(t),this._topbar.resetUIState()),this._setupMediaQueryListeners(),this._setupThirdPartyFilter(),this._setupElementScreenshotOverlay(this._dom.rootEl);let n=this._dom.isDevTools()||this._opts.disableDarkMode||this._opts.disableAutoDarkModeAndFireworks;!n&&window.matchMedia("(prefers-color-scheme: dark)").matches&&we(this._dom,!0);let i=["performance","accessibility","best-practices","seo"].every(p=>{let c=t.categories[p];return c&&c.score===1}),o=this._opts.disableFireworks||this._opts.disableAutoDarkModeAndFireworks;if(i&&!o&&(this._enableFireworks(),n||we(this._dom,!0)),t.categories.performance&&t.categories.performance.auditRefs.some(p=>!!(p.group==="metrics"&&t.audits[p.id].errorMessage))){let p=this._dom.find("input.lh-metrics-toggle__input",this._dom.rootEl);p.checked=!0}this.json.audits["script-treemap-data"]&&this.json.audits["script-treemap-data"].details&&this.addButton({text:v.strings.viewTreemapLabel,icon:"treemap",onClick:()=>Ra(this.json)}),this._opts.onViewTrace&&(t.configSettings.throttlingMethod==="simulate"?this._dom.find('a[data-action="view-unthrottled-trace"]',this._dom.rootEl).classList.remove("lh-hidden"):this.addButton({text:v.strings.viewTraceLabel,onClick:()=>this._opts.onViewTrace?.()})),this._opts.getStandaloneReportHTML&&this._dom.find('a[data-action="save-html"]',this._dom.rootEl).classList.remove("lh-hidden");for(let p of this._dom.findAll("[data-i18n]",this._dom.rootEl)){let l=p.getAttribute("data-i18n");p.textContent=v.strings[l]}}addButton(t){let n=this._dom.rootEl.querySelector(".lh-audit-group--metrics");if(!n)return;let a=n.querySelector(".lh-buttons");a||(a=this._dom.createChildOf(n,"div","lh-buttons"));let i=["lh-button"];t.icon&&(i.push("lh-report-icon"),i.push(`lh-report-icon--${t.icon}`));let o=this._dom.createChildOf(a,"button",i.join(" "));return o.textContent=t.text,o.addEventListener("click",t.onClick),o}resetUIState(){this._topbar&&this._topbar.resetUIState()}getReportHtml(){if(!this._opts.getStandaloneReportHTML)throw new Error("`getStandaloneReportHTML` is not set");return this.resetUIState(),this._opts.getStandaloneReportHTML()}saveAsGist(){throw new Error("Cannot save as gist from base report")}_enableFireworks(){this._dom.find(".lh-scores-container",this._dom.rootEl).classList.add("lh-score100")}_setupMediaQueryListeners(){let t=self.matchMedia("(max-width: 500px)");t.addListener(this.onMediaQueryChange),this.onMediaQueryChange(t)}_resetUIState(){this._topbar&&this._topbar.resetUIState()}onMediaQueryChange(t){this._dom.rootEl.classList.toggle("lh-narrow",t.matches)}_setupThirdPartyFilter(){let t=["uses-rel-preconnect","third-party-facades"],n=["legacy-javascript"];Array.from(this._dom.rootEl.querySelectorAll("table.lh-table")).filter(o=>o.querySelector("td.lh-table-column--url, td.lh-table-column--source-location")).filter(o=>{let r=o.closest(".lh-audit");if(!r)throw new Error(".lh-table not within audit");return!t.includes(r.id)}).forEach(o=>{let r=Fo(o),s=r.filter(f=>!f.classList.contains("lh-sub-item-row")),p=this._getThirdPartyRows(s,I.getFinalDisplayedUrl(this.json)),c=r.some(f=>f.classList.contains("lh-row--even")),l=this._dom.createComponent("3pFilter"),d=this._dom.find("input",l);d.addEventListener("change",f=>{let y=f.target instanceof HTMLInputElement&&!f.target.checked,P=!0,A=s[0];for(;A;){let U=y&&p.includes(A);do A.classList.toggle("lh-row--hidden",U),c&&(A.classList.toggle("lh-row--even",!U&&P),A.classList.toggle("lh-row--odd",!U&&!P)),A=A.nextElementSibling;while(A&&A.classList.contains("lh-sub-item-row"));U||(P=!P)}});let m=p.filter(f=>!f.classList.contains("lh-row--group")).length;this._dom.find(".lh-3p-filter-count",l).textContent=`${m}`,this._dom.find(".lh-3p-ui-string",l).textContent=v.strings.thirdPartyResourcesLabel;let h=p.length===s.length,g=!p.length;if((h||g)&&(this._dom.find("div.lh-3p-filter",l).hidden=!0),!o.parentNode)return;o.parentNode.insertBefore(l,o);let _=o.closest(".lh-audit");if(!_)throw new Error(".lh-table not within audit");n.includes(_.id)&&!h&&d.click()})}_setupElementScreenshotOverlay(t){this._fullPageScreenshot&&le.installOverlayFeature({dom:this._dom,rootEl:t,overlayContainerEl:t,fullPageScreenshot:this._fullPageScreenshot})}_getThirdPartyRows(t,n){let a=I.getEntityFromUrl(n,this.json.entities),i=this.json.entities?.find(r=>r.isFirstParty===!0)?.name,o=[];for(let r of t){if(i){if(!r.dataset.entity||r.dataset.entity===i)continue}else{let s=r.querySelector("div.lh-text__url");if(!s)continue;let p=s.dataset.url;if(!p||!(I.getEntityFromUrl(p,this.json.entities)!==a))continue}o.push(r)}return o}_saveFile(t){let n=t.type.match("json")?".json":".html",a=Da({finalDisplayedUrl:I.getFinalDisplayedUrl(this.json),fetchTime:this.json.fetchTime})+n;this._opts.onSaveFileOverride?this._opts.onSaveFileOverride(t,a):this._dom.saveFile(t,a)}};function ja(e,t={}){let n=document.createElement("article");n.classList.add("lh-root","lh-vars");let a=new re(n.ownerDocument,n);return new ht(a).renderReport(e,n,t),new vt(a,t).initFeatures(e),n}function Ma(e,t){let n=new re(document,document.documentElement),a=new Ce(n);return new se(n,a).renderCategoryScore(e,{},t)}function Ha(e,t){new re(document,document.documentElement).saveFile(e,t)}function Fa(e){return new re(document,document.documentElement).convertMarkdownCodeSnippets(e)}function Ba(){return new re(document,document.documentElement).createComponent("styles")}var Oa=({category:e,href:t,gatherMode:n})=>{let a=ie(()=>Ma(e,{gatherMode:n,omitLabel:!0,onPageAnchorRendered:i=>i.href=t}),[e,t]);return u("div",{ref:a,"data-testid":"CategoryScore"})};var Ga=({text:e})=>{let t=ie(()=>Fa(e),[e]);return u("span",{ref:t})};var Bo=2;function Oo(e,t){switch(e){case"navigation":return t.navigationReport;case"timespan":return t.timespanReport;case"snapshot":return t.snapshotReport}}function Go(e,t){switch(e){case"pass":return t.ratingPass;case"average":return t.ratingAverage;case"fail":return t.ratingFail;case"error":return t.ratingError}}function Va(e){return e.weight*(1-e.result.score)}var Vo=({audit:e})=>{let t=E.calculateRating(e.result.score,e.result.scoreDisplayMode);return u("div",{className:`SummaryTooltipAudit SummaryTooltipAudit--${t}`,children:u(Ga,{text:e.result.title})})},$o=({category:e})=>{let t=M();function n(i){return i.result.score!==null&&i.group!=="metrics"&&i.group!=="hidden"&&(i.weight>0||i.group==="diagnostics")&&!E.showAsPassed(i.result)}let a=e.auditRefs.filter(n).sort((i,o)=>{let r=Va(i),s=Va(o);if(r!==s)return s-r;if(i.result.score!==o.result.score)return i.result.score-o.result.score;let p=i.result.metricSavings?.LCP||0;return(o.result.metricSavings?.LCP||0)-p}).splice(0,Bo);return a.length?u("div",{className:"SummaryTooltipAudits",children:[u("div",{className:"SummaryTooltipAudits__title",children:t.highestImpact}),a.map(i=>u(Vo,{audit:i},i.id))]}):null},Wo=({category:e,gatherMode:t,url:n})=>{let a=M(),i=mt(),{numPassed:o,numPassableAudits:r,numInformative:s,totalWeight:p}=E.calculateCategoryFraction(e),c=ze(),l=E.shouldDisplayAsFraction(t),d=l?o/r:e.score,m=d===null?"error":E.calculateRating(d);return u("div",{className:"SummaryTooltip",children:[u("div",{className:"SummaryTooltip__title",children:Oo(t,a)}),u("div",{className:"SummaryTooltip__url",children:n}),u(Z,{}),u("div",{className:"SummaryTooltip__category",children:[u("div",{className:"SummaryTooltip__category-title",children:e.title}),p!==0&&u("div",{className:`SummaryTooltip__rating SummaryTooltip__rating--${m}`,children:[u("span",{children:Go(m,a)}),!l&&e.score!==null&&u(j,{children:[u("span",{children:" · "}),u("span",{children:c.formatter.formatInteger(e.score*100)})]})]})]}),u("div",{className:"SummaryTooltip__fraction",children:[u("span",{children:i(a.passedAuditCount,{numPassed:o})}),u("span",{children:" / "}),u("span",{children:i(a.passableAuditCount,{numPassableAudits:r})})]}),s!==0&&u("div",{className:"SummaryTooltip__informative",children:i(a.informativeAuditCount,{numInformative:s})}),u($o,{category:e})]})},$a=({category:e,href:t,gatherMode:n,finalDisplayedUrl:a})=>u("div",{className:"SummaryCategory",children:e?u("div",{className:"SummaryCategory__content",children:[u(Oa,{category:e,href:t,gatherMode:n}),u(Wo,{category:e,gatherMode:n,url:a})]}):u("div",{className:"SummaryCategory__null","data-testid":"SummaryCategory__null"})});var Jo=["performance","accessibility","best-practices","seo"],qo=40,Zo=({lhr:e})=>{let t=M();return u("div",{className:"SummaryNavigationHeader","data-testid":"SummaryNavigationHeader",children:[u(oe,{}),u("div",{className:"SummaryNavigationHeader__url",children:u("a",{rel:"noopener",target:"_blank",href:e.finalDisplayedUrl,children:e.finalDisplayedUrl})}),u("div",{className:"SummaryNavigationHeader__category",children:t.categoryPerformance}),u("div",{className:"SummaryNavigationHeader__category",children:t.categoryAccessibility}),u("div",{className:"SummaryNavigationHeader__category",children:t.categoryBestPractices}),u("div",{className:"SummaryNavigationHeader__category",children:t.categorySeo})]})},Ko=({lhr:e,label:t,hashIndex:n})=>{let a=Q(()=>E.prepareReportResult(e),[e]),i=M(),o=Qe(e.gatherMode,i);return u("div",{className:"SummaryFlowStep",children:[e.gatherMode==="navigation"||n===0?u(Zo,{lhr:e}):u("div",{className:"SummaryFlowStep__separator",children:[u(oe,{}),u(Z,{})]}),u(et,{lhr:e,width:qo}),u(oe,{mode:e.gatherMode}),u("div",{className:"SummaryFlowStep__label",children:[u("div",{className:"SummaryFlowStep__mode",children:o}),u("a",{className:"SummaryFlowStep__link",href:`#index=${n}`,children:t})]}),Jo.map(r=>u($a,{category:a.categories[r],href:`#index=${n}&anchor=${r}`,gatherMode:e.gatherMode,finalDisplayedUrl:e.finalDisplayedUrl},r))]})},Xo=()=>{let e=$();return u("div",{className:"SummaryFlow",children:e.steps.map((t,n)=>u(Ko,{lhr:t.lhr,label:t.name,hashIndex:n},t.lhr.fetchTime))})},Yo=()=>{let e=$(),t=M(),n=mt(),a=0,i=0,o=0;for(let p of e.steps)switch(p.lhr.gatherMode){case"navigation":a++;break;case"timespan":i++;break;case"snapshot":o++;break}let r=[];a&&r.push(n(t.navigationReportCount,{numNavigation:a})),i&&r.push(n(t.timespanReportCount,{numTimespan:i})),o&&r.push(n(t.snapshotReportCount,{numSnapshot:o}));let s=r.join(" · ");return u("div",{className:"SummaryHeader",children:[u("div",{className:"SummaryHeader__title",children:t.summary}),u("div",{className:"SummaryHeader__subtitle",children:s})]})},Qo=({children:e})=>u("div",{className:"SummarySectionHeader",children:[u("div",{className:"SummarySectionHeader__content",children:e}),u(Z,{})]}),Wa=()=>{let e=M();return u("div",{className:"Summary","data-testid":"Summary",children:[u(Yo,{}),u(Z,{}),u(Qo,{children:e.allReports}),u(Xo,{})]})};function er(e,t){let n=e.cloneNode(!0);if(!n.hash)return n;let a=e.hash.substr(1);n.hash=`#index=${t}&anchor=${a}`,n.onclick=i=>{i.preventDefault();let o=document.getElementById(a);o&&o.scrollIntoView()},e.replaceWith(n)}var Ja=({hashState:e})=>{let t=ie(()=>ja(e.currentLhr,{disableFireworks:!0,disableDarkMode:!0,omitTopbar:!0,omitGlobalStyles:!0,onPageAnchorRendered:n=>er(n,e.index)}),[e]);return u("div",{ref:t,"data-testid":"Report"})};var Wt=e=>{let t=M();return u("div",{className:"HelpDialogColumn",children:[u("div",{className:"HelpDialogColumn__legend",children:[u("div",{className:"HelpDialogColumnTimeline",children:[e.icon,u("div",{className:"HelpDialogColumnTimeline__line"})]}),u("div",{className:"HelpDialogColumn__legend-label",children:e.userFriendlyModeLabel})]}),u("div",{className:"HelpDialogColumn__header",children:[u("div",{className:"HelpDialogColumn__header-title",children:e.lighthouseOfficialModeLabel}),u("p",{children:e.modeDescription})]}),u("div",{className:"HelpDialogColumn__use-cases",children:[u("p",{children:e.useCaseInstruction}),u("ul",{children:e.useCases.map((n,a)=>u("li",{children:n},a))})]}),u("div",{className:"HelpDialogColumn__categories",children:[u("p",{children:t.categories}),u("ul",{children:e.availableCategories.map((n,a)=>u("li",{children:n},a))})]})]})},qa=({onClose:e})=>{let t=M();return u("div",{className:"HelpDialog",children:[u("div",{className:"HelpDialog__title",children:[u("div",{children:t.helpDialogTitle}),u("div",{style:{flexGrow:1}}),u("button",{className:"HelpDialog__close",onClick:e,children:u(Nn,{})})]}),u("div",{className:"HelpDialog__columns",children:[u(Wt,{icon:u(Ke,{}),userFriendlyModeLabel:t.navigationDescription,lighthouseOfficialModeLabel:t.navigationReport,modeDescription:t.navigationLongDescription,useCaseInstruction:t.helpUseCaseInstructionNavigation,useCases:[t.helpUseCaseNavigation1,t.helpUseCaseNavigation2,t.helpUseCaseNavigation3],availableCategories:[t.categoryPerformance,t.categoryAccessibility,t.categoryBestPractices,t.categorySeo]}),u(Wt,{icon:u(Xe,{}),userFriendlyModeLabel:t.timespanDescription,lighthouseOfficialModeLabel:t.timespanReport,modeDescription:t.timespanLongDescription,useCaseInstruction:t.helpUseCaseInstructionTimespan,useCases:[t.helpUseCaseTimespan1,t.helpUseCaseTimespan2],availableCategories:[t.categoryPerformance,t.categoryBestPractices]}),u(Wt,{icon:u(Ye,{}),userFriendlyModeLabel:t.snapshotDescription,lighthouseOfficialModeLabel:t.snapshotReport,modeDescription:t.snapshotLongDescription,useCaseInstruction:t.helpUseCaseInstructionSnapshot,useCases:[t.helpUseCaseSnapshot1,t.helpUseCaseSnapshot2],availableCategories:[t.categoryPerformance,t.categoryAccessibility,t.categoryBestPractices,t.categorySeo]})]})]})};function Jt(e,t){let n=new Blob([t],{type:"text/html"}),a=za(e)+".html";Jt.saveFile(n,a)}Jt.saveFile=Ha;var tr=()=>u("svg",{role:"img",class:"lh-topbar__logo",title:"Lighthouse logo",width:"24",height:"24",fill:"none",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48",children:[u("path",{d:"m14 7 10-7 10 7v10h5v7h-5l5 24H9l5-24H9v-7h5V7Z",fill:"#F63"}),u("path",{d:"M31.561 24H14l-1.689 8.105L31.561 24ZM18.983 48H9l1.022-4.907L35.723 32.27l1.663 7.98L18.983 48Z",fill:"#FFA385"}),u("path",{fill:"#FF3",d:"M20.5 10h7v7h-7z"})]}),bt=({onClick:e,label:t,children:n})=>u("button",{className:"TopbarButton",onClick:e,"aria-label":t,children:n}),Za=({onMenuClick:e})=>{let t=$(),n=M(),[a,i]=ae(!1),{getReportHtml:o,saveAsGist:r}=Gn();return u("div",{className:"Topbar",children:[u(bt,{onClick:e,label:"Button that opens and closes the sidebar",children:u(Mn,{})}),u("div",{className:"Topbar__logo",children:u(tr,{})}),u("div",{className:"Topbar__title",children:n.title}),o&&u(bt,{onClick:()=>{let s=o(t);Jt(t,s)},label:"Button that saves the report as HTML",children:n.save}),r&&u(bt,{onClick:()=>r(t),label:"Button that saves the report to a gist",children:n.dropdownSaveGist}),u("div",{style:{flexGrow:1}}),u(bt,{onClick:()=>i(s=>!s),label:"Button that toggles the help dialog",children:u("div",{className:"Topbar__help-label",children:[u(Hn,{}),n.helpLabel]})}),a?u(qa,{onClose:()=>i(!1)}):null]})};var nr=80,ar=120,qt=({lhr:e,position:t})=>{let n=t==="main"?ar:nr;return u("div",{className:`HeaderThumbnail HeaderThumbnail--${t}`,children:[u(et,{lhr:e,height:n}),u("div",{className:"HeaderThumbnail__icon",children:u(Pt,{mode:e.gatherMode})})]})},Ka=({hashState:e})=>{let t=$(),{index:n}=e,a=t.steps[n],i=t.steps[n-1],o=t.steps[n+1],r=M(),s=Qe(a.lhr.gatherMode,r);return u("div",{className:"Header",children:[i&&u(j,{children:[t.steps[n-2]&&u("div",{className:"Header__segment"}),u("div",{className:"Header__prev-thumbnail",children:[u(qt,{lhr:i.lhr,position:"prev"}),u("div",{className:"Header__segment"})]}),u("a",{className:"Header__prev-title",href:`#index=${n-1}`,children:i.name})]}),u("div",{className:"Header__current-thumbnail",children:u(qt,{lhr:a.lhr,position:"main"})}),u("div",{className:"Header__current-title",children:[a.name,u("div",{className:"Header__current-description",children:s})]}),o&&u(j,{children:[u("div",{className:"Header__next-thumbnail",children:[u("div",{className:"Header__segment"}),u(qt,{lhr:o.lhr,position:"next"})]}),u("a",{className:"Header__next-title",href:`#index=${n+1}`,children:o.name}),t.steps[n+2]&&u("div",{className:"Header__segment"})]})]})};var Xa=()=>{let e=ie(Ba);return u("div",{ref:e})};function ir(e){return!e||!e.anchor?null:document.getElementById(e.anchor)}var or=()=>{let e=be(),t=qe(null);return Je(()=>{let n=ir(e);n?n.scrollIntoView():t.current&&(t.current.scrollTop=0)},[e]),u("div",{ref:t,className:"Content",children:e?u(j,{children:[u(Ka,{hashState:e}),u(Ja,{hashState:e})]}):u(Wa,{})})},Ya=({flowResult:e,options:t})=>{let[n,a]=ae(!1),i=Q(()=>t||{},[t]);return u(kt.Provider,{value:i,children:u(St.Provider,{value:e,children:u(wa,{children:[u(Xa,{}),u("div",{className:ve("App",{"App--collapsed":n}),"data-testid":"App",children:[u(Za,{onMenuClick:()=>a(o=>!o)}),u(Sa,{}),u(or,{})]})]})})})};function Qa(e,t,n){t.classList.add("flow-vars","lh-vars","lh-root"),bn(_t(Ya,{flowResult:e,options:n}),t)}function rr(){let e=document.body.querySelector("main");if(!e)throw Error("Container element not found");Qa(window.__LIGHTHOUSE_FLOW_JSON__,e,{getReportHtml:()=>document.documentElement.outerHTML})}window.__initLighthouseFlowReport__=rr;window.__initLighthouseFlowReport__();})();
|
|
2611
2611
|
/**
|
|
2612
2612
|
* @license
|
|
2613
2613
|
* Copyright 2017 Google LLC
|
|
@@ -2533,7 +2533,7 @@ details[open] .lh-clump-toggletext--hide { display: block;}
|
|
|
2533
2533
|
}
|
|
2534
2534
|
}
|
|
2535
2535
|
`),e.append(t);let n=o.createElement("div","lh-topbar"),r=o.createElementNS("http://www.w3.org/2000/svg","svg","lh-topbar__logo");r.setAttribute("role","img"),r.setAttribute("title","Lighthouse logo"),r.setAttribute("fill","none"),r.setAttribute("xmlns","http://www.w3.org/2000/svg"),r.setAttribute("viewBox","0 0 48 48");let i=o.createElementNS("http://www.w3.org/2000/svg","path");i.setAttribute("d","m14 7 10-7 10 7v10h5v7h-5l5 24H9l5-24H9v-7h5V7Z"),i.setAttribute("fill","#F63");let a=o.createElementNS("http://www.w3.org/2000/svg","path");a.setAttribute("d","M31.561 24H14l-1.689 8.105L31.561 24ZM18.983 48H9l1.022-4.907L35.723 32.27l1.663 7.98L18.983 48Z"),a.setAttribute("fill","#FFA385");let l=o.createElementNS("http://www.w3.org/2000/svg","path");l.setAttribute("fill","#FF3"),l.setAttribute("d","M20.5 10h7v7h-7z"),r.append(" ",i," ",a," ",l," ");let s=o.createElement("a","lh-topbar__url");s.setAttribute("href",""),s.setAttribute("target","_blank"),s.setAttribute("rel","noopener");let c=o.createElement("div","lh-tools"),d=o.createElement("div","lh-tools-locale lh-hidden"),p=o.createElement("button","lh-button lh-tool-locale__button");p.setAttribute("id","lh-button__swap-locales"),p.setAttribute("title","Show Language Picker"),p.setAttribute("aria-label","Toggle language picker"),p.setAttribute("aria-haspopup","menu"),p.setAttribute("aria-expanded","false"),p.setAttribute("aria-controls","lh-tools-locale__selector-wrapper");let h=o.createElementNS("http://www.w3.org/2000/svg","svg");h.setAttribute("width","20px"),h.setAttribute("height","20px"),h.setAttribute("viewBox","0 0 24 24"),h.setAttribute("fill","currentColor");let u=o.createElementNS("http://www.w3.org/2000/svg","path");u.setAttribute("d","M0 0h24v24H0V0z"),u.setAttribute("fill","none");let v=o.createElementNS("http://www.w3.org/2000/svg","path");v.setAttribute("d","M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"),h.append(u,v),p.append(" ",h," ");let b=o.createElement("div","lh-tools-locale__selector-wrapper");b.setAttribute("id","lh-tools-locale__selector-wrapper"),b.setAttribute("role","menu"),b.setAttribute("aria-labelledby","lh-button__swap-locales"),b.setAttribute("aria-hidden","true"),b.append(" "," "),d.append(" ",p," ",b," ");let m=o.createElement("button","lh-tools__button");m.setAttribute("id","lh-tools-button"),m.setAttribute("title","Tools menu"),m.setAttribute("aria-label","Toggle report tools menu"),m.setAttribute("aria-haspopup","menu"),m.setAttribute("aria-expanded","false"),m.setAttribute("aria-controls","lh-tools-dropdown");let x=o.createElementNS("http://www.w3.org/2000/svg","svg");x.setAttribute("width","100%"),x.setAttribute("height","100%"),x.setAttribute("viewBox","0 0 24 24");let T=o.createElementNS("http://www.w3.org/2000/svg","path");T.setAttribute("d","M0 0h24v24H0z"),T.setAttribute("fill","none");let L=o.createElementNS("http://www.w3.org/2000/svg","path");L.setAttribute("d","M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"),x.append(" ",T," ",L," "),m.append(" ",x," ");let F=o.createElement("div","lh-tools__dropdown");F.setAttribute("id","lh-tools-dropdown"),F.setAttribute("role","menu"),F.setAttribute("aria-labelledby","lh-tools-button");let f=o.createElement("a","lh-report-icon lh-report-icon--print");f.setAttribute("role","menuitem"),f.setAttribute("tabindex","-1"),f.setAttribute("href","#"),f.setAttribute("data-i18n","dropdownPrintSummary"),f.setAttribute("data-action","print-summary");let _=o.createElement("a","lh-report-icon lh-report-icon--print");_.setAttribute("role","menuitem"),_.setAttribute("tabindex","-1"),_.setAttribute("href","#"),_.setAttribute("data-i18n","dropdownPrintExpanded"),_.setAttribute("data-action","print-expanded");let y=o.createElement("a","lh-report-icon lh-report-icon--copy");y.setAttribute("role","menuitem"),y.setAttribute("tabindex","-1"),y.setAttribute("href","#"),y.setAttribute("data-i18n","dropdownCopyJSON"),y.setAttribute("data-action","copy");let S=o.createElement("a","lh-report-icon lh-report-icon--download lh-hidden");S.setAttribute("role","menuitem"),S.setAttribute("tabindex","-1"),S.setAttribute("href","#"),S.setAttribute("data-i18n","dropdownSaveHTML"),S.setAttribute("data-action","save-html");let M=o.createElement("a","lh-report-icon lh-report-icon--download");M.setAttribute("role","menuitem"),M.setAttribute("tabindex","-1"),M.setAttribute("href","#"),M.setAttribute("data-i18n","dropdownSaveJSON"),M.setAttribute("data-action","save-json");let z=o.createElement("a","lh-report-icon lh-report-icon--open");z.setAttribute("role","menuitem"),z.setAttribute("tabindex","-1"),z.setAttribute("href","#"),z.setAttribute("data-i18n","dropdownViewer"),z.setAttribute("data-action","open-viewer");let D=o.createElement("a","lh-report-icon lh-report-icon--open");D.setAttribute("role","menuitem"),D.setAttribute("tabindex","-1"),D.setAttribute("href","#"),D.setAttribute("data-i18n","dropdownSaveGist"),D.setAttribute("data-action","save-gist");let R=o.createElement("a","lh-report-icon lh-report-icon--open lh-hidden");R.setAttribute("role","menuitem"),R.setAttribute("tabindex","-1"),R.setAttribute("href","#"),R.setAttribute("data-i18n","dropdownViewUnthrottledTrace"),R.setAttribute("data-action","view-unthrottled-trace");let N=o.createElement("a","lh-report-icon lh-report-icon--dark");return N.setAttribute("role","menuitem"),N.setAttribute("tabindex","-1"),N.setAttribute("href","#"),N.setAttribute("data-i18n","dropdownDarkTheme"),N.setAttribute("data-action","toggle-dark"),F.append(" ",f," ",_," ",y," "," ",S," ",M," ",z," ",D," "," ",R," ",N," "),c.append(" ",d," ",m," ",F," "),n.append(" "," ",r," ",s," ",c," "),e.append(n),e}function ht(o){let e=o.createFragment(),t=o.createElement("div","lh-warnings lh-warnings--toplevel"),n=o.createElement("p","lh-warnings__msg"),r=o.createElement("ul");return t.append(" ",n," ",r," "),e.append(t),e}function we(o,e){switch(e){case"3pFilter":return Be(o);case"audit":return je(o);case"categoryHeader":return We(o);case"chevron":return Ke(o);case"clump":return qe(o);case"crc":return Je(o);case"crcChain":return Ze(o);case"elementScreenshot":return Qe(o);case"explodeyGauge":return Ye(o);case"footer":return Xe(o);case"fraction":return et(o);case"gauge":return tt(o);case"heading":return nt(o);case"metric":return rt(o);case"scorescale":return ot(o);case"scoresWrapper":return it(o);case"snippet":return at(o);case"snippetContent":return lt(o);case"snippetHeader":return st(o);case"snippetLine":return ct(o);case"styles":return dt(o);case"topbar":return pt(o);case"warningsToplevel":return ht(o)}throw new Error("unexpected component: "+e)}var te=class{constructor(e,t){this._document=e,this._lighthouseChannel="unknown",this._componentCache=new Map,this.rootEl=t}createElement(e,t){let n=this._document.createElement(e);if(t)for(let r of t.split(/\s+/))r&&n.classList.add(r);return n}createElementNS(e,t,n){let r=this._document.createElementNS(e,t);if(n)for(let i of n.split(/\s+/))i&&r.classList.add(i);return r}createSVGElement(e,t){return this._document.createElementNS("http://www.w3.org/2000/svg",e,t)}createFragment(){return this._document.createDocumentFragment()}createTextNode(e){return this._document.createTextNode(e)}createChildOf(e,t,n){let r=this.createElement(t,n);return e.append(r),r}createComponent(e){let t=this._componentCache.get(e);if(t){let r=t.cloneNode(!0);return this.findAll("style",r).forEach(i=>i.remove()),r}return t=we(this,e),this._componentCache.set(e,t),t.cloneNode(!0)}clearComponentCache(){this._componentCache.clear()}convertMarkdownLinkSnippets(e,t={}){let n=this.createElement("span");for(let r of k.splitMarkdownLink(e)){let i=r.text.includes("`")?this.convertMarkdownCodeSnippets(r.text):r.text;if(!r.isLink){n.append(i);continue}let a=new URL(r.linkHref);(["https://developers.google.com","https://web.dev","https://developer.chrome.com"].includes(a.origin)||t.alwaysAppendUtmSource)&&(a.searchParams.set("utm_source","lighthouse"),a.searchParams.set("utm_medium",this._lighthouseChannel));let s=this.createElement("a");s.rel="noopener",s.target="_blank",s.append(i),this.safelySetHref(s,a.href),n.append(s)}return n}safelySetHref(e,t){if(t=t||"",t.startsWith("#")){e.href=t;return}let n=["https:","http:"],r;try{r=new URL(t)}catch{}r&&n.includes(r.protocol)&&(e.href=r.href)}safelySetBlobHref(e,t){if(t.type!=="text/html"&&t.type!=="application/json")throw new Error("Unsupported blob type");let n=URL.createObjectURL(t);e.href=n}convertMarkdownCodeSnippets(e){let t=this.createElement("span");for(let n of k.splitMarkdownCodeSpans(e))if(n.isCode){let r=this.createElement("code");r.textContent=n.text,t.append(r)}else t.append(this._document.createTextNode(n.text));return t}setLighthouseChannel(e){this._lighthouseChannel=e}document(){return this._document}isDevTools(){return!!this._document.querySelector(".lh-devtools")}find(e,t=this.rootEl??this._document){let n=this.maybeFind(e,t);if(n===null)throw new Error(`query ${e} not found`);return n}maybeFind(e,t){return t.querySelector(e)}findAll(e,t){return Array.from(t.querySelectorAll(e))}fireEventOn(e,t=this._document,n){let r=new CustomEvent(e,n?{detail:n}:void 0);t.dispatchEvent(r)}saveFile(e,t){let n=this.createElement("a");n.download=t,this.safelySetBlobHref(n,e),this._document.body.append(n),n.click(),this._document.body.removeChild(n),setTimeout(()=>URL.revokeObjectURL(n.href),500)}};var ye=0,g=class o{static i18n=null;static strings={};static reportJson=null;static apply(e){o.strings={...xe,...e.providedStrings},o.i18n=e.i18n,o.reportJson=e.reportJson}static getUniqueSuffix(){return ye++}static resetUniqueSuffix(){ye=0}};var Ee="data:image/jpeg;base64,";function ke(o){o.configSettings.locale||(o.configSettings.locale="en"),o.configSettings.formFactor||(o.configSettings.formFactor=o.configSettings.emulatedFormFactor),o.finalDisplayedUrl=k.getFinalDisplayedUrl(o),o.mainDocumentUrl=k.getMainDocumentUrl(o);for(let n of Object.values(o.audits))if((n.scoreDisplayMode==="not_applicable"||n.scoreDisplayMode==="not-applicable")&&(n.scoreDisplayMode="notApplicable"),n.scoreDisplayMode==="informative"&&(n.score=1),n.details){if((n.details.type===void 0||n.details.type==="diagnostic")&&(n.details.type="debugdata"),n.details.type==="filmstrip")for(let r of n.details.items)r.data.startsWith(Ee)||(r.data=Ee+r.data);if(n.details.type==="table")for(let r of n.details.headings){let{itemType:i,text:a}=r;i!==void 0&&(r.valueType=i,delete r.itemType),a!==void 0&&(r.label=a,delete r.text);let l=r.subItemsHeading?.itemType;r.subItemsHeading&&l!==void 0&&(r.subItemsHeading.valueType=l,delete r.subItemsHeading.itemType)}if(n.id==="third-party-summary"&&(n.details.type==="opportunity"||n.details.type==="table")){let{headings:r,items:i}=n.details;if(r[0].valueType==="link"){r[0].valueType="text";for(let a of i)typeof a.entity=="object"&&a.entity.type==="link"&&(a.entity=a.entity.text);n.details.isEntityGrouped=!0}}}let[e]=o.lighthouseVersion.split(".").map(Number),t=o.categories.performance;if(t){if(e<9){o.categoryGroups||(o.categoryGroups={}),o.categoryGroups.hidden={title:""};for(let n of t.auditRefs)n.group?n.group==="load-opportunities"&&(n.group="diagnostics"):n.group="hidden"}else if(e<12)for(let n of t.auditRefs)n.group||(n.group="diagnostics")}if(e<12&&t){let n=new Map;for(let r of t.auditRefs){let i=r.relevantAudits;if(!(!i||!r.acronym))for(let a of i){let l=n.get(a)||[];l.push(r.acronym),n.set(a,l)}}for(let[r,i]of n){if(!i.length)continue;let a=o.audits[r];if(a&&!a.metricSavings){a.metricSavings={};for(let l of i)a.metricSavings[l]=0}}}if(o.environment||(o.environment={benchmarkIndex:0,networkUserAgent:o.userAgent,hostUserAgent:o.userAgent}),o.configSettings.screenEmulation||(o.configSettings.screenEmulation={width:-1,height:-1,deviceScaleFactor:-1,mobile:/mobile/i.test(o.environment.hostUserAgent),disabled:!1}),o.i18n||(o.i18n={}),o.audits["full-page-screenshot"]){let n=o.audits["full-page-screenshot"].details;n?o.fullPageScreenshot={screenshot:n.screenshot,nodes:n.nodes}:o.fullPageScreenshot=null,delete o.audits["full-page-screenshot"]}}var O=k.RATINGS,E=class o{static prepareReportResult(e){let t=JSON.parse(JSON.stringify(e));ke(t);for(let r of Object.values(t.audits))r.details&&(r.details.type==="opportunity"||r.details.type==="table")&&!r.details.isEntityGrouped&&t.entities&&o.classifyEntities(t.entities,r.details);if(typeof t.categories!="object")throw new Error("No categories provided.");let n=new Map;for(let r of Object.values(t.categories))r.auditRefs.forEach(i=>{i.acronym&&n.set(i.acronym,i)}),r.auditRefs.forEach(i=>{let a=t.audits[i.id];i.result=a;let l=Object.keys(i.result.metricSavings||{});if(l.length){i.relevantMetrics=[];for(let s of l){let c=n.get(s);c&&i.relevantMetrics.push(c)}}t.stackPacks&&t.stackPacks.forEach(s=>{s.descriptions[i.id]&&(i.stackPacks=i.stackPacks||[],i.stackPacks.push({title:s.title,iconDataURL:s.iconDataURL,description:s.descriptions[i.id]}))})});return t}static getUrlLocatorFn(e){let t=e.find(r=>r.valueType==="url")?.key;if(t&&typeof t=="string")return r=>{let i=r[t];if(typeof i=="string")return i};let n=e.find(r=>r.valueType==="source-location")?.key;if(n)return r=>{let i=r[n];if(typeof i=="object"&&i.type==="source-location")return i.url}}static classifyEntities(e,t){let{items:n,headings:r}=t;if(!n.length||n.some(a=>a.entity))return;let i=o.getUrlLocatorFn(r);if(i)for(let a of n){let l=i(a);if(!l)continue;let s="";try{s=k.parseURL(l).origin}catch{}if(!s)continue;let c=e.find(d=>d.origins.includes(s));c&&(a.entity=c.name)}}static getTableItemSortComparator(e){return(t,n)=>{for(let r of e){let i=t[r],a=n[r];if((typeof i!=typeof a||!["number","string"].includes(typeof i))&&console.warn(`Warning: Attempting to sort unsupported value type: ${r}.`),typeof i=="number"&&typeof a=="number"&&i!==a)return a-i;if(typeof i=="string"&&typeof a=="string"&&i!==a)return i.localeCompare(a)}return 0}}static getEmulationDescriptions(e){let t,n,r,i=e.throttling,a=g.i18n,l=g.strings;switch(e.throttlingMethod){case"provided":r=n=t=l.throttlingProvided;break;case"devtools":{let{cpuSlowdownMultiplier:h,requestLatencyMs:u}=i;t=`${a.formatNumber(h)}x slowdown (DevTools)`,n=`${a.formatMilliseconds(u)} HTTP RTT, ${a.formatKbps(i.downloadThroughputKbps)} down, ${a.formatKbps(i.uploadThroughputKbps)} up (DevTools)`,r=u===150*3.75&&i.downloadThroughputKbps===1.6*1024*.9&&i.uploadThroughputKbps===750*.9?l.runtimeSlow4g:l.runtimeCustom;break}case"simulate":{let{cpuSlowdownMultiplier:h,rttMs:u,throughputKbps:v}=i;t=`${a.formatNumber(h)}x slowdown (Simulated)`,n=`${a.formatMilliseconds(u)} TCP RTT, ${a.formatKbps(v)} throughput (Simulated)`,r=u===150&&v===1.6*1024?l.runtimeSlow4g:l.runtimeCustom;break}default:r=t=n=l.runtimeUnknown}let s=e.channel==="devtools"?!1:e.screenEmulation.disabled,c=e.channel==="devtools"?e.formFactor==="mobile":e.screenEmulation.mobile,d=l.runtimeMobileEmulation;s?d=l.runtimeNoEmulation:c||(d=l.runtimeDesktopEmulation);let p=s?void 0:`${e.screenEmulation.width}x${e.screenEmulation.height}, DPR ${e.screenEmulation.deviceScaleFactor}`;return{deviceEmulation:d,screenEmulation:p,cpuThrottling:t,networkThrottling:n,summary:r}}static showAsPassed(e){switch(e.scoreDisplayMode){case"manual":case"notApplicable":return!0;case"error":case"informative":return!1;case"numeric":case"binary":default:return Number(e.score)>=O.PASS.minScore}}static calculateRating(e,t){if(t==="manual"||t==="notApplicable")return O.PASS.label;if(t==="error")return O.ERROR.label;if(e===null)return O.FAIL.label;let n=O.FAIL.label;return e>=O.PASS.minScore?n=O.PASS.label:e>=O.AVERAGE.minScore&&(n=O.AVERAGE.label),n}static calculateCategoryFraction(e){let t=0,n=0,r=0,i=0;for(let a of e.auditRefs){let l=o.showAsPassed(a.result);if(!(a.group==="hidden"||a.result.scoreDisplayMode==="manual"||a.result.scoreDisplayMode==="notApplicable")){if(a.result.scoreDisplayMode==="informative"){l||++r;continue}++t,i+=a.weight,l&&n++}}return{numPassed:n,numPassableAudits:t,numInformative:r,totalWeight:i}}static isPluginCategory(e){return e.startsWith("lighthouse-plugin-")}static shouldDisplayAsFraction(e){return e==="timespan"||e==="snapshot"}},xe={varianceDisclaimer:"Values are estimated and may vary. The [performance score is calculated](https://developer.chrome.com/docs/lighthouse/performance/performance-scoring/) directly from these metrics.",calculatorLink:"See calculator.",showRelevantAudits:"Show audits relevant to:",opportunityResourceColumnLabel:"Opportunity",opportunitySavingsColumnLabel:"Estimated Savings",errorMissingAuditInfo:"Report error: no audit information",errorLabel:"Error!",warningHeader:"Warnings: ",warningAuditsGroupTitle:"Passed audits but with warnings",passedAuditsGroupTitle:"Passed audits",notApplicableAuditsGroupTitle:"Not applicable",manualAuditsGroupTitle:"Additional items to manually check",toplevelWarningsMessage:"There were issues affecting this run of Lighthouse:",crcInitialNavigation:"Initial Navigation",crcLongestDurationLabel:"Maximum critical path latency:",snippetExpandButtonLabel:"Expand snippet",snippetCollapseButtonLabel:"Collapse snippet",lsPerformanceCategoryDescription:"[Lighthouse](https://developers.google.com/web/tools/lighthouse/) analysis of the current page on an emulated mobile network. Values are estimated and may vary.",labDataTitle:"Lab Data",thirdPartyResourcesLabel:"Show 3rd-party resources",viewTreemapLabel:"View Treemap",viewTraceLabel:"View Trace",dropdownPrintSummary:"Print Summary",dropdownPrintExpanded:"Print Expanded",dropdownCopyJSON:"Copy JSON",dropdownSaveHTML:"Save as HTML",dropdownSaveJSON:"Save as JSON",dropdownViewer:"Open in Viewer",dropdownSaveGist:"Save as Gist",dropdownDarkTheme:"Toggle Dark Theme",dropdownViewUnthrottledTrace:"View Unthrottled Trace",runtimeSettingsDevice:"Device",runtimeSettingsNetworkThrottling:"Network throttling",runtimeSettingsCPUThrottling:"CPU throttling",runtimeSettingsUANetwork:"User agent (network)",runtimeSettingsBenchmark:"Unthrottled CPU/Memory Power",runtimeSettingsAxeVersion:"Axe version",runtimeSettingsScreenEmulation:"Screen emulation",footerIssue:"File an issue",runtimeNoEmulation:"No emulation",runtimeMobileEmulation:"Emulated Moto G Power",runtimeDesktopEmulation:"Emulated Desktop",runtimeUnknown:"Unknown",runtimeSingleLoad:"Single page session",runtimeAnalysisWindow:"Initial page load",runtimeAnalysisWindowTimespan:"User interactions timespan",runtimeAnalysisWindowSnapshot:"Point-in-time snapshot",runtimeSingleLoadTooltip:"This data is taken from a single page session, as opposed to field data summarizing many sessions.",throttlingProvided:"Provided by environment",show:"Show",hide:"Hide",expandView:"Expand view",collapseView:"Collapse view",runtimeSlow4g:"Slow 4G throttling",runtimeCustom:"Custom throttling",firstPartyChipLabel:"1st party",openInANewTabTooltip:"Open in a new tab",unattributable:"Unattributable"};var G=class{constructor(e,t){this.dom=e,this.detailsRenderer=t}get _clumpTitles(){return{warning:g.strings.warningAuditsGroupTitle,manual:g.strings.manualAuditsGroupTitle,passed:g.strings.passedAuditsGroupTitle,notApplicable:g.strings.notApplicableAuditsGroupTitle}}renderAudit(e){let t=g.strings,n=this.dom.createComponent("audit"),r=this.dom.find("div.lh-audit",n);r.id=e.result.id;let i=e.result.scoreDisplayMode;e.result.displayValue&&(this.dom.find(".lh-audit__display-text",r).textContent=e.result.displayValue);let a=this.dom.find(".lh-audit__title",r);a.append(this.dom.convertMarkdownCodeSnippets(e.result.title));let l=this.dom.find(".lh-audit__description",r);l.append(this.dom.convertMarkdownLinkSnippets(e.result.description));for(let h of e.relevantMetrics||[]){let u=this.dom.createChildOf(l,"span","lh-audit__adorn");u.title=`Relevant to ${h.result.title}`,u.textContent=h.acronym||h.id}e.stackPacks&&e.stackPacks.forEach(h=>{let u=this.dom.createElement("img","lh-audit__stackpack__img");u.src=h.iconDataURL,u.alt=h.title;let v=this.dom.convertMarkdownLinkSnippets(h.description,{alwaysAppendUtmSource:!0}),b=this.dom.createElement("div","lh-audit__stackpack");b.append(u,v),this.dom.find(".lh-audit__stackpacks",r).append(b)});let s=this.dom.find("details",r);if(e.result.details){let h=this.detailsRenderer.render(e.result.details);h&&(h.classList.add("lh-details"),s.append(h))}if(this.dom.find(".lh-chevron-container",r).append(this._createChevron()),this._setRatingClass(r,e.result.score,i),e.result.scoreDisplayMode==="error"){r.classList.add("lh-audit--error");let h=this.dom.find(".lh-audit__display-text",r);h.textContent=t.errorLabel,h.classList.add("lh-tooltip-boundary");let u=this.dom.createChildOf(h,"div","lh-tooltip lh-tooltip--error");u.textContent=e.result.errorMessage||t.errorMissingAuditInfo}else if(e.result.explanation){let h=this.dom.createChildOf(a,"div","lh-audit-explanation");h.textContent=e.result.explanation}let c=e.result.warnings;if(!c||c.length===0)return r;let d=this.dom.find("summary",s),p=this.dom.createChildOf(d,"div","lh-warnings");if(this.dom.createChildOf(p,"span").textContent=t.warningHeader,c.length===1)p.append(this.dom.createTextNode(c.join("")));else{let h=this.dom.createChildOf(p,"ul");for(let u of c){let v=this.dom.createChildOf(h,"li");v.textContent=u}}return r}injectFinalScreenshot(e,t,n){let r=t["final-screenshot"];if(!r||r.scoreDisplayMode==="error"||!r.details||r.details.type!=="screenshot")return null;let i=this.dom.createElement("img","lh-final-ss-image"),a=r.details.data;i.src=a,i.alt=r.title;let l=this.dom.find(".lh-category .lh-category-header",e),s=this.dom.createElement("div","lh-category-headercol"),c=this.dom.createElement("div","lh-category-headercol lh-category-headercol--separator"),d=this.dom.createElement("div","lh-category-headercol");s.append(...l.childNodes),s.append(n),d.append(i),l.append(s,c,d),l.classList.add("lh-category-header__finalscreenshot")}_createChevron(){let e=this.dom.createComponent("chevron");return this.dom.find("svg.lh-chevron",e)}_setRatingClass(e,t,n){let r=E.calculateRating(t,n);return e.classList.add(`lh-audit--${n.toLowerCase()}`),n!=="informative"&&e.classList.add(`lh-audit--${r}`),e}renderCategoryHeader(e,t,n){let r=this.dom.createComponent("categoryHeader"),i=this.dom.find(".lh-score__gauge",r),a=this.renderCategoryScore(e,t,n);if(i.append(a),e.description){let l=this.dom.convertMarkdownLinkSnippets(e.description);this.dom.find(".lh-category-header__description",r).append(l)}return r}renderAuditGroup(e){let t=this.dom.createElement("div","lh-audit-group"),n=this.dom.createElement("div","lh-audit-group__header");this.dom.createChildOf(n,"span","lh-audit-group__title").textContent=e.title,t.append(n);let r=null;return e.description&&(r=this.dom.convertMarkdownLinkSnippets(e.description),r.classList.add("lh-audit-group__description","lh-audit-group__footer"),t.append(r)),[t,r]}_renderGroupedAudits(e,t){let n=new Map,r="NotAGroup";n.set(r,[]);for(let a of e){let l=a.group||r,s=n.get(l)||[];s.push(a),n.set(l,s)}let i=[];for(let[a,l]of n){if(a===r){for(let p of l)i.push(this.renderAudit(p));continue}let s=t[a],[c,d]=this.renderAuditGroup(s);for(let p of l)c.insertBefore(this.renderAudit(p),d);c.classList.add(`lh-audit-group--${a}`),i.push(c)}return i}renderUnexpandableClump(e,t){let n=this.dom.createElement("div");return this._renderGroupedAudits(e,t).forEach(i=>n.append(i)),n}renderClump(e,{auditRefsOrEls:t,description:n,openByDefault:r}){let i=this.dom.createComponent("clump"),a=this.dom.find(".lh-clump",i);r&&a.setAttribute("open","");let l=this.dom.find(".lh-audit-group__header",a),s=this._clumpTitles[e];this.dom.find(".lh-audit-group__title",l).textContent=s;let c=this.dom.find(".lh-audit-group__itemcount",a);c.textContent=`(${t.length})`;let d=t.map(h=>h instanceof HTMLElement?h:this.renderAudit(h));a.append(...d);let p=this.dom.find(".lh-audit-group",i);if(n){let h=this.dom.convertMarkdownLinkSnippets(n);h.classList.add("lh-audit-group__description","lh-audit-group__footer"),p.append(h)}return this.dom.find(".lh-clump-toggletext--show",p).textContent=g.strings.show,this.dom.find(".lh-clump-toggletext--hide",p).textContent=g.strings.hide,a.classList.add(`lh-clump--${e.toLowerCase()}`),p}renderCategoryScore(e,t,n){let r;if(n&&E.shouldDisplayAsFraction(n.gatherMode)?r=this.renderCategoryFraction(e):r=this.renderScoreGauge(e,t),n?.omitLabel&&this.dom.find(".lh-gauge__label,.lh-fraction__label",r).remove(),n?.onPageAnchorRendered){let i=this.dom.find("a",r);n.onPageAnchorRendered(i)}return r}renderScoreGauge(e,t){let n=this.dom.createComponent("gauge"),r=this.dom.find("a.lh-gauge__wrapper",n);E.isPluginCategory(e.id)&&r.classList.add("lh-gauge__wrapper--plugin");let i=Number(e.score),a=this.dom.find(".lh-gauge",n),l=this.dom.find("circle.lh-gauge-arc",a);l&&this._setGaugeArc(l,i);let s=Math.round(i*100),c=this.dom.find("div.lh-gauge__percentage",n);return c.textContent=s.toString(),e.score===null&&(c.classList.add("lh-gauge--error"),c.textContent="",c.title=g.strings.errorLabel),e.auditRefs.length===0||this.hasApplicableAudits(e)?r.classList.add(`lh-gauge__wrapper--${E.calculateRating(e.score)}`):(r.classList.add("lh-gauge__wrapper--not-applicable"),c.textContent="-",c.title=g.strings.notApplicableAuditsGroupTitle),this.dom.find(".lh-gauge__label",n).textContent=e.title,n}renderCategoryFraction(e){let t=this.dom.createComponent("fraction"),n=this.dom.find("a.lh-fraction__wrapper",t),{numPassed:r,numPassableAudits:i,totalWeight:a}=E.calculateCategoryFraction(e),l=r/i,s=this.dom.find(".lh-fraction__content",t),c=this.dom.createElement("span");c.textContent=`${r}/${i}`,s.append(c);let d=E.calculateRating(l);return a===0&&(d="null"),n.classList.add(`lh-fraction__wrapper--${d}`),this.dom.find(".lh-fraction__label",t).textContent=e.title,t}hasApplicableAudits(e){return e.auditRefs.some(t=>t.result.scoreDisplayMode!=="notApplicable")}_setGaugeArc(e,t){let n=2*Math.PI*Number(e.getAttribute("r")),r=Number(e.getAttribute("stroke-width")),i=.25*r/n;e.style.transform=`rotate(${-90+i*360}deg)`;let a=t*n-r/2;t===0&&(e.style.opacity="0"),t===1&&(a=n),e.style.strokeDasharray=`${Math.max(a,0)} ${n}`}_auditHasWarning(e){return!!e.result.warnings?.length}_getClumpIdForAuditRef(e){let t=e.result.scoreDisplayMode;return t==="manual"||t==="notApplicable"?t:E.showAsPassed(e.result)?this._auditHasWarning(e)?"warning":"passed":"failed"}render(e,t={},n){let r=this.dom.createElement("div","lh-category");r.id=e.id,r.append(this.renderCategoryHeader(e,t,n));let i=new Map;i.set("failed",[]),i.set("warning",[]),i.set("manual",[]),i.set("passed",[]),i.set("notApplicable",[]);for(let l of e.auditRefs){if(l.group==="hidden")continue;let s=this._getClumpIdForAuditRef(l),c=i.get(s);c.push(l),i.set(s,c)}for(let l of i.values())l.sort((s,c)=>c.weight-s.weight);let a=i.get("failed")?.length;for(let[l,s]of i){if(s.length===0)continue;if(l==="failed"){let h=this.renderUnexpandableClump(s,t);h.classList.add("lh-clump--failed"),r.append(h);continue}let c=l==="manual"?e.manualDescription:void 0,d=l==="warning"||l==="manual"&&a===0,p=this.renderClump(l,{auditRefsOrEls:s,description:c,openByDefault:d});r.append(p)}return r}};var X=class{static initTree(e){let t=0,n=Object.keys(e);return n.length>0&&(t=e[n[0]].request.startTime),{tree:e,startTime:t,transferSize:0}}static createSegment(e,t,n,r,i,a){let l=e[t],s=Object.keys(e),c=s.indexOf(t)===s.length-1,d=!!l.children&&Object.keys(l.children).length>0,p=Array.isArray(i)?i.slice(0):[];return typeof a<"u"&&p.push(!a),{node:l,isLastChild:c,hasChildren:d,startTime:n,transferSize:r+l.request.transferSize,treeMarkers:p}}static createChainNode(e,t,n){let r=e.createComponent("crcChain");e.find(".lh-crc-node",r).setAttribute("title",t.node.request.url);let i=e.find(".lh-crc-node__tree-marker",r);t.treeMarkers.forEach(p=>{let h=p?"lh-tree-marker lh-vert":"lh-tree-marker";i.append(e.createElement("span",h),e.createElement("span","lh-tree-marker"))});let a=t.isLastChild?"lh-tree-marker lh-up-right":"lh-tree-marker lh-vert-right",l=t.hasChildren?"lh-tree-marker lh-horiz-down":"lh-tree-marker lh-right";i.append(e.createElement("span",a),e.createElement("span","lh-tree-marker lh-right"),e.createElement("span",l));let s=t.node.request.url,c=n.renderTextURL(s),d=e.find(".lh-crc-node__tree-value",r);if(d.append(c),!t.hasChildren){let{startTime:p,endTime:h,transferSize:u}=t.node.request,v=e.createElement("span","lh-crc-node__chain-duration");v.textContent=" - "+g.i18n.formatMilliseconds((h-p)*1e3)+", ";let b=e.createElement("span","lh-crc-node__chain-duration");b.textContent=g.i18n.formatBytesToKiB(u,.01),d.append(v,b)}return r}static buildTree(e,t,n,r,i,a){if(r.append(K.createChainNode(e,n,a)),n.node.children)for(let l of Object.keys(n.node.children)){let s=K.createSegment(n.node.children,l,n.startTime,n.transferSize,n.treeMarkers,n.isLastChild);K.buildTree(e,t,s,r,i,a)}}static render(e,t,n){let r=e.createComponent("crc"),i=e.find(".lh-crc",r);e.find(".lh-crc-initial-nav",r).textContent=g.strings.crcInitialNavigation,e.find(".lh-crc__longest_duration_label",r).textContent=g.strings.crcLongestDurationLabel,e.find(".lh-crc__longest_duration",r).textContent=g.i18n.formatMilliseconds(t.longestChain.duration);let a=K.initTree(t.chains);for(let l of Object.keys(a.tree)){let s=K.createSegment(a.tree,l,a.startTime,a.transferSize);K.buildTree(e,r,s,i,t,n)}return e.find(".lh-crc-container",r)}},K=X;function ut(o,e){return e.left<=o.width&&0<=e.right&&e.top<=o.height&&0<=e.bottom}function Se(o,e,t){return o<e?e:o>t?t:o}function gt(o){return{x:o.left+o.width/2,y:o.top+o.height/2}}var V=class o{static getScreenshotPositions(e,t,n){let r=gt(e),i=Se(r.x-t.width/2,0,n.width-t.width),a=Se(r.y-t.height/2,0,n.height-t.height);return{screenshot:{left:i,top:a},clip:{left:e.left-i,top:e.top-a}}}static renderClipPathInScreenshot(e,t,n,r,i){let a=e.find("clipPath",t),l=`clip-${g.getUniqueSuffix()}`;a.id=l,t.style.clipPath=`url(#${l})`;let s=n.top/i.height,c=s+r.height/i.height,d=n.left/i.width,p=d+r.width/i.width,h=[`0,0 1,0 1,${s} 0,${s}`,`0,${c} 1,${c} 1,1 0,1`,`0,${s} ${d},${s} ${d},${c} 0,${c}`,`${p},${s} 1,${s} 1,${c} ${p},${c}`];for(let u of h){let v=e.createElementNS("http://www.w3.org/2000/svg","polygon");v.setAttribute("points",u),a.append(v)}}static installFullPageScreenshot(e,t){e.style.setProperty("--element-screenshot-url",`url('${t.data}')`)}static installOverlayFeature(e){let{dom:t,rootEl:n,overlayContainerEl:r,fullPageScreenshot:i}=e,a="lh-screenshot-overlay--enabled";n.classList.contains(a)||(n.classList.add(a),n.addEventListener("click",l=>{let s=l.target;if(!s)return;let c=s.closest(".lh-node > .lh-element-screenshot");if(!c)return;let d=t.createElement("div","lh-element-screenshot__overlay");r.append(d);let p={width:d.clientWidth*.95,height:d.clientHeight*.8},h={width:Number(c.dataset.rectWidth),height:Number(c.dataset.rectHeight),left:Number(c.dataset.rectLeft),right:Number(c.dataset.rectLeft)+Number(c.dataset.rectWidth),top:Number(c.dataset.rectTop),bottom:Number(c.dataset.rectTop)+Number(c.dataset.rectHeight)},u=o.render(t,i.screenshot,h,p);if(!u){d.remove();return}d.append(u),d.addEventListener("click",()=>d.remove())}))}static _computeZoomFactor(e,t){let r={x:t.width/e.width,y:t.height/e.height},i=.75*Math.min(r.x,r.y);return Math.min(1,i)}static render(e,t,n,r){if(!ut(t,n))return null;let i=e.createComponent("elementScreenshot"),a=e.find("div.lh-element-screenshot",i);a.dataset.rectWidth=n.width.toString(),a.dataset.rectHeight=n.height.toString(),a.dataset.rectLeft=n.left.toString(),a.dataset.rectTop=n.top.toString();let l=this._computeZoomFactor(n,r),s={width:r.width/l,height:r.height/l};s.width=Math.min(t.width,s.width),s.height=Math.min(t.height,s.height);let c={width:s.width*l,height:s.height*l},d=o.getScreenshotPositions(n,s,{width:t.width,height:t.height}),p=e.find("div.lh-element-screenshot__image",a);p.style.width=c.width+"px",p.style.height=c.height+"px",p.style.backgroundPositionY=-(d.screenshot.top*l)+"px",p.style.backgroundPositionX=-(d.screenshot.left*l)+"px",p.style.backgroundSize=`${t.width*l}px ${t.height*l}px`;let h=e.find("div.lh-element-screenshot__element-marker",a);h.style.width=n.width*l+"px",h.style.height=n.height*l+"px",h.style.left=d.clip.left*l+"px",h.style.top=d.clip.top*l+"px";let u=e.find("div.lh-element-screenshot__mask",a);return u.style.width=c.width+"px",u.style.height=c.height+"px",o.renderClipPathInScreenshot(e,u,d.clip,n,s),a}};var mt=["http://","https://","data:"],ft=["bytes","numeric","ms","timespanMs"],ee=class{constructor(e,t={}){this._dom=e,this._fullPageScreenshot=t.fullPageScreenshot,this._entities=t.entities}render(e){switch(e.type){case"filmstrip":return this._renderFilmstrip(e);case"list":return this._renderList(e);case"table":case"opportunity":return this._renderTable(e);case"criticalrequestchain":return X.render(this._dom,e,this);case"screenshot":case"debugdata":case"treemap-data":return null;default:return this._renderUnknown(e.type,e)}}_renderBytes(e){let t=g.i18n.formatBytesToKiB(e.value,e.granularity||.1),n=this._renderText(t);return n.title=g.i18n.formatBytes(e.value),n}_renderMilliseconds(e){let t;return e.displayUnit==="duration"?t=g.i18n.formatDuration(e.value):t=g.i18n.formatMilliseconds(e.value,e.granularity||10),this._renderText(t)}renderTextURL(e){let t=e,n,r,i;try{let l=k.parseURL(t);n=l.file==="/"?l.origin:l.file,r=l.file==="/"||l.hostname===""?"":`(${l.hostname})`,i=t}catch{n=t}let a=this._dom.createElement("div","lh-text__url");if(a.append(this._renderLink({text:n,url:t})),r){let l=this._renderText(r);l.classList.add("lh-text__url-host"),a.append(l)}return i&&(a.title=t,a.dataset.url=t),a}_renderLink(e){let t=this._dom.createElement("a");if(this._dom.safelySetHref(t,e.url),!t.href){let n=this._renderText(e.text);return n.classList.add("lh-link"),n}return t.rel="noopener",t.target="_blank",t.textContent=e.text,t.classList.add("lh-link"),t}_renderText(e){let t=this._dom.createElement("div","lh-text");return t.textContent=e,t}_renderNumeric(e){let t=g.i18n.formatNumber(e.value,e.granularity||.1),n=this._dom.createElement("div","lh-numeric");return n.textContent=t,n}_renderThumbnail(e){let t=this._dom.createElement("img","lh-thumbnail"),n=e;return t.src=n,t.title=n,t.alt="",t}_renderUnknown(e,t){console.error(`Unknown details type: ${e}`,t);let n=this._dom.createElement("details","lh-unknown");return this._dom.createChildOf(n,"summary").textContent=`We don't know how to render audit details of type \`${e}\`. The Lighthouse version that collected this data is likely newer than the Lighthouse version of the report renderer. Expand for the raw JSON.`,this._dom.createChildOf(n,"pre").textContent=JSON.stringify(t,null,2),n}_renderTableValue(e,t){if(e==null)return null;if(typeof e=="object")switch(e.type){case"code":return this._renderCode(e.value);case"link":return this._renderLink(e);case"node":return this.renderNode(e);case"numeric":return this._renderNumeric(e);case"source-location":return this.renderSourceLocation(e);case"url":return this.renderTextURL(e.value);default:return this._renderUnknown(e.type,e)}switch(t.valueType){case"bytes":{let n=Number(e);return this._renderBytes({value:n,granularity:t.granularity})}case"code":{let n=String(e);return this._renderCode(n)}case"ms":{let n={value:Number(e),granularity:t.granularity,displayUnit:t.displayUnit};return this._renderMilliseconds(n)}case"numeric":{let n=Number(e);return this._renderNumeric({value:n,granularity:t.granularity})}case"text":{let n=String(e);return this._renderText(n)}case"thumbnail":{let n=String(e);return this._renderThumbnail(n)}case"timespanMs":{let n=Number(e);return this._renderMilliseconds({value:n})}case"url":{let n=String(e);return mt.some(r=>n.startsWith(r))?this.renderTextURL(n):this._renderCode(n)}default:return this._renderUnknown(t.valueType,e)}}_getDerivedSubItemsHeading(e){return e.subItemsHeading?{key:e.subItemsHeading.key||"",valueType:e.subItemsHeading.valueType||e.valueType,granularity:e.subItemsHeading.granularity||e.granularity,displayUnit:e.subItemsHeading.displayUnit||e.displayUnit,label:""}:null}_renderTableRow(e,t){let n=this._dom.createElement("tr");for(let r of t){if(!r||!r.key){this._dom.createChildOf(n,"td","lh-table-column--empty");continue}let i=e[r.key],a;if(i!=null&&(a=this._renderTableValue(i,r)),a){let l=`lh-table-column--${r.valueType}`;this._dom.createChildOf(n,"td",l).append(a)}else this._dom.createChildOf(n,"td","lh-table-column--empty")}return n}_renderTableRowsFromItem(e,t){let n=this._dom.createFragment();if(n.append(this._renderTableRow(e,t)),!e.subItems)return n;let r=t.map(this._getDerivedSubItemsHeading);if(!r.some(Boolean))return n;for(let i of e.subItems.items){let a=this._renderTableRow(i,r);a.classList.add("lh-sub-item-row"),n.append(a)}return n}_adornEntityGroupRow(e){let t=e.dataset.entity;if(!t)return;let n=this._entities?.find(i=>i.name===t);if(!n)return;let r=this._dom.find("td",e);if(n.category){let i=this._dom.createElement("span");i.classList.add("lh-audit__adorn"),i.textContent=n.category,r.append(" ",i)}if(n.isFirstParty){let i=this._dom.createElement("span");i.classList.add("lh-audit__adorn","lh-audit__adorn1p"),i.textContent=g.strings.firstPartyChipLabel,r.append(" ",i)}if(n.homepage){let i=this._dom.createElement("a");i.href=n.homepage,i.target="_blank",i.title=g.strings.openInANewTabTooltip,i.classList.add("lh-report-icon--external"),r.append(" ",i)}}_renderEntityGroupRow(e,t){let n={...t[0]};n.valueType="text";let r=[n,...t.slice(1)],i=this._dom.createFragment();return i.append(this._renderTableRow(e,r)),this._dom.find("tr",i).classList.add("lh-row--group"),i}_getEntityGroupItems(e){let{items:t,headings:n,sortedBy:r}=e;if(!t.length||e.isEntityGrouped||!t.some(d=>d.entity))return[];let i=new Set(e.skipSumming||[]),a=[];for(let d of n)!d.key||i.has(d.key)||ft.includes(d.valueType)&&a.push(d.key);let l=n[0].key;if(!l)return[];let s=new Map;for(let d of t){let p=typeof d.entity=="string"?d.entity:void 0,h=s.get(p)||{[l]:p||g.strings.unattributable,entity:p};for(let u of a)h[u]=Number(h[u]||0)+Number(d[u]||0);s.set(p,h)}let c=[...s.values()];return r&&c.sort(E.getTableItemSortComparator(r)),c}_renderTable(e){if(!e.items.length)return this._dom.createElement("span");let t=this._dom.createElement("table","lh-table"),n=this._dom.createChildOf(t,"thead"),r=this._dom.createChildOf(n,"tr");for(let l of e.headings){let c=`lh-table-column--${l.valueType||"text"}`,d=this._dom.createElement("div","lh-text");d.textContent=l.label,this._dom.createChildOf(r,"th",c).append(d)}let i=this._getEntityGroupItems(e),a=this._dom.createChildOf(t,"tbody");if(i.length)for(let l of i){let s=typeof l.entity=="string"?l.entity:void 0,c=this._renderEntityGroupRow(l,e.headings);for(let p of e.items.filter(h=>h.entity===s))c.append(this._renderTableRowsFromItem(p,e.headings));let d=this._dom.findAll("tr",c);s&&d.length&&(d.forEach(p=>p.dataset.entity=s),this._adornEntityGroupRow(d[0])),a.append(c)}else{let l=!0;for(let s of e.items){let c=this._renderTableRowsFromItem(s,e.headings),d=this._dom.findAll("tr",c),p=d[0];if(typeof s.entity=="string"&&(p.dataset.entity=s.entity),e.isEntityGrouped&&s.entity)p.classList.add("lh-row--group"),this._adornEntityGroupRow(p);else for(let h of d)h.classList.add(l?"lh-row--even":"lh-row--odd");l=!l,a.append(c)}}return t}_renderList(e){let t=this._dom.createElement("div","lh-list");return e.items.forEach(n=>{let r=this.render(n);r&&t.append(r)}),t}renderNode(e){let t=this._dom.createElement("span","lh-node");if(e.nodeLabel){let a=this._dom.createElement("div");a.textContent=e.nodeLabel,t.append(a)}if(e.snippet){let a=this._dom.createElement("div");a.classList.add("lh-node__snippet"),a.textContent=e.snippet,t.append(a)}if(e.selector&&(t.title=e.selector),e.path&&t.setAttribute("data-path",e.path),e.selector&&t.setAttribute("data-selector",e.selector),e.snippet&&t.setAttribute("data-snippet",e.snippet),!this._fullPageScreenshot)return t;let n=e.lhId&&this._fullPageScreenshot.nodes[e.lhId];if(!n||n.width===0||n.height===0)return t;let r={width:147,height:100},i=V.render(this._dom,this._fullPageScreenshot.screenshot,n,r);return i&&t.prepend(i),t}renderSourceLocation(e){if(!e.url)return null;let t=`${e.url}:${e.line+1}:${e.column}`,n;e.original&&(n=`${e.original.file||"<unmapped>"}:${e.original.line+1}:${e.original.column}`);let r;if(e.urlProvider==="network"&&n)r=this._renderLink({url:e.url,text:n}),r.title=`maps to generated location ${t}`;else if(e.urlProvider==="network"&&!n)r=this.renderTextURL(e.url),this._dom.find(".lh-link",r).textContent+=`:${e.line+1}:${e.column}`;else if(e.urlProvider==="comment"&&n)r=this._renderText(`${n} (from source map)`),r.title=`${t} (from sourceURL)`;else if(e.urlProvider==="comment"&&!n)r=this._renderText(`${t} (from sourceURL)`);else return null;return r.classList.add("lh-source-location"),r.setAttribute("data-source-url",e.url),r.setAttribute("data-source-line",String(e.line)),r.setAttribute("data-source-column",String(e.column)),r}_renderFilmstrip(e){let t=this._dom.createElement("div","lh-filmstrip");for(let n of e.items){let r=this._dom.createChildOf(t,"div","lh-filmstrip__frame"),i=this._dom.createChildOf(r,"img","lh-filmstrip__thumbnail");i.src=n.data,i.alt="Screenshot"}return t}_renderCode(e){let t=this._dom.createElement("pre","lh-code");return t.textContent=e,t}};var ce="\xA0";var ne=class{constructor(e){e==="en-XA"&&(e="de"),this._locale=e,this._cachedNumberFormatters=new Map}_formatNumberWithGranularity(e,t,n={}){if(t!==void 0){let a=-Math.log10(t);Number.isInteger(a)||(console.warn(`granularity of ${t} is invalid. Using 1 instead`),t=1),t<1&&(n={...n},n.minimumFractionDigits=n.maximumFractionDigits=Math.ceil(a)),e=Math.round(e/t)*t,Object.is(e,-0)&&(e=0)}else Math.abs(e)<5e-4&&(e=0);let r,i=[n.minimumFractionDigits,n.maximumFractionDigits,n.style,n.unit,n.unitDisplay,this._locale].join("");return r=this._cachedNumberFormatters.get(i),r||(r=new Intl.NumberFormat(this._locale,n),this._cachedNumberFormatters.set(i,r)),r.format(e).replace(" ",ce)}formatNumber(e,t){return this._formatNumberWithGranularity(e,t)}formatInteger(e){return this._formatNumberWithGranularity(e,1)}formatPercent(e){return new Intl.NumberFormat(this._locale,{style:"percent"}).format(e)}formatBytesToKiB(e,t=void 0){return this._formatNumberWithGranularity(e/1024,t)+`${ce}KiB`}formatBytesToMiB(e,t=void 0){return this._formatNumberWithGranularity(e/1048576,t)+`${ce}MiB`}formatBytes(e,t=1){return this._formatNumberWithGranularity(e,t,{style:"unit",unit:"byte",unitDisplay:"long"})}formatBytesWithBestUnit(e,t=.1){return e>=1048576?this.formatBytesToMiB(e,t):e>=1024?this.formatBytesToKiB(e,t):this._formatNumberWithGranularity(e,t,{style:"unit",unit:"byte",unitDisplay:"narrow"})}formatKbps(e,t=void 0){return this._formatNumberWithGranularity(e,t,{style:"unit",unit:"kilobit-per-second",unitDisplay:"short"})}formatMilliseconds(e,t=void 0){return this._formatNumberWithGranularity(e,t,{style:"unit",unit:"millisecond",unitDisplay:"short"})}formatSeconds(e,t=void 0){return this._formatNumberWithGranularity(e/1e3,t,{style:"unit",unit:"second",unitDisplay:"narrow"})}formatDateTime(e){let t={month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"numeric",timeZoneName:"short"},n;try{n=new Intl.DateTimeFormat(this._locale,t)}catch{t.timeZone="UTC",n=new Intl.DateTimeFormat(this._locale,t)}return n.format(new Date(e))}formatDuration(e){let t=e/1e3;if(Math.round(t)===0)return"None";let n=[],r={day:60*60*24,hour:60*60,minute:60,second:1};return Object.keys(r).forEach(i=>{let a=r[i],l=Math.floor(t/a);if(l>0){t-=l*a;let s=this._formatNumberWithGranularity(l,1,{style:"unit",unit:i,unitDisplay:"narrow"});n.push(s)}}),n.join(" ")}};function Ae(o){let e=o.createComponent("explodeyGauge");return o.find(".lh-exp-gauge-component",e)}function Ce(o,e,t){let n=o.find("div.lh-exp-gauge__wrapper",e);n.className="",n.classList.add("lh-exp-gauge__wrapper",`lh-exp-gauge__wrapper--${E.calculateRating(t.score)}`),bt(o,n,t)}function vt(o,e,t){t=t||o/32;let n=o/t,r=.5*t,i=n+r+t,a=2*Math.PI*n,l=Math.acos(1-.5*Math.pow(.5*t/n,2))*n,s=2*Math.PI*i,c=Math.acos(1-.5*Math.pow(.5*t/i,2))*i;return{radiusInner:n,radiusOuter:i,circumferenceInner:a,circumferenceOuter:s,getArcLength:()=>Math.max(0,Number(e*a)),getMetricArcLength:(d,p=!1)=>{let h=p?0:2*c;return Math.max(0,Number(d*s-r-h))},endDiffInner:l,endDiffOuter:c,strokeWidth:t,strokeGap:r}}function bt(o,e,t){let i=Number(t.score),{radiusInner:a,radiusOuter:l,circumferenceInner:s,circumferenceOuter:c,getArcLength:d,getMetricArcLength:p,endDiffInner:h,endDiffOuter:u,strokeWidth:v,strokeGap:b}=vt(128,i),m=o.find("svg.lh-exp-gauge",e);o.find(".lh-exp-gauge__label",m).textContent=t.title,m.setAttribute("viewBox",[-64,-64/2,128,128/2].join(" ")),m.style.setProperty("--stroke-width",`${v}px`),m.style.setProperty("--circle-meas",(2*Math.PI).toFixed(4));let x=o.find("g.lh-exp-gauge__outer",e),T=o.find("g.lh-exp-gauge__inner",e),L=o.find("circle.lh-cover",x),F=o.find("circle.lh-exp-gauge__arc",T),f=o.find("text.lh-exp-gauge__percentage",T);x.style.setProperty("--scale-initial",String(a/l)),x.style.setProperty("--radius",`${l}px`),L.style.setProperty("--radius",`${.5*(a+l)}px`),L.setAttribute("stroke-width",String(b)),m.style.setProperty("--radius",`${a}px`),F.setAttribute("stroke-dasharray",`${d()} ${(s-d()).toFixed(4)}`),F.setAttribute("stroke-dashoffset",String(.25*s-h)),f.textContent=Math.round(i*100).toString();let _=l+v,y=l-v,S=t.auditRefs.filter(w=>w.group==="metrics"&&w.weight),M=S.reduce((w,A)=>w+=A.weight,0),z=.25*c-u-.5*b,D=-.5*Math.PI;x.querySelectorAll(".metric").forEach(w=>{S.map(I=>`metric--${I.id}`).find(I=>w.classList.contains(I))||w.remove()}),S.forEach((w,A)=>{let C=w.acronym??w.id,I=!x.querySelector(`.metric--${C}`),P=o.maybeFind(`g.metric--${C}`,x)||o.createSVGElement("g"),B=o.maybeFind(`.metric--${C} circle.lh-exp-gauge--faded`,x)||o.createSVGElement("circle"),Z=o.maybeFind(`.metric--${C} circle.lh-exp-gauge--miniarc`,x)||o.createSVGElement("circle"),j=o.maybeFind(`.metric--${C} circle.lh-exp-gauge-hovertarget`,x)||o.createSVGElement("circle"),H=o.maybeFind(`.metric--${C} text.metric__label`,x)||o.createSVGElement("text"),U=o.maybeFind(`.metric--${C} text.metric__value`,x)||o.createSVGElement("text");P.classList.add("metric",`metric--${C}`),B.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge--faded"),Z.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge--miniarc"),j.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge-hovertarget");let W=w.weight/M,he=p(W),ue=w.result.score?w.result.score*W:0,ge=p(ue),Re=W*c,me=p(W,!0),fe=E.calculateRating(w.result.score,w.result.scoreDisplayMode);P.style.setProperty("--metric-rating",fe),P.style.setProperty("--metric-color",`var(--color-${fe})`),P.style.setProperty("--metric-offset",`${z}`),P.style.setProperty("--i",A.toString()),B.setAttribute("stroke-dasharray",`${he} ${c-he}`),Z.style.setProperty("--metric-array",`${ge} ${c-ge}`),j.setAttribute("stroke-dasharray",`${me} ${c-me-u}`),H.classList.add("metric__label"),U.classList.add("metric__value"),H.textContent=C,U.textContent=`+${Math.round(ue*100)}`;let ve=D+W*Math.PI,Q=Math.cos(ve),Y=Math.sin(ve);switch(!0){case Q>0:U.setAttribute("text-anchor","end");break;case Q<0:H.setAttribute("text-anchor","end");break;case Q===0:H.setAttribute("text-anchor","middle"),U.setAttribute("text-anchor","middle");break}switch(!0){case Y>0:H.setAttribute("dominant-baseline","hanging");break;case Y<0:U.setAttribute("dominant-baseline","hanging");break;case Y===0:H.setAttribute("dominant-baseline","middle"),U.setAttribute("dominant-baseline","middle");break}H.setAttribute("x",(_*Q).toFixed(2)),H.setAttribute("y",(_*Y).toFixed(2)),U.setAttribute("x",(y*Q).toFixed(2)),U.setAttribute("y",(y*Y).toFixed(2)),I&&(P.appendChild(B),P.appendChild(Z),P.appendChild(j),P.appendChild(H),P.appendChild(U),x.appendChild(P)),z-=Re,D+=W*2*Math.PI});let R=x.querySelector(".lh-exp-gauge-underhovertarget")||o.createSVGElement("circle");R.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge-hovertarget","lh-exp-gauge-underhovertarget");let N=p(1,!0);if(R.setAttribute("stroke-dasharray",`${N} ${c-N-u}`),R.isConnected||x.prepend(R),m.dataset.listenersSetup)return;m.dataset.listenersSetup=!0,J(m),m.addEventListener("pointerover",w=>{if(w.target===m&&m.classList.contains("state--expanded")){m.classList.remove("state--expanded"),m.classList.contains("state--highlight")&&(m.classList.remove("state--highlight"),o.find(".metric--highlight",m).classList.remove("metric--highlight"));return}if(!(w.target instanceof Element))return;let A=w.target.parentNode;if(A instanceof SVGElement){if(A&&A===T){m.classList.contains("state--expanded")?m.classList.contains("state--highlight")&&(m.classList.remove("state--highlight"),o.find(".metric--highlight",m).classList.remove("metric--highlight")):m.classList.add("state--expanded");return}if(A&&A.classList&&A.classList.contains("metric")){let C=A.style.getPropertyValue("--metric-rating");if(e.style.setProperty("--color-highlight",`var(--color-${C}-secondary)`),!m.classList.contains("state--highlight"))m.classList.add("state--highlight"),A.classList.add("metric--highlight");else{let I=o.find(".metric--highlight",m);A!==I&&(I.classList.remove("metric--highlight"),A.classList.add("metric--highlight"))}}}}),m.addEventListener("mouseleave",()=>{m.classList.remove("state--highlight"),m.querySelector(".metric--highlight")?.classList.remove("metric--highlight")});async function J(w){if(await new Promise(H=>setTimeout(H,1e3)),w.classList.contains("state--expanded"))return;let A=o.find(".lh-exp-gauge__inner",w),C=`uniq-${Math.random()}`;A.setAttribute("id",C);let I=o.createSVGElement("use");I.setAttribute("href",`#${C}`),w.appendChild(I);let P=2.5;w.style.setProperty("--peek-dur",`${P}s`),w.classList.add("state--peek","state--expanded");let B=()=>{w.classList.remove("state--peek","state--expanded"),I.remove()},Z=setTimeout(()=>{w.removeEventListener("mouseenter",j),B()},P*1e3*1.5);function j(){clearTimeout(Z),B()}w.addEventListener("mouseenter",j,{once:!0})}}var re=class extends G{_renderMetric(e){let t=this.dom.createComponent("metric"),n=this.dom.find(".lh-metric",t);n.id=e.result.id;let r=E.calculateRating(e.result.score,e.result.scoreDisplayMode);n.classList.add(`lh-metric--${r}`);let i=this.dom.find(".lh-metric__title",t);i.textContent=e.result.title;let a=this.dom.find(".lh-metric__value",t);a.textContent=e.result.displayValue||"";let l=this.dom.find(".lh-metric__description",t);if(l.append(this.dom.convertMarkdownLinkSnippets(e.result.description)),e.result.scoreDisplayMode==="error"){l.textContent="",a.textContent="Error!";let s=this.dom.createChildOf(l,"span");s.textContent=e.result.errorMessage||"Report error: no metric information"}else e.result.scoreDisplayMode==="notApplicable"&&(a.textContent="--");return n}_getScoringCalculatorHref(e){let t=e.filter(p=>p.group==="metrics"),n=e.find(p=>p.id==="interactive"),r=e.find(p=>p.id==="first-cpu-idle"),i=e.find(p=>p.id==="first-meaningful-paint");n&&t.push(n),r&&t.push(r),i&&typeof i.result.score=="number"&&t.push(i);let a=p=>Math.round(p*100)/100,s=[...t.map(p=>{let h;return typeof p.result.numericValue=="number"?(h=p.id==="cumulative-layout-shift"?a(p.result.numericValue):Math.round(p.result.numericValue),h=h.toString()):h="null",[p.acronym||p.id,h]})];g.reportJson&&(s.push(["device",g.reportJson.configSettings.formFactor]),s.push(["version",g.reportJson.lighthouseVersion]));let c=new URLSearchParams(s),d=new URL("https://googlechrome.github.io/lighthouse/scorecalc/");return d.hash=c.toString(),d.href}overallImpact(e,t){if(!e.result.metricSavings)return{overallImpact:0,overallLinearImpact:0};let n=0,r=0;for(let[i,a]of Object.entries(e.result.metricSavings)){if(a===void 0)continue;let l=t.find(u=>u.acronym===i);if(!l||l.result.score===null)continue;let s=l.result.numericValue;if(!s)continue;let c=a/s*l.weight;r+=c;let d=l.result.scoringOptions;if(!d)continue;let h=(k.computeLogNormalScore(d,s-a)-l.result.score)*l.weight;n+=h}return{overallImpact:n,overallLinearImpact:r}}render(e,t,n){let r=g.strings,i=this.dom.createElement("div","lh-category");i.id=e.id,i.append(this.renderCategoryHeader(e,t,n));let a=e.auditRefs.filter(f=>f.group==="metrics");if(a.length){let[f,_]=this.renderAuditGroup(t.metrics),y=this.dom.createElement("input","lh-metrics-toggle__input"),S=`lh-metrics-toggle${g.getUniqueSuffix()}`;y.setAttribute("aria-label","Toggle the display of metric descriptions"),y.type="checkbox",y.id=S,f.prepend(y);let M=this.dom.find(".lh-audit-group__header",f),z=this.dom.createChildOf(M,"label","lh-metrics-toggle__label");z.htmlFor=S;let D=this.dom.createChildOf(z,"span","lh-metrics-toggle__labeltext--show"),R=this.dom.createChildOf(z,"span","lh-metrics-toggle__labeltext--hide");D.textContent=g.strings.expandView,R.textContent=g.strings.collapseView;let N=this.dom.createElement("div","lh-metrics-container");if(f.insertBefore(N,_),a.forEach(J=>{N.append(this._renderMetric(J))}),i.querySelector(".lh-gauge__wrapper")){let J=this.dom.find(".lh-category-header__description",i),w=this.dom.createChildOf(J,"div","lh-metrics__disclaimer"),A=this.dom.convertMarkdownLinkSnippets(r.varianceDisclaimer);w.append(A);let C=this.dom.createChildOf(w,"a","lh-calclink");C.target="_blank",C.textContent=r.calculatorLink,this.dom.safelySetHref(C,this._getScoringCalculatorHref(e.auditRefs))}f.classList.add("lh-audit-group--metrics"),i.append(f)}let l=this.dom.createChildOf(i,"div","lh-filmstrip-container"),c=e.auditRefs.find(f=>f.id==="screenshot-thumbnails")?.result;if(c?.details){l.id=c.id;let f=this.detailsRenderer.render(c.details);f&&l.append(f)}let d=e.auditRefs.filter(f=>f.group==="diagnostics").map(f=>{let{overallImpact:_,overallLinearImpact:y}=this.overallImpact(f,a),S=f.result.guidanceLevel||1,M=this.renderAudit(f);return{auditRef:f,auditEl:M,overallImpact:_,overallLinearImpact:y,guidanceLevel:S}}),p=d.filter(f=>!E.showAsPassed(f.auditRef.result)),h=d.filter(f=>E.showAsPassed(f.auditRef.result)),[u,v]=this.renderAuditGroup(t.diagnostics);u.classList.add("lh-audit-group--diagnostics");function b(f){for(let _ of d)if(f==="All")_.auditEl.hidden=!1;else{let y=_.auditRef.result.metricSavings?.[f]===void 0;_.auditEl.hidden=y}p.sort((_,y)=>{let S=_.auditRef.result.score||0,M=y.auditRef.result.score||0;if(S!==M)return S-M;if(f!=="All"){let z=_.auditRef.result.metricSavings?.[f]??-1,D=y.auditRef.result.metricSavings?.[f]??-1;if(z!==D)return D-z}return _.overallImpact!==y.overallImpact?y.overallImpact*y.guidanceLevel-_.overallImpact*_.guidanceLevel:_.overallImpact===0&&y.overallImpact===0&&_.overallLinearImpact!==y.overallLinearImpact?y.overallLinearImpact*y.guidanceLevel-_.overallLinearImpact*_.guidanceLevel:y.guidanceLevel-_.guidanceLevel});for(let _ of p)u.insertBefore(_.auditEl,v)}let m=new Set;for(let f of p){let _=f.auditRef.result.metricSavings||{};for(let[y,S]of Object.entries(_))typeof S=="number"&&m.add(y)}let x=a.filter(f=>f.acronym&&m.has(f.acronym));if(x.length&&this.renderMetricAuditFilter(x,i,b),b("All"),p.length&&i.append(u),!h.length)return i;let T={auditRefsOrEls:h.map(f=>f.auditEl),groupDefinitions:t},L=this.renderClump("passed",T);if(i.append(L),(!n||n?.gatherMode==="navigation")&&e.score!==null){let f=Ae(this.dom);Ce(this.dom,f,e),this.dom.find(".lh-score__gauge",i).replaceWith(f)}return i}renderMetricAuditFilter(e,t,n){let r=this.dom.createElement("div","lh-metricfilter"),i=this.dom.createChildOf(r,"span","lh-metricfilter__text");i.textContent=g.strings.showRelevantAudits;let a=[{acronym:"All",id:"All"},...e],l=g.getUniqueSuffix();for(let s of a){let c=`metric-${s.acronym}-${l}`,d=this.dom.createChildOf(r,"input","lh-metricfilter__radio");d.type="radio",d.name=`metricsfilter-${l}`,d.id=c;let p=this.dom.createChildOf(r,"label","lh-metricfilter__label");p.htmlFor=c,p.title="result"in s?s.result.title:"",p.textContent=s.acronym||s.id,s.acronym==="All"&&(d.checked=!0,p.classList.add("lh-metricfilter__label--active")),t.append(r),d.addEventListener("input",h=>{for(let v of t.querySelectorAll("label.lh-metricfilter__label"))v.classList.toggle("lh-metricfilter__label--active",v.htmlFor===c);t.classList.toggle("lh-category--filtered",s.acronym!=="All"),n(s.acronym||"All");let u=t.querySelectorAll("div.lh-audit-group, details.lh-audit-group");for(let v of u){v.hidden=!1;let b=Array.from(v.querySelectorAll("div.lh-audit")),m=!!b.length&&b.every(x=>x.hidden);v.hidden=m}})}}};var oe=class{constructor(e){this._dom=e,this._opts={}}renderReport(e,t,n){if(!this._dom.rootEl&&t){console.warn("Please adopt the new report API in renderer/api.js.");let i=t.closest(".lh-root");i?this._dom.rootEl=i:(t.classList.add("lh-root","lh-vars"),this._dom.rootEl=t)}else this._dom.rootEl&&t&&(this._dom.rootEl=t);n&&(this._opts=n),this._dom.setLighthouseChannel(e.configSettings.channel||"unknown");let r=E.prepareReportResult(e);return this._dom.rootEl.textContent="",this._dom.rootEl.append(this._renderReport(r)),this._opts.occupyEntireViewport&&this._dom.rootEl.classList.add("lh-max-viewport"),this._dom.rootEl}_renderReportTopbar(e){let t=this._dom.createComponent("topbar"),n=this._dom.find("a.lh-topbar__url",t);return n.textContent=e.finalDisplayedUrl,n.title=e.finalDisplayedUrl,this._dom.safelySetHref(n,e.finalDisplayedUrl),t}_renderReportHeader(){let e=this._dom.createComponent("heading"),t=this._dom.createComponent("scoresWrapper");return this._dom.find(".lh-scores-wrapper-placeholder",e).replaceWith(t),e}_renderReportFooter(e){let t=this._dom.createComponent("footer");return this._renderMetaBlock(e,t),this._dom.find(".lh-footer__version_issue",t).textContent=g.strings.footerIssue,this._dom.find(".lh-footer__version",t).textContent=e.lighthouseVersion,t}_renderMetaBlock(e,t){let n=E.getEmulationDescriptions(e.configSettings||{}),r=e.userAgent.match(/(\w*Chrome\/[\d.]+)/),i=Array.isArray(r)?r[1].replace("/"," ").replace("Chrome","Chromium"):"Chromium",a=e.configSettings.channel,l=e.environment.benchmarkIndex.toFixed(0),s=e.environment.credits?.["axe-core"],c=[`${g.strings.runtimeSettingsBenchmark}: ${l}`,`${g.strings.runtimeSettingsCPUThrottling}: ${n.cpuThrottling}`];n.screenEmulation&&c.push(`${g.strings.runtimeSettingsScreenEmulation}: ${n.screenEmulation}`),s&&c.push(`${g.strings.runtimeSettingsAxeVersion}: ${s}`);let d=g.strings.runtimeAnalysisWindow;e.gatherMode==="timespan"?d=g.strings.runtimeAnalysisWindowTimespan:e.gatherMode==="snapshot"&&(d=g.strings.runtimeAnalysisWindowSnapshot);let p=[["date",`Captured at ${g.i18n.formatDateTime(e.fetchTime)}`],["devices",`${n.deviceEmulation} with Lighthouse ${e.lighthouseVersion}`,c.join(`
|
|
2536
|
-
`)],["samples-one",g.strings.runtimeSingleLoad,g.strings.runtimeSingleLoadTooltip],["stopwatch",d],["networkspeed",`${n.summary}`,`${g.strings.runtimeSettingsNetworkThrottling}: ${n.networkThrottling}`],["chrome",`Using ${i}`+(a?` with ${a}`:""),`${g.strings.runtimeSettingsUANetwork}: "${e.environment.networkUserAgent}"`]],h=this._dom.find(".lh-meta__items",t);for(let[u,v,b]of p){let m=this._dom.createChildOf(h,"li","lh-meta__item");if(m.textContent=v,b){m.classList.add("lh-tooltip-boundary");let x=this._dom.createChildOf(m,"div","lh-tooltip");x.textContent=b}m.classList.add("lh-report-icon",`lh-report-icon--${u}`)}}_renderReportWarnings(e){if(!e.runWarnings||e.runWarnings.length===0)return this._dom.createElement("div");let t=this._dom.createComponent("warningsToplevel"),n=this._dom.find(".lh-warnings__msg",t);n.textContent=g.strings.toplevelWarningsMessage;let r=[];for(let i of e.runWarnings){let a=this._dom.createElement("li");a.append(this._dom.convertMarkdownLinkSnippets(i)),r.push(a)}return this._dom.find("ul",t).append(...r),t}_renderScoreGauges(e,t,n){let r=[],i=[];for(let a of Object.values(e.categories)){let s=(n[a.id]||t).renderCategoryScore(a,e.categoryGroups||{},{gatherMode:e.gatherMode}),c=this._dom.find("a.lh-gauge__wrapper, a.lh-fraction__wrapper",s);c&&(this._dom.safelySetHref(c,`#${a.id}`),c.addEventListener("click",d=>{if(!c.matches('[href^="#"]'))return;let p=c.getAttribute("href"),h=this._dom.rootEl;if(!p||!h)return;let u=this._dom.find(p,h);d.preventDefault(),u.scrollIntoView()}),this._opts.onPageAnchorRendered?.(c)),E.isPluginCategory(a.id)?i.push(s):r.push(s)}return[...r,...i]}_renderReport(e){g.apply({providedStrings:e.i18n.rendererFormattedStrings,i18n:new ne(e.configSettings.locale),reportJson:e});let t=new ee(this._dom,{fullPageScreenshot:e.fullPageScreenshot??void 0,entities:e.entities}),n=new G(this._dom,t),r={performance:new re(this._dom,t)},i=this._dom.createElement("div");i.append(this._renderReportHeader());let a=this._dom.createElement("div","lh-container"),l=this._dom.createElement("div","lh-report");l.append(this._renderReportWarnings(e));let s;Object.keys(e.categories).length===1?i.classList.add("lh-header--solo-category"):s=this._dom.createElement("div","lh-scores-header");let d=this._dom.createElement("div");if(d.classList.add("lh-scorescale-wrap"),d.append(this._dom.createComponent("scorescale")),s){let v=this._dom.find(".lh-scores-container",i);s.append(...this._renderScoreGauges(e,n,r)),v.append(s,d);let b=this._dom.createElement("div","lh-sticky-header");b.append(...this._renderScoreGauges(e,n,r)),a.append(b)}let p=this._dom.createElement("div","lh-categories");l.append(p);let h={gatherMode:e.gatherMode};for(let v of Object.values(e.categories)){let b=r[v.id]||n;b.dom.createChildOf(p,"div","lh-category-wrapper").append(b.render(v,e.categoryGroups,h))}n.injectFinalScreenshot(p,e.audits,d);let u=this._dom.createFragment();return this._opts.omitGlobalStyles||u.append(this._dom.createComponent("styles")),this._opts.omitTopbar||u.append(this._renderReportTopbar(e)),u.append(a),l.append(this._renderReportFooter(e)),a.append(i,l),e.fullPageScreenshot&&V.installFullPageScreenshot(this._dom.rootEl,e.fullPageScreenshot.screenshot),u}};function q(o,e){let t=o.rootEl;typeof e>"u"?t.classList.toggle("lh-dark"):t.classList.toggle("lh-dark",e)}var _t=typeof btoa<"u"?btoa:o=>Buffer.from(o).toString("base64"),wt=typeof atob<"u"?atob:o=>Buffer.from(o,"base64").toString();async function yt(o,e){let t=new TextEncoder().encode(o);if(e.gzip)if(typeof CompressionStream<"u"){let i=new CompressionStream("gzip"),a=i.writable.getWriter();a.write(t),a.close();let l=await new Response(i.readable).arrayBuffer();t=new Uint8Array(l)}else t=window.pako.gzip(o);let n="",r=5e3;for(let i=0;i<t.length;i+=r)n+=String.fromCharCode(...t.subarray(i,i+r));return _t(n)}function xt(o,e){let t=wt(o),n=Uint8Array.from(t,r=>r.charCodeAt(0));return e.gzip?window.pako.ungzip(n,{to:"string"}):new TextDecoder().decode(n)}var Le={toBase64:yt,fromBase64:xt};function de(){let o=window.location.host.endsWith(".vercel.app"),e=new URLSearchParams(window.location.search).has("dev");return o?`https://${window.location.host}/gh-pages`:e?"http://localhost:7333":"https://googlechrome.github.io/lighthouse"}function pe(o){let e=o.generatedTime,t=o.fetchTime||e;return`${o.lighthouseVersion}-${o.finalDisplayedUrl}-${t}`}function Et(o,e,t){let n=new URL(e).origin;window.addEventListener("message",function i(a){a.origin===n&&r&&a.data.opened&&(r.postMessage(o,n),window.removeEventListener("message",i))});let r=window.open(e,t)}async function ze(o,e,t){let n=new URL(e),r=!!window.CompressionStream;n.hash=await Le.toBase64(JSON.stringify(o),{gzip:r}),r&&n.searchParams.set("gzip","1"),window.open(n.toString(),t)}async function Me(o){let e="viewer-"+pe(o),t=de()+"/viewer/";await ze({lhr:o},t,e)}async function Te(o){let e="viewer-"+pe(o),t=de()+"/viewer/";Et({lhr:o},t,e)}function Fe(o){if(!o.audits["script-treemap-data"].details)throw new Error("no script treemap data found");let t={lhr:{mainDocumentUrl:o.mainDocumentUrl,finalUrl:o.finalUrl,finalDisplayedUrl:o.finalDisplayedUrl,audits:{"script-treemap-data":o.audits["script-treemap-data"]},configSettings:{locale:o.configSettings.locale}}},n=de()+"/treemap/",r="treemap-"+pe(o);ze(t,n,r)}var ie=class{constructor(e){this._dom=e,this._toggleEl,this._menuEl,this.onDocumentKeyDown=this.onDocumentKeyDown.bind(this),this.onToggleClick=this.onToggleClick.bind(this),this.onToggleKeydown=this.onToggleKeydown.bind(this),this.onMenuFocusOut=this.onMenuFocusOut.bind(this),this.onMenuKeydown=this.onMenuKeydown.bind(this),this._getNextMenuItem=this._getNextMenuItem.bind(this),this._getNextSelectableNode=this._getNextSelectableNode.bind(this),this._getPreviousMenuItem=this._getPreviousMenuItem.bind(this)}setup(e){this._toggleEl=this._dom.find(".lh-topbar button.lh-tools__button",this._dom.rootEl),this._toggleEl.addEventListener("click",this.onToggleClick),this._toggleEl.addEventListener("keydown",this.onToggleKeydown),this._menuEl=this._dom.find(".lh-topbar div.lh-tools__dropdown",this._dom.rootEl),this._menuEl.addEventListener("keydown",this.onMenuKeydown),this._menuEl.addEventListener("click",e)}close(){this._toggleEl.classList.remove("lh-active"),this._toggleEl.setAttribute("aria-expanded","false"),this._menuEl.contains(this._dom.document().activeElement)&&this._toggleEl.focus(),this._menuEl.removeEventListener("focusout",this.onMenuFocusOut),this._dom.document().removeEventListener("keydown",this.onDocumentKeyDown)}open(e){this._toggleEl.classList.contains("lh-active")?e.focus():this._menuEl.addEventListener("transitionend",()=>{e.focus()},{once:!0}),this._toggleEl.classList.add("lh-active"),this._toggleEl.setAttribute("aria-expanded","true"),this._menuEl.addEventListener("focusout",this.onMenuFocusOut),this._dom.document().addEventListener("keydown",this.onDocumentKeyDown)}onToggleClick(e){e.preventDefault(),e.stopImmediatePropagation(),this._toggleEl.classList.contains("lh-active")?this.close():this.open(this._getNextMenuItem())}onToggleKeydown(e){switch(e.code){case"ArrowUp":e.preventDefault(),this.open(this._getPreviousMenuItem());break;case"ArrowDown":case"Enter":case" ":e.preventDefault(),this.open(this._getNextMenuItem());break;default:}}onMenuKeydown(e){let t=e.target;switch(e.code){case"ArrowUp":e.preventDefault(),this._getPreviousMenuItem(t).focus();break;case"ArrowDown":e.preventDefault(),this._getNextMenuItem(t).focus();break;case"Home":e.preventDefault(),this._getNextMenuItem().focus();break;case"End":e.preventDefault(),this._getPreviousMenuItem().focus();break;default:}}onDocumentKeyDown(e){e.keyCode===27&&this.close()}onMenuFocusOut(e){let t=e.relatedTarget;this._menuEl.contains(t)||this.close()}_getNextSelectableNode(e,t){let n=e.filter(i=>!(!(i instanceof HTMLElement)||i.hasAttribute("disabled")||window.getComputedStyle(i).display==="none")),r=t?n.indexOf(t)+1:0;return r>=n.length&&(r=0),n[r]}_getNextMenuItem(e){let t=Array.from(this._menuEl.childNodes);return this._getNextSelectableNode(t,e)}_getPreviousMenuItem(e){let t=Array.from(this._menuEl.childNodes).reverse();return this._getNextSelectableNode(t,e)}};var ae=class{constructor(e,t){this.lhr,this._reportUIFeatures=e,this._dom=t,this._dropDownMenu=new ie(this._dom),this._copyAttempt=!1,this.topbarEl,this.categoriesEl,this.stickyHeaderEl,this.highlightEl,this.onDropDownMenuClick=this.onDropDownMenuClick.bind(this),this.onKeyUp=this.onKeyUp.bind(this),this.onCopy=this.onCopy.bind(this),this.collapseAllDetails=this.collapseAllDetails.bind(this)}enable(e){this.lhr=e,this._dom.rootEl.addEventListener("keyup",this.onKeyUp),this._dom.document().addEventListener("copy",this.onCopy),this._dropDownMenu.setup(this.onDropDownMenuClick),this._setUpCollapseDetailsAfterPrinting(),this._dom.find(".lh-topbar__logo",this._dom.rootEl).addEventListener("click",()=>q(this._dom)),this._setupStickyHeader()}onDropDownMenuClick(e){e.preventDefault();let t=e.target;if(!(!t||!t.hasAttribute("data-action"))){switch(t.getAttribute("data-action")){case"copy":this.onCopyButtonClick();break;case"print-summary":this.collapseAllDetails(),this._print();break;case"print-expanded":this.expandAllDetails(),this._print();break;case"save-json":{let n=JSON.stringify(this.lhr,null,2);this._reportUIFeatures._saveFile(new Blob([n],{type:"application/json"}));break}case"save-html":{let n=this._reportUIFeatures.getReportHtml();try{this._reportUIFeatures._saveFile(new Blob([n],{type:"text/html"}))}catch(r){this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"error",msg:"Could not export as HTML. "+r.message})}break}case"open-viewer":{this._dom.isDevTools()?Me(this.lhr):Te(this.lhr);break}case"save-gist":{this._reportUIFeatures.saveAsGist();break}case"toggle-dark":{q(this._dom);break}case"view-unthrottled-trace":this._reportUIFeatures._opts.onViewTrace?.()}this._dropDownMenu.close()}}onCopy(e){this._copyAttempt&&e.clipboardData&&(e.preventDefault(),e.clipboardData.setData("text/plain",JSON.stringify(this.lhr,null,2)),this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:"Report JSON copied to clipboard"})),this._copyAttempt=!1}onCopyButtonClick(){this._dom.fireEventOn("lh-analytics",this._dom.document(),{cmd:"send",fields:{hitType:"event",eventCategory:"report",eventAction:"copy"}});try{this._dom.document().queryCommandSupported("copy")&&(this._copyAttempt=!0,this._dom.document().execCommand("copy")||(this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"warn",msg:"Your browser does not support copy to clipboard."})))}catch(e){this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:e.message})}}onKeyUp(e){(e.ctrlKey||e.metaKey)&&e.keyCode===80&&this._dropDownMenu.close()}expandAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map(t=>t.open=!0)}collapseAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map(t=>t.open=!1)}_print(){this._reportUIFeatures._opts.onPrintOverride?this._reportUIFeatures._opts.onPrintOverride(this._dom.rootEl):self.print()}resetUIState(){this._dropDownMenu.close()}_getScrollParent(e){let{overflowY:t}=window.getComputedStyle(e);return t!=="visible"&&t!=="hidden"?e:e.parentElement?this._getScrollParent(e.parentElement):document}_setUpCollapseDetailsAfterPrinting(){"onbeforeprint"in self?self.addEventListener("afterprint",this.collapseAllDetails):self.matchMedia("print").addListener(t=>{t.matches?this.expandAllDetails():this.collapseAllDetails()})}_setupStickyHeader(){this.topbarEl=this._dom.find("div.lh-topbar",this._dom.rootEl),this.categoriesEl=this._dom.find("div.lh-categories",this._dom.rootEl),window.requestAnimationFrame(()=>window.requestAnimationFrame(()=>{try{this.stickyHeaderEl=this._dom.find("div.lh-sticky-header",this._dom.rootEl)}catch{return}this.highlightEl=this._dom.createChildOf(this.stickyHeaderEl,"div","lh-highlighter");let e=this._getScrollParent(this._dom.find(".lh-container",this._dom.rootEl));e.addEventListener("scroll",()=>this._updateStickyHeader());let t=e instanceof window.Document?document.documentElement:e;new window.ResizeObserver(()=>this._updateStickyHeader()).observe(t)}))}_updateStickyHeader(){if(!this.stickyHeaderEl)return;let e=this.topbarEl.getBoundingClientRect().bottom,t=this.categoriesEl.getBoundingClientRect().top,n=e>=t,i=Array.from(this._dom.rootEl.querySelectorAll(".lh-category")).filter(p=>p.getBoundingClientRect().top-window.innerHeight/2<0),a=i.length>0?i.length-1:0,l=this.stickyHeaderEl.querySelectorAll(".lh-gauge__wrapper, .lh-fraction__wrapper"),s=l[a],c=l[0].getBoundingClientRect().left,d=s.getBoundingClientRect().left-c;this.highlightEl.style.transform=`translate(${d}px)`,this.stickyHeaderEl.classList.toggle("lh-sticky-header--visible",n)}};function kt(o,e){let t=e?new Date(e):new Date,n=t.toLocaleTimeString("en-US",{hour12:!1}),r=t.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"}).split("/");r.unshift(r.pop());let i=r.join("-");return`${o}_${i}_${n}`.replace(/[/?<>\\:*|"]/g,"-")}function De(o){let e=new URL(o.finalDisplayedUrl).hostname;return kt(e,o.fetchTime)}function St(o){return Array.from(o.tBodies[0].rows)}var le=class{constructor(e,t={}){this.json,this._dom=e,this._opts=t,this._topbar=t.omitTopbar?null:new ae(this,e),this.onMediaQueryChange=this.onMediaQueryChange.bind(this)}initFeatures(e){this.json=e,this._fullPageScreenshot=k.getFullPageScreenshot(e),this._topbar&&(this._topbar.enable(e),this._topbar.resetUIState()),this._setupMediaQueryListeners(),this._setupThirdPartyFilter(),this._setupElementScreenshotOverlay(this._dom.rootEl);let t=this._dom.isDevTools()||this._opts.disableDarkMode||this._opts.disableAutoDarkModeAndFireworks;!t&&window.matchMedia("(prefers-color-scheme: dark)").matches&&q(this._dom,!0);let r=["performance","accessibility","best-practices","seo"].every(s=>{let c=e.categories[s];return c&&c.score===1}),i=this._opts.disableFireworks||this._opts.disableAutoDarkModeAndFireworks;if(r&&!i&&(this._enableFireworks(),t||q(this._dom,!0)),e.categories.performance&&e.categories.performance.auditRefs.some(s=>!!(s.group==="metrics"&&e.audits[s.id].errorMessage))){let s=this._dom.find("input.lh-metrics-toggle__input",this._dom.rootEl);s.checked=!0}this.json.audits["script-treemap-data"]&&this.json.audits["script-treemap-data"].details&&this.addButton({text:g.strings.viewTreemapLabel,icon:"treemap",onClick:()=>Fe(this.json)}),this._opts.onViewTrace&&(e.configSettings.throttlingMethod==="simulate"?this._dom.find('a[data-action="view-unthrottled-trace"]',this._dom.rootEl).classList.remove("lh-hidden"):this.addButton({text:g.strings.viewTraceLabel,onClick:()=>this._opts.onViewTrace?.()})),this._opts.getStandaloneReportHTML&&this._dom.find('a[data-action="save-html"]',this._dom.rootEl).classList.remove("lh-hidden");for(let s of this._dom.findAll("[data-i18n]",this._dom.rootEl)){let d=s.getAttribute("data-i18n");s.textContent=g.strings[d]}}addButton(e){let t=this._dom.rootEl.querySelector(".lh-audit-group--metrics");if(!t)return;let n=t.querySelector(".lh-buttons");n||(n=this._dom.createChildOf(t,"div","lh-buttons"));let r=["lh-button"];e.icon&&(r.push("lh-report-icon"),r.push(`lh-report-icon--${e.icon}`));let i=this._dom.createChildOf(n,"button",r.join(" "));return i.textContent=e.text,i.addEventListener("click",e.onClick),i}resetUIState(){this._topbar&&this._topbar.resetUIState()}getReportHtml(){if(!this._opts.getStandaloneReportHTML)throw new Error("`getStandaloneReportHTML` is not set");return this.resetUIState(),this._opts.getStandaloneReportHTML()}saveAsGist(){throw new Error("Cannot save as gist from base report")}_enableFireworks(){this._dom.find(".lh-scores-container",this._dom.rootEl).classList.add("lh-score100")}_setupMediaQueryListeners(){let e=self.matchMedia("(max-width: 500px)");e.addListener(this.onMediaQueryChange),this.onMediaQueryChange(e)}_resetUIState(){this._topbar&&this._topbar.resetUIState()}onMediaQueryChange(e){this._dom.rootEl.classList.toggle("lh-narrow",e.matches)}_setupThirdPartyFilter(){let e=["uses-rel-preconnect","third-party-facades"],t=["legacy-javascript"];Array.from(this._dom.rootEl.querySelectorAll("table.lh-table")).filter(i=>i.querySelector("td.lh-table-column--url, td.lh-table-column--source-location")).filter(i=>{let a=i.closest(".lh-audit");if(!a)throw new Error(".lh-table not within audit");return!e.includes(a.id)}).forEach(i=>{let a=St(i),l=a.filter(m=>!m.classList.contains("lh-sub-item-row")),s=this._getThirdPartyRows(l,k.getFinalDisplayedUrl(this.json)),c=a.some(m=>m.classList.contains("lh-row--even")),d=this._dom.createComponent("3pFilter"),p=this._dom.find("input",d);p.addEventListener("change",m=>{let x=m.target instanceof HTMLInputElement&&!m.target.checked,T=!0,L=l[0];for(;L;){let F=x&&s.includes(L);do L.classList.toggle("lh-row--hidden",F),c&&(L.classList.toggle("lh-row--even",!F&&T),L.classList.toggle("lh-row--odd",!F&&!T)),L=L.nextElementSibling;while(L&&L.classList.contains("lh-sub-item-row"));F||(T=!T)}});let h=s.filter(m=>!m.classList.contains("lh-row--group")).length;this._dom.find(".lh-3p-filter-count",d).textContent=`${h}`,this._dom.find(".lh-3p-ui-string",d).textContent=g.strings.thirdPartyResourcesLabel;let u=s.length===l.length,v=!s.length;if((u||v)&&(this._dom.find("div.lh-3p-filter",d).hidden=!0),!i.parentNode)return;i.parentNode.insertBefore(d,i);let b=i.closest(".lh-audit");if(!b)throw new Error(".lh-table not within audit");t.includes(b.id)&&!u&&p.click()})}_setupElementScreenshotOverlay(e){this._fullPageScreenshot&&V.installOverlayFeature({dom:this._dom,rootEl:e,overlayContainerEl:e,fullPageScreenshot:this._fullPageScreenshot})}_getThirdPartyRows(e,t){let n=k.getEntityFromUrl(t,this.json.entities),r=this.json.entities?.find(a=>a.isFirstParty===!0)?.name,i=[];for(let a of e){if(r){if(!a.dataset.entity||a.dataset.entity===r)continue}else{let l=a.querySelector("div.lh-text__url");if(!l)continue;let s=l.dataset.url;if(!s||!(k.getEntityFromUrl(s,this.json.entities)!==n))continue}i.push(a)}return i}_saveFile(e){let t=e.type.match("json")?".json":".html",n=De({finalDisplayedUrl:k.getFinalDisplayedUrl(this.json),fetchTime:this.json.fetchTime})+t;this._opts.onSaveFileOverride?this._opts.onSaveFileOverride(e,n):this._dom.saveFile(e,n)}};function Pe(o,e={}){let t=document.createElement("article");t.classList.add("lh-root","lh-vars");let n=new te(t.ownerDocument,t);return new oe(n).renderReport(o,t,e),new le(n,e).initFeatures(o),t}var se=class{constructor(e){this.el=e;let t=document.createElement("style");if(t.textContent=`
|
|
2536
|
+
`)],["samples-one",g.strings.runtimeSingleLoad,g.strings.runtimeSingleLoadTooltip],["stopwatch",d],["networkspeed",`${n.summary}`,`${g.strings.runtimeSettingsNetworkThrottling}: ${n.networkThrottling}`],["chrome",`Using ${i}`+(a?` with ${a}`:""),`${g.strings.runtimeSettingsUANetwork}: "${e.environment.networkUserAgent}"`]],h=this._dom.find(".lh-meta__items",t);for(let[u,v,b]of p){let m=this._dom.createChildOf(h,"li","lh-meta__item");if(m.textContent=v,b){m.classList.add("lh-tooltip-boundary");let x=this._dom.createChildOf(m,"div","lh-tooltip");x.textContent=b}m.classList.add("lh-report-icon",`lh-report-icon--${u}`)}}_renderReportWarnings(e){if(!e.runWarnings||e.runWarnings.length===0)return this._dom.createElement("div");let t=this._dom.createComponent("warningsToplevel"),n=this._dom.find(".lh-warnings__msg",t);n.textContent=g.strings.toplevelWarningsMessage;let r=[];for(let i of e.runWarnings){let a=this._dom.createElement("li");a.append(this._dom.convertMarkdownLinkSnippets(i)),r.push(a)}return this._dom.find("ul",t).append(...r),t}_renderScoreGauges(e,t,n){let r=[],i=[];for(let a of Object.values(e.categories)){let s=(n[a.id]||t).renderCategoryScore(a,e.categoryGroups||{},{gatherMode:e.gatherMode}),c=this._dom.find("a.lh-gauge__wrapper, a.lh-fraction__wrapper",s);c&&(this._dom.safelySetHref(c,`#${a.id}`),c.addEventListener("click",d=>{if(!c.matches('[href^="#"]'))return;let p=c.getAttribute("href"),h=this._dom.rootEl;if(!p||!h)return;let u=this._dom.find(p,h);d.preventDefault(),u.scrollIntoView()}),this._opts.onPageAnchorRendered?.(c)),E.isPluginCategory(a.id)?i.push(s):r.push(s)}return[...r,...i]}_renderReport(e){g.apply({providedStrings:e.i18n.rendererFormattedStrings,i18n:new ne(e.configSettings.locale),reportJson:e});let t=new ee(this._dom,{fullPageScreenshot:e.fullPageScreenshot??void 0,entities:e.entities}),n=new G(this._dom,t),r={performance:new re(this._dom,t)},i=this._dom.createElement("div");i.append(this._renderReportHeader());let a=this._dom.createElement("div","lh-container"),l=this._dom.createElement("div","lh-report");l.append(this._renderReportWarnings(e));let s;Object.keys(e.categories).length===1?i.classList.add("lh-header--solo-category"):s=this._dom.createElement("div","lh-scores-header");let d=this._dom.createElement("div");if(d.classList.add("lh-scorescale-wrap"),d.append(this._dom.createComponent("scorescale")),s){let v=this._dom.find(".lh-scores-container",i);s.append(...this._renderScoreGauges(e,n,r)),v.append(s,d);let b=this._dom.createElement("div","lh-sticky-header");b.append(...this._renderScoreGauges(e,n,r)),a.append(b)}let p=this._dom.createElement("div","lh-categories");l.append(p);let h={gatherMode:e.gatherMode};for(let v of Object.values(e.categories)){let b=r[v.id]||n;b.dom.createChildOf(p,"div","lh-category-wrapper").append(b.render(v,e.categoryGroups,h))}n.injectFinalScreenshot(p,e.audits,d);let u=this._dom.createFragment();return this._opts.omitGlobalStyles||u.append(this._dom.createComponent("styles")),this._opts.omitTopbar||u.append(this._renderReportTopbar(e)),u.append(a),l.append(this._renderReportFooter(e)),a.append(i,l),e.fullPageScreenshot&&V.installFullPageScreenshot(this._dom.rootEl,e.fullPageScreenshot.screenshot),u}};function q(o,e){let t=o.rootEl;typeof e>"u"?t.classList.toggle("lh-dark"):t.classList.toggle("lh-dark",e)}var _t=typeof btoa<"u"?btoa:o=>Buffer.from(o).toString("base64"),wt=typeof atob<"u"?atob:o=>Buffer.from(o,"base64").toString();async function yt(o,e){let t=new TextEncoder().encode(o);if(e.gzip)if(typeof CompressionStream<"u"){let i=new CompressionStream("gzip"),a=i.writable.getWriter();a.write(t),a.close();let l=await new Response(i.readable).arrayBuffer();t=new Uint8Array(l)}else t=window.pako.gzip(o);let n="",r=5e3;for(let i=0;i<t.length;i+=r)n+=String.fromCharCode(...t.subarray(i,i+r));return _t(n)}function xt(o,e){let t=wt(o),n=Uint8Array.from(t,r=>r.charCodeAt(0));return e.gzip?window.pako.ungzip(n,{to:"string"}):new TextDecoder().decode(n)}var Le={toBase64:yt,fromBase64:xt};function de(){let o=window.location.host.endsWith(".vercel.app"),e=new URLSearchParams(window.location.search).has("dev");return o?`https://${window.location.host}/gh-pages`:e?"http://localhost:7333":"https://googlechrome.github.io/lighthouse"}function pe(o){let e=o.generatedTime,t=o.fetchTime||e;return`${o.lighthouseVersion}-${o.finalDisplayedUrl}-${t}`}function Et(o,e,t){let n=new URL(e).origin;window.addEventListener("message",function i(a){a.origin===n&&r&&a.data.opened&&(r.postMessage(o,n),window.removeEventListener("message",i))});let r=window.open(e,t)}async function ze(o,e,t){let n=new URL(e),r=!!window.CompressionStream;n.hash=await Le.toBase64(JSON.stringify(o),{gzip:r}),r&&n.searchParams.set("gzip","1"),window.open(n.toString(),t)}async function Me(o){let e="viewer-"+pe(o),t=de()+"/viewer/";await ze({lhr:o},t,e)}async function Te(o){let e="viewer-"+pe(o),t=de()+"/viewer/";Et({lhr:o},t,e)}function Fe(o){if(!o.audits["script-treemap-data"].details)throw new Error("no script treemap data found");let t={lhr:{mainDocumentUrl:o.mainDocumentUrl,finalUrl:o.finalUrl,finalDisplayedUrl:o.finalDisplayedUrl,audits:{"script-treemap-data":o.audits["script-treemap-data"]},configSettings:{locale:o.configSettings.locale}}},n=de()+"/treemap/",r="treemap-"+pe(o);ze(t,n,r)}var ie=class{constructor(e){this._dom=e,this._toggleEl,this._menuEl,this.onDocumentKeyDown=this.onDocumentKeyDown.bind(this),this.onToggleClick=this.onToggleClick.bind(this),this.onToggleKeydown=this.onToggleKeydown.bind(this),this.onMenuFocusOut=this.onMenuFocusOut.bind(this),this.onMenuKeydown=this.onMenuKeydown.bind(this),this._getNextMenuItem=this._getNextMenuItem.bind(this),this._getNextSelectableNode=this._getNextSelectableNode.bind(this),this._getPreviousMenuItem=this._getPreviousMenuItem.bind(this)}setup(e){this._toggleEl=this._dom.find(".lh-topbar button.lh-tools__button",this._dom.rootEl),this._toggleEl.addEventListener("click",this.onToggleClick),this._toggleEl.addEventListener("keydown",this.onToggleKeydown),this._menuEl=this._dom.find(".lh-topbar div.lh-tools__dropdown",this._dom.rootEl),this._menuEl.addEventListener("keydown",this.onMenuKeydown),this._menuEl.addEventListener("click",e)}close(){this._toggleEl.classList.remove("lh-active"),this._toggleEl.setAttribute("aria-expanded","false"),this._menuEl.contains(this._dom.document().activeElement)&&this._toggleEl.focus(),this._menuEl.removeEventListener("focusout",this.onMenuFocusOut),this._dom.document().removeEventListener("keydown",this.onDocumentKeyDown)}open(e){this._toggleEl.classList.contains("lh-active")?e.focus():this._menuEl.addEventListener("transitionend",()=>{e.focus()},{once:!0}),this._toggleEl.classList.add("lh-active"),this._toggleEl.setAttribute("aria-expanded","true"),this._menuEl.addEventListener("focusout",this.onMenuFocusOut),this._dom.document().addEventListener("keydown",this.onDocumentKeyDown)}onToggleClick(e){e.preventDefault(),e.stopImmediatePropagation(),this._toggleEl.classList.contains("lh-active")?this.close():this.open(this._getNextMenuItem())}onToggleKeydown(e){switch(e.code){case"ArrowUp":e.preventDefault(),this.open(this._getPreviousMenuItem());break;case"ArrowDown":case"Enter":case" ":e.preventDefault(),this.open(this._getNextMenuItem());break;default:}}onMenuKeydown(e){let t=e.target;switch(e.code){case"ArrowUp":e.preventDefault(),this._getPreviousMenuItem(t).focus();break;case"ArrowDown":e.preventDefault(),this._getNextMenuItem(t).focus();break;case"Home":e.preventDefault(),this._getNextMenuItem().focus();break;case"End":e.preventDefault(),this._getPreviousMenuItem().focus();break;default:}}onDocumentKeyDown(e){e.keyCode===27&&this.close()}onMenuFocusOut(e){let t=e.relatedTarget;this._menuEl.contains(t)||this.close()}_getNextSelectableNode(e,t){let n=e.filter(i=>i instanceof HTMLElement).filter(i=>!(i.hasAttribute("disabled")||window.getComputedStyle(i).display==="none")),r=t?n.indexOf(t)+1:0;return r>=n.length&&(r=0),n[r]}_getNextMenuItem(e){let t=Array.from(this._menuEl.childNodes);return this._getNextSelectableNode(t,e)}_getPreviousMenuItem(e){let t=Array.from(this._menuEl.childNodes).reverse();return this._getNextSelectableNode(t,e)}};var ae=class{constructor(e,t){this.lhr,this._reportUIFeatures=e,this._dom=t,this._dropDownMenu=new ie(this._dom),this._copyAttempt=!1,this.topbarEl,this.categoriesEl,this.stickyHeaderEl,this.highlightEl,this.onDropDownMenuClick=this.onDropDownMenuClick.bind(this),this.onKeyUp=this.onKeyUp.bind(this),this.onCopy=this.onCopy.bind(this),this.collapseAllDetails=this.collapseAllDetails.bind(this)}enable(e){this.lhr=e,this._dom.rootEl.addEventListener("keyup",this.onKeyUp),this._dom.document().addEventListener("copy",this.onCopy),this._dropDownMenu.setup(this.onDropDownMenuClick),this._setUpCollapseDetailsAfterPrinting(),this._dom.find(".lh-topbar__logo",this._dom.rootEl).addEventListener("click",()=>q(this._dom)),this._setupStickyHeader()}onDropDownMenuClick(e){e.preventDefault();let t=e.target;if(!(!t||!t.hasAttribute("data-action"))){switch(t.getAttribute("data-action")){case"copy":this.onCopyButtonClick();break;case"print-summary":this.collapseAllDetails(),this._print();break;case"print-expanded":this.expandAllDetails(),this._print();break;case"save-json":{let n=JSON.stringify(this.lhr,null,2);this._reportUIFeatures._saveFile(new Blob([n],{type:"application/json"}));break}case"save-html":{let n=this._reportUIFeatures.getReportHtml();try{this._reportUIFeatures._saveFile(new Blob([n],{type:"text/html"}))}catch(r){this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"error",msg:"Could not export as HTML. "+r.message})}break}case"open-viewer":{this._dom.isDevTools()?Me(this.lhr):Te(this.lhr);break}case"save-gist":{this._reportUIFeatures.saveAsGist();break}case"toggle-dark":{q(this._dom);break}case"view-unthrottled-trace":this._reportUIFeatures._opts.onViewTrace?.()}this._dropDownMenu.close()}}onCopy(e){this._copyAttempt&&e.clipboardData&&(e.preventDefault(),e.clipboardData.setData("text/plain",JSON.stringify(this.lhr,null,2)),this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:"Report JSON copied to clipboard"})),this._copyAttempt=!1}onCopyButtonClick(){this._dom.fireEventOn("lh-analytics",this._dom.document(),{cmd:"send",fields:{hitType:"event",eventCategory:"report",eventAction:"copy"}});try{this._dom.document().queryCommandSupported("copy")&&(this._copyAttempt=!0,this._dom.document().execCommand("copy")||(this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"warn",msg:"Your browser does not support copy to clipboard."})))}catch(e){this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:e.message})}}onKeyUp(e){(e.ctrlKey||e.metaKey)&&e.keyCode===80&&this._dropDownMenu.close()}expandAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map(t=>t.open=!0)}collapseAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map(t=>t.open=!1)}_print(){this._reportUIFeatures._opts.onPrintOverride?this._reportUIFeatures._opts.onPrintOverride(this._dom.rootEl):self.print()}resetUIState(){this._dropDownMenu.close()}_getScrollParent(e){let{overflowY:t}=window.getComputedStyle(e);return t!=="visible"&&t!=="hidden"?e:e.parentElement?this._getScrollParent(e.parentElement):document}_setUpCollapseDetailsAfterPrinting(){"onbeforeprint"in self?self.addEventListener("afterprint",this.collapseAllDetails):self.matchMedia("print").addListener(t=>{t.matches?this.expandAllDetails():this.collapseAllDetails()})}_setupStickyHeader(){this.topbarEl=this._dom.find("div.lh-topbar",this._dom.rootEl),this.categoriesEl=this._dom.find("div.lh-categories",this._dom.rootEl),window.requestAnimationFrame(()=>window.requestAnimationFrame(()=>{try{this.stickyHeaderEl=this._dom.find("div.lh-sticky-header",this._dom.rootEl)}catch{return}this.highlightEl=this._dom.createChildOf(this.stickyHeaderEl,"div","lh-highlighter");let e=this._getScrollParent(this._dom.find(".lh-container",this._dom.rootEl));e.addEventListener("scroll",()=>this._updateStickyHeader());let t=e instanceof window.Document?document.documentElement:e;new window.ResizeObserver(()=>this._updateStickyHeader()).observe(t)}))}_updateStickyHeader(){if(!this.stickyHeaderEl)return;let e=this.topbarEl.getBoundingClientRect().bottom,t=this.categoriesEl.getBoundingClientRect().top,n=e>=t,i=Array.from(this._dom.rootEl.querySelectorAll(".lh-category")).filter(p=>p.getBoundingClientRect().top-window.innerHeight/2<0),a=i.length>0?i.length-1:0,l=this.stickyHeaderEl.querySelectorAll(".lh-gauge__wrapper, .lh-fraction__wrapper"),s=l[a],c=l[0].getBoundingClientRect().left,d=s.getBoundingClientRect().left-c;this.highlightEl.style.transform=`translate(${d}px)`,this.stickyHeaderEl.classList.toggle("lh-sticky-header--visible",n)}};function kt(o,e){let t=e?new Date(e):new Date,n=t.toLocaleTimeString("en-US",{hour12:!1}),r=t.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"}).split("/");r.unshift(r.pop());let i=r.join("-");return`${o}_${i}_${n}`.replace(/[/?<>\\:*|"]/g,"-")}function De(o){let e=new URL(o.finalDisplayedUrl).hostname;return kt(e,o.fetchTime)}function St(o){return Array.from(o.tBodies[0].rows)}var le=class{constructor(e,t={}){this.json,this._dom=e,this._opts=t,this._topbar=t.omitTopbar?null:new ae(this,e),this.onMediaQueryChange=this.onMediaQueryChange.bind(this)}initFeatures(e){this.json=e,this._fullPageScreenshot=k.getFullPageScreenshot(e),this._topbar&&(this._topbar.enable(e),this._topbar.resetUIState()),this._setupMediaQueryListeners(),this._setupThirdPartyFilter(),this._setupElementScreenshotOverlay(this._dom.rootEl);let t=this._dom.isDevTools()||this._opts.disableDarkMode||this._opts.disableAutoDarkModeAndFireworks;!t&&window.matchMedia("(prefers-color-scheme: dark)").matches&&q(this._dom,!0);let r=["performance","accessibility","best-practices","seo"].every(s=>{let c=e.categories[s];return c&&c.score===1}),i=this._opts.disableFireworks||this._opts.disableAutoDarkModeAndFireworks;if(r&&!i&&(this._enableFireworks(),t||q(this._dom,!0)),e.categories.performance&&e.categories.performance.auditRefs.some(s=>!!(s.group==="metrics"&&e.audits[s.id].errorMessage))){let s=this._dom.find("input.lh-metrics-toggle__input",this._dom.rootEl);s.checked=!0}this.json.audits["script-treemap-data"]&&this.json.audits["script-treemap-data"].details&&this.addButton({text:g.strings.viewTreemapLabel,icon:"treemap",onClick:()=>Fe(this.json)}),this._opts.onViewTrace&&(e.configSettings.throttlingMethod==="simulate"?this._dom.find('a[data-action="view-unthrottled-trace"]',this._dom.rootEl).classList.remove("lh-hidden"):this.addButton({text:g.strings.viewTraceLabel,onClick:()=>this._opts.onViewTrace?.()})),this._opts.getStandaloneReportHTML&&this._dom.find('a[data-action="save-html"]',this._dom.rootEl).classList.remove("lh-hidden");for(let s of this._dom.findAll("[data-i18n]",this._dom.rootEl)){let d=s.getAttribute("data-i18n");s.textContent=g.strings[d]}}addButton(e){let t=this._dom.rootEl.querySelector(".lh-audit-group--metrics");if(!t)return;let n=t.querySelector(".lh-buttons");n||(n=this._dom.createChildOf(t,"div","lh-buttons"));let r=["lh-button"];e.icon&&(r.push("lh-report-icon"),r.push(`lh-report-icon--${e.icon}`));let i=this._dom.createChildOf(n,"button",r.join(" "));return i.textContent=e.text,i.addEventListener("click",e.onClick),i}resetUIState(){this._topbar&&this._topbar.resetUIState()}getReportHtml(){if(!this._opts.getStandaloneReportHTML)throw new Error("`getStandaloneReportHTML` is not set");return this.resetUIState(),this._opts.getStandaloneReportHTML()}saveAsGist(){throw new Error("Cannot save as gist from base report")}_enableFireworks(){this._dom.find(".lh-scores-container",this._dom.rootEl).classList.add("lh-score100")}_setupMediaQueryListeners(){let e=self.matchMedia("(max-width: 500px)");e.addListener(this.onMediaQueryChange),this.onMediaQueryChange(e)}_resetUIState(){this._topbar&&this._topbar.resetUIState()}onMediaQueryChange(e){this._dom.rootEl.classList.toggle("lh-narrow",e.matches)}_setupThirdPartyFilter(){let e=["uses-rel-preconnect","third-party-facades"],t=["legacy-javascript"];Array.from(this._dom.rootEl.querySelectorAll("table.lh-table")).filter(i=>i.querySelector("td.lh-table-column--url, td.lh-table-column--source-location")).filter(i=>{let a=i.closest(".lh-audit");if(!a)throw new Error(".lh-table not within audit");return!e.includes(a.id)}).forEach(i=>{let a=St(i),l=a.filter(m=>!m.classList.contains("lh-sub-item-row")),s=this._getThirdPartyRows(l,k.getFinalDisplayedUrl(this.json)),c=a.some(m=>m.classList.contains("lh-row--even")),d=this._dom.createComponent("3pFilter"),p=this._dom.find("input",d);p.addEventListener("change",m=>{let x=m.target instanceof HTMLInputElement&&!m.target.checked,T=!0,L=l[0];for(;L;){let F=x&&s.includes(L);do L.classList.toggle("lh-row--hidden",F),c&&(L.classList.toggle("lh-row--even",!F&&T),L.classList.toggle("lh-row--odd",!F&&!T)),L=L.nextElementSibling;while(L&&L.classList.contains("lh-sub-item-row"));F||(T=!T)}});let h=s.filter(m=>!m.classList.contains("lh-row--group")).length;this._dom.find(".lh-3p-filter-count",d).textContent=`${h}`,this._dom.find(".lh-3p-ui-string",d).textContent=g.strings.thirdPartyResourcesLabel;let u=s.length===l.length,v=!s.length;if((u||v)&&(this._dom.find("div.lh-3p-filter",d).hidden=!0),!i.parentNode)return;i.parentNode.insertBefore(d,i);let b=i.closest(".lh-audit");if(!b)throw new Error(".lh-table not within audit");t.includes(b.id)&&!u&&p.click()})}_setupElementScreenshotOverlay(e){this._fullPageScreenshot&&V.installOverlayFeature({dom:this._dom,rootEl:e,overlayContainerEl:e,fullPageScreenshot:this._fullPageScreenshot})}_getThirdPartyRows(e,t){let n=k.getEntityFromUrl(t,this.json.entities),r=this.json.entities?.find(a=>a.isFirstParty===!0)?.name,i=[];for(let a of e){if(r){if(!a.dataset.entity||a.dataset.entity===r)continue}else{let l=a.querySelector("div.lh-text__url");if(!l)continue;let s=l.dataset.url;if(!s||!(k.getEntityFromUrl(s,this.json.entities)!==n))continue}i.push(a)}return i}_saveFile(e){let t=e.type.match("json")?".json":".html",n=De({finalDisplayedUrl:k.getFinalDisplayedUrl(this.json),fetchTime:this.json.fetchTime})+t;this._opts.onSaveFileOverride?this._opts.onSaveFileOverride(e,n):this._dom.saveFile(e,n)}};function Pe(o,e={}){let t=document.createElement("article");t.classList.add("lh-root","lh-vars");let n=new te(t.ownerDocument,t);return new oe(n).renderReport(o,t,e),new le(n,e).initFeatures(o),t}var se=class{constructor(e){this.el=e;let t=document.createElement("style");if(t.textContent=`
|
|
2537
2537
|
#lh-log {
|
|
2538
2538
|
position: fixed;
|
|
2539
2539
|
background-color: #323232;
|
package/eslint-local-rules.d.cts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
declare namespace _exports {
|
|
2
|
+
export { RuleModule };
|
|
3
|
+
}
|
|
1
4
|
declare const _exports: {
|
|
2
5
|
'require-file-extension': import("eslint").Rule.RuleModule;
|
|
3
6
|
};
|
|
4
7
|
export = _exports;
|
|
5
|
-
|
|
8
|
+
type RuleModule = import("eslint").Rule.RuleModule;
|
|
6
9
|
//# sourceMappingURL=eslint-local-rules.d.cts.map
|
|
@@ -5,5 +5,5 @@ export default strings;
|
|
|
5
5
|
* SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
*/
|
|
7
7
|
/** @type {Record<LH.Locale, import('./ui-strings.js').UIStringsType>} */
|
|
8
|
-
declare const strings: Record<LH.Locale, import(
|
|
8
|
+
declare const strings: Record<LH.Locale, import("./ui-strings.js").UIStringsType>;
|
|
9
9
|
//# sourceMappingURL=localized-strings.d.ts.map
|