ember-native-devtools 1.0.2
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/bin/devtools.js +95 -0
- package/download/chrome-devtools-frontend.appspot.com/robots.txt/index.html +4 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/3d-center.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/3d-pan.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/3d-rotate.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/Images.js +259 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/accelerometer-back.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/accelerometer-bottom.png +0 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/accelerometer-front.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/accelerometer-left.png +0 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/accelerometer-right.png +0 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/accelerometer-top.png +0 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/account-box.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-content-center.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-content-end.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-content-space-around.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-content-space-between.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-content-space-evenly.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-content-start.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-content-stretch.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-items-baseline.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-items-center.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-items-end.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-items-start.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-items-stretch.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-self-center.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-self-end.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-self-start.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/align-self-stretch.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/arrow-back.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/arrow-down.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/arrow-drop-down-dark.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/arrow-drop-down-light.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/arrow-forward.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/arrow-up-down-circle.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/arrow-up-down.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/arrow-up.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/bell.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/bezier-curve-filled.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/bin.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/bottom-panel-close.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/bottom-panel-open.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/brackets.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/breakpoint-circle.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/breakpoint-crossed-filled.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/breakpoint-crossed.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/brush-filled.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/brush.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/bug.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/bundle.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/calendar-today.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/check-circle.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/check-double.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/checker.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/checkmark.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/chevron-double-right.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/chevron-down.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/chevron-left-dot.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/chevron-left.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/chevron-right.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/chevron-up.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/chromeLeft.avif +0 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/chromeMiddle.avif +0 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/chromeRight.avif +0 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/class.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/clear-list.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/clear.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/cloud.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/code-circle.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/code.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/colon.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/color-picker-filled.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/color-picker.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/console-conditional-breakpoint.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/console-logpoint.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/cookie.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/copy.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/corporate-fare.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/credit-card.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/cross-circle-filled.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/cross-circle.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/cross.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/cssoverview_icons_2x.avif +0 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/custom-typography.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/database.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/deployed.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/device-fold.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/devices.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/devtools.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/dock-bottom.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/dock-left.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/dock-right.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/dock-window.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/document.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/dog-paw.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/dots-horizontal.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/dots-vertical.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/download.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/edit.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/empty.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/errorWave.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/exclamation.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/experiment-check.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/experiment.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/extension.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/eye.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-document.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-fetch-xhr.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-font.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-generic.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-image.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-json.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-manifest.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-media.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-script.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-snippet.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-stylesheet.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-wasm.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/file-websocket.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/filter-clear.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/filter-filled.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/filter.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/flex-direction.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/flex-no-wrap.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/flex-wrap.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/flow.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/fold-more.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/folder.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/frame-crossed.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/frame-icon.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/frame.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/gear-filled.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/gear.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/gears.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/globe.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/google.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/goto-filled.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/heap-snapshot.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/heap-snapshots.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/help.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/hover.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/iframe-crossed.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/iframe.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/import.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/indeterminate-question-box.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/info-filled.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/info.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/issue-cross-filled.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/issue-exclamation-filled.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/issue-questionmark-filled.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/issue-text-filled.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-content-center.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-content-end.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-content-space-around.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-content-space-between.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-content-space-evenly.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-content-start.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-items-center.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-items-end.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-items-start.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/justify-items-stretch.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/keyboard-arrow-right.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/keyboard-pen.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/keyboard.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/large-arrow-right-filled.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/layers-filled.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/layers.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/left-panel-close.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/left-panel-open.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/lightbulb-spark.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/lightbulb.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/lighthouse_logo.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/list.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/location-on.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/lock.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/match-case.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/match-whole-word.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/memory.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/minus.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/mop.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/mouse.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/navigationControls.png +0 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/navigationControls_2x.png +0 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/network-settings.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/nodeIcon.avif +0 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/open-externally.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/pause.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/pen-spark.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/performance.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/person.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/play.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/plus.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/policy.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/popoverArrows.png +0 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/popup.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/preview_feature_video_thumbnail.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/profile.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/psychiatry.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/record-start.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/record-stop.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/redo.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/refresh.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/regular-expression.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/replace.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/replay.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/report.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/resizeDiagonal.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/resizeHorizontal.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/resizeVertical.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/resume.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/review.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/right-panel-close.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/right-panel-open.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/scissors.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/screen-rotation.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/search.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/select-element.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/send.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/shadow.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/small-status-dot.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/snippet.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/spark-info.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/spark.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/star.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/step-into.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/step-out.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/step-over.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/step.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/stop.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/symbol.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/sync.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/table.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/thumb-down.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/thumb-up.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/toolbarResizerVertical.png +0 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/top-panel-close.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/top-panel-open.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/touch-app.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/touchCursor.png +0 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/touchCursor_2x.png +0 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/triangle-bottom-right.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/triangle-down.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/triangle-left.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/triangle-right.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/triangle-up.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/tune.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/undo.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/warning-filled.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/warning.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/watch.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/whatsnew.avif +0 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/width.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/Images/zoom-in.svg +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/core/common/common.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/core/dom_extension/dom_extension.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/core/host/host.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/core/i18n/i18n.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/core/i18n/locales/en-US.json +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/core/platform/platform.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/core/protocol_client/protocol_client.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/core/root/root.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/core/sdk/sdk.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/devtools_app.html +18 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/devtools_compatibility.js +1774 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ember_app.html +26 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/devtools_app/devtools_app.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/formatter_worker/formatter_worker-entrypoint.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/formatter_worker/formatter_worker.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/heap_snapshot_worker/heap_snapshot_worker-entrypoint.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/heap_snapshot_worker/heap_snapshot_worker.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/inspector/inspector.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/inspector_main/inspector_main.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/lighthouse_worker/lighthouse_worker.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/main/main.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/shell/shell.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/wasmparser_worker/wasmparser_worker-entrypoint.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/entrypoints/wasmparser_worker/wasmparser_worker.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/inspector.html +18 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/autofill_manager/autofill_manager.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/bindings/bindings.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/breakpoints/breakpoints.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/cpu_profile/cpu_profile.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/crux-manager/crux-manager.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/emulation/emulation.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/extensions/extensions.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/formatter/formatter.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/har/har.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/heap_snapshot_model/heap_snapshot_model.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/issues_manager/issues_manager.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/javascript_metadata/javascript_metadata.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/live-metrics/live-metrics.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/live-metrics/web-vitals-injected/spec/spec.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/live-metrics/web-vitals-injected/web-vitals-injected.generated.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/logs/logs.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/persistence/persistence.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/source_map_scopes/source_map_scopes.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/text_utils/text_utils.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/timeline_model/timeline_model.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/extras/extras.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/handlers/handlers.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/helpers/helpers.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/insights/insights.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/lantern/core/core.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/lantern/graph/graph.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/lantern/lantern.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/lantern/metrics/metrics.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/lantern/simulation/simulation.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/lantern/types/types.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/root-causes/root-causes.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/trace.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/trace/types/types.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/workspace/workspace.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/models/workspace_diff/workspace_diff.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/accessibility/accessibility.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/animation/animation.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/application/application.js +41 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/application/components/components.js +614 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/application/preloading/components/components.js +292 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/application/preloading/helper/helper.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/autofill/autofill.js +88 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/browser_debugger/browser_debugger.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/changes/changes.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/console/console.js +6 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/console_counters/console_counters.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/coverage/coverage.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/css_overview/components/components.js +23 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/css_overview/css_overview.js +147 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/developer_resources/developer_resources.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/elements/components/components.js +272 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/elements/elements.js +8 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/emulation/components/components.js +39 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/emulation/emulation.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/event_listeners/event_listeners.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/explain/explain.js +203 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/freestyler/freestyler.js +177 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/issues/components/components.js +14 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/issues/issues.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/layer_viewer/layer_viewer.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/layers/layers.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/lighthouse/lighthouse.js +64 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/linear_memory_inspector/components/components.js +177 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/linear_memory_inspector/linear_memory_inspector.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/media/media.js +25 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/mobile_throttling/mobile_throttling.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/network/components/components.js +315 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/network/forward/forward.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/network/network.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/performance_monitor/performance_monitor.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/profiler/profiler.js +8 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/protocol_monitor/components/components.js +180 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/protocol_monitor/protocol_monitor.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/recorder/components/components.js +714 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/recorder/controllers/controllers.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/recorder/converters/converters.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/recorder/extensions/extensions.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/recorder/injected/injected.generated.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/recorder/models/models.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/recorder/recorder.js +120 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/recorder/util/util.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/screencast/screencast.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/search/search.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/security/security.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/sensors/sensors.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/settings/components/components.js +23 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/settings/emulation/components/components.js +222 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/settings/emulation/emulation.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/settings/emulation/utils/utils.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/settings/settings.js +130 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/snippets/snippets.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/sources/components/components.js +162 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/sources/sources.js +14 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/timeline/components/components.js +623 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/timeline/components/insights/insights.js +85 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/timeline/extensions/extensions.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/timeline/overlays/components/components.js +52 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/timeline/overlays/overlays.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/timeline/timeline.js +4 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/timeline/utils/utils.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/utils/utils.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/web_audio/graph_visualizer/graph_visualizer.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/web_audio/web_audio.js +23 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/panels/webauthn/webauthn.js +6 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/services/puppeteer/puppeteer.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/services/trace_bounds/trace_bounds.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/services/tracing/tracing.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/services/window_bounds/window_bounds.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/setup-ember-extension.js +160 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/acorn/acorn.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/chromium/client-variations/client-variations.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/angular.js +2 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/codemirror.js +2 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/cpp.js +2 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/java.js +2 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/legacy.js +2 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/less.js +2 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/markdown.js +2 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/php.js +2 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/python.js +2 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/sass.js +2 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/svelte.js +2 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/vue.js +2 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/wast.js +2 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/chunk/xml.js +2 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/codemirror.next/codemirror.next.js +2 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/csp_evaluator/csp_evaluator.js +194 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/diff/diff.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/i18n/i18n.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/intl-messageformat/intl-messageformat.js +15 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/lighthouse/lighthouse-dt-bundle.js +2137 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/lighthouse/report/report.js +39 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/lit/lit.js +110 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/marked/marked.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/puppeteer/debug/index.html +4 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/puppeteer/puppeteer.js +378 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/puppeteer-replay/lighthouse/index.html +4 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/puppeteer-replay/puppeteer/index.html +4 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/puppeteer-replay/puppeteer-replay.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/third_party/wasmparser/wasmparser.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/adorners/adorners.js +3 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/buttons/buttons.js +11 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/chrome_link/chrome_link.js +5 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/code_highlighter/code_highlighter.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/data_grid/data_grid.js +69 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/dialogs/dialogs.js +81 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/diff_view/diff_view.js +8 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/expandable_list/expandable_list.js +17 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/helpers/helpers.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/highlighting/highlighting.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/icon_button/icon_button.js +12 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/input/input.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/issue_counter/issue_counter.js +9 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/legacy_wrapper/legacy_wrapper.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/linkifier/linkifier.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/markdown_view/markdown_view.js +41 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/menus/menus.js +73 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/node_text/node_text.js +3 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/panel_feedback/panel_feedback.js +37 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/panel_introduction_steps/panel_introduction_steps.js +9 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/render_coordinator/render_coordinator.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/report_view/report_view.js +21 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/request_link_icon/request_link_icon.js +8 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/settings/settings.js +16 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/split_view/split_view.js +9 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/srgb_overlay/srgb_overlay.js +6 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/suggestion_input/suggestion_input.js +29 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/switch/switch.js +10 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/text_editor/text_editor.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/text_prompt/text_prompt.js +3 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/components/tree_outline/tree_outline.js +30 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/components/color_picker/color_picker.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/components/cookie_table/cookie_table.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/components/data_grid/data_grid.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/components/inline_editor/inline_editor.js +46 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/components/object_ui/object_ui.js +9 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/components/perf_ui/perf_ui.js +59 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/components/quick_open/quick_open.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/components/source_frame/source_frame.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/components/utils/utils.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/legacy.js +3 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/legacy/theme_support/theme_support.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/lit-html/lit-html.js +1 -0
- package/download/chrome-devtools-frontend.appspot.com/serve_file/@abb728f8afc6a86cc66b1313f5056728ce422ddd/ui/visual_logging/visual_logging.js +1 -0
- package/download/googlechrome.github.io/lighthouse/scorecalc/calc.js +838 -0
- package/download/googlechrome.github.io/lighthouse/scorecalc/index.html +78 -0
- package/download/googlechrome.github.io/lighthouse/scorecalc/style.css +554 -0
- package/download/wicg.github.io/attribution-reporting-api/validate-headers/index.html +104 -0
- package/download/wicg.github.io/attribution-reporting-api/validate-headers.js +1 -0
- package/package.json +31 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import*as e from"../../core/host/host.js";import*as t from"../../core/i18n/i18n.js";import*as n from"../../ui/components/buttons/buttons.js";import*as i from"../../ui/components/input/input.js";import*as s from"../../ui/lit-html/lit-html.js";import*as o from"../../ui/visual_logging/visual_logging.js";import*as a from"../../core/common/common.js";import*as r from"../../third_party/marked/marked.js";import*as l from"../../ui/components/icon_button/icon_button.js";import*as c from"../../ui/components/markdown_view/markdown_view.js";import*as d from"../../core/platform/platform.js";import*as h from"../../core/sdk/sdk.js";import*as u from"../../ui/legacy/legacy.js";class p extends Error{}class g extends Error{}function m(){const e=new WeakMap;return JSON.stringify(this,(function(t,n){if("object"==typeof n&&null!==n){if(e.has(n))return"(cycle)";e.set(n,!0)}if(n instanceof HTMLElement){const e=n.id?` id="${n.id}"`:"",t=n.classList.value?` class="${n.classList.value}"`:"";return`<${n.nodeName.toLowerCase()}${e}${t}>${n.hasChildNodes()?"...":""}</${n.nodeName.toLowerCase()}>`}if(!(this instanceof CSSStyleDeclaration)||isNaN(Number(t)))return n}))}class f{static async execute(e,t,{throwOnSideEffect:n}){const i=await t.evaluate({expression:e,replMode:!0,includeCommandLineAPI:!0,returnByValue:!1,silent:!1,generatePreview:!0,allowUnsafeEvalBlockedByCSP:!1,throwOnSideEffect:n},!1,!0);try{if(!i)throw new Error("Response is not found");if("error"in i)throw new p(i.error);if(i.exceptionDetails){const e=i.exceptionDetails.exception?.description;if(e?.startsWith("EvalError: Possible side-effect in debug-evaluate"))throw new g(e);throw new p(e||"JS exception")}return async function(e){switch(e.type){case"string":return`'${e.value}'`;case"bigint":return`${e.value}n`;case"boolean":case"number":return`${e.value}`;case"undefined":return"undefined";case"symbol":case"function":return`${e.description}`;case"object":{const t=await e.callFunction(m);if(!t.object||"string"!==t.object.type)throw new Error("Could not stringify the object"+e);return t.object.value}default:throw new Error("Unknown type to stringify "+e.type)}}(i.object)}finally{t.runtimeModel.releaseEvaluationResult(i)}}}const y=new CSSStyleSheet;y.replaceSync("*{box-sizing:border-box}.feedback{display:flex;flex-direction:column;gap:var(--sys-size-4);margin-top:var(--sys-size-4)}.feedback-header{display:flex;justify-content:space-between;align-items:center}.feedback-title{margin:0}.feedback-disclaimer{padding:0 var(--sys-size-4)}.vertical-separator{height:20px;width:1px;vertical-align:top;margin:0 var(--sys-size-2);background:var(--color-background-inverted);opacity:10%;display:inline-block}\n/*# sourceURL=./components/provideFeedback.css */\n");const b="Thumbs up",w="Thumbs down",v="Provide additional feedback",x="Feedback submitted will also include your conversation",S="Submit",k="Why did you choose this rating? (optional)",C="Close",E="Report legal issue",T=t.i18n.lockedString;class $ extends HTMLElement{static litTagName=s.literal`devtools-provide-feedback`;#e=this.attachShadow({mode:"open"});#t;#n=!1;#i;constructor(e){super(),this.#t=e}set props(e){this.#t=e,this.#s()}connectedCallback(){this.#e.adoptedStyleSheets=[y,i.textInputStyles],this.#s()}#o(e){this.#i!==e&&(this.#i=e,this.#n=this.#t.canShowFeedbackForm,this.#t.onFeedbackSubmit(this.#i),this.#s())}#a=()=>{this.#n=!1,this.#s()};#r=e=>{e.preventDefault();const t=this.#e.querySelector(".feedback-input");this.#i&&t&&t.value&&(this.#t.onFeedbackSubmit(this.#i,t.value),this.#n=!1,this.#s())};#l=()=>{e.InspectorFrontendHost.InspectorFrontendHostInstance.openInNewTab("https://support.google.com/legal/troubleshooter/1114905?hl=en#ts=1115658%2C13380504")};#c(){return s.html`
|
|
2
|
+
<${n.Button.Button.litTagName}
|
|
3
|
+
.data=${{variant:"icon",size:"SMALL",iconName:"thumb-up",active:"POSITIVE"===this.#i,title:T(b),jslogContext:"thumbs-up"}}
|
|
4
|
+
@click=${()=>this.#o("POSITIVE")}
|
|
5
|
+
></${n.Button.Button.litTagName}>
|
|
6
|
+
<${n.Button.Button.litTagName}
|
|
7
|
+
.data=${{variant:"icon",size:"SMALL",iconName:"thumb-down",active:"NEGATIVE"===this.#i,title:T(w),jslogContext:"thumbs-down"}}
|
|
8
|
+
@click=${()=>this.#o("NEGATIVE")}
|
|
9
|
+
></${n.Button.Button.litTagName}>
|
|
10
|
+
<div class="vertical-separator"></div>
|
|
11
|
+
<${n.Button.Button.litTagName}
|
|
12
|
+
.data=${{variant:"icon",size:"SMALL",title:T(E),iconName:"report",jslogContext:"report"}}
|
|
13
|
+
@click=${this.#l}
|
|
14
|
+
></${n.Button.Button.litTagName}>
|
|
15
|
+
`}#d(){return s.html`
|
|
16
|
+
<form class="feedback" @submit=${this.#r}>
|
|
17
|
+
<div class="feedback-header">
|
|
18
|
+
<h4 class="feedback-title">${T(k)}</h4>
|
|
19
|
+
<${n.Button.Button.litTagName}
|
|
20
|
+
aria-label=${T(C)}
|
|
21
|
+
@click=${this.#a}
|
|
22
|
+
.data=${{variant:"icon",iconName:"cross",size:"SMALL",title:T(C),jslogContext:"close"}}
|
|
23
|
+
></${n.Button.Button.litTagName}>
|
|
24
|
+
</div>
|
|
25
|
+
<input
|
|
26
|
+
type="text"
|
|
27
|
+
class="devtools-text-input feedback-input"
|
|
28
|
+
placeholder=${T(v)}
|
|
29
|
+
jslog=${o.textField("feedback").track({keydown:"Enter"})}
|
|
30
|
+
>
|
|
31
|
+
<span class="feedback-disclaimer">${T(x)}</span>
|
|
32
|
+
<${n.Button.Button.litTagName}
|
|
33
|
+
aria-label=${T(S)}
|
|
34
|
+
.data=${{type:"submit",variant:"outlined",size:"SMALL",title:T(S),jslogContext:"send"}}
|
|
35
|
+
>${T(S)}</${n.Button.Button.litTagName}>
|
|
36
|
+
</div>
|
|
37
|
+
`}#s(){s.render(s.html`
|
|
38
|
+
<div class="rate-buttons">
|
|
39
|
+
${this.#c()}
|
|
40
|
+
${this.#n?this.#d():s.nothing}
|
|
41
|
+
</div>`,this.#e,{host:this})}}customElements.define("devtools-provide-feedback",$);const N="Fix this issue using JavaScript code execution";var A;async function I(e,{throwOnSideEffect:t}){const n=u.Context.Context.instance().flavor(h.Target.Target);if(!n)throw new Error("Target is not found for executing code");const i=n.model(h.ResourceTreeModel.ResourceTreeModel),s=n.model(h.RuntimeModel.RuntimeModel),o=n.pageAgent();if(!i?.mainFrame)throw new Error("Main frame is not found for executing code");const{executionContextId:a}=await o.invoke_createIsolatedWorld({frameId:i.mainFrame.id,worldName:"devtools_freestyler"}),r=s?.executionContext(a);if(!r)throw new Error("Execution context is not found for executing code");try{return await f.execute(e,r,{throwOnSideEffect:t})}catch(e){if(e instanceof p)return`Error: ${e.message}`;throw e}}!function(e){e.THOUGHT="thought",e.ACTION="action",e.ANSWER="answer",e.ERROR="error",e.QUERYING="querying"}(A||(A={}));class R{static buildRequest(t){const n=a.Settings.Settings.instance().getHostConfig();return{input:t.input,preamble:t.preamble,chat_history:t.chatHistory,client:e.AidaClient.CLIENT_NAME,options:{temperature:n.devToolsFreestylerDogfood?.temperature??0,model_id:n.devToolsFreestylerDogfood?.modelId??void 0},metadata:{disable_user_content_logging:!t.serverSideLoggingEnabled,string_session_id:t.sessionId},functionality_type:e.AidaClient.FunctionalityType.CHAT,client_feature:e.AidaClient.ClientFeature.CHROME_FREESTYLER}}static parseResponse(e){const t=e.split("\n");let n,i,s,o=0;for(;o<t.length;){const e=t[o].trim();if(e.startsWith("THOUGHT:")&&!n)n=e.substring(8).trim(),o++;else if(e.startsWith("ACTION")&&!i){const e=[];let n=o+1;for(;n<t.length&&"STOP"!==t[n].trim();)"js"!==t[n].trim()&&e.push(t[n]),n++;i=e.join("\n").replaceAll("```","").replaceAll("``","").trim(),o=n+1}else if(e.startsWith("ANSWER:")&&!s){const n=[e.substring(7).trim()];let i=o+1;for(;i<t.length;){const e=t[i].trim();if(e.startsWith("ACTION")||e.startsWith("OBSERVATION:")||e.startsWith("THOUGHT:"))break;n.push(t[i]),i++}s=n.join("\n").trim(),o=i}else o++}return s||n||i||(s=e),{thought:n,action:i,answer:s}}#h;#u=new Map;#p;#g;#m;#f;#y=crypto.randomUUID();constructor(e){this.#h=e.aidaClient,this.#m=e.execJs??I,this.#f=e.internalExecJs??I,this.#g=e.confirmSideEffect,this.#p=e.serverSideLoggingEnabled??!1}async#b(){await(this.#f?.("async function setInlineStyles(el, styles) {\n for (const key of Object.keys(styles)) {\n el.style[key] = styles[key];\n }\n}",{throwOnSideEffect:!1}))}get#w(){return[...this.#u.values()].flat()}get chatHistoryForTesting(){return this.#w}async#v(t){let n,i="";for await(const s of this.#h.fetch(t))if(i=s.explanation,n=s.metadata.rpcGlobalId??n,s.metadata.attributionMetadata?.some((t=>t.attributionAction===e.AidaClient.RecitationAction.BLOCK)))throw new Error("Attribution action does not allow providing the response");return{response:i,rpcId:n}}async#x(e,{throwOnSideEffect:t,confirmExecJs:n,execJsDeniedMesssage:i}){const s=`{${e};((typeof data !== "undefined") ? data : undefined)}`;try{if(!await(n?.call(this,e)??Promise.resolve(!0)))throw new Error(i??"Code execution is not allowed");const o=await this.#m(s,{throwOnSideEffect:t});if(d.StringUtilities.countWtf8Bytes(o)>25e3)throw new Error("Output exceeded the maximum allowed length.");return o}catch(t){return t instanceof g?await this.#x(e,{throwOnSideEffect:!1,confirmExecJs:this.#g,execJsDeniedMesssage:t.message}):`Error: ${t.message}`}}#S=0;async*run(t,n={isFixQuery:!1}){await this.#b();const i="Sorry, I could not help you with this query.",s=[];t=`QUERY: ${t}`;const o=++this.#S;n.signal?.addEventListener("abort",(()=>{this.#u.delete(o)}));for(let a=0;a<10;a++){yield{step:A.QUERYING};const r=R.buildRequest({input:t,preamble:"You are a CSS debugging assistant integrated into Chrome DevTools.\nThe user selected a DOM element in the browser's DevTools and sends a CSS-related\nquery about the selected DOM element. You are going to answer to the query in these steps:\n* THOUGHT\n* ACTION\n* ANSWER\nUse THOUGHT to explain why you take the ACTION.\nUse ACTION to evaluate JavaScript code on the page to gather all the data needed to answer the query and put it inside the data variable - then return STOP.\nYou have access to a special $0 variable referencing the current element in the scope of the JavaScript code.\nOBSERVATION will be the result of running the JS code on the page.\nAfter that, you can answer the question with ANSWER or run another ACTION query.\nPlease run ACTION again if the information you received is not enough to answer the query.\nPlease answer only if you are sure about the answer. Otherwise, explain why you're not able to answer.\nWhen answering, remember to consider CSS concepts such as the CSS cascade, explicit and implicit stacking contexts and various CSS layout types.\nWhen answering, always consider MULTIPLE possible solutions.\n\nIf you need to set inline styles on an HTML element, always call the `async setInlineStyles(el: Element, styles: object)` function.\n\nExample:\nACTION\nconst data = {\n color: window.getComputedStyle($0)['color'],\n backgroundColor: window.getComputedStyle($0)['backgroundColor'],\n}\nSTOP\n\nExample session:\n\nQUERY: Why is this element centered in its container?\nTHOUGHT: Let's check the layout properties of the container.\nACTION\n/* COLLECT_INFORMATION_HERE */\nconst data = {\n /* THE RESULT YOU ARE GOING TO USE AS INFORMATION */\n}\nSTOP\n\nYou will be called again with this:\nOBSERVATION\n/* OBJECT_CONTAINING_YOUR_DATA */\n\nYou then output:\nANSWER: The element is centered on the page because the parent is a flex container with justify-content set to center.\n\nThe example session ends here.",chatHistory:this.#u.size?this.#w:void 0,serverSideLoggingEnabled:this.#p,sessionId:this.#y});let l,c;try{const e=await this.#v(r);l=e.response,c=e.rpcId}catch(e){if(L("Error calling the AIDA API",e),n.signal?.aborted)break;yield{step:A.ERROR,text:i,rpcId:c};break}if(n.signal?.aborted)break;L(`Iteration: ${a}`,"Request",r,"Response",l),s.push({request:structuredClone(r),response:l});const d=this.#u.get(o)??[];this.#u.set(o,[...d,{text:t,entity:e.AidaClient.Entity.USER},{text:l,entity:e.AidaClient.Entity.SYSTEM}]);const{thought:h,action:u,answer:p}=R.parseResponse(l);if(!u){if(p){yield{step:A.ANSWER,text:p,rpcId:c};break}yield{step:A.ERROR,text:i,rpcId:c};break}{h&&(yield{step:A.THOUGHT,text:h,rpcId:c}),L(`Action to execute: ${u}`);const e=await this.#x(u,{throwOnSideEffect:!n.isFixQuery});L(`Action result: ${e}`),yield{step:A.ACTION,code:u,output:e,rpcId:c},t=`OBSERVATION: ${e}`}9===a&&(yield{step:A.ERROR,text:"Max steps reached, please try again."})}O()&&(localStorage.setItem("freestylerStructuredLog",JSON.stringify(s)),window.dispatchEvent(new CustomEvent("freestylerdone")))}}function O(){return Boolean(localStorage.getItem("debugFreestylerEnabled"))}function L(...e){O()&&console.log(...e)}globalThis.setDebugFreestylerEnabled=function(e){e?localStorage.setItem("debugFreestylerEnabled","true"):localStorage.removeItem("debugFreestylerEnabled")};const B=new CSSStyleSheet;B.replaceSync("*{box-sizing:border-box;margin:0;padding:0}:host{width:100%;height:100%;user-select:text;display:flex;flex-direction:column;background-color:var(--sys-color-cdt-base-container)}.chat-ui{width:100%;height:100%;max-height:100%;display:flex;flex-direction:column}.input-form{display:flex;flex-direction:column;padding:var(--sys-size-8) var(--sys-size-4) 0 var(--sys-size-4);max-width:720px;width:100%;margin:0 auto}.chat-input-container{margin:var(--sys-size-3) 0;padding:0 2px;border-radius:4px;border:1px solid var(--sys-color-neutral-outline);width:100%;display:flex;background-color:var(--sys-color-cdt-base-container)}.chat-input{border:0;height:var(--sys-size-11);padding:0 6px;flex-grow:1;color:var(--sys-color-on-surface);background-color:var(--sys-color-cdt-base-container)}.chat-input:focus-visible{outline:none}.chat-input-container:has(.chat-input:focus-visible){outline:1px solid var(--sys-color-primary)}.chat-input::placeholder{color:var(--sys-color-state-disabled)}.chat-input-disclaimer{text-align:center;color:var(--sys-color-on-surface-subtle);margin-bottom:var(--sys-size-4)}.messages-container{margin:var(--sys-size-6) auto 0 auto;max-width:720px;padding:0 var(--sys-size-4)}.messages-scroll-container{overflow:overlay;flex-grow:1}.chat-message{user-select:text;cursor:initial;width:fit-content;padding:8px var(--sys-size-8);font-size:12px;border-radius:var(--sys-size-6);word-break:break-word;&:not(:first-of-type){margin-top:var(--sys-size-6)}&.query{max-width:320px;color:var(--sys-color-on-surface);background:var(--sys-color-surface2);margin-left:auto}&.answer{max-width:440px;color:var(--sys-color-on-surface);background:var(--sys-color-surface2)}& .chat-loading{margin:4px 0;padding:4px 0}& .actions{display:flex;gap:var(--sys-size-8);justify-content:space-between;align-items:flex-end}}.input-header{display:inline-flex;align-items:center;justify-content:space-between;margin-bottom:2px;line-height:20px;& .feedback-icon{width:var(--sys-size-8);height:var(--sys-size-8)}& .header-link-container{display:inline-flex;align-items:center;gap:var(--sys-size-2)}}.link{color:var(--text-link);text-decoration:underline}.select-an-element-text{margin-left:2px}.empty-state-container{display:flex;flex-direction:column;width:100%;height:100%;align-items:center;justify-content:center;gap:4px;font-size:16px;opacity:70%}.action-result{margin:8px 0}.js-code-output{margin-top:-8px;white-space:pre;max-width:100%;overflow:auto;scrollbar-width:none;padding:4px 6px;background-color:var(--sys-color-surface3);color:var(--sys-color-on-surface);font-size:10px;font-family:var(--source-code-font-family)}.error-step{color:var(--sys-color-error)}.side-effect-confirmation{background:var(--color-background);padding:24px;border-radius:var(--sys-size-6);margin-bottom:8px;p{margin:0;margin-bottom:12px;padding:0}}.side-effect-buttons-container{margin-top:8px;devtools-button{margin-top:4px}}.consent-view{padding:24px;text-wrap:pretty;.accept-button{margin-top:8px}ul{padding:0 13px}h2{font-weight:500}}\n/*# sourceURL=./components/freestylerChatUi.css */\n");const F="https://goo.gle/freestyler-dogfood",M="Ask a question about the selected element",j="Chat messages and data from this page will be sent to Google, reviewed by humans, and used to improve the feature. Do not use on pages with personal or sensitive information. AI assistant may display inaccurate information.",U="Send",_="Cancel",H="Select an element",P="How can I help you?",D="This feature is only available when you sign into Chrome with your Google account",z="This feature requires you to turn on Chrome sync",V="Check your internet connection and try again",W="Things to consider",q="Accept",J="This feature uses AI and might produce inaccurate information.",G="Your inputs and the information from the page you are using this feature for are sent to Google.",Y="Do not use on pages with personal or sensitive information.",Q="Data may be seen by human reviewers and can be used to improve this feature.",K="The code contains side effects. Do you wish to continue?",X="Execute",Z="Cancel",ee="Dogfood",te="Send feedback",ne="Fix this issue",ie=t.i18n.lockedString;class se extends c.MarkdownView.MarkdownInsightRenderer{templateForToken(e){if("code"===e.type){const t=e.text.split("\n");"css"===t[0]?.trim()&&(e.lang="css",e.text=t.slice(1).join("\n"))}return super.templateForToken(e)}}class oe extends HTMLElement{static litTagName=s.literal`devtools-freestyler-chat-ui`;#e=this.attachShadow({mode:"open"});#k=new se;#t;constructor(e){super(),this.#t=e}set props(e){this.#t=e,this.#s()}connectedCallback(){this.#e.adoptedStyleSheets=[B],this.#s()}focusTextInput(){const e=this.#e.querySelector(".chat-input");e&&e.focus()}scrollToLastMessage(){const e=this.#e.querySelector(".chat-message:last-child");e&&e.scrollIntoViewIfNeeded()}#r=e=>{e.preventDefault();const t=this.#e.querySelector(".chat-input");t&&t.value&&(this.#t.onTextSubmit(t.value),t.value="")};#C=e=>{e.preventDefault(),this.#t.isLoading&&this.#t.onCancelClick()};#E(e){return s.html`<${$.litTagName}
|
|
42
|
+
.props=${{onFeedbackSubmit:(t,n)=>{this.#t.onFeedbackSubmit(e,t,n)},canShowFeedbackForm:this.#t.canShowFeedbackForm}}
|
|
43
|
+
></${$.litTagName}>`}#T(e){let t=[];try{t=r.Marked.lexer(e);for(const e of t)this.#k.renderToken(e)}catch(t){return s.html`${e}`}return s.html`<${c.MarkdownView.MarkdownView.litTagName}
|
|
44
|
+
.data=${{tokens:t,renderer:this.#k}}>
|
|
45
|
+
</${c.MarkdownView.MarkdownView.litTagName}>`}#$(e){return e.step===A.ACTION?s.html`
|
|
46
|
+
<div class="action-result">
|
|
47
|
+
<${c.CodeBlock.CodeBlock.litTagName}
|
|
48
|
+
.code=${e.code.trim()}
|
|
49
|
+
.codeLang=${"js"}
|
|
50
|
+
.displayToolbar=${!1}
|
|
51
|
+
.displayNotice=${!0}
|
|
52
|
+
></${c.CodeBlock.CodeBlock.litTagName}>
|
|
53
|
+
<div class="js-code-output">${e.output}</div>
|
|
54
|
+
</div>
|
|
55
|
+
`:e.step===A.ERROR?s.html`<p class="error-step">${this.#T(e.text)}</p>`:s.html`<p>${this.#T(e.text)}</p>`}#N(e){return s.html`<div
|
|
56
|
+
class="side-effect-confirmation"
|
|
57
|
+
jslog=${o.section("side-effect-confirmation")}
|
|
58
|
+
>
|
|
59
|
+
<p>${ie(K)}</p>
|
|
60
|
+
<${c.CodeBlock.CodeBlock.litTagName}
|
|
61
|
+
.code=${e.code}
|
|
62
|
+
.codeLang=${"js"}
|
|
63
|
+
.displayToolbar=${!1}
|
|
64
|
+
></${c.CodeBlock.CodeBlock.litTagName}>
|
|
65
|
+
<div class="side-effect-buttons-container">
|
|
66
|
+
<${n.Button.Button.litTagName}
|
|
67
|
+
.data=${{variant:"primary",jslogContext:"accept-execute-code"}}
|
|
68
|
+
@click=${()=>e.onAnswer(!0)}
|
|
69
|
+
>${ie(X)}</${n.Button.Button.litTagName}>
|
|
70
|
+
<${n.Button.Button.litTagName}
|
|
71
|
+
.data=${{variant:"outlined",jslogContext:"decline-execute-code"}}
|
|
72
|
+
@click=${()=>e.onAnswer(!1)}
|
|
73
|
+
>${ie(Z)}</${n.Button.Button.litTagName}>
|
|
74
|
+
</div>
|
|
75
|
+
</div>`}#A=(e,{isLast:t})=>{if("user"===e.entity)return s.html`<div class="chat-message query" jslog=${o.section("question")}>${e.text}</div>`;const i=!this.#t.isLoading&&t&&e.suggestingFix,a=!t||!this.#t.confirmSideEffectDialog&&t,r=this.#t.isLoading&&t&&!this.#t.confirmSideEffectDialog;return s.html`
|
|
76
|
+
<div class="chat-message answer" jslog=${o.section("answer")}>
|
|
77
|
+
${e.steps.map((e=>this.#$(e)))}
|
|
78
|
+
${this.#t.confirmSideEffectDialog&&t?this.#N(this.#t.confirmSideEffectDialog):s.nothing}
|
|
79
|
+
<div class="actions">
|
|
80
|
+
${a&&void 0!==e.rpcId?this.#E(e.rpcId):s.nothing}
|
|
81
|
+
${i?s.html`<${n.Button.Button.litTagName}
|
|
82
|
+
.data=${{variant:"outlined",jslogContext:"fix-this-issue"}}
|
|
83
|
+
@click=${this.#t.onFixThisIssueClick}
|
|
84
|
+
>${ie(ne)}</${n.Button.Button.litTagName}>`:s.nothing}
|
|
85
|
+
</div>
|
|
86
|
+
${r?s.html`<div class="chat-loading">Loading...</div>`:s.nothing}
|
|
87
|
+
</div>
|
|
88
|
+
`};#I=()=>{const e={size:"SMALL",iconName:"select-element",toggledIconName:"select-element",toggleType:"primary-toggle",toggled:this.#t.inspectElementToggled,title:ie(H),jslogContext:"select-element"};return this.#t.selectedNode?s.html`
|
|
89
|
+
<${n.Button.Button.litTagName}
|
|
90
|
+
.data=${{variant:"icon_toggle",...e}}
|
|
91
|
+
@click=${this.#t.onInspectElementClick}
|
|
92
|
+
></${n.Button.Button.litTagName}>
|
|
93
|
+
${s.Directives.until(a.Linkifier.Linkifier.linkify(this.#t.selectedNode))}`:s.html`
|
|
94
|
+
<${n.Button.Button.litTagName}
|
|
95
|
+
.data=${{variant:"text",...e}}
|
|
96
|
+
@click=${this.#t.onInspectElementClick}
|
|
97
|
+
><span class="select-an-element-text">${ie(H)}</span></${n.Button.Button.litTagName}>`};#R=()=>s.html`
|
|
98
|
+
<${l.Icon.Icon.litTagName}
|
|
99
|
+
name="dog-paw"
|
|
100
|
+
class="feedback-icon"
|
|
101
|
+
></${l.Icon.Icon.litTagName}>
|
|
102
|
+
<span>${ie(ee)}</span>
|
|
103
|
+
<span>-</span>
|
|
104
|
+
<x-link href=${"https://goo.gle/freestyler-feedback"}
|
|
105
|
+
class="link"
|
|
106
|
+
jslog=${o.link("freestyler.feedback").track({click:!0})}>${ie(te)}</x-link>`;#O=()=>s.html`
|
|
107
|
+
<div class="messages-scroll-container">
|
|
108
|
+
<div class="messages-container">
|
|
109
|
+
${this.#t.messages.map(((e,t,n)=>this.#A(e,{isLast:n.at(-1)===e})))}
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
`;#L=()=>s.html`<div class="empty-state-container">
|
|
113
|
+
<${l.Icon.Icon.litTagName} name="spark" style="width: 36px; height: 36px;"></${l.Icon.Icon.litTagName}>
|
|
114
|
+
${ie(P)}
|
|
115
|
+
</div>`;#B=()=>{const e="available"===this.#t.aidaAvailability,t=!Boolean(this.#t.selectedNode)||!e||Boolean(this.#t.confirmSideEffectDialog);return s.html`
|
|
116
|
+
<div class="chat-ui">
|
|
117
|
+
${this.#t.messages.length>0?this.#O():this.#L()}
|
|
118
|
+
<form class="input-form" @submit=${this.#r}>
|
|
119
|
+
<div class="input-header">
|
|
120
|
+
<div class="header-link-container">
|
|
121
|
+
${this.#I()}
|
|
122
|
+
</div>
|
|
123
|
+
<div class="header-link-container">
|
|
124
|
+
${this.#R()}
|
|
125
|
+
</div>
|
|
126
|
+
</div>
|
|
127
|
+
<div class="chat-input-container">
|
|
128
|
+
<input type="text" class="chat-input" .disabled=${t}
|
|
129
|
+
placeholder=${function(e){switch(e){case"available":return ie(M);case"no-account-email":return ie(D);case"no-active-sync":return ie(z);case"no-internet":return ie(V)}}(this.#t.aidaAvailability)}
|
|
130
|
+
jslog=${o.textField("query").track({keydown:"Enter"})}
|
|
131
|
+
>${this.#t.isLoading?s.html`
|
|
132
|
+
<${n.Button.Button.litTagName}
|
|
133
|
+
class="step-actions"
|
|
134
|
+
aria-label=${ie(_)}
|
|
135
|
+
@click=${this.#C}
|
|
136
|
+
.data=${{variant:"primary",size:"SMALL",disabled:t,iconName:"stop",title:ie(_),jslogContext:"stop"}}
|
|
137
|
+
></${n.Button.Button.litTagName}>`:s.html`
|
|
138
|
+
<${n.Button.Button.litTagName}
|
|
139
|
+
class="step-actions"
|
|
140
|
+
aria-label=${ie(U)}
|
|
141
|
+
.data=${{type:"submit",variant:"icon",size:"SMALL",disabled:t,iconName:"send",title:ie(U),jslogContext:"send"}}
|
|
142
|
+
></${n.Button.Button.litTagName}>`}
|
|
143
|
+
</div>
|
|
144
|
+
<span class="chat-input-disclaimer">${ie(j)} See <x-link
|
|
145
|
+
class="link"
|
|
146
|
+
href=${F}
|
|
147
|
+
jslog=${o.link("freestyler.dogfood-info").track({click:!0})}
|
|
148
|
+
>dogfood terms</x-link>.</span>
|
|
149
|
+
</form>
|
|
150
|
+
</div>
|
|
151
|
+
`};#F=()=>s.html`
|
|
152
|
+
<div class="consent-view">
|
|
153
|
+
<h2 tabindex="-1">
|
|
154
|
+
${ie(W)}
|
|
155
|
+
</h2>
|
|
156
|
+
<main>
|
|
157
|
+
${ie(J)}
|
|
158
|
+
<ul>
|
|
159
|
+
<li>${ie(G)}</li>
|
|
160
|
+
<li>${ie(Q)}</li>
|
|
161
|
+
<li>${ie(Y)}</li>
|
|
162
|
+
<li>See <x-link
|
|
163
|
+
class="link"
|
|
164
|
+
href=${F}
|
|
165
|
+
jslog=${o.link("freestyler.dogfood-info").track({click:!0})}
|
|
166
|
+
>dogfood terms</x-link>.</li>
|
|
167
|
+
</ul>
|
|
168
|
+
<${n.Button.Button.litTagName}
|
|
169
|
+
class="accept-button"
|
|
170
|
+
@click=${this.#t.onAcceptConsentClick}
|
|
171
|
+
.data=${{variant:"primary",jslogContext:"accept"}}
|
|
172
|
+
>${ie(q)}</${n.Button.Button.litTagName}>
|
|
173
|
+
</main>
|
|
174
|
+
</div>
|
|
175
|
+
`;#s(){switch(this.#t.state){case"chat-view":s.render(this.#B(),this.#e,{host:this});break;case"consent-view":s.render(this.#F(),this.#e,{host:this})}}}const ae={MarkdownRendererWithCodeBlock:se};customElements.define("devtools-freestyler-chat-ui",oe);const re=new CSSStyleSheet;re.replaceSync(".freestyler-toolbar-container{display:flex;background-color:var(--sys-color-cdt-base-container);border-bottom:1px solid var(--sys-color-divider);flex:0 0 auto;justify-content:space-between}.freestyler-chat-ui-container{display:flex;flex-direction:column;width:100%;height:100%;align-items:center;overflow:hidden}\n/*# sourceURL=./freestylerPanel.css */\n");const le="Clear messages",ce="Send feedback",de="You stopped this response",he=t.i18n.lockedString;function ue(e,t,n){s.render(s.html`
|
|
176
|
+
<${oe.litTagName} .props=${e} ${s.Directives.ref((e=>{e&&e instanceof oe&&(t.freestylerChatUi=e)}))}></${oe.litTagName}>
|
|
177
|
+
`,n,{host:e})}let pe;class ge extends u.Panel.Panel{view;static panelName="freestyler";#M;#j;#U;#h;#_;#H;#P={};#p=function(){return"true"===localStorage.getItem("freestyler_enableServerSideLogging")}();#D=a.Settings.Settings.instance().createLocalSetting("freestyler-dogfood-consent-onboarding-finished",!1);constructor(t=ue,{aidaClient:n,aidaAvailability:i}){super(ge.panelName),this.view=t,function(t,{onClearClick:n}){const i=t.createChild("div","freestyler-toolbar-container"),s=new u.Toolbar.Toolbar("",i),o=new u.Toolbar.Toolbar("freestyler-right-toolbar",i),a=new u.Toolbar.ToolbarButton(he(le),"clear",void 0,"freestyler.clear");a.addEventListener("Click",n),s.appendToolbarItem(a),o.appendSeparator();const r=new u.Toolbar.ToolbarButton(he(ce),"help",void 0,"freestyler.feedback");r.addEventListener("Click",(()=>{e.InspectorFrontendHost.InspectorFrontendHostInstance.openInNewTab(F)})),o.appendToolbarItem(r)}(this.contentElement,{onClearClick:this.#z.bind(this)}),this.#M=u.ActionRegistry.ActionRegistry.instance().getAction("elements.toggle-element-search"),this.#h=n,this.#U=this.contentElement.createChild("div","freestyler-chat-ui-container"),this.#j=u.Context.Context.instance().flavor(h.DOMModel.DOMNode),this.#H={state:this.#D.get()?"chat-view":"consent-view",aidaAvailability:i,messages:[],inspectElementToggled:this.#M.toggled(),selectedNode:this.#j,isLoading:!1,onTextSubmit:this.#V.bind(this),onInspectElementClick:this.#W.bind(this),onFeedbackSubmit:this.#q.bind(this),onAcceptConsentClick:this.#J.bind(this),onCancelClick:this.#G.bind(this),onFixThisIssueClick:()=>{this.#V(N,!0)},canShowFeedbackForm:this.#p},this.#M.addEventListener("Toggled",(e=>{this.#H.inspectElementToggled=e.data,this.doUpdate()})),this.#_=this.#Y(),u.Context.Context.instance().addFlavorChangeListener(h.DOMModel.DOMNode,(e=>{this.#H.selectedNode!==e.data&&(this.#H.selectedNode=e.data,this.doUpdate())})),this.doUpdate()}#Y(){return new R({aidaClient:this.#h,serverSideLoggingEnabled:this.#p,confirmSideEffect:this.showConfirmSideEffectUi.bind(this)})}static async instance(t={forceNew:null}){const{forceNew:n}=t;if(!pe||n){const t=await e.AidaClient.AidaClient.checkAccessPreconditions(),n=new e.AidaClient.AidaClient;pe=new ge(ue,{aidaClient:n,aidaAvailability:t})}return pe}wasShown(){this.registerCSSFiles([re]),this.#P.freestylerChatUi?.focusTextInput()}doUpdate(){this.view(this.#H,this.#P,this.#U)}async showConfirmSideEffectUi(e){const t=d.PromiseUtilities.promiseWithResolvers();this.#H.confirmSideEffectDialog={code:e,onAnswer:e=>t.resolve(e)},this.doUpdate();const n=await t.promise;return this.#H.confirmSideEffectDialog=void 0,this.doUpdate(),n}#W(){this.#M.execute()}#q(e,t,n){this.#h.registerClientEvent({corresponding_aida_rpc_global_id:e,disable_user_content_logging:!this.#p,do_conversation_client_event:{user_feedback:{sentiment:t,user_input:{comment:n}}}})}#J(){this.#D.set(!0),this.#H.state="chat-view",this.doUpdate()}handleAction(t){switch(t){case"freestyler.element-panel-context":e.userMetrics.actionTaken(e.UserMetrics.Action.FreestylerOpenedFromElementsPanel),this.doUpdate();break;case"freestyler.style-tab-context":e.userMetrics.actionTaken(e.UserMetrics.Action.FreestylerOpenedFromStylesTab),this.doUpdate()}}#z(){this.#H.messages=[],this.#H.isLoading=!1,this.#H.confirmSideEffectDialog=void 0,this.#_=this.#Y(),this.#G(),this.doUpdate()}#Q=new AbortController;#G(){this.#Q.abort(),this.#Q=new AbortController,this.#H.isLoading=!1,this.doUpdate()}async#V(e,t=!1){this.#H.messages.push({entity:"user",text:e}),this.#H.isLoading=!0;const n=!t;let i={entity:"model",suggestingFix:n,steps:[]};this.doUpdate(),this.#Q=new AbortController;const s=this.#Q.signal;s.addEventListener("abort",(()=>{i.rpcId=void 0,i.suggestingFix=!1,i.steps.push({step:A.ERROR,text:he(de)})}));for await(const o of this.#_.run(e,{signal:s,isFixQuery:t}))o.step!==A.QUERYING?(o.step!==A.ANSWER&&o.step!==A.ERROR||(this.#H.isLoading=!1),o.step===A.ERROR&&(i.suggestingFix=!1),i.rpcId=o.rpcId,i.steps.push(o),this.doUpdate(),this.#P.freestylerChatUi?.scrollToLastMessage()):(i={entity:"model",suggestingFix:n,steps:[]},this.#H.messages.push(i),this.doUpdate(),this.#P.freestylerChatUi?.scrollToLastMessage())}}class me{handleAction(e,t){switch(t){case"freestyler.element-panel-context":case"freestyler.style-tab-context":return(async()=>{const e=u.ViewManager.ViewManager.instance().view(ge.panelName);if(e){await u.ViewManager.ViewManager.instance().showView(ge.panelName);(await e.widget()).handleAction(t)}})(),!0}return!1}}globalThis.setFreestylerServerSideLoggingEnabled=function(e){e?localStorage.setItem("freestyler_enableServerSideLogging","true"):localStorage.removeItem("freestyler_enableServerSideLogging")};export{me as ActionDelegate,F as DOGFOOD_INFO,p as ExecutionError,N as FIX_THIS_ISSUE_PROMPT,ae as FOR_TEST,R as FreestylerAgent,oe as FreestylerChatUi,f as FreestylerEvaluateAction,ge as FreestylerPanel,$ as ProvideFeedback,g as SideEffectError,A as Step};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import*as e from"../../../ui/lit-html/lit-html.js";import*as t from"../../../ui/visual_logging/visual_logging.js";import*as n from"../../../core/common/common.js";import*as o from"../../../core/i18n/i18n.js";import*as s from"../../../ui/components/buttons/buttons.js";import*as i from"../../../ui/legacy/legacy.js";const l=new CSSStyleSheet;l.replaceSync(".element-reveal-icon{display:inline-block;width:20px;height:20px;mask-image:var(--image-file-select-element);background-color:var(--icon-default)}\n/*# sourceURL=./elementsPanelLink.css */\n");class a extends HTMLElement{static litTagName=e.literal`devtools-elements-panel-link`;#e=this.attachShadow({mode:"open"});#t=()=>{};#n=()=>{};#o=()=>{};set data(e){this.#t=e.onElementRevealIconClick,this.#n=e.onElementRevealIconMouseEnter,this.#o=e.onElementRevealIconMouseLeave,this.#s()}#s(){this.#i()}connectedCallback(){this.#e.adoptedStyleSheets=[l]}#i(){e.render(e.html`
|
|
2
|
+
<span
|
|
3
|
+
class="element-reveal-icon"
|
|
4
|
+
jslog=${t.link("elements-panel").track({click:!0})}
|
|
5
|
+
@click=${this.#t}
|
|
6
|
+
@mouseenter=${this.#n}
|
|
7
|
+
@mouseleave=${this.#o}></span>
|
|
8
|
+
`,this.#e,{host:this})}}customElements.define("devtools-elements-panel-link",a);var c=Object.freeze({__proto__:null,ElementsPanelLink:a});const m=new CSSStyleSheet;m.replaceSync(".hide-issues-menu-btn{position:relative;display:flex;background-color:transparent;flex:none;align-items:center;justify-content:center;padding:0;margin:0 -2px 0 4px;overflow:hidden;border-radius:0;border:none;&:hover > devtools-icon{color:var(--icon-default-hover)}}\n/*# sourceURL=./hideIssuesMenu.css */\n");const r={tooltipTitle:"Hide issues"},d=o.i18n.registerUIStrings("panels/issues/components/HideIssuesMenu.ts",r),u=o.i18n.getLocalizedString.bind(void 0,d);class h extends HTMLElement{static litTagName=e.literal`devtools-hide-issues-menu`;#e=this.attachShadow({mode:"open"});#l=n.UIString.LocalizedEmptyString;#a=()=>{};set data(e){this.#l=e.menuItemLabel,this.#a=e.menuItemAction,this.#i()}connectedCallback(){this.#e.adoptedStyleSheets=[m]}onMenuOpen(e){e.stopPropagation();const t=this.#e.querySelector("button"),n=new i.ContextMenu.ContextMenu(e,{x:t?.getBoundingClientRect().left,y:t?.getBoundingClientRect().bottom});n.headerSection().appendItem(this.#l,(()=>this.#a()),{jslogContext:"toggle-similar-issues"}),n.show()}#i(){e.render(e.html`
|
|
9
|
+
<${s.Button.Button.litTagName}
|
|
10
|
+
.data=${{variant:"icon",iconName:"dots-vertical",title:u(r.tooltipTitle)}}
|
|
11
|
+
.jslogContext=${t.dropDown("hide-issues").track({click:!0})}
|
|
12
|
+
class="hide-issues-menu-btn"
|
|
13
|
+
@click=${this.onMenuOpen.bind(this)}></${s.Button.Button.litTagName}>
|
|
14
|
+
`,this.#e,{host:this})}}customElements.define("devtools-hide-issues-menu",h);var p=Object.freeze({__proto__:null,HideIssuesMenu:h});export{c as ElementsPanelLink,p as HideIssuesMenu};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../core/common/common.js";import*as t from"../../models/issues_manager/issues_manager.js";import*as s from"../../ui/legacy/legacy.js";import*as i from"../../core/i18n/i18n.js";import*as n from"../../ui/components/issue_counter/issue_counter.js";import*as r from"../../ui/visual_logging/visual_logging.js";import*as a from"../../ui/components/adorners/adorners.js";import*as o from"../../ui/components/icon_button/icon_button.js";import*as d from"./components/components.js";import*as l from"../../core/host/host.js";import*as c from"../network/forward/forward.js";import*as u from"../../ui/components/markdown_view/markdown_view.js";import*as p from"../../core/sdk/sdk.js";import*as h from"../../models/logs/logs.js";import*as g from"../../ui/components/request_link_icon/request_link_icon.js";import*as f from"../../ui/legacy/components/utils/utils.js";import*as m from"../../core/platform/platform.js";class C extends t.Issue.Issue{#e=new Map;#t=new Map;#s=new Map;#i=new Map;#n=new Set;#r=new Map;#a=new Set;#o=new Set;#d=new Set;#l=new Set;#c="Improvement";#u=new Set;#p=new Set;#h=new Set;#g=new Set;#f=new Set;#m=new Set;#C=new Set;#I;#w=0;#k;constructor(e,t){super(e),this.#k=t}primaryKey(){throw new Error("This should never be called")}aggregationKey(){return this.#k}getBlockedByResponseDetails(){return this.#r.values()}cookies(){return Array.from(this.#e.values()).map((e=>e.cookie))}getRawCookieLines(){return this.#t.values()}sources(){return this.#i.values()}getBounceTrackingSites(){return this.#a.values()}cookiesWithRequestIndicator(){return this.#e.values()}getHeavyAdIssues(){return this.#n}getCookieDeprecationMetadataIssues(){return this.#p}getMixedContentIssues(){return this.#h}getCorsIssues(){return this.#o}getCspIssues(){return this.#d}getDeprecationIssues(){return this.#l}getLowContrastIssues(){return this.#u}requests(){return this.#s.values()}getSharedArrayBufferIssues(){return this.#g}getQuirksModeIssues(){return this.#f}getAttributionReportingIssues(){return this.#m}getGenericIssues(){return this.#C}getDescription(){return this.#I?this.#I.getDescription():null}getCategory(){return this.#I?this.#I.getCategory():"Other"}getAggregatedIssuesCount(){return this.#w}#y(e){const{domain:t,path:s,name:i}=e;return`${t};${s};${i}`}addInstance(e){this.#w++,this.#I||(this.#I=e),this.#c=t.Issue.unionIssueKind(this.#c,e.getKind());let s=!1;for(const t of e.requests())s=!0,this.#s.has(t.requestId)||this.#s.set(t.requestId,t);for(const t of e.cookies()){const e=this.#y(t);this.#e.has(e)||this.#e.set(e,{cookie:t,hasRequest:s})}for(const t of e.rawCookieLines())this.#t.has(t)||this.#t.set(t,{rawCookieLine:t,hasRequest:s});for(const t of e.trackingSites())this.#a.has(t)||this.#a.add(t);for(const t of e.sources()){const e=JSON.stringify(t);this.#i.has(e)||this.#i.set(e,t)}e instanceof t.CookieDeprecationMetadataIssue.CookieDeprecationMetadataIssue&&this.#p.add(e),e instanceof t.MixedContentIssue.MixedContentIssue&&this.#h.add(e),e instanceof t.HeavyAdIssue.HeavyAdIssue&&this.#n.add(e);for(const t of e.getBlockedByResponseDetails()){const e=JSON.stringify(t,["parentFrame","blockedFrame","requestId","frameId","reason","request"]);this.#r.set(e,t)}e instanceof t.ContentSecurityPolicyIssue.ContentSecurityPolicyIssue&&this.#d.add(e),e instanceof t.DeprecationIssue.DeprecationIssue&&this.#l.add(e),e instanceof t.SharedArrayBufferIssue.SharedArrayBufferIssue&&this.#g.add(e),e instanceof t.LowTextContrastIssue.LowTextContrastIssue&&this.#u.add(e),e instanceof t.CorsIssue.CorsIssue&&this.#o.add(e),e instanceof t.QuirksModeIssue.QuirksModeIssue&&this.#f.add(e),e instanceof t.AttributionReportingIssue.AttributionReportingIssue&&this.#m.add(e),e instanceof t.GenericIssue.GenericIssue&&this.#C.add(e)}getKind(){return this.#c}isHidden(){return this.#I?.isHidden()||!1}setHidden(e){throw new Error("Should not call setHidden on aggregatedIssue")}}class I extends e.ObjectWrapper.ObjectWrapper{issuesManager;#v=new Map;#b=new Map;constructor(e){super(),this.issuesManager=e,this.issuesManager.addEventListener("IssueAdded",this.#R,this),this.issuesManager.addEventListener("FullUpdateRequired",this.#A,this);for(const e of this.issuesManager.issues())this.#S(e)}#R(e){this.#S(e.data.issue)}#A(){this.#v.clear(),this.#b.clear();for(const e of this.issuesManager.issues())this.#S(e);this.dispatchEventToListeners("FullUpdateRequired")}#S(e){const t=e.isHidden()?this.#b:this.#v,s=this.#x(t,e);return this.dispatchEventToListeners("AggregatedIssueUpdated",s),s}#x(e,t){const s=t.code();let i=e.get(s);return i||(i=new C(t.code(),s),e.set(s,i)),i.addInstance(t),i}aggregatedIssues(){return[...this.#v.values(),...this.#b.values()]}hiddenAggregatedIssues(){return this.#b.values()}aggregatedIssueCodes(){return new Set([...this.#v.keys(),...this.#b.keys()])}aggregatedIssueCategories(){const e=new Set;for(const t of this.#v.values())e.add(t.getCategory());return e}aggregatedIssueKinds(){const e=new Set;for(const t of this.#v.values())e.add(t.getKind());return e}numberOfAggregatedIssues(){return this.#v.size}numberOfHiddenAggregatedIssues(){return this.#b.size}keyForIssue(e){return e.code()}}var w=Object.freeze({__proto__:null,AggregatedIssue:C,IssueAggregator:I});const k={hiddenIssues:"Hidden issues",unhideAll:"Unhide all"},y=i.i18n.registerUIStrings("panels/issues/HiddenIssuesRow.ts",k),v=i.i18n.getLocalizedString.bind(void 0,y);class b extends s.TreeOutline.TreeElement{#T;constructor(){super(void 0,!0),this.#T=document.createElement("span"),this.toggleOnClick=!0,this.listItemElement.classList.add("issue-category","hidden-issues"),this.childrenListElement.classList.add("hidden-issues-body"),this.#E()}#E(){const e=s.UIUtils.createTextButton(v(k.unhideAll),(()=>t.IssuesManager.IssuesManager.instance().unhideAllIssues()),{className:"unhide-all-issues-button",jslogContext:"issues.unhide-all-hiddes"}),i=new a.Adorner.Adorner;i.data={name:"countWrapper",content:this.#T},i.classList.add("aggregated-issues-count"),this.#T.textContent="0";const n=document.createElement("div"),r=document.createElement("div");n.classList.add("header"),r.classList.add("title"),r.textContent=v(k.hiddenIssues),n.appendChild(i),n.appendChild(r),n.appendChild(e),this.listItemElement.appendChild(n)}update(e){this.#T.textContent=`${e}`}}const R={hideAllCurrentPageErrors:"Hide all current Page Errors",hideAllCurrentBreakingChanges:"Hide all current Breaking Changes",hideAllCurrentImprovements:"Hide all current Improvements"},A=i.i18n.registerUIStrings("panels/issues/IssueKindView.ts",R),S=i.i18n.getLocalizedString.bind(void 0,A);function x(){return e.Settings.Settings.instance().createSetting("group-issues-by-kind",!1)}class T extends s.TreeOutline.TreeElement{#L;#M;constructor(e){super(void 0,!0),this.#L=e,this.#M=document.createElement("span"),this.toggleOnClick=!0,this.listItemElement.classList.add("issue-kind"),this.listItemElement.classList.add(function(e){switch(e){case"BreakingChange":return"breaking-changes";case"Improvement":return"improvements";case"PageError":return"page-errors"}}(e)),this.childrenListElement.classList.add("issue-kind-body")}getKind(){return this.#L}getHideAllCurrentKindString(){switch(this.#L){case"PageError":return S(R.hideAllCurrentPageErrors);case"Improvement":return S(R.hideAllCurrentImprovements);case"BreakingChange":return S(R.hideAllCurrentBreakingChanges)}}#E(){const e=document.createElement("div");e.classList.add("header");const s=new o.Icon.Icon;s.data=n.IssueCounter.getIssueKindIconData(this.#L),s.classList.add("leading-issue-icon");const i=new a.Adorner.Adorner;i.data={name:"countWrapper",content:this.#M},i.classList.add("aggregated-issues-count"),this.#M.textContent="0";const r=document.createElement("div");r.classList.add("title"),r.textContent=t.Issue.getIssueKindName(this.#L);const l=new d.HideIssuesMenu.HideIssuesMenu;l.classList.add("hide-available-issues"),l.data={menuItemLabel:this.getHideAllCurrentKindString(),menuItemAction:()=>{const e=t.IssuesManager.getHideIssueByCodeSetting(),s=e.get();for(const e of t.IssuesManager.IssuesManager.instance().issues())e.getKind()===this.#L&&(s[e.code()]="Hidden");e.set(s)}},e.appendChild(s),e.appendChild(i),e.appendChild(r),e.appendChild(l),this.listItemElement.appendChild(e)}onattach(){this.#E(),this.expand()}update(e){this.#M.textContent=`${e}`}}const E=new CSSStyleSheet;E.replaceSync(".issues-pane{overflow:hidden}.issues-pane-no-issues{align-items:center;background-color:var(--sys-color-cdt-base-container);display:flex;flex:1 1 auto;font-size:14px;justify-content:center;padding:30px}.issues-toolbar-container{display:flex;flex:none}.issues-toolbar-container > .toolbar{background-color:var(--sys-color-cdt-base-container);border-bottom:1px solid var(--sys-color-divider)}.issues-toolbar-left{flex:1 1 auto}.issues-toolbar-right{padding-right:6px}\n/*# sourceURL=issuesPane.css */\n");const L=new CSSStyleSheet;L.replaceSync(':host,\n.issues{padding:0;overflow:auto}.issues{--issue-indent:8px}.issues li{white-space:normal;align-items:flex-start;min-height:var(--sys-size-13)}.issues .always-parent::before{display:none}.issues li.parent::before{margin-top:10px}.issues .affected-resources li.parent::before{margin-top:3px;margin-right:0}.issue-category,\n.issue-kind,\n.issue{padding:0 8px;padding-left:var(--issue-indent);overflow:hidden;flex:none;transition:background-color 200ms;border:1px solid var(--sys-color-divider);border-width:0 0 1px}.issue-category.hidden-issues.parent.expanded,\n.issue-kind.parent.expanded{border-width:0 0 1px;background-color:var(--sys-color-surface2)}.issue-category + .children .issue,\n.issue.expanded{background:var(--sys-color-cdt-base-container)}.issue.expanded{border-width:0}.issue.selected,\n.issue.expanded.selected{background-color:var(--sys-color-surface2);&:focus{background-color:var(--sys-color-tonal-container)}}.tree-outline li:not(.selected):hover .selection{background-color:unset}.tree-outline li.issue:not(.expanded):not(.selected):hover .selection{background-color:var(--sys-color-state-hover-on-subtle)}.tree-outline li.issue.expanded:not(.selected):hover{background-color:var(--sys-color-state-hover-on-subtle)}.unhide-all-issues-button{margin:0}p{margin-block-start:2px;margin-block-end:2px}.tree-outline-disclosure:not(.tree-outline-disclosure-hide-overflow) .tree-outline.hide-selection-when-blurred .issue-category.selected:focus-visible,\n.tree-outline-disclosure:not(.tree-outline-disclosure-hide-overflow) .tree-outline.hide-selection-when-blurred .issue-kind.selected:focus-visible,\n.tree-outline-disclosure:not(.tree-outline-disclosure-hide-overflow) .tree-outline.hide-selection-when-blurred .issue.selected:focus-visible{width:auto;padding-right:8px}.header{display:flex;flex-direction:row;align-items:flex-start;padding:4px 0;cursor:pointer;width:100%;& > :not(.unhide-all-issues-button){margin-top:var(--sys-size-2)}}.header devtools-hide-issues-menu{visibility:hidden}.header:hover devtools-hide-issues-menu,\n.issue.selected devtools-hide-issues-menu{visibility:visible}.title{flex:1;font-size:12px;color:var(--sys-color-on-surface);font-weight:normal;user-select:text;padding-top:2px}.issue.expanded .title{font-weight:450}.body.children{border-bottom:1px solid var(--sys-color-divider);padding:6px 0;position:relative;padding-left:calc(var(--issue-indent) + 43px);padding-bottom:26px;padding-right:8px}.issue-category + .children,\n.issue-kind + .children{--issue-indent:24px;padding-left:0}.body::before{content:"";display:block;position:absolute;left:calc(var(--issue-indent) + 23px);top:0;bottom:20px;width:2px}.issue-kind-breaking-change.body::before{border-left:2px solid var(--issue-color-yellow)}.issue-kind-page-error.body::before{border-left:2px solid var(--issue-color-red)}.issue-kind-improvement.body::before{border-left:2px solid var(--issue-color-blue)}devtools-icon.leading-issue-icon{margin:1px 0 -1px 7px}.message{line-height:18px;font-size:12px;color:var(--sys-color-token-subtle);margin-bottom:4px;user-select:text}.message p{margin-bottom:16px}.message li{margin-top:8px}.message code{color:var(--sys-color-on-surface);padding:0 2px;font-size:12px;user-select:text;cursor:text;background:var(--sys-color-surface2)}.separator::before{content:"·";padding-left:1ex;padding-right:1ex}.link{font-size:12px;color:var(--sys-color-primary)}.link-wrapper{margin-top:15px;user-select:text}.affected-resources-label,\n.resolutions-label{margin-top:5px;font-size:10px;font-weight:500;letter-spacing:0.06em;text-transform:uppercase;color:var(--sys-color-on-surface);display:inline-block}.link-list{list-style-type:none;list-style-position:inside;padding-inline-start:0}.resolutions-list{list-style-type:none;list-style-position:inside;padding-inline-start:0}.link-list li::before{content:none;mask-image:none}.resolutions-list li::before{content:"→";mask-image:none;padding-right:5px;position:relative;top:-1px}.resolutions-list li{display:list-item}ul > li.plain-enum{display:list-item}ul > li.plain-enum::before{content:"";padding:0;margin:0;max-width:0}.affected-resources-label + .affected-resources{padding:3px 0 0;position:relative;user-select:text}.affected-resource-label{font-size:12px;line-height:18px;color:var(--sys-color-on-surface);position:relative;cursor:pointer}.affected-resource-cookie{font-size:12px;line-height:18px;border:0;border-collapse:collapse}.affected-resource-element{font-size:12px;line-height:18px;color:var(--sys-color-primary);border:0;border-collapse:collapse}.affected-resource-row{font-size:12px;line-height:18px;border:0;border-collapse:collapse;vertical-align:top}.affected-resource-mixed-content{font-size:12px;line-height:18px;border:0;border-collapse:collapse}.affected-resource-heavy-ad{font-size:12px;line-height:18px;border:0;border-collapse:collapse}.affected-resource-request{font-size:12px;line-height:18px;border:0;border-collapse:collapse}.affected-resource-source{font-size:12px;line-height:18px;color:var(--sys-color-primary);border:0;border-collapse:collapse}.affected-resource-list{border-spacing:10px 0;margin-left:-12px}.affected-resource-header{font-size:12px;color:var(--sys-color-on-surface);padding-left:2px}.code-example{font-family:var(--monospace-font-family);font-size:var(--monospace-font-size)}.affected-resource-blocked-status{color:var(--issue-color-red)}.affected-resource-report-only-status{color:var(--issue-color-yellow)}.affected-resource-cookie-info{color:var(--sys-color-token-subtle);padding:2px;text-align:right}.affected-resource-cookie-info-header{text-align:right}.affected-resource-mixed-content-info{color:var(--sys-color-token-subtle);padding:2px}.affected-resource-heavy-ad-info{color:var(--sys-color-token-subtle);padding:2px}.affected-resource-heavy-ad-info-frame{display:flex;align-items:center;color:var(--sys-color-token-subtle);padding:2px}.affected-resource-cell{color:var(--sys-color-token-subtle);padding:2px}.affected-resource-cell.link{color:var(--sys-color-primary)}.affected-resource-cell span.icon{margin-right:0.5ex;vertical-align:sub}.affected-resources > .parent{margin-top:0;padding:2px 5px 0}.affected-resources > .parent.expanded{background:var(--sys-color-cdt-base-container)}.affected-resources > .children.expanded{background:var(--sys-color-cdt-base-container);padding:6px 0 9px 5px}.aggregated-issues-count{padding:3px 7px 0}.affected-resource-directive-info-header{text-align:left}.affected-resource-directive{font-size:12px;line-height:18px;border:0;border-collapse:collapse}.affected-resource-directive-info{color:var(--sys-color-token-subtle);padding:2px;text-align:left}.devtools-link{padding-top:4px}devtools-icon.link-icon{vertical-align:sub;margin-right:0.5ch}devtools-icon.elements-panel,\ndevtools-icon.network-panel{margin-right:0.5ex;vertical-align:baseline;height:14px}@media (forced-colors: active){.title{color:ButtonText}.tree-outline:not(.hide-selection-when-blurred) .selected .header .title,\n .tree-outline.hide-selection-when-blurred .selected:focus-visible .header .title{color:HighlightText}}\n/*# sourceURL=issuesTree.css */\n');const M={unknown:"unknown",clickToRevealTheFramesDomNodeIn:"Click to reveal the frame's DOM node in the Elements panel",unavailable:"unavailable"},P=i.i18n.registerUIStrings("panels/issues/AffectedResourcesView.ts",M),D=i.i18n.getLocalizedString.bind(void 0,P);class q extends s.TreeOutline.TreeElement{#P;issue;affectedResourcesCountElement;affectedResources;#D;#q;#O;requestResolver;constructor(e,t,s){super(void 0,void 0,s),this.#P=e,this.issue=t,this.toggleOnClick=!0,this.affectedResourcesCountElement=this.createAffectedResourcesCounter(),this.affectedResources=this.createAffectedResources(),this.#D=0,this.requestResolver=new h.RequestResolver.RequestResolver,this.#q=[],this.#O=new Set}setIssue(e){this.issue=e}createAffectedResourcesCounter(){const e=document.createElement("div");return e.classList.add("affected-resource-label"),this.listItemElement.appendChild(e),e}createAffectedResources(){const e=new s.TreeOutline.TreeElement,t=document.createElement("table");return t.classList.add("affected-resource-list"),e.listItemElement.appendChild(t),this.appendChild(e),t}updateAffectedResourceCount(e){this.#D=e,this.affectedResourcesCountElement.textContent=this.getResourceNameWithCount(e),this.hidden=0===this.#D,this.#P.updateAffectedResourceVisibility()}isEmpty(){return 0===this.#D}clear(){this.affectedResources.textContent="",this.requestResolver.clear()}expandIfOneResource(){1===this.#D&&this.expand()}#V(e){const t=p.FrameManager.FrameManager.instance().getFrame(e);if(!(t&&t.url||(this.#O.add(e),this.#q.length))){const e=p.FrameManager.FrameManager.instance().addEventListener("FrameAddedToTarget",this.#H,this),t=p.FrameManager.FrameManager.instance().addEventListener("FrameNavigated",this.#H,this);this.#q=[e,t]}return t}#H(t){const s=t.data.frame;if(!s.url)return;const i=this.#O.delete(s.id);0===this.#O.size&&this.#q.length&&(e.EventTarget.removeEventListeners(this.#q),this.#q=[]),i&&this.update()}createFrameCell(t,s){const i=this.#V(t),n=i&&(i.unreachableUrl()||i.url)||D(M.unknown),r=document.createElement("td");if(r.classList.add("affected-resource-cell"),i){const i=new o.Icon.Icon;i.data={iconName:"code-circle",color:"var(--icon-link)",width:"16px",height:"16px"},i.classList.add("link","elements-panel"),i.onclick=async()=>{l.userMetrics.issuesPanelResourceOpened(s,"Element");const i=p.FrameManager.FrameManager.instance().getFrame(t);if(i){const t=await i.getOwnerDOMNodeOrDocument();t&&e.Revealer.reveal(t)}},i.title=D(M.clickToRevealTheFramesDomNodeIn),r.appendChild(i)}return r.appendChild(document.createTextNode(n)),r.onmouseenter=()=>{const e=p.FrameManager.FrameManager.instance().getFrame(t);e&&e.highlight()},r.onmouseleave=()=>p.OverlayModel.OverlayModel.hideDOMNodeHighlight(),r}createRequestCell(e,t={}){const s=document.createElement("td");s.classList.add("affected-resource-cell");const i=new g.RequestLinkIcon.RequestLinkIcon;return i.data={...t,affectedRequest:e,requestResolver:this.requestResolver,displayURL:!0},s.appendChild(i),s}async createElementCell({backendNodeId:t,nodeName:s,target:i},n){if(!i){const e=document.createElement("td");return e.textContent=s||D(M.unavailable),e}function r(){l.userMetrics.issuesPanelResourceOpened(n,"Element")}const a=new p.DOMModel.DeferredDOMNode(i,t),o=await e.Linkifier.Linkifier.linkify(a);o.textContent=s,o.addEventListener("click",(()=>r())),o.addEventListener("keydown",(e=>{"Enter"===e.key&&r()}));const d=document.createElement("td");return d.classList.add("affected-resource-element","devtools-link"),d.appendChild(o),d}appendSourceLocation(e,t,s){const i=document.createElement("td");if(i.classList.add("affected-source-location"),t){const e=40,n=new f.Linkifier.Linkifier(e).linkifyScriptLocation(s||null,t.scriptId||null,t.url,t.lineNumber,{columnNumber:t.columnNumber,inlineFrameIndex:0});n.setAttribute("jslog",`${r.link("source-location").track({click:!0})}`),i.appendChild(n)}e.appendChild(i)}appendColumnTitle(e,t,s=null){const i=document.createElement("td");i.classList.add("affected-resource-header"),s&&i.classList.add(s),i.textContent=t,e.appendChild(i)}createIssueDetailCell(e,t=null){const s=document.createElement("td");return"string"==typeof e?s.textContent=e:s.appendChild(e),t&&s.classList.add(t),s}appendIssueDetailCell(e,t,s=null){const i=this.createIssueDetailCell(t,s);return e.appendChild(i),i}}const O={nRequests:"{n, plural, =1 {# request} other {# requests}}",requestC:"Request",parentFrame:"Parent Frame",blockedResource:"Blocked Resource"},V=i.i18n.registerUIStrings("panels/issues/AffectedBlockedByResponseView.ts",O),H=i.i18n.getLocalizedString.bind(void 0,V);class U extends q{#U(e){const t=document.createElement("tr");this.appendColumnTitle(t,H(O.requestC)),this.appendColumnTitle(t,H(O.parentFrame)),this.appendColumnTitle(t,H(O.blockedResource)),this.affectedResources.appendChild(t);let s=0;for(const t of e)this.#N(t),s++;this.updateAffectedResourceCount(s)}getResourceNameWithCount(e){return H(O.nRequests,{n:e})}#N(e){const t=document.createElement("tr");t.classList.add("affected-resource-row");const s=this.createRequestCell(e.request,{additionalOnClickAction(){l.userMetrics.issuesPanelResourceOpened("CrossOriginEmbedderPolicy","Request")}});if(t.appendChild(s),e.parentFrame){const s=this.createFrameCell(e.parentFrame.frameId,this.issue.getCategory());t.appendChild(s)}else t.appendChild(document.createElement("td"));if(e.blockedFrame){const s=this.createFrameCell(e.blockedFrame.frameId,this.issue.getCategory());t.appendChild(s)}else t.appendChild(document.createElement("td"));this.affectedResources.appendChild(t)}update(){this.clear(),this.#U(this.issue.getBlockedByResponseDetails())}}const N={nCookies:"{n, plural, =1 {# cookie} other {# cookies}}",name:"Name",domain:"Domain",path:"Path",nRawCookieLines:"{n, plural, =1 {1 Raw `Set-Cookie` header} other {# Raw `Set-Cookie` headers}}",filterSetCookieTitle:"Show network requests that include this `Set-Cookie` header in the network panel"},F=i.i18n.registerUIStrings("panels/issues/AffectedCookiesView.ts",N),B=i.i18n.getLocalizedString.bind(void 0,F);class K extends q{getResourceNameWithCount(e){return B(N.nCookies,{n:e})}#F(e){const t=document.createElement("tr");this.appendColumnTitle(t,B(N.name)),this.appendColumnTitle(t,B(N.domain)+" & "+B(N.path),"affected-resource-cookie-info-header"),this.affectedResources.appendChild(t);let s=0;for(const t of e)s++,this.#B(t.cookie,t.hasRequest);this.updateAffectedResourceCount(s)}#B(t,s){const i=document.createElement("tr");i.classList.add("affected-resource-cookie");const n=document.createElement("td");if(s){const s=document.createElement("button");s.classList.add("link","devtools-link"),s.textContent=t.name,s.tabIndex=0,s.setAttribute("jslog",`${r.link("issues.filter-network-requests-by-cookie").track({click:!0})}`),s.addEventListener("click",(()=>{l.userMetrics.issuesPanelResourceOpened(this.issue.getCategory(),"Cookie"),e.Revealer.reveal(c.UIFilter.UIRequestFilter.filters([{filterType:c.UIFilter.FilterType.CookieDomain,filterValue:t.domain},{filterType:c.UIFilter.FilterType.CookieName,filterValue:t.name},{filterType:c.UIFilter.FilterType.CookiePath,filterValue:t.path}]))})),n.appendChild(s)}else n.textContent=t.name;i.appendChild(n),this.appendIssueDetailCell(i,`${t.domain}${t.path}`,"affected-resource-cookie-info"),this.affectedResources.appendChild(i)}update(){this.clear(),this.#F(this.issue.cookiesWithRequestIndicator())}}class z extends q{getResourceNameWithCount(e){return B(N.nRawCookieLines,{n:e})}update(){this.clear();const t=this.issue.getRawCookieLines();let s=0;for(const i of t){const t=document.createElement("tr");if(t.classList.add("affected-resource-directive"),i.hasRequest){const s=document.createElement("td"),n=document.createElement("button");n.classList.add("link","devtools-link"),n.textContent=i.rawCookieLine,n.title=B(N.filterSetCookieTitle),n.tabIndex=0,n.setAttribute("jslog",`${r.link("issues.filter-network-requests-by-raw-cookie").track({click:!0})}`),n.addEventListener("click",(()=>{e.Revealer.reveal(c.UIFilter.UIRequestFilter.filters([{filterType:c.UIFilter.FilterType.ResponseHeaderValueSetCookie,filterValue:i.rawCookieLine}]))})),s.appendChild(n),t.appendChild(s)}else this.appendIssueDetailCell(t,i.rawCookieLine);this.affectedResources.appendChild(t),s++}this.updateAffectedResourceCount(s)}}const W={nDirectives:"{n, plural, =1 {# directive} other {# directives}}",reportonly:"report-only",blocked:"blocked",clickToRevealTheViolatingDomNode:"Click to reveal the violating DOM node in the Elements panel",directiveC:"Directive",element:"Element",sourceLocation:"Source location",status:"Status",resourceC:"Resource"},j=i.i18n.registerUIStrings("panels/issues/AffectedDirectivesView.ts",W),_=i.i18n.getLocalizedString.bind(void 0,j);class $ extends q{#K(e,t){const s=document.createElement("td");t?(s.classList.add("affected-resource-report-only-status"),s.textContent=_(W.reportonly)):(s.classList.add("affected-resource-blocked-status"),s.textContent=_(W.blocked)),e.appendChild(s)}getResourceNameWithCount(e){return _(W.nDirectives,{n:e})}#z(e,t){const s=document.createElement("td");s.textContent=t,e.appendChild(s)}#W(e,t){const s=document.createElement("td");s.classList.add("affected-resource-directive-info"),s.textContent=t,e.appendChild(s)}#j(t,s,i){const n=new d.ElementsPanelLink.ElementsPanelLink;if(s){const t=s;n.title=_(W.clickToRevealTheViolatingDomNode);const r=()=>{const s=i.getTargetIfNotDisposed();if(s){l.userMetrics.issuesPanelResourceOpened(this.issue.getCategory(),"Element");const i=new p.DOMModel.DeferredDOMNode(s,t);e.Revealer.reveal(i)}},a=()=>{const e=i.getTargetIfNotDisposed();if(e){const s=new p.DOMModel.DeferredDOMNode(e,t);s&&s.highlight()}},o=()=>{p.OverlayModel.OverlayModel.hideDOMNodeHighlight()};n.data={onElementRevealIconClick:r,onElementRevealIconMouseEnter:a,onElementRevealIconMouseLeave:o}}const r=document.createElement("td");r.classList.add("affected-resource-csp-info-node"),r.appendChild(n),t.appendChild(r)}#_(e){const s=document.createElement("tr");if(this.issue.code()===t.ContentSecurityPolicyIssue.inlineViolationCode)this.appendColumnTitle(s,_(W.directiveC)),this.appendColumnTitle(s,_(W.element)),this.appendColumnTitle(s,_(W.sourceLocation)),this.appendColumnTitle(s,_(W.status));else if(this.issue.code()===t.ContentSecurityPolicyIssue.urlViolationCode)this.appendColumnTitle(s,_(W.resourceC),"affected-resource-directive-info-header"),this.appendColumnTitle(s,_(W.status)),this.appendColumnTitle(s,_(W.directiveC)),this.appendColumnTitle(s,_(W.sourceLocation));else if(this.issue.code()===t.ContentSecurityPolicyIssue.evalViolationCode)this.appendColumnTitle(s,_(W.sourceLocation)),this.appendColumnTitle(s,_(W.directiveC)),this.appendColumnTitle(s,_(W.status));else if(this.issue.code()===t.ContentSecurityPolicyIssue.trustedTypesSinkViolationCode)this.appendColumnTitle(s,_(W.sourceLocation)),this.appendColumnTitle(s,_(W.status));else{if(this.issue.code()!==t.ContentSecurityPolicyIssue.trustedTypesPolicyViolationCode)return void this.updateAffectedResourceCount(0);this.appendColumnTitle(s,_(W.sourceLocation)),this.appendColumnTitle(s,_(W.directiveC)),this.appendColumnTitle(s,_(W.status))}this.affectedResources.appendChild(s);let i=0;for(const t of e)i++,this.#$(t);this.updateAffectedResourceCount(i)}#$(e){const s=document.createElement("tr");s.classList.add("affected-resource-directive");const i=e.details(),n=t.Issue.toZeroBasedLocation(i.sourceCodeLocation),r=e.model(),a=e.model()?.getTargetIfNotDisposed();if(this.issue.code()===t.ContentSecurityPolicyIssue.inlineViolationCode&&r)this.#z(s,i.violatedDirective),this.#j(s,i.violatingNodeId,r),this.appendSourceLocation(s,n,a),this.#K(s,i.isReportOnly);else if(this.issue.code()===t.ContentSecurityPolicyIssue.urlViolationCode){const e=i.blockedURL?i.blockedURL:m.DevToolsPath.EmptyUrlString;this.#W(s,e),this.#K(s,i.isReportOnly),this.#z(s,i.violatedDirective),this.appendSourceLocation(s,n,a)}else if(this.issue.code()===t.ContentSecurityPolicyIssue.evalViolationCode)this.appendSourceLocation(s,n,a),this.#z(s,i.violatedDirective),this.#K(s,i.isReportOnly);else if(this.issue.code()===t.ContentSecurityPolicyIssue.trustedTypesSinkViolationCode)this.appendSourceLocation(s,n,a),this.#K(s,i.isReportOnly);else{if(this.issue.code()!==t.ContentSecurityPolicyIssue.trustedTypesPolicyViolationCode)return;this.appendSourceLocation(s,n,a),this.#z(s,i.violatedDirective),this.#K(s,i.isReportOnly)}this.affectedResources.appendChild(s)}update(){this.clear(),this.#_(this.issue.getCspIssues())}}const Q={nElements:"{n, plural, =1 {# element} other {# elements}}"},G=i.i18n.registerUIStrings("panels/issues/AffectedElementsView.ts",Q),J=i.i18n.getLocalizedString.bind(void 0,G);class X extends q{async#Q(e){let t=0;for(const s of e)await this.#G(s),t++;this.updateAffectedResourceCount(t)}getResourceNameWithCount(e){return J(Q.nElements,{n:e})}async#G(e){const t=await this.createElementCell(e,this.issue.getCategory()),s=document.createElement("tr");s.appendChild(t),this.affectedResources.appendChild(s)}update(){this.clear(),this.#Q(this.issue.elements())}}const Z={nDocuments:"{n, plural, =1 { document} other { documents}}",documentInTheDOMTree:"Document in the DOM tree",url:"URL",mode:"Mode"},Y=i.i18n.registerUIStrings("panels/issues/AffectedDocumentsInQuirksModeView.ts",Z),ee=i.i18n.getLocalizedString.bind(void 0,Y);class te extends X{#J=Promise.resolve();update(){this.#J=this.#J.then(this.#X.bind(this))}getResourceName(e){return ee(Z.nDocuments,{n:e})}async#X(){this.clear(),await this.#Z(this.issue.getQuirksModeIssues())}async#Y(e){const t=document.createElement("tr");t.classList.add("affected-resource-quirks-mode");const s=e.details(),i=p.FrameManager.FrameManager.instance().getFrame(s.frameId)?.resourceTreeModel().target()||null;t.appendChild(await this.createElementCell({nodeName:"document",backendNodeId:s.documentNodeId,target:i},e.getCategory())),this.appendIssueDetailCell(t,s.isLimitedQuirksMode?"Limited Quirks Mode":"Quirks Mode"),this.appendIssueDetailCell(t,s.url),this.affectedResources.appendChild(t)}async#Z(e){const t=document.createElement("tr");this.appendColumnTitle(t,ee(Z.documentInTheDOMTree)),this.appendColumnTitle(t,ee(Z.mode)),this.appendColumnTitle(t,ee(Z.url)),this.affectedResources.appendChild(t);let s=0;for(const t of e)s++,await this.#Y(t);this.updateAffectedResourceCount(s)}}class se extends X{#J=Promise.resolve();update(){this.#J=this.#J.then(this.#X.bind(this))}async#X(){this.clear(),await this.#ee(this.issue.getLowContrastIssues())}async#te(e){const t=document.createElement("tr");t.classList.add("affected-resource-low-contrast");const s=e.details(),i=e.model()?.target()||null;t.appendChild(await this.createElementCell({nodeName:s.violatingNodeSelector,backendNodeId:s.violatingNodeId,target:i},e.getCategory())),this.appendIssueDetailCell(t,String(m.NumberUtilities.floor(s.contrastRatio,2))),this.appendIssueDetailCell(t,String(s.thresholdAA)),this.appendIssueDetailCell(t,String(s.thresholdAAA)),this.appendIssueDetailCell(t,s.fontSize),this.appendIssueDetailCell(t,s.fontWeight),this.affectedResources.appendChild(t)}async#ee(e){const t=document.createElement("tr");this.appendColumnTitle(t,re(ie.element)),this.appendColumnTitle(t,re(ie.contrastRatio)),this.appendColumnTitle(t,re(ie.minimumAA)),this.appendColumnTitle(t,re(ie.minimumAAA)),this.appendColumnTitle(t,re(ie.textSize)),this.appendColumnTitle(t,re(ie.textWeight)),this.affectedResources.appendChild(t);let s=0;for(const t of e)s++,await this.#te(t);this.updateAffectedResourceCount(s)}}const ie={element:"Element",contrastRatio:"Contrast ratio",minimumAA:"Minimum AA ratio",minimumAAA:"Minimum AAA ratio",textSize:"Text size",textWeight:"Text weight"},ne=i.i18n.registerUIStrings("panels/issues/AffectedElementsWithLowContrastView.ts",ie),re=i.i18n.getLocalizedString.bind(void 0,ne),ae={nResources:"{n, plural, =1 {# resource} other {# resources}}",limitExceeded:"Limit exceeded",resolutionStatus:"Resolution Status",frameUrl:"Frame URL",removed:"Removed",warned:"Warned",cpuPeakLimit:"CPU peak limit",cpuTotalLimit:"CPU total limit",networkLimit:"Network limit"},oe=i.i18n.registerUIStrings("panels/issues/AffectedHeavyAdView.ts",ae),de=i.i18n.getLocalizedString.bind(void 0,oe);class le extends q{#se(e){const t=document.createElement("tr");this.appendColumnTitle(t,de(ae.limitExceeded)),this.appendColumnTitle(t,de(ae.resolutionStatus)),this.appendColumnTitle(t,de(ae.frameUrl)),this.affectedResources.appendChild(t);let s=0;for(const t of e)this.#ie(t.details()),s++;this.updateAffectedResourceCount(s)}getResourceNameWithCount(e){return de(ae.nResources,{n:e})}#ne(e){switch(e){case"HeavyAdBlocked":return de(ae.removed);case"HeavyAdWarning":return de(ae.warned)}return""}#re(e){switch(e){case"CpuPeakLimit":return de(ae.cpuPeakLimit);case"CpuTotalLimit":return de(ae.cpuTotalLimit);case"NetworkTotalLimit":return de(ae.networkLimit)}return""}#ie(e){const t=document.createElement("tr");t.classList.add("affected-resource-heavy-ad");const s=document.createElement("td");s.classList.add("affected-resource-heavy-ad-info"),s.textContent=this.#re(e.reason),t.appendChild(s);const i=document.createElement("td");i.classList.add("affected-resource-heavy-ad-info"),i.textContent=this.#ne(e.resolution),t.appendChild(i);const n=e.frame.frameId,r=this.createFrameCell(n,this.issue.getCategory());t.appendChild(r),this.affectedResources.appendChild(t)}update(){this.clear(),this.#se(this.issue.getHeavyAdIssues())}}const ce={nAllowedSites:"{n, plural, =1 {1 website allowed to access cookies} other {# websites allowed to access cookies}}"},ue=i.i18n.registerUIStrings("panels/issues/AffectedMetadataAllowedSitesView.ts",ce),pe=i.i18n.getLocalizedString.bind(void 0,ue);class he extends q{getResourceNameWithCount(e){return pe(ce.nAllowedSites,{n:e})}update(){this.clear();const e=this.issue.getCookieDeprecationMetadataIssues();let t=0;for(const i of e){const e=document.createElement("tr");e.classList.add("affected-resource-directive");const n=document.createElement("div"),r=document.createElement("span");if(r.textContent=i.details().allowedSites.join(", "),n.appendChild(r),!i.details().isOptOutTopLevel&&i.details().optOutPercentage>0){const e=document.createElement("span");e.textContent=" (opt-out: "+i.details().optOutPercentage+"% - ",n.appendChild(e);const t=s.XLink.XLink.create("https://developers.google.com/privacy-sandbox/blog/grace-period-opt-out","learn more");n.appendChild(t);const r=document.createElement("span");r.textContent=")",n.appendChild(r)}this.appendIssueDetailCell(e,n),this.affectedResources.appendChild(e),t++}this.updateAffectedResourceCount(t)}}const ge={nViolations:"{n, plural, =1 {# violation} other {# violations}}",warning:"warning",blocked:"blocked",instantiation:"Instantiation",aSharedarraybufferWas:"A `SharedArrayBuffer` was instantiated in a context that is not cross-origin isolated",transfer:"Transfer",sharedarraybufferWasTransferedTo:"`SharedArrayBuffer` was transfered to a context that is not cross-origin isolated",sourceLocation:"Source Location",trigger:"Trigger",status:"Status"},fe=i.i18n.registerUIStrings("panels/issues/AffectedSharedArrayBufferIssueDetailsView.ts",ge),me=i.i18n.getLocalizedString.bind(void 0,fe);class Ce extends q{getResourceNameWithCount(e){return me(ge.nViolations,{n:e})}#K(e,t){const s=document.createElement("td");t?(s.classList.add("affected-resource-report-only-status"),s.textContent=me(ge.warning)):(s.classList.add("affected-resource-blocked-status"),s.textContent=me(ge.blocked)),e.appendChild(s)}#ae(e,t){const s=document.createElement("td");switch(t){case"CreationIssue":s.textContent=me(ge.instantiation),s.title=me(ge.aSharedarraybufferWas);break;case"TransferIssue":s.textContent=me(ge.transfer),s.title=me(ge.sharedarraybufferWasTransferedTo)}e.appendChild(s)}#U(e){const t=document.createElement("tr");this.appendColumnTitle(t,me(ge.sourceLocation)),this.appendColumnTitle(t,me(ge.trigger)),this.appendColumnTitle(t,me(ge.status)),this.affectedResources.appendChild(t);let s=0;for(const t of e)s++,this.#N(t);this.updateAffectedResourceCount(s)}#N(e){const s=document.createElement("tr");s.classList.add("affected-resource-directive");const i=e.details(),n=t.Issue.toZeroBasedLocation(i.sourceCodeLocation);this.appendSourceLocation(s,n,e.model()?.getTargetIfNotDisposed()),this.#ae(s,i.type),this.#K(s,i.isWarning),this.affectedResources.appendChild(s)}update(){this.clear(),this.#U(this.issue.getSharedArrayBufferIssues())}}const Ie={nSources:"{n, plural, =1 {# source} other {# sources}}"},we=i.i18n.registerUIStrings("panels/issues/AffectedSourcesView.ts",Ie),ke=i.i18n.getLocalizedString.bind(void 0,we);class ye extends q{#oe(e){let t=0;for(const s of e)this.#de(s),t++;this.updateAffectedResourceCount(t)}getResourceNameWithCount(e){return ke(Ie.nSources,{n:e})}#de({url:e,lineNumber:t,columnNumber:s}){const i=document.createElement("td"),n={columnNumber:s,lineNumber:t,tabStop:!0,showColumnNumber:!1,inlineFrameIndex:0},a=f.Linkifier.Linkifier.linkifyURL(e,n);a.setAttribute("jslog",`${r.link("source-location").track({click:!0})}`),i.appendChild(a);const o=document.createElement("tr");o.classList.add("affected-resource-source"),o.appendChild(i),this.affectedResources.appendChild(o)}update(){this.clear(),this.#oe(this.issue.sources())}}const ve={nTrackingSites:"{n, plural, =1 {1 potentially tracking website} other {# potentially tracking websites}}"},be=i.i18n.registerUIStrings("panels/issues/AffectedTrackingSitesView.ts",ve),Re=i.i18n.getLocalizedString.bind(void 0,be);class Ae extends q{getResourceNameWithCount(e){return Re(ve.nTrackingSites,{n:e})}update(){this.clear();const e=this.issue.getBounceTrackingSites();let t=0;for(const s of e){const e=document.createElement("tr");e.classList.add("affected-resource-directive"),this.appendIssueDetailCell(e,s),this.affectedResources.appendChild(e),t++}this.updateAffectedResourceCount(t)}}const Se={nViolations:"{n, plural, =1 {# violation} other {# violations}}",element:"Element",invalidHeaderValue:"Invalid Header Value",request:"Request",untrustworthyOrigin:"Untrustworthy origin"},xe=i.i18n.registerUIStrings("panels/issues/AttributionReportingIssueDetailsView.ts",Se),Te=i.i18n.getLocalizedString.bind(void 0,xe);class Ee extends q{getResourceNameWithCount(e){return Te(Se.nViolations,{n:e})}update(){this.clear();const e=this.issue.getAttributionReportingIssues();e.size>0?this.#U(e.values().next().value.code(),e):this.updateAffectedResourceCount(0)}#U(e,t){const s=document.createElement("tr");switch(e){case"AttributionReportingIssue::InvalidRegisterSourceHeader":case"AttributionReportingIssue::InvalidRegisterTriggerHeader":case"AttributionReportingIssue::InvalidRegisterOsSourceHeader":case"AttributionReportingIssue::InvalidRegisterOsTriggerHeader":case"AttributionReportingIssue::OsSourceIgnored":case"AttributionReportingIssue::OsTriggerIgnored":case"AttributionReportingIssue::SourceIgnored":case"AttributionReportingIssue::TriggerIgnored":this.appendColumnTitle(s,Te(Se.request)),this.appendColumnTitle(s,Te(Se.invalidHeaderValue));break;case"AttributionReportingIssue::InsecureContext":case"AttributionReportingIssue::UntrustworthyReportingOrigin":this.appendColumnTitle(s,Te(Se.element)),this.appendColumnTitle(s,Te(Se.request)),this.appendColumnTitle(s,Te(Se.untrustworthyOrigin));break;case"AttributionReportingIssue::PermissionPolicyDisabled":this.appendColumnTitle(s,Te(Se.element)),this.appendColumnTitle(s,Te(Se.request));break;case"AttributionReportingIssue::SourceAndTriggerHeaders":case"AttributionReportingIssue::WebAndOsHeaders":this.appendColumnTitle(s,Te(Se.request));break;case"AttributionReportingIssue::NavigationRegistrationWithoutTransientUserActivation":this.appendColumnTitle(s,Te(Se.element))}this.affectedResources.appendChild(s);let i=0;for(const s of t)i++,this.#N(e,s);this.updateAffectedResourceCount(i)}async#N(e,t){const s=document.createElement("tr");s.classList.add("affected-resource-directive");const i=t.issueDetails;switch(e){case"AttributionReportingIssue::InvalidRegisterSourceHeader":case"AttributionReportingIssue::InvalidRegisterTriggerHeader":case"AttributionReportingIssue::InvalidRegisterOsSourceHeader":case"AttributionReportingIssue::InvalidRegisterOsTriggerHeader":case"AttributionReportingIssue::OsSourceIgnored":case"AttributionReportingIssue::OsTriggerIgnored":case"AttributionReportingIssue::SourceIgnored":case"AttributionReportingIssue::TriggerIgnored":this.#le(s,i.request),this.appendIssueDetailCell(s,i.invalidParameter||"");break;case"AttributionReportingIssue::InsecureContext":case"AttributionReportingIssue::UntrustworthyReportingOrigin":await this.#ce(s,t),this.#le(s,i.request),this.appendIssueDetailCell(s,i.invalidParameter||"");break;case"AttributionReportingIssue::PermissionPolicyDisabled":await this.#ce(s,t),this.#le(s,i.request);break;case"AttributionReportingIssue::SourceAndTriggerHeaders":case"AttributionReportingIssue::WebAndOsHeaders":this.#le(s,i.request);break;case"AttributionReportingIssue::NavigationRegistrationWithoutTransientUserActivation":await this.#ce(s,t)}this.affectedResources.appendChild(s)}async#ce(e,t){const s=t.issueDetails;if(void 0!==s.violatingNodeId){const i=t.model()?.target()||null;e.appendChild(await this.createElementCell({backendNodeId:s.violatingNodeId,target:i,nodeName:"Attribution source element"},t.getCategory()))}else this.appendIssueDetailCell(e,"")}#le(e,t){if(!t)return void this.appendIssueDetailCell(e,"");const s={additionalOnClickAction(){l.userMetrics.issuesPanelResourceOpened("AttributionReporting","Request")}};e.appendChild(this.createRequestCell(t,s))}}const Le={nRequests:"{n, plural, =1 {# request} other {# requests}}",warning:"warning",blocked:"blocked",status:"Status",request:"Request",resourceAddressSpace:"Resource Address",initiatorAddressSpace:"Initiator Address",secure:"secure",insecure:"insecure",initiatorContext:"Initiator Context",preflightRequestIfProblematic:"Preflight Request (if problematic)",preflightRequest:"Preflight Request",header:"Header",problem:"Problem",invalidValue:"Invalid Value (if available)",problemMissingHeader:"Missing Header",problemMultipleValues:"Multiple Values",problemInvalidValue:"Invalid Value",preflightDisallowedRedirect:"Response to preflight was a redirect",preflightInvalidStatus:"HTTP status of preflight request didn't indicate success",allowedOrigin:"Allowed Origin (from header)",allowCredentialsValueFromHeader:"`Access-Control-Allow-Credentials` Header Value",disallowedRequestMethod:"Disallowed Request Method",disallowedRequestHeader:"Disallowed Request Header",sourceLocation:"Source Location",unsupportedScheme:"Unsupported Scheme",failedRequest:"Failed Request"},Me=i.i18n.registerUIStrings("panels/issues/CorsIssueDetailsView.ts",Le),Pe=i.i18n.getLocalizedString.bind(void 0,Me);class De extends q{constructor(e,t,s){super(e,t,s),this.affectedResourcesCountElement.classList.add("cors-issue-affected-resource-label")}#K(e,t){const s=document.createElement("td");t?(s.classList.add("affected-resource-report-only-status"),s.textContent=Pe(Le.warning)):(s.classList.add("affected-resource-blocked-status"),s.textContent=Pe(Le.blocked)),e.appendChild(s)}getResourceNameWithCount(e){return Pe(Le.nRequests,{n:e})}#U(e,t){const s=document.createElement("tr");switch(this.appendColumnTitle(s,Pe(Le.request)),this.appendColumnTitle(s,Pe(Le.status)),e){case"CorsIssue::InvalidHeaders":this.appendColumnTitle(s,Pe(Le.preflightRequestIfProblematic)),this.appendColumnTitle(s,Pe(Le.header)),this.appendColumnTitle(s,Pe(Le.problem)),this.appendColumnTitle(s,Pe(Le.invalidValue));break;case"CorsIssue::WildcardOriginWithCredentials":this.appendColumnTitle(s,Pe(Le.preflightRequestIfProblematic));break;case"CorsIssue::PreflightResponseInvalid":this.appendColumnTitle(s,Pe(Le.preflightRequest)),this.appendColumnTitle(s,Pe(Le.problem));break;case"CorsIssue::OriginMismatch":this.appendColumnTitle(s,Pe(Le.preflightRequestIfProblematic)),this.appendColumnTitle(s,Pe(Le.initiatorContext)),this.appendColumnTitle(s,Pe(Le.allowedOrigin));break;case"CorsIssue::AllowCredentialsRequired":this.appendColumnTitle(s,Pe(Le.preflightRequestIfProblematic)),this.appendColumnTitle(s,Pe(Le.allowCredentialsValueFromHeader));break;case"CorsIssue::InsecurePrivateNetwork":this.appendColumnTitle(s,Pe(Le.resourceAddressSpace)),this.appendColumnTitle(s,Pe(Le.initiatorAddressSpace)),this.appendColumnTitle(s,Pe(Le.initiatorContext));break;case"CorsIssue::PreflightAllowPrivateNetworkError":this.appendColumnTitle(s,Pe(Le.preflightRequest)),this.appendColumnTitle(s,Pe(Le.invalidValue)),this.appendColumnTitle(s,Pe(Le.initiatorAddressSpace)),this.appendColumnTitle(s,Pe(Le.initiatorContext));break;case"CorsIssue::PreflightMissingPrivateNetworkAccessId":case"CorsIssue::PreflightMissingPrivateNetworkAccessName":this.appendColumnTitle(s,Pe(Le.preflightRequest)),this.appendColumnTitle(s,Pe(Le.invalidValue)),this.appendColumnTitle(s,Pe(Le.resourceAddressSpace)),this.appendColumnTitle(s,Pe(Le.initiatorAddressSpace)),this.appendColumnTitle(s,Pe(Le.initiatorContext));break;case"CorsIssue::MethodDisallowedByPreflightResponse":this.appendColumnTitle(s,Pe(Le.preflightRequest)),this.appendColumnTitle(s,Pe(Le.disallowedRequestMethod));break;case"CorsIssue::HeaderDisallowedByPreflightResponse":this.appendColumnTitle(s,Pe(Le.preflightRequest)),this.appendColumnTitle(s,Pe(Le.disallowedRequestHeader));break;case"CorsIssue::RedirectContainsCredentials":break;case"CorsIssue::DisallowedByMode":this.appendColumnTitle(s,Pe(Le.initiatorContext)),this.appendColumnTitle(s,Pe(Le.sourceLocation));break;case"CorsIssue::CorsDisabledScheme":this.appendColumnTitle(s,Pe(Le.initiatorContext)),this.appendColumnTitle(s,Pe(Le.sourceLocation)),this.appendColumnTitle(s,Pe(Le.unsupportedScheme));break;case"CorsIssue::NoCorsRedirectModeNotFollow":this.appendColumnTitle(s,Pe(Le.sourceLocation));break;default:m.assertUnhandled(e)}this.affectedResources.appendChild(s);let i=0;for(const s of t)i++,this.#N(e,s);this.updateAffectedResourceCount(i)}#ue(e,t){void 0!==t?this.appendIssueDetailCell(e,Pe(t?Le.secure:Le.insecure)):this.appendIssueDetailCell(e,"")}static getHeaderFromError(e){switch(e){case"InvalidAllowHeadersPreflightResponse":return"Access-Control-Allow-Headers";case"InvalidAllowMethodsPreflightResponse":case"MethodDisallowedByPreflightResponse":return"Access-Control-Allow-Methods";case"PreflightMissingAllowOriginHeader":case"PreflightMultipleAllowOriginValues":case"PreflightInvalidAllowOriginValue":case"MissingAllowOriginHeader":case"MultipleAllowOriginValues":case"InvalidAllowOriginValue":case"WildcardOriginNotAllowed":case"PreflightWildcardOriginNotAllowed":case"AllowOriginMismatch":case"PreflightAllowOriginMismatch":return"Access-Control-Allow-Origin";case"InvalidAllowCredentials":case"PreflightInvalidAllowCredentials":return"Access-Control-Allow-Credentials";case"PreflightMissingAllowPrivateNetwork":case"PreflightInvalidAllowPrivateNetwork":return"Access-Control-Allow-Private-Network";case"RedirectContainsCredentials":case"PreflightDisallowedRedirect":return"Location";case"PreflightInvalidStatus":return"Status-Code";case"PreflightMissingPrivateNetworkAccessId":return"Private-Network-Access-Id";case"PreflightMissingPrivateNetworkAccessName":return"Private-Network-Access-Name"}return""}static getProblemFromError(e){switch(e.corsError){case"InvalidAllowHeadersPreflightResponse":case"InvalidAllowMethodsPreflightResponse":case"PreflightInvalidAllowOriginValue":case"InvalidAllowOriginValue":return Pe(Le.problemInvalidValue);case"PreflightMultipleAllowOriginValues":case"MultipleAllowOriginValues":return Pe(Le.problemMultipleValues);case"MissingAllowOriginHeader":case"PreflightMissingAllowOriginHeader":return Pe(Le.problemMissingHeader);case"PreflightInvalidStatus":return Pe(Le.preflightInvalidStatus);case"PreflightDisallowedRedirect":return Pe(Le.preflightDisallowedRedirect);case"InvalidResponse":return Pe(Le.failedRequest)}throw new Error("Invalid Argument")}#N(e,t){const s=document.createElement("tr");s.classList.add("affected-resource-directive");const i=t.details(),n=i.corsErrorStatus,r=i.corsErrorStatus.corsError,a={section:"Response",name:De.getHeaderFromError(r)},o={additionalOnClickAction(){l.userMetrics.issuesPanelResourceOpened("Cors","Request")}};switch(e){case"CorsIssue::InvalidHeaders":s.appendChild(this.createRequestCell(i.request,o)),this.#K(s,i.isWarning),r.includes("Preflight")?s.appendChild(this.createRequestCell(i.request,{...o,linkToPreflight:!0,highlightHeader:a})):this.appendIssueDetailCell(s,""),this.appendIssueDetailCell(s,De.getHeaderFromError(r),"code-example"),this.appendIssueDetailCell(s,De.getProblemFromError(i.corsErrorStatus)),this.appendIssueDetailCell(s,i.corsErrorStatus.failedParameter,"code-example");break;case"CorsIssue::WildcardOriginWithCredentials":s.appendChild(this.createRequestCell(i.request,o)),this.#K(s,i.isWarning),r.includes("Preflight")?s.appendChild(this.createRequestCell(i.request,{...o,linkToPreflight:!0,highlightHeader:a})):this.appendIssueDetailCell(s,"");break;case"CorsIssue::PreflightResponseInvalid":{s.appendChild(this.createRequestCell(i.request,o)),this.#K(s,i.isWarning);const e="PreflightInvalidStatus"===r?{section:"General",name:"Status-Code"}:a;s.appendChild(this.createRequestCell(i.request,{...o,linkToPreflight:!0,highlightHeader:e})),this.appendIssueDetailCell(s,De.getProblemFromError(i.corsErrorStatus));break}case"CorsIssue::OriginMismatch":s.appendChild(this.createRequestCell(i.request,o)),this.#K(s,i.isWarning),r.includes("Preflight")?s.appendChild(this.createRequestCell(i.request,{...o,linkToPreflight:!0,highlightHeader:a})):this.appendIssueDetailCell(s,""),this.appendIssueDetailCell(s,i.initiatorOrigin??"","code-example"),this.appendIssueDetailCell(s,i.corsErrorStatus.failedParameter,"code-example");break;case"CorsIssue::AllowCredentialsRequired":s.appendChild(this.createRequestCell(i.request,o)),this.#K(s,i.isWarning),r.includes("Preflight")?s.appendChild(this.createRequestCell(i.request,{...o,linkToPreflight:!0,highlightHeader:a})):this.appendIssueDetailCell(s,""),this.appendIssueDetailCell(s,i.corsErrorStatus.failedParameter,"code-example");break;case"CorsIssue::InsecurePrivateNetwork":s.appendChild(this.createRequestCell(i.request,o)),this.#K(s,i.isWarning),this.appendIssueDetailCell(s,i.resourceIPAddressSpace??""),this.appendIssueDetailCell(s,i.clientSecurityState?.initiatorIPAddressSpace??""),this.#ue(s,i.clientSecurityState?.initiatorIsSecureContext);break;case"CorsIssue::PreflightAllowPrivateNetworkError":s.appendChild(this.createRequestCell(i.request,o)),this.#K(s,i.isWarning),s.appendChild(this.createRequestCell(i.request,{...o,linkToPreflight:!0,highlightHeader:a})),this.appendIssueDetailCell(s,i.corsErrorStatus.failedParameter,"code-example"),this.appendIssueDetailCell(s,i.clientSecurityState?.initiatorIPAddressSpace??""),this.#ue(s,i.clientSecurityState?.initiatorIsSecureContext);break;case"CorsIssue::MethodDisallowedByPreflightResponse":s.appendChild(this.createRequestCell(i.request,o)),this.#K(s,i.isWarning),s.appendChild(this.createRequestCell(i.request,{...o,linkToPreflight:!0,highlightHeader:a})),this.appendIssueDetailCell(s,i.corsErrorStatus.failedParameter,"code-example");break;case"CorsIssue::HeaderDisallowedByPreflightResponse":s.appendChild(this.createRequestCell(i.request,{...o,highlightHeader:{section:"Request",name:n.failedParameter}})),this.#K(s,i.isWarning),s.appendChild(this.createRequestCell(i.request,{...o,linkToPreflight:!0,highlightHeader:{section:"Response",name:"Access-Control-Allow-Headers"}})),this.appendIssueDetailCell(s,i.corsErrorStatus.failedParameter,"code-example");break;case"CorsIssue::RedirectContainsCredentials":s.appendChild(this.createRequestCell(i.request,{...o,highlightHeader:{section:"Response",name:De.getHeaderFromError(r)}})),this.#K(s,i.isWarning);break;case"CorsIssue::DisallowedByMode":s.appendChild(this.createRequestCell(i.request,o)),this.#K(s,i.isWarning),this.appendIssueDetailCell(s,i.initiatorOrigin??"","code-example"),this.appendSourceLocation(s,i.location,t.model()?.getTargetIfNotDisposed());break;case"CorsIssue::CorsDisabledScheme":s.appendChild(this.createRequestCell(i.request,{...o,highlightHeader:{section:"Response",name:De.getHeaderFromError(r)}})),this.#K(s,i.isWarning),this.appendIssueDetailCell(s,i.initiatorOrigin??"","code-example"),this.appendSourceLocation(s,i.location,t.model()?.getTargetIfNotDisposed()),this.appendIssueDetailCell(s,i.corsErrorStatus.failedParameter??"","code-example");break;case"CorsIssue::NoCorsRedirectModeNotFollow":s.appendChild(this.createRequestCell(i.request,o)),this.#K(s,i.isWarning),this.appendSourceLocation(s,i.location,t.model()?.getTargetIfNotDisposed());break;case"CorsIssue::PreflightMissingPrivateNetworkAccessId":case"CorsIssue::PreflightMissingPrivateNetworkAccessName":s.appendChild(this.createRequestCell(i.request,o)),this.#K(s,i.isWarning),s.appendChild(this.createRequestCell(i.request,{...o,linkToPreflight:!0,highlightHeader:a})),this.appendIssueDetailCell(s,De.getHeaderFromError(r)),this.appendIssueDetailCell(s,i.resourceIPAddressSpace??""),this.appendIssueDetailCell(s,i.clientSecurityState?.initiatorIPAddressSpace??""),this.#ue(s,i.clientSecurityState?.initiatorIsSecureContext);break;default:s.appendChild(this.createRequestCell(i.request,o)),this.#K(s,i.isWarning),m.assertUnhandled(e)}this.affectedResources.appendChild(s)}update(){this.clear();const e=this.issue.getCorsIssues();e.size>0?this.#U(e.values().next().value.code(),e):this.updateAffectedResourceCount(0)}}const qe={nResources:"{n, plural, =1 {# resource} other {# resources}}",frameId:"Frame",violatingNode:"Violating node"},Oe=i.i18n.registerUIStrings("panels/issues/GenericIssueDetailsView.ts",qe),Ve=i.i18n.getLocalizedString.bind(void 0,Oe);class He extends q{getResourceNameWithCount(e){return Ve(qe.nResources,{n:e})}#U(e){const t=document.createElement("tr");e.values().next().value.details().frameId&&this.appendColumnTitle(t,Ve(qe.frameId)),this.affectedResources.appendChild(t);let s=0;for(const t of e){(t.details().frameId||t.details().violatingNodeId)&&(s++,this.#N(t))}this.updateAffectedResourceCount(s)}async#N(e){const t=document.createElement("tr");t.classList.add("affected-resource-directive");const s=e.details();if(s.frameId&&t.appendChild(this.createFrameCell(s.frameId,e.getCategory())),s.violatingNodeId){const i=e.model()?.target()||null;t.appendChild(await this.createElementCell({backendNodeId:s.violatingNodeId,nodeName:this.violatingNodeIdName(s.errorType),target:i},e.getCategory()))}this.affectedResources.appendChild(t)}violatingNodeIdName(e){return"FormLabelForNameError"===e?i.i18n.lockedString("Label"):Ve(qe.violatingNode)}update(){this.clear();const e=this.issue.getGenericIssues();e.size>0?this.#U(e):this.updateAffectedResourceCount(0)}}const Ue={name:"Name",blocked:"blocked",nRequests:"{n, plural, =1 {# request} other {# requests}}",nResources:"{n, plural, =1 {# resource} other {# resources}}",restrictionStatus:"Restriction Status",warned:"Warned",affectedResources:"Affected Resources",learnMoreS:"Learn more: {PH1}",automaticallyUpgraded:"automatically upgraded",hideIssuesLikeThis:"Hide issues like this",unhideIssuesLikeThis:"Unhide issues like this"},Ne=i.i18n.registerUIStrings("panels/issues/IssueView.ts",Ue),Fe=i.i18n.getLocalizedString.bind(void 0,Ne);class Be extends q{#pe(e){let t=0;for(const s of e){const e=document.createElement("tr");e.classList.add("affected-resource-request");const i=this.issue.getCategory(),n=Ke.get(i)||"headers-component";e.appendChild(this.createRequestCell(s,{networkTab:n,additionalOnClickAction(){l.userMetrics.issuesPanelResourceOpened(i,"Request")}})),this.affectedResources.appendChild(e),t++}this.updateAffectedResourceCount(t)}getResourceNameWithCount(e){return Fe(Ue.nRequests,{n:e})}update(){this.clear();for(const e of this.issue.getBlockedByResponseDetails())return void this.updateAffectedResourceCount(0);"MixedContent"!==this.issue.getCategory()?this.#pe(this.issue.requests()):this.updateAffectedResourceCount(0)}}const Ke=new Map([["Cookie","cookies"],["CrossOriginEmbedderPolicy","headers-component"],["MixedContent","headers-component"]]);class ze extends q{#he(e){const t=document.createElement("tr");this.appendColumnTitle(t,Fe(Ue.name)),this.appendColumnTitle(t,Fe(Ue.restrictionStatus)),this.affectedResources.appendChild(t);let s=0;for(const t of e){const e=t.getDetails();this.appendAffectedMixedContent(e),s++}this.updateAffectedResourceCount(s)}getResourceNameWithCount(e){return Fe(Ue.nResources,{n:e})}appendAffectedMixedContent(e){const t=document.createElement("tr");if(t.classList.add("affected-resource-mixed-content"),e.request){const s=Ke.get(this.issue.getCategory())||"headers-component";t.appendChild(this.createRequestCell(e.request,{networkTab:s,additionalOnClickAction(){l.userMetrics.issuesPanelResourceOpened("MixedContent","Request")}}))}else{const i=(s=e.insecureURL,(/[^/]+$/.exec(s)||/[^/]+\/$/.exec(s)||[""])[0]);this.appendIssueDetailCell(t,i,"affected-resource-mixed-content-info").title=e.insecureURL}var s;this.appendIssueDetailCell(t,ze.translateStatus(e.resolutionStatus),"affected-resource-mixed-content-info"),this.affectedResources.appendChild(t)}static translateStatus(e){switch(e){case"MixedContentBlocked":return Fe(Ue.blocked);case"MixedContentAutomaticallyUpgraded":return Fe(Ue.automaticallyUpgraded);case"MixedContentWarning":return Fe(Ue.warned)}}update(){this.clear(),this.#he(this.issue.getMixedContentIssues())}}class We extends s.TreeOutline.TreeElement{#ge;#fe;toggleOnClick;affectedResources;#me;#w;#Ce=null;#Ie;#we;#ke=!0;#ye;#ve=!1;constructor(t,s){super(),this.#ge=t,this.#fe=s,this.#we=new e.Throttler.Throttler(250),this.toggleOnClick=!0,this.listItemElement.classList.add("issue"),this.childrenListElement.classList.add("body"),this.childrenListElement.classList.add(We.getBodyCSSClass(this.#ge.getKind())),this.affectedResources=this.#be(),this.#me=[new K(this,this.#ge,"affected-cookies"),new X(this,this.#ge,"affected-elements"),new Be(this,this.#ge,"affected-requests"),new ze(this,this.#ge,"mixed-content-details"),new ye(this,this.#ge,"affected-sources"),new le(this,this.#ge,"heavy-ad-details"),new $(this,this.#ge,"directives-details"),new U(this,this.#ge,"blocked-by-response-details"),new Ce(this,this.#ge,"sab-details"),new se(this,this.#ge,"low-contrast-details"),new De(this,this.#ge,"cors-details"),new He(this,this.#ge,"generic-details"),new te(this,this.#ge,"affected-documents"),new Ee(this,this.#ge,"attribution-reporting-details"),new z(this,this.#ge,"affected-raw-cookies"),new Ae(this,this.#ge,"tracking-sites-details"),new he(this,this.#ge,"metadata-allowed-sites-details")],this.#ye=new d.HideIssuesMenu.HideIssuesMenu,this.#w=null,this.#Ie=!1}setIssue(e){this.#ge!==e&&(this.#ke=!0),this.#ge=e,this.#me.forEach((t=>t.setIssue(e)))}static getBodyCSSClass(e){switch(e){case"BreakingChange":return"issue-kind-breaking-change";case"PageError":return"issue-kind-page-error";case"Improvement":return"issue-kind-improvement"}}getIssueTitle(){return this.#fe.title}onattach(){this.#ve?this.update():this.createContent()}createContent(){this.#E(),this.#Re(),this.appendChild(this.affectedResources);const e=[];for(const t of this.#me)this.appendAffectedResource(t),t.update(),t.isEmpty()||e.push(t);this.#Ae(e),this.#Se(),this.updateAffectedResourceVisibility(),this.#ve=!0}appendAffectedResource(e){this.affectedResources.appendChild(e)}#Ae(e){for(let t=0;t<e.length;t++){const i=e[t].listItemElement;s.ARIAUtils.setPositionInSet(i,t+1),s.ARIAUtils.setSetSize(i,e.length)}}#E(){const e=document.createElement("div");e.classList.add("header"),this.#Ce=new o.Icon.Icon,this.#Ce.classList.add("leading-issue-icon"),this.#w=document.createElement("span");const t=new a.Adorner.Adorner;t.data={name:"countWrapper",content:this.#w},t.classList.add("aggregated-issues-count"),e.appendChild(this.#Ce),e.appendChild(t);const s=document.createElement("div");s.classList.add("title"),s.textContent=this.#fe.title,e.appendChild(s),this.#ye&&e.appendChild(this.#ye),this.#xe(),this.listItemElement.appendChild(e)}onexpand(){const e=this.#ge.getCategory();if("Cookie"===e){const e=t.CookieIssue.CookieIssue.getSubCategory(this.#ge.code());l.userMetrics.issuesPanelIssueExpanded(e)}else l.userMetrics.issuesPanelIssueExpanded(e);if(this.#ke&&this.#X(),!this.#Ie){this.#Ie=!0;for(const e of this.#me)e.expandIfOneResource()}}#xe(){if(this.#Ce){const e=this.#ge.getKind();this.#Ce.data=n.IssueCounter.getIssueKindIconData(e),this.#Ce.title=t.Issue.getIssueKindDescription(e)}if(this.#w&&(this.#w.textContent=`${this.#ge.getAggregatedIssuesCount()}`),this.listItemElement.classList.toggle("hidden-issue",this.#ge.isHidden()),this.#ye){const e={menuItemLabel:this.#ge.isHidden()?Fe(Ue.unhideIssuesLikeThis):Fe(Ue.hideIssuesLikeThis),menuItemAction:()=>{const e=t.IssuesManager.getHideIssueByCodeSetting(),s=e.get();s[this.#ge.code()]=this.#ge.isHidden()?"Unhidden":"Hidden",e.set(s)}};this.#ye.data=e}}updateAffectedResourceVisibility(){const e=this.#me.every((e=>e.isEmpty()));this.affectedResources.hidden=e}#be(){const e=new s.TreeOutline.TreeElement;return e.setCollapsible(!1),e.setExpandable(!0),e.expand(),e.selectable=!1,e.listItemElement.classList.add("affected-resources-label"),e.listItemElement.textContent=Fe(Ue.affectedResources),e.childrenListElement.classList.add("affected-resources"),s.ARIAUtils.setPositionInSet(e.listItemElement,2),s.ARIAUtils.setSetSize(e.listItemElement,0===this.#fe.links.length?2:3),e}#Re(){const e=new s.TreeOutline.TreeElement;e.setCollapsible(!1),e.selectable=!1;const t=new u.MarkdownView.MarkdownView;t.data={tokens:this.#fe.markdown},e.listItemElement.appendChild(t),s.ARIAUtils.setPositionInSet(e.listItemElement,1),s.ARIAUtils.setSetSize(e.listItemElement,0===this.#fe.links.length?2:3),this.appendChild(e)}#Se(){if(0===this.#fe.links.length)return;const e=new s.TreeOutline.TreeElement;e.setCollapsible(!1),e.listItemElement.classList.add("link-wrapper"),s.ARIAUtils.setPositionInSet(e.listItemElement,3),s.ARIAUtils.setSetSize(e.listItemElement,3);const t=e.listItemElement.createChild("ul","link-list");for(const e of this.#fe.links){const i=s.Fragment.html`<x-link class="link devtools-link" tabindex="0" href=${e.link}>${Fe(Ue.learnMoreS,{PH1:e.linkTitle})}</x-link>`;i.setAttribute("jslog",`${r.link("learn-more").track({click:!0})}`);t.createChild("li").appendChild(i)}this.appendChild(e)}#X(){this.expanded&&(this.#me.forEach((e=>e.update())),this.updateAffectedResourceVisibility()),this.#ke=!this.expanded,this.#xe()}update(){this.#we.schedule((async()=>this.#X()))}clear(){this.#me.forEach((e=>e.clear()))}getIssueKind(){return this.#ge.getKind()}isForHiddenIssue(){return this.#ge.isHidden()}toggle(e){e||void 0===e&&!this.expanded?this.expand():this.collapse()}}var je=Object.freeze({__proto__:null,IssueView:We});const _e={crossOriginEmbedderPolicy:"Cross Origin Embedder Policy",mixedContent:"Mixed Content",samesiteCookie:"SameSite Cookie",heavyAds:"Heavy Ads",contentSecurityPolicy:"Content Security Policy",other:"Other",lowTextContrast:"Low Text Contrast",cors:"Cross Origin Resource Sharing",groupDisplayedIssuesUnder:"Group displayed issues under associated categories",groupByCategory:"Group by category",groupDisplayedIssuesUnderKind:"Group displayed issues as Page errors, Breaking changes and Improvements",groupByKind:"Group by kind",includeCookieIssuesCausedBy:"Include cookie Issues caused by third-party sites",includeThirdpartyCookieIssues:"Include third-party cookie issues",onlyThirdpartyCookieIssues:"Only third-party cookie issues detected so far",noIssuesDetectedSoFar:"No issues detected so far",attributionReporting:"Attribution Reporting `API`",quirksMode:"Quirks Mode",generic:"Generic"},$e=i.i18n.registerUIStrings("panels/issues/IssuesPane.ts",_e),Qe=i.i18n.getLocalizedString.bind(void 0,$e);class Ge extends s.TreeOutline.TreeElement{#Te;constructor(e){super(),this.#Te=e,this.toggleOnClick=!0,this.listItemElement.classList.add("issue-category"),this.childrenListElement.classList.add("issue-category-body")}getCategoryName(){switch(this.#Te){case"CrossOriginEmbedderPolicy":return Qe(_e.crossOriginEmbedderPolicy);case"MixedContent":return Qe(_e.mixedContent);case"Cookie":return Qe(_e.samesiteCookie);case"HeavyAd":return Qe(_e.heavyAds);case"ContentSecurityPolicy":return Qe(_e.contentSecurityPolicy);case"LowTextContrast":return Qe(_e.lowTextContrast);case"Cors":return Qe(_e.cors);case"AttributionReporting":return Qe(_e.attributionReporting);case"QuirksMode":return Qe(_e.quirksMode);case"Generic":return Qe(_e.generic);case"Other":return Qe(_e.other)}}onattach(){this.#E()}#E(){const e=document.createElement("div");e.classList.add("header");const t=document.createElement("div");t.classList.add("title"),t.textContent=this.getCategoryName(),e.appendChild(t),this.listItemElement.appendChild(e)}}function Je(){return e.Settings.Settings.instance().createSetting("group-issues-by-category",!1)}class Xe extends s.Widget.VBox{#Ee;#Le;#Me;#Pe;#De;#qe;#Oe;#Ve;#He;#Ue=Promise.resolve();constructor(){super(!0),this.element.setAttribute("jslog",`${r.panel("issues")}`),this.contentElement.classList.add("issues-pane"),this.#Ee=new Map,this.#Me=new Map,this.#Le=new Map,this.#Pe=null,this.#Ne(),this.#De=new s.TreeOutline.TreeOutlineInShadow,this.#De.setShowSelectionOnKeyboardFocus(!0),this.#De.contentElement.classList.add("issues"),this.contentElement.appendChild(this.#De.element),this.#qe=new b,this.#De.appendChild(this.#qe),this.#Oe=document.createElement("div"),this.#Oe.classList.add("issues-pane-no-issues"),this.contentElement.appendChild(this.#Oe),this.#Ve=t.IssuesManager.IssuesManager.instance(),this.#He=new I(this.#Ve),this.#He.addEventListener("AggregatedIssueUpdated",this.#Fe,this),this.#He.addEventListener("FullUpdateRequired",this.#Be,this),this.#qe.hidden=0===this.#Ve.numberOfHiddenIssues(),this.#Be(),this.#Ve.addEventListener("IssuesCountUpdated",this.#Ke,this)}elementsToRestoreScrollPositionsFor(){return[this.#De.element]}#Ne(){const e=this.contentElement.createChild("div","issues-toolbar-container");e.setAttribute("jslog",`${r.toolbar()}`),new s.Toolbar.Toolbar("issues-toolbar-left",e);const i=new s.Toolbar.Toolbar("issues-toolbar-right",e),a=Je(),o=new s.Toolbar.ToolbarSettingCheckbox(a,Qe(_e.groupDisplayedIssuesUnder),Qe(_e.groupByCategory));o.setVisible(!1),i.appendToolbarItem(o),a.addChangeListener((()=>{this.#ze(!0)}));const d=x(),l=new s.Toolbar.ToolbarSettingCheckbox(d,Qe(_e.groupDisplayedIssuesUnderKind),Qe(_e.groupByKind));i.appendToolbarItem(l),d.addChangeListener((()=>{this.#ze(!0)})),l.setVisible(!0);const c=t.Issue.getShowThirdPartyIssuesSetting();this.#Pe=new s.Toolbar.ToolbarSettingCheckbox(c,Qe(_e.includeCookieIssuesCausedBy),Qe(_e.includeThirdpartyCookieIssues)),i.appendToolbarItem(this.#Pe),this.setDefaultFocusedElement(this.#Pe.inputElement),i.appendSeparator();const u=new n.IssueCounter.IssueCounter;u.data={tooltipCallback:()=>{const e=n.IssueCounter.getIssueCountsEnumeration(t.IssuesManager.IssuesManager.instance(),!1);u.title=e},displayMode:"ShowAlways",issuesManager:t.IssuesManager.IssuesManager.instance()},u.id="console-issues-counter",u.setAttribute("jslog",`${r.counter("issues")}`);const p=new s.Toolbar.ToolbarItem(u);return i.appendToolbarItem(p),{toolbarContainer:e}}#Fe(e){this.#We(e.data)}#We(e){this.#Ue=this.#Ue.then((()=>this.#je(e)))}async#je(e){let i=this.#Le.get(e.aggregationKey());if(i){i.setIssue(e);const t=this.#_e(e);i.parent===t||t instanceof s.TreeOutline.TreeOutline&&i.parent===t.rootElement()||(i.parent?.removeChild(i),this.appendIssueViewToParent(i,t))}else{const s=e.getDescription();if(!s)return void console.warn("Could not find description for issue code:",e.code());const n=await t.MarkdownIssueDescription.createIssueDescriptionFromMarkdown(s);i=new We(e,n),this.#Le.set(e.aggregationKey(),i);const r=this.#_e(e);this.appendIssueViewToParent(i,r)}i.update(),this.#Ke()}appendIssueViewToParent(e,t){t.appendChild(e,((e,t)=>e instanceof b?1:t instanceof b?-1:e instanceof We&&t instanceof We?e.getIssueTitle().localeCompare(t.getIssueTitle()):(console.error("The issues tree should only contain IssueView objects as direct children"),0))),t instanceof s.TreeOutline.TreeElement&&this.#$e(t)}#$e(e){const t=e.childrenListNode.children;let i=0;for(let e=0;e<t.length;e++){const n=t[e];n.classList.contains("issue")&&(s.ARIAUtils.setPositionInSet(n,++i),s.ARIAUtils.setSetSize(n,t.length/2))}}#_e(e){if(e.isHidden())return this.#qe;if(x().get()){const t=e.getKind(),s=this.#Me.get(t);if(s)return s;const i=new T(t);return this.#De.appendChild(i,((e,t)=>e instanceof T&&t instanceof T?function(e,t){return e.getKind()===t.getKind()?0:"PageError"===e.getKind()||"BreakingChange"===e.getKind()&&"Improvement"===t.getKind()?-1:1}(e,t):0)),this.#Me.set(t,i),i}if(Je().get()){const t=e.getCategory(),s=this.#Ee.get(t);if(s)return s;const i=new Ge(t);return this.#De.appendChild(i,((e,t)=>e instanceof Ge&&t instanceof Ge?e.getCategoryName().localeCompare(t.getCategoryName()):0)),this.#Ee.set(t,i),i}return this.#De}#Qe(e,t){for(const[s,i]of Array.from(e.entries()))t?.has(s)||(i.parent&&i.parent.removeChild(i),e.delete(s))}#Be(){this.#ze(!1)}#ze(e){if(this.#Qe(this.#Ee,e?void 0:this.#He.aggregatedIssueCategories()),this.#Qe(this.#Me,e?void 0:this.#He.aggregatedIssueKinds()),this.#Qe(this.#Le,e?void 0:this.#He.aggregatedIssueCodes()),this.#He)for(const e of this.#He.aggregatedIssues())this.#We(e);this.#Ke()}#Ge(){for(const e of this.#Me.values()){const t=this.#Ve.numberOfIssues(e.getKind());e.update(t)}}#Ke(){this.#Je(this.#Ve.numberOfIssues(),this.#Ve.numberOfHiddenIssues()),x().get()&&this.#Ge()}#Je(e,t){if(e>0||t>0){this.#qe.hidden=0===t,this.#qe.update(t),this.#De.element.hidden=!1,this.#Oe.style.display="none";const e=this.#De.firstChild();e&&(e.select(!0),this.setDefaultFocusedElement(e.listItemElement))}else{this.#De.element.hidden=!0,this.#Pe&&this.setDefaultFocusedElement(this.#Pe.inputElement);const e=this.#Ve.numberOfAllStoredIssues()>0;this.#Oe.textContent=Qe(e?_e.onlyThirdpartyCookieIssues:_e.noIssuesDetectedSoFar),this.#Oe.style.display="flex"}}async reveal(e){await this.#Ue;const t=this.#He.keyForIssue(e),s=this.#Le.get(t);if(s){if(s.isForHiddenIssue()&&(this.#qe.expand(),this.#qe.reveal()),x().get()&&!s.isForHiddenIssue()){const e=this.#Me.get(s.getIssueKind());e?.expand(),e?.reveal()}s.expand(),s.reveal(),s.select(!1,!0)}}wasShown(){super.wasShown(),this.#De.registerCSSFiles([L]),this.registerCSSFiles([E])}}var Ze=Object.freeze({__proto__:null,getGroupIssuesByCategorySetting:Je,IssuesPane:Xe});var Ye=Object.freeze({__proto__:null,IssueRevealer:class{async reveal(e){await s.ViewManager.ViewManager.instance().showView("issues-pane");const t=s.ViewManager.ViewManager.instance().view("issues-pane");if(t){const s=await t.widget();if(!(s instanceof Xe))throw new Error("Expected issues pane to be an instance of IssuesPane");await s.reveal(e)}}}});export{w as IssueAggregator,Ye as IssueRevealer,je as IssueView,Ze as IssuesPane};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../core/common/common.js";import*as t from"../../core/i18n/i18n.js";import*as i from"../../core/platform/platform.js";import*as s from"../../core/sdk/sdk.js";import*as n from"../../ui/legacy/legacy.js";import*as r from"../../ui/visual_logging/visual_logging.js";import*as a from"../../ui/legacy/components/perf_ui/perf_ui.js";const o=new CSSStyleSheet;o.replaceSync("table td{padding-left:8px}table td:first-child{font-weight:bold}.scroll-rect.active{background-color:var(--sys-color-neutral-container)}ul{list-style:none;padding-inline-start:0;margin-block-start:0;margin-block-end:0}.devtools-link.link-margin{margin:8px;display:inline-block}\n/*# sourceURL=layerDetailsView.css */\n");const l={showInternalLayers:"Show internal layers"},h=t.i18n.registerUIStrings("panels/layer_viewer/LayerViewHost.ts",l),c=t.i18n.getLocalizedString.bind(void 0,h);class d{typeInternal;layerInternal;constructor(e,t){this.typeInternal=e,this.layerInternal=t}static isEqual(e,t){return e&&t?e.isEqual(t):e===t}type(){return this.typeInternal}layer(){return this.layerInternal}isEqual(e){return!1}}class u extends d{constructor(e){console.assert(Boolean(e),"LayerSelection with empty layer"),super("Layer",e)}isEqual(e){return"Layer"===e.typeInternal&&e.layer().id()===this.layer().id()}}class p extends d{scrollRectIndex;constructor(e,t){super("ScrollRect",e),this.scrollRectIndex=t}isEqual(e){return"ScrollRect"===e.typeInternal&&this.layer().id()===e.layer().id()&&this.scrollRectIndex===e.scrollRectIndex}}class m extends d{snapshotInternal;constructor(e,t){super("Snapshot",e),this.snapshotInternal=t}isEqual(e){return"Snapshot"===e.typeInternal&&this.layer().id()===e.layer().id()&&this.snapshotInternal===e.snapshotInternal}snapshot(){return this.snapshotInternal}}var g=Object.freeze({__proto__:null,LayerView:class{},Selection:d,LayerSelection:u,ScrollRectSelection:p,SnapshotSelection:m,LayerViewHost:class{views;selectedObject;hoveredObject;showInternalLayersSettingInternal;snapshotLayers;target;constructor(){this.views=[],this.selectedObject=null,this.hoveredObject=null,this.showInternalLayersSettingInternal=e.Settings.Settings.instance().createSetting("layers-show-internal-layers",!1),this.snapshotLayers=new Map}registerView(e){this.views.push(e)}setLayerSnapshotMap(e){this.snapshotLayers=e}getLayerSnapshotMap(){return this.snapshotLayers}setLayerTree(e){if(!e)return;this.target=e.target();const t=this.selectedObject&&this.selectedObject.layer();!t||e&&e.layerById(t.id())||this.selectObject(null);const i=this.hoveredObject&&this.hoveredObject.layer();!i||e&&e.layerById(i.id())||this.hoverObject(null);for(const t of this.views)t.setLayerTree(e)}hoverObject(e){if(d.isEqual(this.hoveredObject,e))return;this.hoveredObject=e;const t=e&&e.layer();this.toggleNodeHighlight(t?t.nodeForSelfOrAncestor():null);for(const t of this.views)t.hoverObject(e)}selectObject(e){if(!d.isEqual(this.selectedObject,e)){this.selectedObject=e;for(const t of this.views)t.selectObject(e)}}selection(){return this.selectedObject}showContextMenu(e,t){e.defaultSection().appendCheckboxItem(c(l.showInternalLayers),this.toggleShowInternalLayers.bind(this),{checked:this.showInternalLayersSettingInternal.get(),jslogContext:this.showInternalLayersSettingInternal.name});const i=t&&t.layer()&&t.layer().nodeForSelfOrAncestor();i&&e.appendApplicableItems(i),e.show()}showInternalLayersSetting(){return this.showInternalLayersSettingInternal}toggleShowInternalLayers(){this.showInternalLayersSettingInternal.set(!this.showInternalLayersSettingInternal.get())}toggleNodeHighlight(e){e?e.highlightForTwoSeconds():s.OverlayModel.OverlayModel.hideDOMNodeHighlight()}}});const y={selectALayerToSeeItsDetails:"Select a layer to see its details",scrollRectangleDimensions:"{PH1} {PH2} × {PH3} (at {PH4}, {PH5})",unnamed:"<unnamed>",stickyAncenstorLayersS:"{PH1}: {PH2} ({PH3})",stickyBoxRectangleDimensions:"Sticky Box {PH1} × {PH2} (at {PH3}, {PH4})",containingBlocRectangleDimensions:"Containing Block {PH1} × {PH2} (at {PH3}, {PH4})",nearestLayerShiftingStickyBox:"Nearest Layer Shifting Sticky Box",nearestLayerShiftingContaining:"Nearest Layer Shifting Containing Block",updateRectangleDimensions:"{PH1} × {PH2} (at {PH3}, {PH4})",size:"Size",compositingReasons:"Compositing Reasons",memoryEstimate:"Memory estimate",paintCount:"Paint count",slowScrollRegions:"Slow scroll regions",stickyPositionConstraint:"Sticky position constraint",paintProfiler:"Paint Profiler",nonFastScrollable:"Non fast scrollable",touchEventHandler:"Touch event handler",wheelEventHandler:"Wheel event handler",repaintsOnScroll:"Repaints on scroll",mainThreadScrollingReason:"Main thread scrolling reason"},f=t.i18n.registerUIStrings("panels/layer_viewer/LayerDetailsView.ts",y),w=t.i18n.getLocalizedString.bind(void 0,f),v=t.i18n.getLazilyComputedLocalizedString.bind(void 0,f);class C extends(e.ObjectWrapper.eventMixin(n.Widget.Widget)){layerViewHost;emptyWidget;layerSnapshotMap;tableElement;tbodyElement;sizeCell;compositingReasonsCell;memoryEstimateCell;paintCountCell;scrollRectsCell;stickyPositionConstraintCell;paintProfilerLink;selection;constructor(e){super(!0),this.element.setAttribute("jslog",`${r.pane("layers-details")}`),this.layerViewHost=e,this.layerViewHost.registerView(this),this.emptyWidget=new n.EmptyWidget.EmptyWidget(w(y.selectALayerToSeeItsDetails)),this.layerSnapshotMap=this.layerViewHost.getLayerSnapshotMap(),this.buildContent(),this.selection=null}hoverObject(e){}selectObject(e){this.selection=e,this.isShowing()&&this.update()}setLayerTree(e){}wasShown(){super.wasShown(),this.registerCSSFiles([o]),this.update()}onScrollRectClicked(e,t){1===t.which&&this.selection&&this.layerViewHost.selectObject(new p(this.selection.layer(),e))}invokeProfilerLink(){if(!this.selection)return;const e="Snapshot"===this.selection.type()?this.selection:this.layerSnapshotMap.get(this.selection.layer());e&&this.dispatchEventToListeners("PaintProfilerRequested",e)}createScrollRectElement(e,t){t&&n.UIUtils.createTextChild(this.scrollRectsCell,", ");const i=this.scrollRectsCell.createChild("span","scroll-rect");this.selection&&this.selection.scrollRectIndex===t&&i.classList.add("active"),i.textContent=w(y.scrollRectangleDimensions,{PH1:String(b.get(e.type)?.()),PH2:e.rect.width,PH3:e.rect.height,PH4:e.rect.x,PH5:e.rect.y}),i.addEventListener("click",this.onScrollRectClicked.bind(this,t),!1),i.setAttribute("jslog",`${r.action("layers.select-object").track({click:!0})}`)}formatStickyAncestorLayer(e,t){if(!t)return"";const i=t.nodeForSelfOrAncestor(),s=i?i.simpleSelector():w(y.unnamed);return w(y.stickyAncenstorLayersS,{PH1:e,PH2:s,PH3:t.id()})}createStickyAncestorChild(e,t){if(!t)return;n.UIUtils.createTextChild(this.stickyPositionConstraintCell,", ");this.stickyPositionConstraintCell.createChild("span").textContent=this.formatStickyAncestorLayer(e,t)}populateStickyPositionConstraintCell(e){if(this.stickyPositionConstraintCell.removeChildren(),!e)return;const t=e.stickyBoxRect();this.stickyPositionConstraintCell.createChild("span").textContent=w(y.stickyBoxRectangleDimensions,{PH1:t.width,PH2:t.height,PH3:t.x,PH4:t.y}),n.UIUtils.createTextChild(this.stickyPositionConstraintCell,", ");const i=e.containingBlockRect();this.stickyPositionConstraintCell.createChild("span").textContent=w(y.containingBlocRectangleDimensions,{PH1:i.width,PH2:i.height,PH3:i.x,PH4:i.y}),this.createStickyAncestorChild(w(y.nearestLayerShiftingStickyBox),e.nearestLayerShiftingStickyBox()),this.createStickyAncestorChild(w(y.nearestLayerShiftingContaining),e.nearestLayerShiftingContainingBlock())}update(){const e=this.selection&&this.selection.layer();if(!e)return this.tableElement.remove(),this.paintProfilerLink.remove(),void this.emptyWidget.show(this.contentElement);this.emptyWidget.detach(),this.contentElement.appendChild(this.tableElement),this.contentElement.appendChild(this.paintProfilerLink),this.sizeCell.textContent=w(y.updateRectangleDimensions,{PH1:e.width(),PH2:e.height(),PH3:e.offsetX(),PH4:e.offsetY()}),this.paintCountCell.parentElement&&this.paintCountCell.parentElement.classList.toggle("hidden",!e.paintCount()),this.paintCountCell.textContent=String(e.paintCount()),this.memoryEstimateCell.textContent=i.NumberUtilities.bytesToString(e.gpuMemoryUsage()),e.requestCompositingReasons().then(this.updateCompositingReasons.bind(this)),this.scrollRectsCell.removeChildren(),e.scrollRects().forEach(this.createScrollRectElement.bind(this)),this.populateStickyPositionConstraintCell(e.stickyPositionConstraint());const t=this.selection&&"Snapshot"===this.selection.type()?this.selection.snapshot():null;this.paintProfilerLink.classList.toggle("hidden",!(this.layerSnapshotMap.has(e)||t))}buildContent(){this.tableElement=this.contentElement.createChild("table"),this.tbodyElement=this.tableElement.createChild("tbody"),this.sizeCell=this.createRow(w(y.size)),this.compositingReasonsCell=this.createRow(w(y.compositingReasons)),this.memoryEstimateCell=this.createRow(w(y.memoryEstimate)),this.paintCountCell=this.createRow(w(y.paintCount)),this.scrollRectsCell=this.createRow(w(y.slowScrollRegions)),this.stickyPositionConstraintCell=this.createRow(w(y.stickyPositionConstraint)),this.paintProfilerLink=this.contentElement.createChild("button","hidden devtools-link link-margin text-button link-style"),n.ARIAUtils.markAsLink(this.paintProfilerLink),this.paintProfilerLink.textContent=w(y.paintProfiler),this.paintProfilerLink.tabIndex=0,this.paintProfilerLink.addEventListener("click",(e=>{e.consume(!0),this.invokeProfilerLink()})),this.paintProfilerLink.setAttribute("jslog",`${r.action("layers.paint-profiler").track({click:!0,keydown:"Enter"})}`)}createRow(e){const t=this.tbodyElement.createChild("tr");return t.createChild("td").textContent=e,t.createChild("td")}updateCompositingReasons(e){if(!e||!e.length)return void(this.compositingReasonsCell.textContent="n/a");this.compositingReasonsCell.removeChildren();const t=this.compositingReasonsCell.createChild("ul");for(const i of e)t.createChild("li").textContent=i}}const b=new Map([["NonFastScrollable",v(y.nonFastScrollable)],["TouchEventHandler",v(y.touchEventHandler)],["WheelEventHandler",v(y.wheelEventHandler)],["RepaintsOnScroll",v(y.repaintsOnScroll)],["MainThreadScrollingReason",v(y.mainThreadScrollingReason)]]);var S=Object.freeze({__proto__:null,LayerDetailsView:C,slowScrollRectNames:b});const x={layersTreePane:"Layers Tree Pane",showPaintProfiler:"Show Paint Profiler",updateChildDimension:" ({PH1} × {PH2})"},P=t.i18n.registerUIStrings("panels/layer_viewer/LayerTreeOutline.ts",x),T=t.i18n.getLocalizedString.bind(void 0,P);class L extends(e.ObjectWrapper.eventMixin(n.TreeOutline.TreeOutline)){layerViewHost;treeOutline;lastHoveredNode;element;layerTree;layerSnapshotMap;constructor(e){super(),this.layerViewHost=e,this.layerViewHost.registerView(this),this.treeOutline=new n.TreeOutline.TreeOutlineInShadow,this.treeOutline.element.classList.add("layer-tree","overflow-auto"),this.treeOutline.element.addEventListener("mousemove",this.onMouseMove.bind(this),!1),this.treeOutline.element.addEventListener("mouseout",this.onMouseMove.bind(this),!1),this.treeOutline.element.addEventListener("contextmenu",this.onContextMenu.bind(this),!0),n.ARIAUtils.setLabel(this.treeOutline.contentElement,T(x.layersTreePane)),this.lastHoveredNode=null,this.element=this.treeOutline.element,this.layerViewHost.showInternalLayersSetting().addChangeListener(this.update,this)}focus(){this.treeOutline.focus()}selectObject(e){this.hoverObject(null);const t=e&&e.layer(),i=t&&R.get(t);i?i.revealAndSelect(!0):this.treeOutline.selectedTreeElement&&this.treeOutline.selectedTreeElement.deselect()}hoverObject(e){const t=e&&e.layer(),i=t&&R.get(t);i!==this.lastHoveredNode&&(this.lastHoveredNode&&this.lastHoveredNode.setHovered(!1),i&&i.setHovered(!0),this.lastHoveredNode=i)}setLayerTree(e){this.layerTree=e,this.update()}update(){const e=this.layerViewHost.showInternalLayersSetting().get(),t=new Map;let i=null;this.layerTree&&(e||(i=this.layerTree.contentRoot()),i||(i=this.layerTree.root())),i&&this.layerTree&&this.layerTree.forEachLayer(function(s){if(!s.drawsContent()&&!e)return;t.get(s)&&console.assert(!1,"Duplicate layer: "+s.id()),t.set(s,!0);let n=R.get(s)||null,r=s.parent();for(;r&&r!==i&&!r.drawsContent()&&!e;)r=r.parent();const a=s===i?this.treeOutline.rootElement():r&&R.get(r);if(a)if(n){if(n.parent!==a){const e=this.treeOutline.selectedTreeElement;n.parent&&n.parent.removeChild(n),a.appendChild(n),e&&e!==this.treeOutline.selectedTreeElement&&e.select()}n.update()}else n=new I(this,s),a.appendChild(n),s.drawsContent()||n.expand();else console.assert(!1,"Parent is not in the tree")}.bind(this),i);for(let e=this.treeOutline.rootElement().firstChild();e instanceof I&&!e.root;)if(t.get(e.layer))e=e.traverseNextTreeElement(!1);else{const t=e.nextSibling||e.parent;e.parent&&e.parent.removeChild(e),e===this.lastHoveredNode&&(this.lastHoveredNode=null),e=t}if(!this.treeOutline.selectedTreeElement&&this.layerTree){const e=this.layerTree.contentRoot()||this.layerTree.root();if(e){const t=R.get(e);t&&t.revealAndSelect(!0)}}}onMouseMove(e){const t=this.treeOutline.treeElementFromEvent(e);t!==this.lastHoveredNode&&this.layerViewHost.hoverObject(this.selectionForNode(t))}selectedNodeChanged(e){this.layerViewHost.selectObject(this.selectionForNode(e))}onContextMenu(e){const t=this.selectionForNode(this.treeOutline.treeElementFromEvent(e)),i=new n.ContextMenu.ContextMenu(e),s=t&&t.layer();s&&(this.layerSnapshotMap=this.layerViewHost.getLayerSnapshotMap(),this.layerSnapshotMap.has(s)&&i.defaultSection().appendItem(T(x.showPaintProfiler),(()=>this.dispatchEventToListeners("PaintProfilerRequested",t)),{jslogContext:"layers.paint-profiler"})),this.layerViewHost.showContextMenu(i,t)}selectionForNode(e){return e&&e.layer?new u(e.layer):null}}class I extends n.TreeOutline.TreeElement{treeOutlineInternal;layer;constructor(e,t){super(),this.treeOutlineInternal=e,this.layer=t,R.set(t,this),this.update()}update(){const e=this.layer.nodeForSelfOrAncestor(),t=document.createDocumentFragment();n.UIUtils.createTextChild(t,e?e.simpleSelector():"#"+this.layer.id());t.createChild("span","dimmed").textContent=T(x.updateChildDimension,{PH1:this.layer.width(),PH2:this.layer.height()}),this.title=t}onselect(){return this.treeOutlineInternal.selectedNodeChanged(this),!1}setHovered(e){this.listItemElement.classList.toggle("hovered",e)}}const R=new WeakMap;var E=Object.freeze({__proto__:null,LayerTreeOutline:L,LayerTreeElement:I,layerToTreeElement:R});const O=new CSSStyleSheet;O.replaceSync(".layers-3d-view{overflow:hidden;user-select:none}.toolbar{background-color:var(--sys-color-cdt-base-container);border-bottom:1px solid var(--sys-color-divider)}canvas{flex:1 1}.layers-3d-view > canvas:focus-visible{outline:auto 5px -webkit-focus-ring-color}\n/*# sourceURL=layers3DView.css */\n");const M={panModeX:"Pan mode (X)",rotateModeV:"Rotate mode (V)",resetTransform:"Reset transform (0)"},B=t.i18n.registerUIStrings("panels/layer_viewer/TransformController.ts",M),H=t.i18n.getLocalizedString.bind(void 0,B);class D extends e.ObjectWrapper.ObjectWrapper{mode;scaleInternal;offsetXInternal;offsetYInternal;rotateXInternal;rotateYInternal;oldRotateX;oldRotateY;originX;originY;element;minScale;maxScale;controlPanelToolbar;modeButtons;constructor(e,t){if(super(),this.scaleInternal=1,this.offsetXInternal=0,this.offsetYInternal=0,this.rotateXInternal=0,this.rotateYInternal=0,this.oldRotateX=0,this.oldRotateY=0,this.originX=0,this.originY=0,this.element=e,this.registerShortcuts(),n.UIUtils.installDragHandle(e,this.onDragStart.bind(this),this.onDrag.bind(this),this.onDragEnd.bind(this),"move",null),e.addEventListener("wheel",this.onMouseWheel.bind(this),!1),this.minScale=0,this.maxScale=1/0,this.controlPanelToolbar=new n.Toolbar.Toolbar("transform-control-panel"),this.controlPanelToolbar.element.setAttribute("jslog",`${r.toolbar()}`),this.modeButtons={},!t){const e=new n.Toolbar.ToolbarToggle(H(M.panModeX),"3d-pan",void 0,"layers.3d-pan",!1);e.addEventListener("Click",this.setMode.bind(this,"Pan")),this.modeButtons.Pan=e,this.controlPanelToolbar.appendToolbarItem(e);const t=new n.Toolbar.ToolbarToggle(H(M.rotateModeV),"3d-rotate",void 0,"layers.3d-rotate",!1);t.addEventListener("Click",this.setMode.bind(this,"Rotate")),this.modeButtons.Rotate=t,this.controlPanelToolbar.appendToolbarItem(t)}this.setMode("Pan");const i=new n.Toolbar.ToolbarButton(H(M.resetTransform),"3d-center",void 0,"layers.3d-center");i.addEventListener("Click",this.resetAndNotify.bind(this,void 0)),this.controlPanelToolbar.appendToolbarItem(i),this.reset()}toolbar(){return this.controlPanelToolbar}registerShortcuts(){n.ShortcutRegistry.ShortcutRegistry.instance().addShortcutListener(this.element,{"layers.reset-view":async()=>(this.resetAndNotify(),!0),"layers.pan-mode":async()=>(this.setMode("Pan"),!0),"layers.rotate-mode":async()=>(this.setMode("Rotate"),!0),"layers.zoom-in":this.onKeyboardZoom.bind(this,1.1),"layers.zoom-out":this.onKeyboardZoom.bind(this,1/1.1),"layers.up":this.onKeyboardPanOrRotate.bind(this,0,-1),"layers.down":this.onKeyboardPanOrRotate.bind(this,0,1),"layers.left":this.onKeyboardPanOrRotate.bind(this,-1,0),"layers.right":this.onKeyboardPanOrRotate.bind(this,1,0)})}postChangeEvent(){this.dispatchEventToListeners("TransformChanged")}reset(){this.scaleInternal=1,this.offsetXInternal=0,this.offsetYInternal=0,this.rotateXInternal=0,this.rotateYInternal=0}setMode(e){this.mode!==e&&(this.mode=e,this.updateModeButtons())}updateModeButtons(){for(const e in this.modeButtons)this.modeButtons[e].setToggled(e===this.mode)}resetAndNotify(e){this.reset(),this.postChangeEvent(),e&&e.preventDefault(),this.element.focus()}setScaleConstraints(e,t){this.minScale=e,this.maxScale=t,this.scaleInternal=i.NumberUtilities.clamp(this.scaleInternal,e,t)}clampOffsets(e,t,s,n){this.offsetXInternal=i.NumberUtilities.clamp(this.offsetXInternal,e,t),this.offsetYInternal=i.NumberUtilities.clamp(this.offsetYInternal,s,n)}scale(){return this.scaleInternal}offsetX(){return this.offsetXInternal}offsetY(){return this.offsetYInternal}rotateX(){return this.rotateXInternal}rotateY(){return this.rotateYInternal}onScale(e,t,s){e=i.NumberUtilities.clamp(this.scaleInternal*e,this.minScale,this.maxScale)/this.scaleInternal,this.scaleInternal*=e,this.offsetXInternal-=(t-this.offsetXInternal)*(e-1),this.offsetYInternal-=(s-this.offsetYInternal)*(e-1),this.postChangeEvent()}onPan(e,t){this.offsetXInternal+=e,this.offsetYInternal+=t,this.postChangeEvent()}onRotate(e,t){this.rotateXInternal=e,this.rotateYInternal=t,this.postChangeEvent()}async onKeyboardZoom(e){return this.onScale(e,this.element.clientWidth/2,this.element.clientHeight/2),!0}async onKeyboardPanOrRotate(e,t){return"Rotate"===this.mode?this.onRotate(this.rotateXInternal+5*t,this.rotateYInternal+5*e):this.onPan(6*e,6*t),!0}onMouseWheel(e){const t=e,i=Math.pow(1.1,-t.deltaY*(1/53));this.onScale(i,t.clientX-this.element.getBoundingClientRect().left,t.clientY-this.element.getBoundingClientRect().top)}onDrag(e){const{clientX:t,clientY:i}=e;"Rotate"===this.mode?this.onRotate(this.oldRotateX+(this.originY-i)/this.element.clientHeight*180,this.oldRotateY-(this.originX-t)/this.element.clientWidth*180):(this.onPan(t-this.originX,i-this.originY),this.originX=t,this.originY=i)}onDragStart(e){return this.element.focus(),this.originX=e.clientX,this.originY=e.clientY,this.oldRotateX=this.rotateXInternal,this.oldRotateY=this.rotateYInternal,!0}onDragEnd(){this.originX=0,this.originY=0,this.oldRotateX=0,this.oldRotateY=0}}var A=Object.freeze({__proto__:null,TransformController:D});const k={layerInformationIsNotYet:"Layer information is not yet available.",dLayersView:"3D Layers View",cantDisplayLayers:"Can't display layers,",webglSupportIsDisabledInYour:"WebGL support is disabled in your browser.",checkSForPossibleReasons:"Check {PH1} for possible reasons.",slowScrollRects:"Slow scroll rects",paints:"Paints",resetView:"Reset View",showPaintProfiler:"Show Paint Profiler"},W=t.i18n.registerUIStrings("panels/layer_viewer/Layers3DView.ts",k),V=t.i18n.getLocalizedString.bind(void 0,W),U=new Map,F=new Map,_=new Map,j=new Map,X=new Map,N=new Map;class Y extends(e.ObjectWrapper.eventMixin(n.Widget.VBox)){failBanner;layerViewHost;transformController;canvasElement;lastSelection;layerTree;textureManager;chromeTextures;rects;snapshotLayers;shaderProgram;oldTextureScale;depthByLayerId;visibleLayers;maxDepth;scale;layerTexture;projectionMatrix;whiteTexture;gl;dimensionsForAutoscale;needsUpdate;updateScheduled;panelToolbar;showSlowScrollRectsSetting;showPaintsSetting;mouseDownX;mouseDownY;constructor(e){super(!0),this.element.setAttribute("jslog",`${r.pane("layers-3d-view")}`),this.contentElement.classList.add("layers-3d-view"),this.failBanner=new n.Widget.VBox,this.failBanner.element.classList.add("full-widget-dimmed-banner"),n.UIUtils.createTextChild(this.failBanner.element,V(k.layerInformationIsNotYet)),this.layerViewHost=e,this.layerViewHost.registerView(this),this.transformController=new D(this.contentElement),this.transformController.addEventListener("TransformChanged",this.update,this),this.initToolbar(),this.canvasElement=this.contentElement.createChild("canvas"),this.canvasElement.tabIndex=0,this.canvasElement.addEventListener("dblclick",this.onDoubleClick.bind(this),!1),this.canvasElement.addEventListener("mousedown",this.onMouseDown.bind(this),!1),this.canvasElement.addEventListener("mouseup",this.onMouseUp.bind(this),!1),this.canvasElement.addEventListener("mouseleave",this.onMouseMove.bind(this),!1),this.canvasElement.addEventListener("mousemove",this.onMouseMove.bind(this),!1),this.canvasElement.addEventListener("contextmenu",this.onContextMenu.bind(this),!1),this.canvasElement.setAttribute("jslog",`${r.canvas("layers").track({click:!0,drag:!0})}`),n.ARIAUtils.setLabel(this.canvasElement,V(k.dLayersView)),this.lastSelection={},this.layerTree=null,this.updateScheduled=!1,this.textureManager=new ae(this.update.bind(this)),this.chromeTextures=[],this.rects=[],this.snapshotLayers=new Map,this.layerViewHost.setLayerSnapshotMap(this.snapshotLayers),this.layerViewHost.showInternalLayersSetting().addChangeListener(this.update,this)}setLayerTree(e){this.layerTree=e,this.layerTexture=null,delete this.oldTextureScale,this.showPaints()&&this.textureManager.setLayerTree(e),this.update()}showImageForLayer(e,t){if(!t)return this.layerTexture=null,void this.update();n.UIUtils.loadImage(t).then((t=>{const i=t&&ae.createTextureForImage(this.gl||null,t);this.layerTexture=i?{layer:e,texture:i}:null,this.update()}))}onResize(){this.resizeCanvas(),this.update()}willHide(){this.textureManager.suspend()}wasShown(){this.textureManager.resume(),this.registerCSSFiles([O]),this.needsUpdate&&(this.resizeCanvas(),this.update())}updateLayerSnapshot(e){this.textureManager.layerNeedsUpdate(e)}setOutline(e,t){this.lastSelection[e]=t,this.update()}hoverObject(e){this.setOutline(z.Hovered,e)}selectObject(e){this.setOutline(z.Hovered,null),this.setOutline(z.Selected,e)}snapshotForSelection(e){if("Snapshot"===e.type()){const t=e.snapshot();return t.snapshot.addReference(),Promise.resolve(t)}if(e.layer()){const t=e.layer().snapshots()[0];if(void 0!==t)return t}return Promise.resolve(null)}initGL(e){const t=e.getContext("webgl");return t?(t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA),t.enable(t.BLEND),t.clearColor(0,0,0,0),t.enable(t.DEPTH_TEST),t):null}createShader(e,t){if(!this.gl)return;const i=this.gl.createShader(e);i&&this.shaderProgram&&(this.gl.shaderSource(i,t),this.gl.compileShader(i),this.gl.attachShader(this.shaderProgram,i))}initShaders(){if(!this.gl)return;if(this.shaderProgram=this.gl.createProgram(),!this.shaderProgram)return;this.createShader(this.gl.FRAGMENT_SHADER,G),this.createShader(this.gl.VERTEX_SHADER,q),this.gl.linkProgram(this.shaderProgram),this.gl.useProgram(this.shaderProgram);const e=this.gl.getAttribLocation(this.shaderProgram,"aVertexPosition");this.gl.enableVertexAttribArray(e),U.set(this.shaderProgram,e);const t=this.gl.getAttribLocation(this.shaderProgram,"aVertexColor");this.gl.enableVertexAttribArray(t),F.set(this.shaderProgram,t);const i=this.gl.getAttribLocation(this.shaderProgram,"aTextureCoord");this.gl.enableVertexAttribArray(i),_.set(this.shaderProgram,i);const s=this.gl.getUniformLocation(this.shaderProgram,"uPMatrix");j.set(this.shaderProgram,s);const n=this.gl.getUniformLocation(this.shaderProgram,"uSampler");X.set(this.shaderProgram,n)}resizeCanvas(){this.canvasElement.width=this.canvasElement.offsetWidth*window.devicePixelRatio,this.canvasElement.height=this.canvasElement.offsetHeight*window.devicePixelRatio}updateTransformAndConstraints(){const e=this.dimensionsForAutoscale||{width:0,height:0},t=this.layerTree?this.layerTree.viewportSize():null,s=t?t.width:e.width,r=t?t.height:e.height,a=this.canvasElement.width,o=this.canvasElement.height,l=.1*a,h=.1*o,c=(a-2*l)/s,d=(o-2*h)/r,u=Math.min(c,d),p=Math.min(s/e.width,r/e.width)/2;this.transformController.setScaleConstraints(p,10/u);const m=this.transformController.scale(),g=this.transformController.rotateX(),y=this.transformController.rotateY();this.scale=m*u;const f=i.NumberUtilities.clamp(this.scale,.1,1);f!==this.oldTextureScale&&(this.oldTextureScale=f,this.textureManager.setScale(f),this.dispatchEventToListeners("ScaleChanged",f));const w=(new WebKitCSSMatrix).scale(m,m,m).translate(a/2,o/2,0).rotate(g,y,0).scale(u,u,u).translate(-s/2,-r/2,0);let v;for(let e=0;e<this.rects.length;++e)v=n.Geometry.boundsForTransformedPoints(w,this.rects[e].vertices,v);v&&this.transformController.clampOffsets((l-v.maxX)/window.devicePixelRatio,(a-l-v.minX)/window.devicePixelRatio,(h-v.maxY)/window.devicePixelRatio,(o-h-v.minY)/window.devicePixelRatio);const C=this.transformController.offsetX()*window.devicePixelRatio,b=this.transformController.offsetY()*window.devicePixelRatio;this.projectionMatrix=(new WebKitCSSMatrix).translate(C,b,0).multiply(w);const S=(new WebKitCSSMatrix).scale(1,-1,-1).translate(-1,-1,0).scale(2/this.canvasElement.width,2/this.canvasElement.height,1e-6).multiply(this.projectionMatrix);if(this.shaderProgram){const e=j.get(this.shaderProgram);this.gl&&e&&this.gl.uniformMatrix4fv(e,!1,this.arrayFromMatrix(S))}}arrayFromMatrix(e){return new Float32Array([e.m11,e.m12,e.m13,e.m14,e.m21,e.m22,e.m23,e.m24,e.m31,e.m32,e.m33,e.m34,e.m41,e.m42,e.m43,e.m44])}initWhiteTexture(){if(!this.gl)return;this.whiteTexture=this.gl.createTexture(),this.gl.bindTexture(this.gl.TEXTURE_2D,this.whiteTexture);const e=new Uint8Array([255,255,255,255]);this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,1,1,0,this.gl.RGBA,this.gl.UNSIGNED_BYTE,e)}initChromeTextures(){function e(e,t){n.UIUtils.loadImage(t).then((t=>{this.chromeTextures[e]=t&&ae.createTextureForImage(this.gl||null,t)||void 0}))}e.call(this,0,"Images/chromeLeft.avif"),e.call(this,1,"Images/chromeMiddle.avif"),e.call(this,2,"Images/chromeRight.avif")}initGLIfNecessary(){return this.gl?this.gl:(this.gl=this.initGL(this.canvasElement),this.gl?(this.initShaders(),this.initWhiteTexture(),this.initChromeTextures(),this.textureManager.setContext(this.gl),this.gl):null)}calculateDepthsAndVisibility(){this.depthByLayerId=new Map;let e=0;const t=this.layerViewHost.showInternalLayersSetting().get();if(!this.layerTree)return;const i=t?this.layerTree.root():this.layerTree.contentRoot()||this.layerTree.root();if(!i)return;const s=[i];for(this.depthByLayerId.set(i.id(),0),this.visibleLayers=new Set;s.length>0;){const i=s.shift();if(!i)break;(t||i.drawsContent())&&this.visibleLayers.add(i);const n=i.children();for(let t=0;t<n.length;++t)this.depthByLayerId.set(n[t].id(),++e),s.push(n[t])}this.maxDepth=e}depthForLayer(e){return(this.depthByLayerId.get(e.id())||0)*ne}calculateScrollRectDepth(e,t){return this.depthForLayer(e)+t*re+1}updateDimensionsForAutoscale(e){this.dimensionsForAutoscale||(this.dimensionsForAutoscale={width:0,height:0}),this.dimensionsForAutoscale.width=Math.max(e.width(),this.dimensionsForAutoscale.width),this.dimensionsForAutoscale.height=Math.max(e.height(),this.dimensionsForAutoscale.height)}calculateLayerRect(e){if(!this.visibleLayers.has(e))return;const t=new u(e),i=new oe(t);i.setVertices(e.quad(),this.depthForLayer(e)),this.appendRect(i),this.updateDimensionsForAutoscale(e)}appendRect(e){const t=e.relatedObject,i=d.isEqual(this.lastSelection[z.Selected],t),s=d.isEqual(this.lastSelection[z.Hovered],t);if(i)e.borderColor=$;else if(s){e.borderColor=K;const t=e.fillColor||[255,255,255,1],i=ee;e.fillColor=[t[0]*i[0]/255,t[1]*i[1]/255,t[2]*i[2]/255,t[3]*i[3]]}else e.borderColor=Q;e.lineWidth=i?ie:te,this.rects.push(e)}calculateLayerScrollRects(e){const t=e.scrollRects();for(let i=0;i<t.length;++i){const s=new p(e,i),n=new oe(s);n.calculateVerticesFromRect(e,t[i].rect,this.calculateScrollRectDepth(e,i)),n.fillColor=J,this.appendRect(n)}}calculateLayerTileRects(e){const t=this.textureManager.tilesForLayer(e);for(let i=0;i<t.length;++i){const s=t[i];if(!s.texture)continue;const n=new m(e,{rect:s.rect,snapshot:s.snapshot}),r=new oe(n);this.snapshotLayers.has(e)||this.snapshotLayers.set(e,n),r.calculateVerticesFromRect(e,s.rect,this.depthForLayer(e)+1),r.texture=s.texture,this.appendRect(r)}}calculateRects(){if(this.rects=[],this.snapshotLayers.clear(),this.dimensionsForAutoscale={width:0,height:0},this.layerTree&&this.layerTree.forEachLayer(this.calculateLayerRect.bind(this)),this.showSlowScrollRectsSetting&&this.showSlowScrollRectsSetting.get()&&this.layerTree&&this.layerTree.forEachLayer(this.calculateLayerScrollRects.bind(this)),this.layerTexture&&this.visibleLayers.has(this.layerTexture.layer)){const e=this.layerTexture.layer,t=new u(e),i=new oe(t);i.setVertices(e.quad(),this.depthForLayer(e)),i.texture=this.layerTexture.texture,this.appendRect(i)}else this.showPaints()&&this.layerTree&&this.layerTree.forEachLayer(this.calculateLayerTileRects.bind(this))}makeColorsArray(e){let t=[];const i=[e[0]/255,e[1]/255,e[2]/255,e[3]];for(let e=0;e<4;e++)t=t.concat(i);return t}setVertexAttribute(e,t,i){const s=this.gl;if(!s)return;const n=s.createBuffer();s.bindBuffer(s.ARRAY_BUFFER,n),s.bufferData(s.ARRAY_BUFFER,new Float32Array(t),s.STATIC_DRAW),s.vertexAttribPointer(e,i,s.FLOAT,!1,0,0)}drawRectangle(e,t,i,s){const n=this.gl;if(i=i||[255,255,255,1],!this.shaderProgram)return;const r=U.get(this.shaderProgram),a=_.get(this.shaderProgram),o=F.get(this.shaderProgram);if(void 0!==r&&this.setVertexAttribute(r,e,3),void 0!==a&&this.setVertexAttribute(a,[0,1,1,1,1,0,0,0],2),void 0!==o&&this.setVertexAttribute(o,this.makeColorsArray(i),i.length),!n)return;const l=X.get(this.shaderProgram);s?l&&(n.activeTexture(n.TEXTURE0),n.bindTexture(n.TEXTURE_2D,s),n.uniform1i(l,0)):this.whiteTexture&&n.bindTexture(n.TEXTURE_2D,this.whiteTexture);const h=e.length/3;n.drawArrays(t,0,h)}drawTexture(e,t,i){this.gl&&this.drawRectangle(e,this.gl.TRIANGLE_FAN,i,t)}drawViewportAndChrome(){if(!this.layerTree)return;const t=this.layerTree.viewportSize();if(!t)return;const i=!e.Settings.Settings.instance().moduleSetting("frame-viewer-hide-chrome-window").get()&&this.chromeTextures.length>=3&&this.chromeTextures.indexOf(void 0)<0,s=(this.maxDepth+1)*ne,n=Math.ceil(se*this.scale);let r=[t.width,0,s,t.width,t.height,s,0,t.height,s,0,0,s];if(!this.gl)return;if(this.gl.lineWidth(n),this.drawRectangle(r,i?this.gl.LINE_STRIP:this.gl.LINE_LOOP,Z),!i)return;const a=this.layerTree.viewportSize();if(!a)return;const o=se/2,l=a.width+2*o;if(this.chromeTextures[0]&&this.chromeTextures[2]){const e=N.get(this.chromeTextures[0])||{naturalHeight:0,naturalWidth:0},t=e.naturalHeight,i=N.get(this.chromeTextures[2])||{naturalHeight:0,naturalWidth:0},n=l-e.naturalWidth-i.naturalWidth;let a=-o;const h=-t;for(let e=0;e<this.chromeTextures.length;++e){const i=this.chromeTextures[e];if(!i)continue;const o=N.get(i);if(!o)continue;const c=1===e?n:o.naturalWidth;if(c<0||a+c>l)break;r=[a,h,s,a+c,h,s,a+c,h+t,s,a,h+t,s],this.drawTexture(r,this.chromeTextures[e]),a+=c}}}drawViewRect(e){if(!this.gl)return;const t=e.vertices;e.texture?this.drawTexture(t,e.texture,e.fillColor||void 0):e.fillColor&&this.drawRectangle(t,this.gl.TRIANGLE_FAN,e.fillColor),this.gl.lineWidth(e.lineWidth),e.borderColor&&this.drawRectangle(t,this.gl.LINE_LOOP,e.borderColor)}update(){this.isShowing()?this.updateScheduled||(this.updateScheduled=!0,requestAnimationFrame((()=>requestAnimationFrame((()=>{this.updateScheduled=!1,this.innerUpdate()}))))):this.needsUpdate=!0}innerUpdate(){if(!this.layerTree||!this.layerTree.root())return void this.failBanner.show(this.contentElement);const e=this.initGLIfNecessary();if(!e)return this.failBanner.element.removeChildren(),this.failBanner.element.appendChild(this.webglDisabledBanner()),void this.failBanner.show(this.contentElement);this.failBanner.detach();const t=this.canvasElement.width,i=this.canvasElement.height;this.calculateDepthsAndVisibility(),this.calculateRects(),this.updateTransformAndConstraints(),e.viewport(0,0,t,i),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT),this.rects.forEach(this.drawViewRect.bind(this)),this.drawViewportAndChrome()}webglDisabledBanner(){const e=this.contentElement.ownerDocument.createDocumentFragment();return e.createChild("div").textContent=V(k.cantDisplayLayers),e.createChild("div").textContent=V(k.webglSupportIsDisabledInYour),e.appendChild(t.i18n.getFormatLocalizedString(W,k.checkSForPossibleReasons,{PH1:n.XLink.XLink.create("about:gpu",void 0,void 0,void 0,"about-gpu")})),e}selectionFromEventPoint(e){const t=e;if(!this.layerTree)return null;let i=1/0,s=null;const n=(new WebKitCSSMatrix).scale(1,-1,-1).translate(-1,-1,0).multiply(this.projectionMatrix),r=(t.clientX-this.canvasElement.getBoundingClientRect().left)*window.devicePixelRatio,a=-(t.clientY-this.canvasElement.getBoundingClientRect().top)*window.devicePixelRatio;return this.rects.forEach((function(e){if(!e.relatedObject)return;const t=e.intersectWithLine(n,r,a);t&&t<i&&(i=t,s=e.relatedObject)})),s}createVisibilitySetting(t,i,s,r){const a=e.Settings.Settings.instance().createSetting(i,s);return a.setTitle(t),a.addChangeListener(this.update,this),r.appendToolbarItem(new n.Toolbar.ToolbarSettingCheckbox(a)),a}initToolbar(){this.panelToolbar=this.transformController.toolbar(),this.contentElement.appendChild(this.panelToolbar.element),this.showPaintsSetting=this.createVisibilitySetting(V(k.paints),"frame-viewer-show-paints",!1,this.panelToolbar),this.showSlowScrollRectsSetting=this.createVisibilitySetting(V(k.slowScrollRects),"frame-viewer-show-slow-scroll-rects",!0,this.panelToolbar),this.showPaintsSetting.addChangeListener(this.updatePaints,this),e.Settings.Settings.instance().moduleSetting("frame-viewer-hide-chrome-window").addChangeListener(this.update,this)}onContextMenu(e){const t=new n.ContextMenu.ContextMenu(e);t.defaultSection().appendItem(V(k.resetView),(()=>this.transformController.resetAndNotify()),{jslogContext:"layers.3d-center"});const i=this.selectionFromEventPoint(e);i&&"Snapshot"===i.type()&&t.defaultSection().appendItem(V(k.showPaintProfiler),(()=>this.dispatchEventToListeners("PaintProfilerRequested",i)),{jslogContext:"layers.paint-profiler"}),this.layerViewHost.showContextMenu(t,i)}onMouseMove(e){e.which||this.layerViewHost.hoverObject(this.selectionFromEventPoint(e))}onMouseDown(e){const t=e;this.mouseDownX=t.clientX,this.mouseDownY=t.clientY}onMouseUp(e){const t=e;this.mouseDownX&&Math.abs(t.clientX-this.mouseDownX)<6&&Math.abs(t.clientY-(this.mouseDownY||0))<6&&(this.canvasElement.focus(),this.layerViewHost.selectObject(this.selectionFromEventPoint(e))),delete this.mouseDownX,delete this.mouseDownY}onDoubleClick(e){const t=this.selectionFromEventPoint(e);t&&("Snapshot"===t.type()||t.layer())&&this.dispatchEventToListeners("PaintProfilerRequested",t),e.stopPropagation()}updatePaints(){this.showPaints()?(this.textureManager.setLayerTree(this.layerTree),this.textureManager.forceUpdate()):this.textureManager.reset(),this.update()}showPaints(){return!!this.showPaintsSetting&&this.showPaintsSetting.get()}}var z;!function(e){e.Hovered="hovered",e.Selected="selected"}(z||(z={}));const G="precision mediump float;\nvarying vec4 vColor;\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nvoid main(void)\n{\n gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t)) * vColor;\n}",q="attribute vec3 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aVertexColor;\nuniform mat4 uPMatrix;\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvoid main(void)\n{\ngl_Position = uPMatrix * vec4(aVertexPosition, 1.0);\nvColor = aVertexColor;\nvTextureCoord = aTextureCoord;\n}",K=[0,0,255,1],$=[0,255,0,1],Q=[0,0,0,1],Z=[160,160,160,1],J=[178,100,100,.6],ee=[200,200,255,1],te=1,ie=2,se=3,ne=20,re=4;class ae{textureUpdatedCallback;throttler;scale;active;queue;tilesByLayer;gl;constructor(t){this.textureUpdatedCallback=t,this.throttler=new e.Throttler.Throttler(0),this.scale=0,this.active=!1,this.reset()}static createTextureForImage(e,t){if(!e)throw new Error("WebGLRenderingContext not provided");const i=e.createTexture();if(!i)throw new Error("Unable to create texture");return N.set(i,t),e.bindTexture(e.TEXTURE_2D,i),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),i}reset(){this.tilesByLayer&&this.setLayerTree(null),this.tilesByLayer=new Map,this.queue=[]}setContext(e){this.gl=e,this.scale&&this.updateTextures()}suspend(){this.active=!1}resume(){this.active=!0,this.queue.length&&this.update()}setLayerTree(e){const t=new Set,i=Array.from(this.tilesByLayer.keys());e&&e.forEachLayer((e=>{e.drawsContent()&&(t.add(e),this.tilesByLayer.has(e)||(this.tilesByLayer.set(e,[]),this.layerNeedsUpdate(e)))})),i.length||this.forceUpdate();for(const e of i){if(t.has(e))continue;const i=this.tilesByLayer.get(e);i&&i.forEach((e=>e.dispose())),this.tilesByLayer.delete(e)}}setSnapshotsForLayer(e,t){const i=new Map((this.tilesByLayer.get(e)||[]).map((e=>[e.snapshot,e]))),s=[],n=[];for(const e of t){const t=i.get(e.snapshot);t?(n.push(t),i.delete(e.snapshot)):s.push(new le(e))}this.tilesByLayer.set(e,n.concat(s));for(const e of i.values())e.dispose();const r=this.gl;return r&&this.scale?Promise.all(s.map((e=>e.update(r,this.scale)))).then(this.textureUpdatedCallback):Promise.resolve()}setScale(e){this.scale&&this.scale>=e||(this.scale=e,this.updateTextures())}tilesForLayer(e){return this.tilesByLayer.get(e)||[]}layerNeedsUpdate(e){this.queue.indexOf(e)<0&&this.queue.push(e),this.active&&this.throttler.schedule(this.update.bind(this))}forceUpdate(){this.queue.forEach((e=>this.updateLayer(e))),this.queue=[],this.update()}update(){const e=this.queue.shift();return e?(this.queue.length&&this.throttler.schedule(this.update.bind(this)),this.updateLayer(e)):Promise.resolve()}updateLayer(e){return Promise.all(e.snapshots()).then((t=>this.setSnapshotsForLayer(e,t.filter((e=>null!==e)))))}updateTextures(){if(this.gl&&this.scale)for(const e of this.tilesByLayer.values())for(const t of e){const e=t.updateScale(this.gl,this.scale);e&&e.then(this.textureUpdatedCallback)}}}class oe{relatedObject;lineWidth;borderColor;fillColor;texture;vertices;constructor(e){this.relatedObject=e,this.lineWidth=1,this.borderColor=null,this.fillColor=null,this.texture=null}setVertices(e,t){this.vertices=[e[0],e[1],t,e[2],e[3],t,e[4],e[5],t,e[6],e[7],t]}calculatePointOnQuad(e,t,i){const s=e[0],n=e[1],r=e[2],a=e[3],o=e[4],l=e[5],h=e[6],c=e[7],d=s+t*(r-s),u=n+t*(a-n);return[d+i*(h+t*(o-h)-d),u+i*(c+t*(l-c)-u)]}calculateVerticesFromRect(e,t,i){const s=e.quad(),n=t.x/e.width(),r=(t.x+t.width)/e.width(),a=t.y/e.height(),o=(t.y+t.height)/e.height(),l=this.calculatePointOnQuad(s,n,a).concat(this.calculatePointOnQuad(s,r,a)).concat(this.calculatePointOnQuad(s,r,o)).concat(this.calculatePointOnQuad(s,n,o));this.setVertices(l,i)}intersectWithLine(e,t,i){let s;const r=[];for(s=0;s<4;++s)r[s]=n.Geometry.multiplyVectorByMatrixAndNormalize(new n.Geometry.Vector(this.vertices[3*s],this.vertices[3*s+1],this.vertices[3*s+2]),e);const a=n.Geometry.crossProduct(n.Geometry.subtract(r[1],r[0]),n.Geometry.subtract(r[2],r[1])),o=a.x,l=a.y,h=a.z,c=-(-(o*r[0].x+l*r[0].y+h*r[0].z)+o*t+l*i)/h,d=new n.Geometry.Vector(t,i,c),u=r.map(n.Geometry.subtract.bind(null,d));for(s=0;s<u.length;++s){if(n.Geometry.scalarProduct(a,n.Geometry.crossProduct(u[s],u[(s+1)%u.length]))<0)return}return c}}class le{snapshot;rect;scale;texture;gl;constructor(e){this.snapshot=e.snapshot,this.rect=e.rect,this.scale=0,this.texture=null}dispose(){this.snapshot.release(),this.texture&&(this.gl.deleteTexture(this.texture),this.texture=null)}updateScale(e,t){return this.texture&&this.scale>=t?null:this.update(e,t)}async update(e,t){this.gl=e,this.scale=t;const i=await this.snapshot.replay(t),s=i?await n.UIUtils.loadImage(i):null;this.texture=s?ae.createTextureForImage(e,s):null}}var he=Object.freeze({__proto__:null,Layers3DView:Y,get OutlineType(){return z},FragmentShader:G,VertexShader:q,HoveredBorderColor:K,SelectedBorderColor:$,BorderColor:Q,ViewportBorderColor:Z,ScrollRectBackgroundColor:J,HoveredImageMaskColor:ee,BorderWidth:te,SelectedBorderWidth:ie,ViewportBorderWidth:se,LayerSpacing:ne,ScrollRectSpacing:re,LayerTextureManager:ae,Rectangle:oe,Tile:le});const ce=new CSSStyleSheet;ce.replaceSync(".paint-profiler-overview{background-color:var(--sys-color-cdt-base-container)}.paint-profiler-canvas-container{flex:auto;position:relative}.paint-profiler-pie-chart{width:60px!important;height:60px!important;padding:2px;overflow:hidden;font-size:10px}.paint-profiler-canvas-container canvas{z-index:200;background-color:var(--sys-color-cdt-base-container);opacity:95%;height:100%;width:100%}.paint-profiler-canvas-container .overview-grid-window-resizer{z-index:2000}\n/*# sourceURL=paintProfiler.css */\n");const de={profiling:"Profiling…",shapes:"Shapes",bitmap:"Bitmap",text:"Text",misc:"Misc",profilingResults:"Profiling results",commandLog:"Command Log"},ue=t.i18n.registerUIStrings("panels/layer_viewer/PaintProfilerView.ts",de),pe=t.i18n.getLocalizedString.bind(void 0,ue);let me=null,ge=null;class ye extends(e.ObjectWrapper.eventMixin(n.Widget.HBox)){canvasContainer;progressBanner;pieChart;showImageCallback;canvas;context;selectionWindowInternal;innerBarWidth;minBarHeight;barPaddingWidth;outerBarWidth;pendingScale;scale;samplesPerBar;log;snapshot;logCategories;profiles;updateImageTimer;constructor(e){super(!0),this.contentElement.classList.add("paint-profiler-overview"),this.canvasContainer=this.contentElement.createChild("div","paint-profiler-canvas-container"),this.progressBanner=this.contentElement.createChild("div","full-widget-dimmed-banner hidden"),this.progressBanner.textContent=pe(de.profiling),this.pieChart=new a.PieChart.PieChart,this.populatePieChart(0,[]),this.pieChart.classList.add("paint-profiler-pie-chart"),this.contentElement.appendChild(this.pieChart),this.showImageCallback=e,this.canvas=this.canvasContainer.createChild("canvas","fill"),this.context=this.canvas.getContext("2d"),this.selectionWindowInternal=new a.OverviewGrid.Window(this.canvasContainer),this.selectionWindowInternal.addEventListener("WindowChanged",this.onWindowChanged,this),this.innerBarWidth=4*window.devicePixelRatio,this.minBarHeight=window.devicePixelRatio,this.barPaddingWidth=2*window.devicePixelRatio,this.outerBarWidth=this.innerBarWidth+this.barPaddingWidth,this.pendingScale=1,this.scale=this.pendingScale,this.samplesPerBar=0,this.log=[],this.reset()}static categories(){return me||(me={shapes:new Ce("shapes",pe(de.shapes),"rgb(255, 161, 129)"),bitmap:new Ce("bitmap",pe(de.bitmap),"rgb(136, 196, 255)"),text:new Ce("text",pe(de.text),"rgb(180, 255, 137)"),misc:new Ce("misc",pe(de.misc),"rgb(206, 160, 255)")}),me}static initLogItemCategories(){if(!ge){const e=ye.categories(),t={};t.Clear=e.misc,t.DrawPaint=e.misc,t.DrawData=e.misc,t.SetMatrix=e.misc,t.PushCull=e.misc,t.PopCull=e.misc,t.Translate=e.misc,t.Scale=e.misc,t.Concat=e.misc,t.Restore=e.misc,t.SaveLayer=e.misc,t.Save=e.misc,t.BeginCommentGroup=e.misc,t.AddComment=e.misc,t.EndCommentGroup=e.misc,t.ClipRect=e.misc,t.ClipRRect=e.misc,t.ClipPath=e.misc,t.ClipRegion=e.misc,t.DrawPoints=e.shapes,t.DrawRect=e.shapes,t.DrawOval=e.shapes,t.DrawRRect=e.shapes,t.DrawPath=e.shapes,t.DrawVertices=e.shapes,t.DrawDRRect=e.shapes,t.DrawBitmap=e.bitmap,t.DrawBitmapRectToRect=e.bitmap,t.DrawBitmapMatrix=e.bitmap,t.DrawBitmapNine=e.bitmap,t.DrawSprite=e.bitmap,t.DrawPicture=e.bitmap,t.DrawText=e.text,t.DrawPosText=e.text,t.DrawPosTextH=e.text,t.DrawTextOnPath=e.text,ge=t}return ge}static categoryForLogItem(e){const t=i.StringUtilities.toTitleCase(e.method),s=ye.initLogItemCategories();let n=s[t];return n||(n=ye.categories().misc,s[t]=n),n}onResize(){this.update()}async setSnapshotAndLog(e,t,i){if(this.reset(),this.snapshot=e,this.snapshot&&this.snapshot.addReference(),this.log=t,this.logCategories=this.log.map(ye.categoryForLogItem),!e)return this.update(),this.populatePieChart(0,[]),void this.selectionWindowInternal.setEnabled(!1);this.selectionWindowInternal.setEnabled(!0),this.progressBanner.classList.remove("hidden"),this.updateImage();const s=await e.profile(i);this.progressBanner.classList.add("hidden"),this.profiles=s,this.update(),this.updatePieChart()}setScale(e){const t=e>this.scale;this.pendingScale=Math.min(1,2*e),t&&this.snapshot&&this.updateImage()}update(){if(this.canvas.width=this.canvasContainer.clientWidth*window.devicePixelRatio,this.canvas.height=this.canvasContainer.clientHeight*window.devicePixelRatio,this.samplesPerBar=0,!this.profiles||!this.profiles.length||!this.logCategories)return;const e=Math.floor((this.canvas.width-2*this.barPaddingWidth)/this.outerBarWidth),t=this.log.length;this.samplesPerBar=Math.ceil(t/e);let i=0;const s=[],n=[];let r={};for(let e=0,a=0,o=0;e<t;){let l=this.logCategories[e]&&this.logCategories[e].name||"misc";const h=this.log[e].commandIndex;for(let e=0;e<this.profiles.length;e++){const t=this.profiles[e][h];o+=t,r[l]=(r[l]||0)+t}if(++e,e-a===this.samplesPerBar||e===t){const t=this.profiles.length*(e-a);for(l in o/=t,r)r[l]/=t;s.push(o),n.push(r),o>i&&(i=o),o=0,r={},a=e}}const a=4*window.devicePixelRatio,o=(this.canvas.height-a-this.minBarHeight)/i;for(let e=0;e<s.length;++e){for(const t in n[e])n[e][t]*=(s[e]*o+this.minBarHeight)/s[e];this.renderBar(e,n[e])}}renderBar(e,t){const i=ye.categories();let s=0;const n=this.barPaddingWidth+e*this.outerBarWidth;for(const e in i){if(!t[e])continue;s+=t[e];const r=this.canvas.height-s;this.context.fillStyle=i[e].color,this.context.fillRect(n,r,this.innerBarWidth,t[e])}}onWindowChanged(){this.dispatchEventToListeners("WindowChanged"),this.updatePieChart(),this.updateImageTimer||(this.updateImageTimer=window.setTimeout(this.updateImage.bind(this),100))}updatePieChart(){const{total:e,slices:t}=this.calculatePieChart();this.populatePieChart(e,t)}calculatePieChart(){const e=this.selectionWindow();if(!this.profiles||!this.profiles.length||!e)return{total:0,slices:[]};let t=0;const i={};for(let s=e.left;s<e.right;++s){const e=this.log[s],n=ye.categoryForLogItem(e);i[n.color]=i[n.color]||0;for(let s=0;s<this.profiles.length;++s){const r=this.profiles[s][e.commandIndex];t+=r,i[n.color]+=r}}const s=[];for(const e in i)s.push({value:i[e]/this.profiles.length,color:e,title:""});return{total:t/this.profiles.length,slices:s}}populatePieChart(e,t){this.pieChart.data={chartName:pe(de.profilingResults),size:55,formatter:this.formatPieChartTime.bind(this),showLegend:!1,total:e,slices:t}}formatPieChartTime(e){return t.TimeUtilities.millisToString(1e3*e,!0)}selectionWindow(){if(!this.log)return null;const e=(this.selectionWindowInternal.windowLeft||0)*this.canvas.width,t=(this.selectionWindowInternal.windowRight||0)*this.canvas.width,s=Math.floor(e/this.outerBarWidth),n=Math.floor((t+this.innerBarWidth-this.barPaddingWidth/2)/this.outerBarWidth);return{left:i.NumberUtilities.clamp(s*this.samplesPerBar,0,this.log.length-1),right:i.NumberUtilities.clamp(n*this.samplesPerBar,0,this.log.length)}}updateImage(){let e,t;delete this.updateImageTimer;const i=this.selectionWindow();this.profiles&&this.profiles.length&&i&&(e=this.log[i.left].commandIndex,t=this.log[i.right-1].commandIndex);const s=this.pendingScale;this.snapshot&&this.snapshot.replay(s,e,t).then((e=>{e&&(this.scale=s,this.showImageCallback(e))}))}reset(){this.snapshot&&this.snapshot.release(),this.snapshot=null,this.profiles=null,this.selectionWindowInternal.reset(),this.selectionWindowInternal.setEnabled(!1)}wasShown(){super.wasShown(),this.registerCSSFiles([ce])}}class fe extends n.ThrottledWidget.ThrottledWidget{treeOutline;log;treeItemCache;selectionWindow;constructor(){super(),this.setMinimumSize(100,25),this.element.classList.add("overflow-auto"),this.treeOutline=new n.TreeOutline.TreeOutlineInShadow,n.ARIAUtils.setLabel(this.treeOutline.contentElement,pe(de.commandLog)),this.element.appendChild(this.treeOutline.element),this.setDefaultFocusedElement(this.treeOutline.contentElement),this.log=[],this.treeItemCache=new Map}setCommandLog(e){this.log=e,this.updateWindow({left:0,right:this.log.length})}appendLogItem(e){let t=this.treeItemCache.get(e);if(t){if(t.parent)return}else t=new we(this,e),this.treeItemCache.set(e,t);this.treeOutline.appendChild(t)}updateWindow(e){this.selectionWindow=e,this.update()}doUpdate(){if(!this.selectionWindow||!this.log.length)return this.treeOutline.removeChildren(),Promise.resolve();const e=this.treeOutline.rootElement();for(;;){const t=e.firstChild();if(!t||t.logItem.commandIndex>=this.selectionWindow.left)break;e.removeChildAtIndex(0)}for(;;){const t=e.lastChild();if(!t||t.logItem.commandIndex<this.selectionWindow.right)break;e.removeChildAtIndex(e.children().length-1)}for(let e=this.selectionWindow.left,t=this.selectionWindow.right;e<t;++e)this.appendLogItem(this.log[e]);return Promise.resolve()}}class we extends n.TreeOutline.TreeElement{logItem;ownerView;filled;constructor(e,t){super("",Boolean(t.params)),this.logItem=t,this.ownerView=e,this.filled=!1}onattach(){this.update()}async onpopulate(){for(const e in this.logItem.params)ve.appendLogPropertyItem(this,e,this.logItem.params[e])}paramToString(e,t){if("object"!=typeof e)return"string"==typeof e&&e.length>100?t:JSON.stringify(e);let i="",s=0;for(const n in e){const r=e[n];if(++s>4||"object"===r||"string"===r&&r.length>100)return t;i&&(i+=", "),i+=r}return i}paramsToString(e){let t="";for(const i in e)t&&(t+=", "),t+=this.paramToString(e[i],i);return t}update(){const e=document.createDocumentFragment();n.UIUtils.createTextChild(e,this.logItem.method+"("+this.paramsToString(this.logItem.params)+")"),this.title=e}}class ve extends n.TreeOutline.TreeElement{property;constructor(e){super(),this.property=e}static appendLogPropertyItem(e,t,i){const s=new ve({name:t,value:i});if(e.appendChild(s),i&&"object"==typeof i)for(const e in i)ve.appendLogPropertyItem(s,e,i[e])}onattach(){const e=document.createDocumentFragment();e.createChild("span","name").textContent=this.property.name;if(e.createChild("span","separator").textContent=": ",null===this.property.value||"object"!=typeof this.property.value){const t=e.createChild("span","value");t.textContent=JSON.stringify(this.property.value),t.classList.add("cm-js-"+(null===this.property.value?"null":typeof this.property.value))}this.title=e}}class Ce{name;title;color;constructor(e,t,i){this.name=e,this.title=t,this.color=i}}var be=Object.freeze({__proto__:null,PaintProfilerView:ye,PaintProfilerCommandLogView:fe,LogTreeElement:we,LogPropertyTreeElement:ve,PaintProfilerCategory:Ce});export{S as LayerDetailsView,E as LayerTreeOutline,g as LayerViewHost,he as Layers3DView,be as PaintProfilerView,A as TransformController};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../ui/legacy/legacy.js";import*as t from"../../ui/visual_logging/visual_logging.js";import*as r from"../layer_viewer/layer_viewer.js";import*as i from"../../core/common/common.js";import*as a from"../../core/i18n/i18n.js";import*as s from"../../core/sdk/sdk.js";class n extends e.SplitWidget.SplitWidget{logTreeView;paintProfilerView;constructor(e){super(!0,!1),this.element.setAttribute("jslog",`${t.pane("layers.paint-profiler").track({resize:!0})}`),this.logTreeView=new r.PaintProfilerView.PaintProfilerCommandLogView,this.setSidebarWidget(this.logTreeView),this.paintProfilerView=new r.PaintProfilerView.PaintProfilerView(e),this.setMainWidget(this.paintProfilerView),this.paintProfilerView.addEventListener("WindowChanged",this.onWindowChanged,this),this.logTreeView.focus()}reset(){this.paintProfilerView.setSnapshotAndLog(null,[],null)}profile(e){function t(e,t){this.logTreeView.setCommandLog(t||[]),this.paintProfilerView.setSnapshotAndLog(e,t||[],null),e&&e.release()}e.commandLog().then((r=>t.call(this,e,r)))}setScale(e){this.paintProfilerView.setScale(e)}onWindowChanged(){this.logTreeView.updateWindow(this.paintProfilerView.selectionWindow())}}var l,o=Object.freeze({__proto__:null,LayerPaintProfilerView:n});class d extends s.SDKModel.SDKModel{layerTreeAgent;paintProfilerModel;layerTreeInternal;throttler;enabled;lastPaintRectByLayerId;constructor(e){super(e),this.layerTreeAgent=e.layerTreeAgent(),e.registerLayerTreeDispatcher(new c(this)),this.paintProfilerModel=e.model(s.PaintProfiler.PaintProfilerModel);const t=e.model(s.ResourceTreeModel.ResourceTreeModel);t&&t.addEventListener(s.ResourceTreeModel.Events.PrimaryPageChanged,this.onPrimaryPageChanged,this),this.layerTreeInternal=null,this.throttler=new i.Throttler.Throttler(20)}async disable(){this.enabled&&(this.enabled=!1,await this.layerTreeAgent.invoke_disable())}enable(){this.enabled||(this.enabled=!0,this.forceEnable())}async forceEnable(){this.lastPaintRectByLayerId=new Map,this.layerTreeInternal||(this.layerTreeInternal=new h(this)),await this.layerTreeAgent.invoke_enable()}layerTree(){return this.layerTreeInternal}async layerTreeChanged(e){this.enabled&&this.throttler.schedule(this.innerSetLayers.bind(this,e))}async innerSetLayers(e){const t=this.layerTreeInternal;await t.setLayers(e),this.lastPaintRectByLayerId||(this.lastPaintRectByLayerId=new Map);for(const e of this.lastPaintRectByLayerId.keys()){const r=this.lastPaintRectByLayerId.get(e),i=t.layerById(e);i&&i.setLastPaintRect(r)}this.lastPaintRectByLayerId=new Map,this.dispatchEventToListeners(l.LayerTreeChanged)}layerPainted(e,t){if(!this.enabled)return;const r=this.layerTreeInternal.layerById(e);if(!r)return this.lastPaintRectByLayerId||(this.lastPaintRectByLayerId=new Map),void this.lastPaintRectByLayerId.set(e,t);r.didPaint(t),this.dispatchEventToListeners(l.LayerPainted,r)}onPrimaryPageChanged(){this.layerTreeInternal=null,this.enabled&&this.forceEnable()}}s.SDKModel.SDKModel.register(d,{capabilities:2,autostart:!1}),function(e){e.LayerTreeChanged="LayerTreeChanged",e.LayerPainted="LayerPainted"}(l||(l={}));class h extends s.LayerTreeBase.LayerTreeBase{layerTreeModel;constructor(e){super(e.target()),this.layerTreeModel=e}async setLayers(e){if(!e)return void this.innerSetLayers(e);const t=new Set;for(let r=0;r<e.length;++r){const i=e[r].backendNodeId;i&&!this.backendNodeIdToNode().has(i)&&t.add(i)}await this.resolveBackendNodeIds(t),this.innerSetLayers(e)}innerSetLayers(e){if(this.setRoot(null),this.setContentRoot(null),!e)return;let t;const r=this.layersById;this.layersById=new Map;for(let i=0;i<e.length;++i){const a=e[i].layerId;let s=r.get(a);s?s.reset(e[i]):s=new y(this.layerTreeModel,e[i]),this.layersById.set(a,s);const n=e[i].backendNodeId;n&&s.setNode(this.backendNodeIdToNode().get(n)||null),!this.contentRoot()&&s.drawsContent()&&this.setContentRoot(s);const l=s.parentId();if(l){const e=this.layersById.get(l);if(!e)throw new Error(`Missing parent ${l} for layer ${a}`);e.addChild(s)}else t&&console.assert(!1,"Multiple root layers"),t=s}t&&(this.setRoot(t),t.calculateQuad(new WebKitCSSMatrix))}}class y{scrollRectsInternal;quadInternal;childrenInternal;image;parentInternal;layerPayload;layerTreeModel;nodeInternal;lastPaintRectInternal;paintCountInternal;stickyPositionConstraintInternal;constructor(e,t){this.layerTreeModel=e,this.reset(t)}id(){return this.layerPayload.layerId}parentId(){return this.layerPayload.parentLayerId||null}parent(){return this.parentInternal}isRoot(){return!this.parentId()}children(){return this.childrenInternal}addChild(e){const t=e;t.parentInternal&&console.assert(!1,"Child already has a parent"),this.childrenInternal.push(t),t.parentInternal=this}setNode(e){this.nodeInternal=e}node(){return this.nodeInternal||null}nodeForSelfOrAncestor(){let e=this;for(;e;e=e.parentInternal)if(e.nodeInternal)return e.nodeInternal;return null}offsetX(){return this.layerPayload.offsetX}offsetY(){return this.layerPayload.offsetY}width(){return this.layerPayload.width}height(){return this.layerPayload.height}transform(){return this.layerPayload.transform||null}quad(){return this.quadInternal}anchorPoint(){return[this.layerPayload.anchorX||0,this.layerPayload.anchorY||0,this.layerPayload.anchorZ||0]}invisible(){return this.layerPayload.invisible||!1}paintCount(){return this.paintCountInternal||this.layerPayload.paintCount}lastPaintRect(){return this.lastPaintRectInternal||null}setLastPaintRect(e){this.lastPaintRectInternal=e}scrollRects(){return this.scrollRectsInternal}stickyPositionConstraint(){return this.stickyPositionConstraintInternal||null}async requestCompositingReasons(){return(await this.layerTreeModel.layerTreeAgent.invoke_compositingReasons({layerId:this.id()})).compositingReasons||[]}async requestCompositingReasonIds(){return(await this.layerTreeModel.layerTreeAgent.invoke_compositingReasons({layerId:this.id()})).compositingReasonIds||[]}drawsContent(){return this.layerPayload.drawsContent}gpuMemoryUsage(){return this.drawsContent()?this.width()*this.height()*4:0}snapshots(){return[this.layerTreeModel.paintProfilerModel.makeSnapshot(this.id()).then((e=>e?{rect:{x:0,y:0,width:this.width(),height:this.height()},snapshot:e}:null))]}didPaint(e){this.lastPaintRectInternal=e,this.paintCountInternal=this.paintCount()+1,this.image=null}reset(e){this.nodeInternal=null,this.childrenInternal=[],this.parentInternal=null,this.paintCountInternal=0,this.layerPayload=e,this.image=null,this.scrollRectsInternal=this.layerPayload.scrollRects||[],this.stickyPositionConstraintInternal=this.layerPayload.stickyPositionConstraint?new s.LayerTreeBase.StickyPositionConstraint(this.layerTreeModel.layerTree(),this.layerPayload.stickyPositionConstraint):null}matrixFromArray(e){return new WebKitCSSMatrix("matrix3d("+e.map((function(e){return e.toFixed(9)})).join(",")+")")}calculateTransformToViewport(t){let r=(new WebKitCSSMatrix).translate(this.layerPayload.offsetX,this.layerPayload.offsetY);if(this.layerPayload.transform){const t=this.matrixFromArray(this.layerPayload.transform),i=new e.Geometry.Vector(this.layerPayload.width*this.anchorPoint()[0],this.layerPayload.height*this.anchorPoint()[1],this.anchorPoint()[2]),a=e.Geometry.multiplyVectorByMatrixAndNormalize(i,r),s=(new WebKitCSSMatrix).translate(-a.x,-a.y,-a.z);r=s.inverse().multiply(t.multiply(s.multiply(r)))}return r=t.multiply(r),r}createVertexArrayForRect(e,t){return[0,0,0,e,0,0,e,t,0,0,t,0]}calculateQuad(t){const r=this.calculateTransformToViewport(t);this.quadInternal=[];const i=this.createVertexArrayForRect(this.layerPayload.width,this.layerPayload.height);for(let t=0;t<4;++t){const a=e.Geometry.multiplyVectorByMatrixAndNormalize(new e.Geometry.Vector(i[3*t],i[3*t+1],i[3*t+2]),r);this.quadInternal.push(a.x,a.y)}this.childrenInternal.forEach((function(e){e.calculateQuad(r)}))}}class c{layerTreeModel;constructor(e){this.layerTreeModel=e}layerTreeDidChange({layers:e}){this.layerTreeModel.layerTreeChanged(e||null)}layerPainted({layerId:e,clip:t}){this.layerTreeModel.layerPainted(e,t)}}var u=Object.freeze({__proto__:null,LayerTreeModel:d,get Events(){return l},AgentLayerTree:h,AgentLayer:y});const P={details:"Details",profiler:"Profiler"},p=a.i18n.registerUIStrings("panels/layers/LayersPanel.ts",P),g=a.i18n.getLocalizedString.bind(void 0,p);let w;class f extends e.Panel.PanelWithSidebar{model;layerViewHost;layerTreeOutline;rightSplitWidget;layers3DView;tabbedPane;layerDetailsView;paintProfilerView;updateThrottler;layerBeingProfiled;constructor(){super("layers",225),this.model=null,s.TargetManager.TargetManager.instance().observeTargets(this,{scoped:!0}),this.layerViewHost=new r.LayerViewHost.LayerViewHost,this.layerTreeOutline=new r.LayerTreeOutline.LayerTreeOutline(this.layerViewHost),this.layerTreeOutline.addEventListener("PaintProfilerRequested",this.onPaintProfileRequested,this),this.panelSidebarElement().appendChild(this.layerTreeOutline.element),this.setDefaultFocusedElement(this.layerTreeOutline.element),this.rightSplitWidget=new e.SplitWidget.SplitWidget(!1,!0,"layer-details-split-view-state"),this.splitWidget().setMainWidget(this.rightSplitWidget),this.layers3DView=new r.Layers3DView.Layers3DView(this.layerViewHost),this.rightSplitWidget.setMainWidget(this.layers3DView),this.layers3DView.addEventListener("PaintProfilerRequested",this.onPaintProfileRequested,this),this.layers3DView.addEventListener("ScaleChanged",this.onScaleChanged,this),this.tabbedPane=new e.TabbedPane.TabbedPane,this.rightSplitWidget.setSidebarWidget(this.tabbedPane),this.layerDetailsView=new r.LayerDetailsView.LayerDetailsView(this.layerViewHost),this.layerDetailsView.addEventListener("PaintProfilerRequested",this.onPaintProfileRequested,this),this.tabbedPane.appendTab(m.Details,g(P.details),this.layerDetailsView),this.paintProfilerView=new n(this.showImage.bind(this)),this.tabbedPane.addEventListener(e.TabbedPane.Events.TabClosed,this.onTabClosed,this),this.updateThrottler=new i.Throttler.Throttler(100)}static instance(e){return w&&!e?.forceNew||(w=new f),w}focus(){this.layerTreeOutline.focus()}wasShown(){super.wasShown(),this.model&&this.model.enable()}willHide(){this.model&&this.model.disable(),super.willHide()}targetAdded(e){e===e.outermostTarget()&&(this.model=e.model(d),this.model&&(this.model.addEventListener(l.LayerTreeChanged,this.onLayerTreeUpdated,this),this.model.addEventListener(l.LayerPainted,this.onLayerPainted,this),this.isShowing()&&(this.model.enable(),this.update())))}targetRemoved(e){this.model&&this.model.target()===e&&(this.model.removeEventListener(l.LayerTreeChanged,this.onLayerTreeUpdated,this),this.model.removeEventListener(l.LayerPainted,this.onLayerPainted,this),this.model.disable(),this.model=null)}onLayerTreeUpdated(){this.updateThrottler.schedule(this.update.bind(this))}update(){if(this.model){this.layerViewHost.setLayerTree(this.model.layerTree());const e=this.model.target().model(s.ResourceTreeModel.ResourceTreeModel);if(e){const t=e.mainFrame;if(t){const e=t.url;this.element.setAttribute("test-current-url",e)}}}return Promise.resolve()}onLayerPainted({data:e}){if(!this.model)return;const t=this.layerViewHost.selection();t&&t.layer()===e&&this.layerDetailsView.update(),this.layers3DView.updateLayerSnapshot(e)}onPaintProfileRequested({data:e}){this.layers3DView.snapshotForSelection(e).then((t=>{t&&(this.layerBeingProfiled=e.layer(),this.tabbedPane.hasTab(m.Profiler)||this.tabbedPane.appendTab(m.Profiler,g(P.profiler),this.paintProfilerView,void 0,!0,!0),this.tabbedPane.selectTab(m.Profiler),this.paintProfilerView.profile(t.snapshot))}))}onTabClosed(e){e.data.tabId===m.Profiler&&this.layerBeingProfiled&&(this.paintProfilerView.reset(),this.layers3DView.showImageForLayer(this.layerBeingProfiled,void 0),this.layerBeingProfiled=null)}showImage(e){this.layerBeingProfiled&&this.layers3DView.showImageForLayer(this.layerBeingProfiled,e)}onScaleChanged(e){this.paintProfilerView.setScale(e.data)}}const m={Details:"details",Profiler:"profiler"};var T=Object.freeze({__proto__:null,LayersPanel:f,DetailsViewTabs:m});export{o as LayerPaintProfilerView,u as LayerTreeModel,T as LayersPanel};
|