simdeck 0.1.4 → 0.1.5
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/README.md +34 -14
- package/build/simdeck-bin +0 -0
- package/client/dist/assets/index-D2-CFde1.css +1 -0
- package/client/dist/assets/index-E1gIgaOR.js +9 -0
- package/client/dist/chrome-devtools-ui/Images/3d-center.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/3d-pan.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/3d-rotate.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/Images.js +296 -0
- package/client/dist/chrome-devtools-ui/Images/accelerometer-back.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/accelerometer-bottom.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/accelerometer-front.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/accelerometer-left.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/accelerometer-right.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/accelerometer-top.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/account-tree.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-content-center.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-content-end.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-content-space-around.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-content-space-between.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-content-space-evenly.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-content-start.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-content-stretch.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-items-baseline.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-items-center.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-items-end.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-items-start.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-items-stretch.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-self-center.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-self-end.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-self-start.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-self-stretch.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/animation.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-back.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-collapse.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-down.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-drop-down-dark.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-drop-down-light.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-drop-down.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-forward.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-right-circle.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-up-down-circle.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-up-down.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-up.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/bell.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/bezier-curve-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/bin.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/bottom-panel-close.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/bottom-panel-open.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/brackets.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/breakpoint-circle.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/breakpoint-crossed-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/breakpoint-crossed.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/brush-2.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/brush-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/brush.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/bug.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/bundle.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/button-magic.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/calendar-today.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/center-focus-weak.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/check-circle.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/check-double.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/checker.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/checkmark.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/chevron-double-right.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/chevron-down.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/chevron-left-dot.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/chevron-left.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/chevron-right.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/chevron-up.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/chromeLeft.avif +0 -0
- package/client/dist/chrome-devtools-ui/Images/chromeMiddle.avif +0 -0
- package/client/dist/chrome-devtools-ui/Images/chromeRight.avif +0 -0
- package/client/dist/chrome-devtools-ui/Images/class.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/clear-list.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/clear.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/cloud.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/code-circle.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/code.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/colon.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/color-picker-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/color-picker.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/compress.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/console-conditional-breakpoint.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/console-logpoint.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/cookie.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/cookie_off.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/copy.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/corporate-fare.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/credit-card.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/cross-circle-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/cross-circle.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/cross.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/cssoverview_icons_2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/Images/custom-typography.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/database.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/deployed.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/device-fold.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/devices.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/devtools-thumbnail.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/devtools-tips.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/devtools.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/difference.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/dock-bottom.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/dock-left.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/dock-right.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/dock-window.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/document.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/dog-paw.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/domain.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/dots-horizontal.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/dots-vertical.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/download.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/edit.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/empty.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/errorWave.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/exclamation.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/experiment-check.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/experiment.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/extension.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/eye.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/favicon.ico +0 -0
- package/client/dist/chrome-devtools-ui/Images/file-document.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-fetch-xhr.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-font.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-generic.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-image.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-json.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-manifest.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-media.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-script.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-snippet.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-stylesheet.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-wasm.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-websocket.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/filter-clear.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/filter-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/filter.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/flex-direction.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/flex-no-wrap.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/flex-wrap.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/flow.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/fold-more.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/folder.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/frame-crossed.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/frame-icon.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/frame.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/gear-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/gear.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/gears.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/global.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/google.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/goto-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/grid-on.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/group.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/heap-snapshot.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/heap-snapshots.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/help.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/history.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/home.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/hover.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/iframe-crossed.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/iframe.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/import.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/indeterminate-question-box.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/info-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/info.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/issue-cross-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/issue-exclamation-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/issue-questionmark-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/issue-text-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-content-center.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-content-end.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-content-space-around.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-content-space-between.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-content-space-evenly.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-content-start.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-items-center.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-items-end.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-items-start.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-items-stretch.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/keyboard-arrow-right.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/keyboard-full.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/keyboard-pen.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/keyboard.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/label.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/large-arrow-right-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/layers-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/layers.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/left-panel-close.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/left-panel-open.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/lightbulb-spark.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/lightbulb.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/lighthouse_logo.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/list.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/location-on.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/lock.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/match-case.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/match-whole-word.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/memory.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/minus.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/mop.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/mouse.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/navigationControls.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/navigationControls_2x.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/network-settings.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/node-stack-icon.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/nodeIcon.avif +0 -0
- package/client/dist/chrome-devtools-ui/Images/open-externally.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/override.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/palette.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/pause-circle.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/pause.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/pen-spark.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/performance-panel-delete-annotation.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/performance-panel-diagram.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/performance-panel-entry-label.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/performance-panel-time-range.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/performance.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/person.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/photo-camera.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/play.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/plus.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/policy.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/popoverArrows.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/popup.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/preview_feature_video_thumbnail.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/profile.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/psychiatry.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/react_native/learn-debugging-basics.jpg +0 -0
- package/client/dist/chrome-devtools-ui/Images/react_native/learn-native-debugging.jpg +0 -0
- package/client/dist/chrome-devtools-ui/Images/react_native/learn-react-native-devtools.jpg +0 -0
- package/client/dist/chrome-devtools-ui/Images/react_native/welcomeIcon.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/record-start.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/record-stop.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/redo.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/refresh.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/regular-expression.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/replace.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/replay.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/report.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/resizeDiagonal.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/resizeHorizontal.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/resizeVertical.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/resume.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/review.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/right-panel-close.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/right-panel-open.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/scissors.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/screen-rotation.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/search.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/select-element.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/send.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/shadow.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/small-status-dot.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/smart-assistant.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/snippet.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/spark-info.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/star.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/step-into.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/step-out.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/step-over.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/step.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/stop.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/symbol.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/sync.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/table.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/terminal.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/thumb-down-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/thumb-down.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/thumb-up-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/thumb-up.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/tonality.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/toolbarResizerVertical.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/top-panel-close.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/top-panel-open.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/touch-app.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/touchCursor.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/touchCursor_2x.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/triangle-bottom-right.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/triangle-down.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/triangle-left.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/triangle-right.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/triangle-up.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/tune.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/undo.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/warning-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/warning.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/watch.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/whatsnew.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/width.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/zoom-in.svg +1 -0
- package/client/dist/chrome-devtools-ui/Tests.js +1700 -0
- package/client/dist/chrome-devtools-ui/application_tokens.css +407 -0
- package/client/dist/chrome-devtools-ui/core/common/common.js +1 -0
- package/client/dist/chrome-devtools-ui/core/dom_extension/dom_extension.js +1 -0
- package/client/dist/chrome-devtools-ui/core/host/host.js +1 -0
- package/client/dist/chrome-devtools-ui/core/i18n/i18n.js +1 -0
- package/client/dist/chrome-devtools-ui/core/i18n/locales/en-US.json +1 -0
- package/client/dist/chrome-devtools-ui/core/i18n/locales/zh.json +1 -0
- package/client/dist/chrome-devtools-ui/core/platform/platform.js +1 -0
- package/client/dist/chrome-devtools-ui/core/protocol_client/protocol_client.js +1 -0
- package/client/dist/chrome-devtools-ui/core/rn_experiments/rn_experiments.js +1 -0
- package/client/dist/chrome-devtools-ui/core/root/root.js +1 -0
- package/client/dist/chrome-devtools-ui/core/sdk/sdk-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/core/sdk/sdk.js +1 -0
- package/client/dist/chrome-devtools-ui/design_system_tokens.css +782 -0
- package/client/dist/chrome-devtools-ui/device_mode_emulation_frame.html +24 -0
- package/client/dist/chrome-devtools-ui/devtools_app.html +24 -0
- package/client/dist/chrome-devtools-ui/devtools_compatibility.js +1741 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/MotoG4-landscape.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/MotoG4-portrait.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/Nexus5X-landscape.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/Nexus5X-portrait.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/Nexus6P-landscape.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/Nexus6P-portrait.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nest-hub-horizontal.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nest-hub-max-horizontal.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-horizontal-default-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-horizontal-default-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-horizontal-keyboard-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-horizontal-keyboard-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-horizontal-navigation-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-horizontal-navigation-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-vertical-default-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-vertical-default-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-vertical-keyboard-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-vertical-keyboard-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-vertical-navigation-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-vertical-navigation-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-horizontal-default-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-horizontal-default-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-horizontal-keyboard-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-horizontal-keyboard-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-horizontal-navigation-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-horizontal-navigation-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-vertical-default-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-vertical-default-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-vertical-keyboard-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-vertical-keyboard-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-vertical-navigation-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-vertical-navigation-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/iPad-landscape.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/iPad-portrait.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/iPhone5-landscape.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/iPhone5-portrait.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/iPhone6-landscape.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/iPhone6-portrait.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/iPhone6Plus-landscape.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/iPhone6Plus-portrait.avif +0 -0
- package/client/dist/chrome-devtools-ui/entrypoints/device_mode_emulation_frame/device_mode_emulation_frame.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/devtools_app/devtools_app.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/formatter_worker/FormatterActions.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/formatter_worker/formatter_worker-entrypoint.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/formatter_worker/formatter_worker.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/heap_snapshot_worker/heap_snapshot_worker-entrypoint.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/heap_snapshot_worker/heap_snapshot_worker.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/inspector/inspector.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/inspector_main/inspector_main-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/inspector_main/inspector_main.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/js_app/js_app.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/lighthouse_worker/lighthouse_worker.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/main/main-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/main/main.js +48 -0
- package/client/dist/chrome-devtools-ui/entrypoints/ndb_app/ndb_app.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/node_app/node_app.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/rehydrated_devtools_app/rehydrated_devtools_app.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/rn_fusebox/rn_fusebox.js +24 -0
- package/client/dist/chrome-devtools-ui/entrypoints/shell/shell.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/wasmparser_worker/wasmparser_worker-entrypoint.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/wasmparser_worker/wasmparser_worker.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/worker_app/worker_app.js +1 -0
- package/client/dist/chrome-devtools-ui/inspector.html +24 -0
- package/client/dist/chrome-devtools-ui/integration_test_runner.html +40 -0
- package/client/dist/chrome-devtools-ui/js_app.html +24 -0
- package/client/dist/chrome-devtools-ui/legacy_test_runner/legacy_test_runner.js +13 -0
- package/client/dist/chrome-devtools-ui/legacy_test_runner/test_runner/test_runner.js +1 -0
- package/client/dist/chrome-devtools-ui/models/ai_assistance/ai_assistance.js +1 -0
- package/client/dist/chrome-devtools-ui/models/autofill_manager/autofill_manager.js +1 -0
- package/client/dist/chrome-devtools-ui/models/bindings/bindings.js +1 -0
- package/client/dist/chrome-devtools-ui/models/breakpoints/breakpoints.js +1 -0
- package/client/dist/chrome-devtools-ui/models/cpu_profile/cpu_profile.js +1 -0
- package/client/dist/chrome-devtools-ui/models/crux-manager/crux-manager.js +1 -0
- package/client/dist/chrome-devtools-ui/models/emulation/emulation.js +1 -0
- package/client/dist/chrome-devtools-ui/models/extensions/extensions.js +1 -0
- package/client/dist/chrome-devtools-ui/models/formatter/formatter.js +1 -0
- package/client/dist/chrome-devtools-ui/models/har/har.js +1 -0
- package/client/dist/chrome-devtools-ui/models/heap_snapshot_model/heap_snapshot_model.js +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/CoepCoopSandboxedIframeCannotNavigateToCoopPage.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/CoepCorpNotSameOrigin.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/CoepCorpNotSameOriginAfterDefaultedToSameOriginByCoep.md +18 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/CoepCorpNotSameSite.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/CoepFrameResourceNeedsCoepHeader.md +10 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/CompatibilityModeQuirks.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/CookieAttributeValueExceedsMaxSize.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/LowTextContrast.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteExcludeContextDowngradeRead.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteExcludeContextDowngradeSet.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteExcludeNavigationContextDowngrade.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteInvalidSameParty.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteNoneInsecureErrorRead.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteNoneInsecureErrorSet.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteNoneInsecureWarnRead.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteNoneInsecureWarnSet.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteUnspecifiedLaxAllowUnsafeRead.md +9 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteUnspecifiedLaxAllowUnsafeSet.md +9 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteWarnCrossDowngradeRead.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteWarnCrossDowngradeSet.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteWarnStrictLaxDowngradeStrict.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arInsecureContext.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arInvalidInfoHeader.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arInvalidRegisterOsSourceHeader.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arInvalidRegisterOsTriggerHeader.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arInvalidRegisterSourceHeader.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arInvalidRegisterTriggerHeader.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arNavigationRegistrationUniqueScopeAlreadySet.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arNavigationRegistrationWithoutTransientUserActivation.md +6 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arNoRegisterOsSourceHeader.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arNoRegisterOsTriggerHeader.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arNoRegisterSourceHeader.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arNoRegisterTriggerHeader.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arNoWebOrOsSupport.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arOsSourceIgnored.md +18 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arOsTriggerIgnored.md +19 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arPermissionPolicyDisabled.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arSourceAndTriggerHeaders.md +9 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arSourceIgnored.md +13 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arTriggerIgnored.md +12 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arUntrustworthyReportingOrigin.md +10 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arWebAndOsHeaders.md +11 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/bounceTrackingMitigations.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/clientHintMetaTagAllowListInvalidOrigin.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/clientHintMetaTagModifiedHTML.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieCrossSiteRedirectDowngrade.md +12 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieExcludeBlockedWithinRelatedWebsiteSet.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieExcludeDomainNonAscii.md +11 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieExcludePortMismatch.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieExcludeSchemeMismatch.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieExcludeThirdPartyPhaseoutRead.md +6 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieExcludeThirdPartyPhaseoutSet.md +6 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieWarnDomainNonAscii.md +11 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieWarnMetadataGrantRead.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieWarnMetadataGrantSet.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieWarnThirdPartyPhaseoutRead.md +6 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieWarnThirdPartyPhaseoutSet.md +6 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsAllowCredentialsRequired.md +6 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsDisabledScheme.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsDisallowedByMode.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsHeaderDisallowedByPreflightResponse.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsInsecurePrivateNetwork.md +10 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsInvalidHeaderValues.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsLocalNetworkAccessPermissionDenied.md +19 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsMethodDisallowedByPreflightResponse.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsNoCorsRedirectModeNotFollow.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsOriginMismatch.md +6 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsPreflightAllowPrivateNetworkError.md +10 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsPreflightResponseInvalid.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsPrivateNetworkPermissionDenied.md +10 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsRedirectContainsCredentials.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsWildcardOriginNotAllowed.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cspEvalViolation.md +9 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cspInlineViolation.md +10 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cspTrustedTypesPolicyViolation.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cspTrustedTypesSinkViolation.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cspURLViolation.md +10 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/deprecation.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestAccountsHttpNotFound.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestAccountsInvalidResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestAccountsNoResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestApprovalDeclined.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestCanceled.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestClientMetadataHttpNotFound.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestClientMetadataInvalidResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestClientMetadataNoResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestErrorFetchingSignin.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestErrorIdToken.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestIdTokenHttpNotFound.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestIdTokenInvalidRequest.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestIdTokenInvalidResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestIdTokenNoResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestInvalidSigninResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestManifestHttpNotFound.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestManifestInvalidResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestManifestNoResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestTooManyRequests.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthUserInfoRequestInvalidAccountsResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthUserInfoRequestInvalidConfigOrWellKnown.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoAccountSharingPermission.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoApiPermission.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoReturningUserFromFetchedAccounts.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotIframe.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotPotentiallyTrustworthy.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotSameOrigin.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotSignedInWithIdp.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/fetchingPartitionedBlobURL.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormAriaLabelledByToNonExistingId.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormAutocompleteAttributeEmptyError.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormDuplicateIdForInputError.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormEmptyIdAndNameAttributesForInputError.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormInputAssignedAutocompleteValueToIdOrNameAttributeError.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormInputHasWrongButWellIntendedAutocompleteValueError.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormInputWithNoLabelError.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormLabelForMatchesNonExistingIdError.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormLabelForNameError.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormLabelHasNeitherForNorNestedInput.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericResponseWasBlockedByORB.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/heavyAd.md +10 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/mixedContent.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/navigatingPartitionedBlobURL.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/placeholderDescriptionForInvisibleIssues.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/propertyRuleInvalidNameIssue.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/propertyRuleIssue.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/selectElementAccessibilityDisallowedOptGroupChild.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/selectElementAccessibilityDisallowedSelectChild.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentAttributesSelectDescendant.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentLegendChild.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentOptionChild.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/selectElementAccessibilityNonPhrasingContentOptionChild.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedArrayBuffer.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryUseErrorCrossOriginNoCorsRequest.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryUseErrorDictionaryLoadFailure.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryUseErrorMatchingDictionaryNotUsed.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryUseErrorUnexpectedContentDictionaryHeader.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorCossOriginNoCorsRequest.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorDisallowedBySettings.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorExpiredResponse.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorFeatureDisabled.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorInsufficientResources.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorInvalidMatchField.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorInvalidStructuredHeader.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorNavigationRequest.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorNoMatchField.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonListMatchDestField.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonSecureContext.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonStringIdField.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonStringInMatchDestList.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonStringMatchField.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonTokenTypeField.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorRequestAborted.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorShuttingDown.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorTooLongIdField.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorUnsupportedType.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriInvalidSignatureHeader.md +14 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriInvalidSignatureInputHeader.md +15 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriMissingSignatureHeader.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriMissingSignatureInputHeader.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureHeaderValueIsIncorrectLength.md +11 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureHeaderValueIsNotByteSequence.md +14 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureHeaderValueIsParameterized.md +15 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidComponentName.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidComponentType.md +13 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidDerivedComponentParameter.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidHeaderComponentParameter.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidParameter.md +11 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderKeyIdLength.md +12 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderMissingLabel.md +6 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderMissingRequiredParameters.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderValueMissingComponents.md +11 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderValueNotInnerList.md +11 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriValidationFailedIntegrityMismatch.md +12 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriValidationFailedInvalidLength.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriValidationFailedSignatureExpired.md +6 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriValidationFailedSignatureMismatch.md +11 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/stylesheetLateImport.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/stylesheetRequestFailed.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/issues_manager.js +1 -0
- package/client/dist/chrome-devtools-ui/models/javascript_metadata/javascript_metadata.js +1 -0
- package/client/dist/chrome-devtools-ui/models/live-metrics/live-metrics.js +1 -0
- package/client/dist/chrome-devtools-ui/models/live-metrics/web-vitals-injected/spec/spec.js +1 -0
- package/client/dist/chrome-devtools-ui/models/live-metrics/web-vitals-injected/web-vitals-injected.generated.js +1 -0
- package/client/dist/chrome-devtools-ui/models/logs/logs-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/models/logs/logs.js +1 -0
- package/client/dist/chrome-devtools-ui/models/persistence/persistence-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/models/persistence/persistence.js +1 -0
- package/client/dist/chrome-devtools-ui/models/project_settings/project_settings.js +1 -0
- package/client/dist/chrome-devtools-ui/models/react_native/react_native.js +1 -0
- package/client/dist/chrome-devtools-ui/models/source_map_scopes/source_map_scopes.js +1 -0
- package/client/dist/chrome-devtools-ui/models/text_utils/text_utils.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/extras/extras.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/handlers/handlers.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/helpers/helpers.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/insights/insights.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/lantern/core/core.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/lantern/graph/graph.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/lantern/lantern.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/lantern/metrics/metrics.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/lantern/simulation/simulation.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/lantern/types/types.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/trace.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/types/types.js +1 -0
- package/client/dist/chrome-devtools-ui/models/workspace/workspace.js +1 -0
- package/client/dist/chrome-devtools-ui/models/workspace_diff/workspace_diff.js +1 -0
- package/client/dist/chrome-devtools-ui/ndb_app.html +24 -0
- package/client/dist/chrome-devtools-ui/node_app.html +24 -0
- package/client/dist/chrome-devtools-ui/panels/accessibility/accessibility-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/accessibility/accessibility.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/ai_assistance/ai_assistance-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/ai_assistance/ai_assistance.js +512 -0
- package/client/dist/chrome-devtools-ui/panels/animation/animation-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/animation/animation.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/application/application-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/application/application.js +107 -0
- package/client/dist/chrome-devtools-ui/panels/application/components/components.js +765 -0
- package/client/dist/chrome-devtools-ui/panels/application/preloading/components/components.js +362 -0
- package/client/dist/chrome-devtools-ui/panels/application/preloading/helper/helper.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/autofill/autofill-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/autofill/autofill.js +107 -0
- package/client/dist/chrome-devtools-ui/panels/browser_debugger/browser_debugger-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/browser_debugger/browser_debugger.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/changes/changes-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/changes/changes.js +31 -0
- package/client/dist/chrome-devtools-ui/panels/common/common.js +45 -0
- package/client/dist/chrome-devtools-ui/panels/console/console-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/console/console.js +6 -0
- package/client/dist/chrome-devtools-ui/panels/console_counters/console_counters-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/console_counters/console_counters.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/coverage/coverage-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/coverage/coverage.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/css_overview/components/components.js +23 -0
- package/client/dist/chrome-devtools-ui/panels/css_overview/css_overview-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/css_overview/css_overview.js +148 -0
- package/client/dist/chrome-devtools-ui/panels/developer_resources/developer_resources-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/developer_resources/developer_resources.js +48 -0
- package/client/dist/chrome-devtools-ui/panels/elements/components/components.js +250 -0
- package/client/dist/chrome-devtools-ui/panels/elements/elements-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/elements/elements.js +67 -0
- package/client/dist/chrome-devtools-ui/panels/emulation/components/components.js +39 -0
- package/client/dist/chrome-devtools-ui/panels/emulation/emulation-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/emulation/emulation.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/event_listeners/event_listeners.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/explain/explain-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/explain/explain.js +231 -0
- package/client/dist/chrome-devtools-ui/panels/issues/components/components.js +14 -0
- package/client/dist/chrome-devtools-ui/panels/issues/issues-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/issues/issues.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/js_timeline/js_timeline-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/js_timeline/js_timeline.js +2 -0
- package/client/dist/chrome-devtools-ui/panels/layer_viewer/layer_viewer-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/layer_viewer/layer_viewer.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/layers/layers-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/layers/layers.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/lighthouse/lighthouse-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/lighthouse/lighthouse.js +65 -0
- package/client/dist/chrome-devtools-ui/panels/linear_memory_inspector/components/components.js +179 -0
- package/client/dist/chrome-devtools-ui/panels/linear_memory_inspector/linear_memory_inspector-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/linear_memory_inspector/linear_memory_inspector.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/media/media-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/media/media.js +25 -0
- package/client/dist/chrome-devtools-ui/panels/mobile_throttling/mobile_throttling-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/mobile_throttling/mobile_throttling.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/network/components/components.js +346 -0
- package/client/dist/chrome-devtools-ui/panels/network/forward/forward.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/network/network-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/network/network.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/performance_monitor/performance_monitor-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/performance_monitor/performance_monitor.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/profiler/profiler-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/profiler/profiler.js +8 -0
- package/client/dist/chrome-devtools-ui/panels/protocol_monitor/protocol_monitor-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/protocol_monitor/protocol_monitor.js +293 -0
- package/client/dist/chrome-devtools-ui/panels/react_devtools/react_devtools.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/react_devtools/react_devtools_components-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/react_devtools/react_devtools_profiler-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/components/components.js +686 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/controllers/controllers.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/converters/converters.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/extensions/extensions.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/injected/injected.generated.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/injected/injected.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/models/models.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/recorder-actions/recorder-actions.js +3 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/recorder-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/recorder.js +126 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/util/util.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/rn_welcome/rn_welcome-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/rn_welcome/rn_welcome.js +62 -0
- package/client/dist/chrome-devtools-ui/panels/screencast/screencast-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/screencast/screencast.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/search/search.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/security/security-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/security/security.js +178 -0
- package/client/dist/chrome-devtools-ui/panels/sensors/sensors-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/sensors/sensors.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/settings/components/components.js +22 -0
- package/client/dist/chrome-devtools-ui/panels/settings/emulation/components/components.js +221 -0
- package/client/dist/chrome-devtools-ui/panels/settings/emulation/emulation-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/settings/emulation/emulation.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/settings/emulation/utils/utils.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/settings/settings-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/settings/settings.js +91 -0
- package/client/dist/chrome-devtools-ui/panels/snippets/snippets.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/sources/components/components.js +162 -0
- package/client/dist/chrome-devtools-ui/panels/sources/sources-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/sources/sources.js +2 -0
- package/client/dist/chrome-devtools-ui/panels/timeline/components/components.js +1063 -0
- package/client/dist/chrome-devtools-ui/panels/timeline/components/insights/insights.js +262 -0
- package/client/dist/chrome-devtools-ui/panels/timeline/extensions/extensions.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/timeline/overlays/components/components.js +190 -0
- package/client/dist/chrome-devtools-ui/panels/timeline/overlays/overlays.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/timeline/timeline-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/timeline/timeline.js +43 -0
- package/client/dist/chrome-devtools-ui/panels/timeline/utils/utils.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/utils/utils.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/web_audio/graph_visualizer/graph_visualizer.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/web_audio/web_audio-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/web_audio/web_audio.js +19 -0
- package/client/dist/chrome-devtools-ui/panels/webauthn/webauthn-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/webauthn/webauthn.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/whats_new/resources/WNDT.md +6 -0
- package/client/dist/chrome-devtools-ui/panels/whats_new/whats_new-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/whats_new/whats_new.js +32 -0
- package/client/dist/chrome-devtools-ui/rehydrated_devtools_app.html +24 -0
- package/client/dist/chrome-devtools-ui/rn_fusebox.html +24 -0
- package/client/dist/chrome-devtools-ui/services/puppeteer/puppeteer.js +1 -0
- package/client/dist/chrome-devtools-ui/services/trace_bounds/trace_bounds.js +1 -0
- package/client/dist/chrome-devtools-ui/services/tracing/tracing.js +1 -0
- package/client/dist/chrome-devtools-ui/services/window_bounds/window_bounds.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/acorn/acorn.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/chromium/client-variations/client-variations.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/angular.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/codemirror.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/cpp.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/java.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/legacy.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/less.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/markdown.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/php.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/python.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/sass.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/svelte.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/vue.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/wast.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/xml.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/codemirror.next.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/csp_evaluator/csp_evaluator.js +194 -0
- package/client/dist/chrome-devtools-ui/third_party/diff/diff.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/i18n/i18n.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/intl-messageformat/intl-messageformat.js +15 -0
- package/client/dist/chrome-devtools-ui/third_party/json5/json5.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/legacy-javascript/legacy-javascript.js +7 -0
- package/client/dist/chrome-devtools-ui/third_party/lighthouse/lighthouse-dt-bundle.js +3023 -0
- package/client/dist/chrome-devtools-ui/third_party/lighthouse/report/report.js +39 -0
- package/client/dist/chrome-devtools-ui/third_party/lit/lit.js +121 -0
- package/client/dist/chrome-devtools-ui/third_party/marked/marked.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/puppeteer/puppeteer.js +373 -0
- package/client/dist/chrome-devtools-ui/third_party/puppeteer-replay/puppeteer-replay.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/react-devtools/react-devtools.js +41 -0
- package/client/dist/chrome-devtools-ui/third_party/third-party-web/third-party-web.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/wasmparser/wasmparser.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/web-vitals/web-vitals.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/adorners/adorners.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/buttons/buttons.js +17 -0
- package/client/dist/chrome-devtools-ui/ui/components/cards/cards.js +10 -0
- package/client/dist/chrome-devtools-ui/ui/components/chrome_link/chrome_link.js +6 -0
- package/client/dist/chrome-devtools-ui/ui/components/code_highlighter/code_highlighter.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/dialogs/dialogs.js +61 -0
- package/client/dist/chrome-devtools-ui/ui/components/diff_view/diff_view.js +8 -0
- package/client/dist/chrome-devtools-ui/ui/components/expandable_list/expandable_list.js +17 -0
- package/client/dist/chrome-devtools-ui/ui/components/floating_button/floating_button.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/helpers/helpers.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/highlighting/highlighting.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/icon_button/icon_button.js +13 -0
- package/client/dist/chrome-devtools-ui/ui/components/input/input.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/issue_counter/issue_counter.js +10 -0
- package/client/dist/chrome-devtools-ui/ui/components/legacy_wrapper/legacy_wrapper.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/linkifier/linkifier.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/markdown_view/markdown_view.js +51 -0
- package/client/dist/chrome-devtools-ui/ui/components/menus/menus.js +71 -0
- package/client/dist/chrome-devtools-ui/ui/components/node_text/node_text.js +3 -0
- package/client/dist/chrome-devtools-ui/ui/components/panel_feedback/panel_feedback.js +37 -0
- package/client/dist/chrome-devtools-ui/ui/components/panel_introduction_steps/panel_introduction_steps.js +9 -0
- package/client/dist/chrome-devtools-ui/ui/components/render_coordinator/render_coordinator.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/report_view/report_view.js +21 -0
- package/client/dist/chrome-devtools-ui/ui/components/request_link_icon/request_link_icon.js +8 -0
- package/client/dist/chrome-devtools-ui/ui/components/settings/settings.js +20 -0
- package/client/dist/chrome-devtools-ui/ui/components/spinners/spinners.js +16 -0
- package/client/dist/chrome-devtools-ui/ui/components/srgb_overlay/srgb_overlay.js +6 -0
- package/client/dist/chrome-devtools-ui/ui/components/suggestion_input/suggestion_input.js +29 -0
- package/client/dist/chrome-devtools-ui/ui/components/survey_link/survey_link.js +7 -0
- package/client/dist/chrome-devtools-ui/ui/components/switch/switch.js +10 -0
- package/client/dist/chrome-devtools-ui/ui/components/text_editor/text_editor.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/text_prompt/text_prompt.js +4 -0
- package/client/dist/chrome-devtools-ui/ui/components/tooltips/tooltips.js +7 -0
- package/client/dist/chrome-devtools-ui/ui/components/tree_outline/tree_outline.js +32 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/color_picker/color_picker.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/cookie_table/cookie_table.js +85 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/data_grid/data_grid.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/inline_editor/inline_editor.js +58 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/object_ui/object_ui-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/object_ui/object_ui.js +7 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/perf_ui/perf_ui-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/perf_ui/perf_ui.js +60 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/quick_open/quick_open-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/quick_open/quick_open.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/source_frame/source_frame-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/source_frame/source_frame.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/utils/utils.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/legacy.js +59 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/theme_support/theme_support.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/lit/lit.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/visual_logging/visual_logging.js +1 -0
- package/client/dist/chrome-devtools-ui/worker_app.html +24 -0
- package/client/dist/index.html +3 -3
- package/package.json +4 -1
- package/packages/simdeck-test/dist/index.d.ts +7 -1
- package/client/dist/assets/index-BHTf_1bs.js +0 -9
- package/client/dist/assets/index-PP2opq5o.css +0 -1
package/client/dist/chrome-devtools-ui/panels/linear_memory_inspector/components/components.js
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import"../../../ui/components/icon_button/icon_button.js";import*as e from"../../../core/i18n/i18n.js";import*as t from"../../../ui/lit/lit.js";import{render as o,html as r,nothing as s}from"../../../ui/lit/lit.js";import*as n from"../../../ui/visual_logging/visual_logging.js";import*as i from"../../../core/platform/platform.js";import*as a from"../../../ui/components/input/input.js";import"../../../ui/components/buttons/buttons.js";import*as l from"../../../core/common/common.js";var d={cssText:`.highlight-chip-list{min-height:20px;display:flex;flex-wrap:wrap;justify-content:left;align-items:center;background-color:var(--sys-color-cdt-base-container);margin:8px 0;gap:8px;row-gap:6px}.highlight-chip{background:var(--sys-color-cdt-base-container);border:1px solid var(--sys-color-divider);height:18px;border-radius:4px;flex:0 0 auto;max-width:250px;position:relative;padding:0 6px}.highlight-chip:hover{background-color:var(--sys-color-state-hover-on-subtle)}.delete-highlight-container{display:none;height:100%;position:absolute;right:0;top:0;border-radius:4px;width:24px;align-items:center;justify-content:center}.delete-highlight-button{cursor:pointer;width:13px;height:13px;border:none;background-color:transparent;display:flex;align-items:center;justify-content:center}.delete-highlight-button:hover{background-color:var(--sys-color-state-hover-on-subtle);border-radius:50%}.jump-to-highlight-button{cursor:pointer;padding:0;border:none;background:none;height:100%;align-items:center;max-width:100%;overflow:hidden}.delete-highlight-button devtools-icon{width:13px;height:13px;display:flex;align-items:center;justify-content:center;border-radius:50%}.source-code{font-family:var(--source-code-font-family);font-size:var(--source-code-font-size);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--sys-color-on-surface)}.value{color:var(--sys-color-token-tag)}.separator{white-space:pre;flex-shrink:0}.highlight-chip.focused{outline:2px solid var(--sys-color-state-focus-ring);outline-offset:2px}.highlight-chip:hover > .delete-highlight-container{display:flex;background:linear-gradient(90deg,transparent 0%,rgb(241 243 244) 25%)}.highlight-chip.focused:hover > .delete-highlight-container{background:linear-gradient(90deg,transparent 0%,rgb(231 241 253) 25%)}:host-context(.theme-with-dark-background) .highlight-chip:hover > .delete-highlight-container{display:flex;background:linear-gradient(90deg,transparent 0%,rgb(41 42 45) 25%)}:host-context(.theme-with-dark-background) .highlight-chip.focused:hover > .delete-highlight-container{background:linear-gradient(90deg,transparent 0%,rgb(48 55 68) 25%)}\n/*# sourceURL=${import.meta.resolve("./linearMemoryHighlightChipList.css")} */\n`};const c=new CSSStyleSheet;c.replaceSync(d.cssText);const h={jumpToAddress:"Jump to this memory",deleteHighlight:"Stop highlighting this memory"},p=e.i18n.registerUIStrings("panels/linear_memory_inspector/components/LinearMemoryHighlightChipList.ts",h),u=e.i18n.getLocalizedString.bind(void 0,p),{render:g,html:v}=t;class m extends Event{static eventName="deletememoryhighlight";data;constructor(e){super(m.eventName,{bubbles:!0,composed:!0}),this.data=e}}class b extends Event{static eventName="jumptohighlightedmemory";data;constructor(e){super(b.eventName),this.data=e}}class y extends HTMLElement{#e=this.attachShadow({mode:"open"});#t=[];#o;connectedCallback(){this.#e.adoptedStyleSheets=[c]}set data(e){this.#t=e.highlightInfos,this.#o=e.focusedMemoryHighlight,this.#r()}#r(){const e=[];for(const t of this.#t)e.push(this.#s(t));const t=v`
|
|
2
|
+
<div class="highlight-chip-list">
|
|
3
|
+
${e}
|
|
4
|
+
</div>
|
|
5
|
+
`;g(t,this.#e,{host:this})}#s(e){const o=e.name||"<anonymous>",r=e.type,s={focused:e===this.#o,"highlight-chip":!0};return v`
|
|
6
|
+
<div class=${t.Directives.classMap(s)}>
|
|
7
|
+
<button class="jump-to-highlight-button" title=${u(h.jumpToAddress)}
|
|
8
|
+
jslog=${n.action("linear-memory-inspector.jump-to-highlight").track({click:!0})}
|
|
9
|
+
@click=${()=>this.#n(e.startAddress)}>
|
|
10
|
+
<span class="source-code">
|
|
11
|
+
<span class="value">${o}</span><span class="separator">: </span><span>${r}</span>
|
|
12
|
+
</span>
|
|
13
|
+
</button>
|
|
14
|
+
<div class="delete-highlight-container">
|
|
15
|
+
<button class="delete-highlight-button" title=${u(h.deleteHighlight)}
|
|
16
|
+
jslog=${n.action("linear-memory-inspector.delete-highlight").track({click:!0})}
|
|
17
|
+
@click=${()=>this.#i(e)}>
|
|
18
|
+
<devtools-icon .data=${{iconName:"cross",color:"var(--icon-default-hover)",width:"16px"}}>
|
|
19
|
+
</devtools-icon>
|
|
20
|
+
</button>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
`}#n(e){this.dispatchEvent(new b(e))}#i(e){this.dispatchEvent(new m(e))}}customElements.define("devtools-linear-memory-highlight-chip-list",y);var f=Object.freeze({__proto__:null,DeleteMemoryHighlightEvent:m,JumpToHighlightedMemoryEvent:b,LinearMemoryHighlightChipList:y}),x={cssText:`*{box-sizing:border-box;min-width:0;min-height:0}:root{height:100%;overflow:hidden;interpolate-size:allow-keywords}body{height:100%;width:100%;position:relative;overflow:hidden;margin:0;cursor:default;font-family:var(--default-font-family);font-size:12px;tab-size:4;user-select:none;color:var(--sys-color-on-surface);background:var(--sys-color-cdt-base-container)}:focus{outline-width:0}.monospace{font-family:var(--monospace-font-family);font-size:var(\n --monospace-font-size\n )!important}.source-code{font-family:var(--source-code-font-family);font-size:var(\n --source-code-font-size\n )!important;white-space:pre-wrap;&:not(input)::selection{color:var(--sys-color-on-surface)}}.source-code.breakpoint{white-space:nowrap}.source-code .devtools-link.text-button{max-width:100%;overflow:hidden;text-overflow:ellipsis}img{-webkit-user-drag:none}iframe,\na img{border:none}.fill{position:absolute;inset:0}iframe.fill{width:100%;height:100%}.widget{position:relative;flex:auto;contain:style}.hbox{display:flex;flex-direction:row!important;position:relative}.vbox{display:flex;flex-direction:column!important;position:relative}.view-container > devtools-toolbar{border-bottom:1px solid var(--sys-color-divider)}.flex-auto{flex:auto}.flex-none{flex:none}.flex-centered{display:flex;align-items:center;justify-content:center}.overflow-auto{overflow:auto;background-color:var(--sys-color-cdt-base-container)}iframe.widget{position:absolute;width:100%;height:100%;inset:0}.hidden{display:none!important}.highlighted-search-result{border-radius:1px;background-color:var(--sys-color-yellow-container);outline:1px solid var(--sys-color-yellow-container)}.link{cursor:pointer;text-decoration:underline;color:var(--sys-color-primary);outline-offset:2px}button,\ninput,\nselect{font-family:inherit;font-size:inherit}select option,\nselect optgroup,\ninput{background-color:var(--sys-color-cdt-base-container)}input{color:inherit;&[type="checkbox"]{position:relative;outline:none;display:flex;align-items:center;justify-content:center;&:hover::after,\n &:active::before{content:"";height:24px;width:24px;border-radius:var(--sys-shape-corner-full);position:absolute}&:not(.-theme-preserve){accent-color:var(--sys-color-primary-bright);color:var(--sys-color-on-primary)}&:not(:disabled):hover::after{background-color:var(--sys-color-state-hover-on-subtle)}&:not(:disabled):active::before{background-color:var(--sys-color-state-ripple-neutral-on-subtle)}&:not(:disabled):focus-visible::before{content:"";height:15px;width:15px;border-radius:5px;position:absolute;border:2px solid var(--sys-color-state-focus-ring)}&.small:hover::after,\n &.small:active::before{height:12px;width:12px;border-radius:2px}}}input::placeholder{--override-input-placeholder-color:rgb(0 0 0/54%);color:var(--override-input-placeholder-color)}.theme-with-dark-background input::placeholder,\n:host-context(.theme-with-dark-background) input::placeholder{--override-input-placeholder-color:rgb(230 230 230/54%)}.harmony-input:not([type]),\n.harmony-input[type="number"],\n.harmony-input[type="text"]{padding:3px 6px;height:24px;border:1px solid var(--sys-color-neutral-outline);border-radius:4px;&.error-input,\n &:invalid{border-color:var(--sys-color-error)}&:not(.error-input, :invalid):focus{border-color:var(--sys-color-state-focus-ring)}&:not(.error-input, :invalid):hover:not(:focus){background:var(--sys-color-state-hover-on-subtle)}}input[type="radio"]{height:17px;width:17px;min-width:17px;border-radius:8px;vertical-align:sub;margin:0 5px 5px 0;accent-color:var(--sys-color-primary-bright);color:var(--sys-color-on-primary);&:focus{box-shadow:var(--legacy-focus-ring-active-shadow)}}@media (forced-colors: active){input[type="radio"]{--gradient-start:ButtonFace;--gradient-end:ButtonFace;&:checked{--gradient-start:Highlight;--gradient-end:Highlight}}}input[type="range"]{appearance:none;margin:0;padding:0;height:10px;width:88px;outline:none;background:none}input[type="range"]::-webkit-slider-thumb,\n.-theme-preserve{appearance:none;margin:0;padding:0;border:0;width:12px;height:12px;margin-top:-5px;border-radius:50%;background-color:var(--sys-color-primary)}input[type="range"]::-webkit-slider-runnable-track{appearance:none;margin:0;padding:0;width:100%;height:2px;background-color:var(--sys-color-surface-variant)}input[type="range"]:focus::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--sys-color-inverse-primary)}input[type="range"]:disabled::-webkit-slider-thumb{background-color:var(--sys-color-state-disabled)}@media (forced-colors: active){input[type="range"]{forced-color-adjust:none}}.highlighted-search-result.current-search-result{--override-current-search-result-background-color:rgb(255 127 0/80%);border-radius:1px;padding:1px;margin:-1px;background-color:var(--override-current-search-result-background-color)}.dimmed{opacity:60%}.editing{box-shadow:var(--drop-shadow);background-color:var(--sys-color-cdt-base-container);text-overflow:clip!important;padding-left:2px;margin-left:-2px;padding-right:2px;margin-right:-2px;margin-bottom:-1px;padding-bottom:1px;opacity:100%!important}.editing,\n.editing *{color:var(\n --sys-color-on-surface\n )!important;text-decoration:none!important}select{appearance:none;user-select:none;height:var(--sys-size-11);border:var(--sys-size-1) solid var(--sys-color-neutral-outline);border-radius:var(--sys-shape-corner-extra-small);color:var(--sys-color-on-surface);font:inherit;margin:0;outline:none;padding:0 var(--sys-size-9) 0 var(--sys-size-5);background-image:var(--combobox-dropdown-arrow);background-color:transparent;background-position:right center;background-repeat:no-repeat;&:disabled{opacity:100%;border-color:transparent;color:var(--sys-color-state-disabled);background-color:var(--sys-color-state-disabled-container);pointer-events:none}&:enabled{&:hover{background-color:var(--sys-color-state-hover-on-subtle)}&:active{background-color:var(--sys-color-state-ripple-neutral-on-subtle)}&:hover:active{background:var(--combobox-dropdown-arrow),linear-gradient(var(--sys-color-state-hover-on-subtle),var(--sys-color-state-hover-on-subtle)),linear-gradient(var(--sys-color-state-ripple-neutral-on-subtle),var(--sys-color-state-ripple-neutral-on-subtle));background-position:right center;background-repeat:no-repeat}&:focus{outline:var(--sys-size-2) solid var(--sys-color-state-focus-ring);outline-offset:-1px}}}@media (forced-colors: active) and (prefers-color-scheme: light){:root,\n .theme-with-dark-background,\n :host-context(.theme-with-dark-background){--combobox-dropdown-arrow:var(--image-file-arrow-drop-down-light)}}@media (forced-colors: active) and (prefers-color-scheme: dark){:root,\n .theme-with-dark-background,\n :host-context(.theme-with-dark-background){--combobox-dropdown-arrow:var(--image-file-arrow-drop-down-dark)}}.chrome-select-label{margin:0 var(--sys-size-10);flex:none;p p{margin-top:0;color:var(--sys-color-token-subtle)}.reload-warning{margin-left:var(--sys-size-5)}}.settings-select{margin:0}select optgroup,\nselect option{background-color:var(--sys-color-cdt-base-container);color:var(--sys-color-on-surface)}.gray-info-message{text-align:center;font-style:italic;padding:6px;color:var(--sys-color-token-subtle);white-space:nowrap}.empty-state{margin:var(--sys-size-5);display:flex;flex-grow:1;justify-content:center;align-items:center;flex-direction:column;text-align:center;min-height:fit-content;min-width:fit-content;> *{max-width:var(--sys-size-29)}.empty-state-header{font:var(--sys-typescale-headline5);margin-bottom:var(--sys-size-3)}.empty-state-description{font:var(--sys-typescale-body4-regular);color:var(--sys-color-on-surface-subtle);> x-link{white-space:nowrap;margin-left:var(--sys-size-3)}}> devtools-button{margin-top:var(--sys-size-7)}}dt-icon-label{flex:none}.full-widget-dimmed-banner a{color:inherit}.full-widget-dimmed-banner{color:var(--sys-color-token-subtle);background-color:var(--sys-color-cdt-base-container);display:flex;justify-content:center;align-items:center;text-align:center;padding:20px;position:absolute;inset:0;font-size:13px;overflow:auto;z-index:500}.dot::before{content:var(--image-file-empty);width:6px;height:6px;border-radius:50%;outline:1px solid var(--icon-gap-default);left:9px;position:absolute;top:9px;z-index:1}.green::before{background-color:var(--sys-color-green-bright)}.purple::before{background-color:var(--sys-color-purple-bright)}.expandable-inline-button{background-color:var(--sys-color-cdt-base-container);color:var(--sys-color-on-surface);cursor:pointer;border-radius:3px}.undisplayable-text,\n.expandable-inline-button{border:none;padding:1px 3px;margin:0 2px;font-size:11px;font-family:sans-serif;white-space:nowrap;display:inline-block}.undisplayable-text::after,\n.expandable-inline-button::after{content:attr(data-text)}.undisplayable-text{color:var(--sys-color-state-disabled);font-style:italic}.expandable-inline-button:hover,\n.expandable-inline-button:focus-visible{background-color:var(--sys-color-state-hover-on-subtle)}.expandable-inline-button:focus-visible{background-color:var(--sys-color-state-focus-highlight)}::selection{background-color:var(--sys-color-state-text-highlight);color:var(--sys-color-state-on-text-highlight)}button.link{border:none;background:none;padding:3px}button.link:focus-visible{outline:2px solid var(--sys-color-state-focus-ring);outline-offset:2px;border-radius:var(--sys-shape-corner-full)}.data-grid-data-grid-node button.link:focus-visible{border-radius:var(--sys-shape-corner-extra-small);padding:0;margin-top:3px}@media (forced-colors: active){.dimmed,\n select:disabled{opacity:100%}.harmony-input:not([type]),\n .harmony-input[type="number"],\n .harmony-input[type="text"]{border:1px solid ButtonText}.harmony-input:not([type]):focus,\n .harmony-input[type="number"]:focus,\n .harmony-input[type="text"]:focus{border:1px solid Highlight}}input.custom-search-input::-webkit-search-cancel-button{appearance:none;width:16px;height:15px;margin-right:0;opacity:70%;mask-image:var(--image-file-cross-circle-filled);mask-position:center;mask-repeat:no-repeat;mask-size:99%;background-color:var(--icon-default)}input.custom-search-input::-webkit-search-cancel-button:hover{opacity:99%}.spinner::before{display:block;width:var(--dimension,24px);height:var(--dimension,24px);border:var(--override-spinner-size,3px) solid var(--override-spinner-color,var(--sys-color-token-subtle));border-radius:12px;clip:rect(0,var(--clip-size,15px),var(--clip-size,15px),0);content:"";position:absolute;animation:spinner-animation 1s linear infinite;box-sizing:border-box}@keyframes spinner-animation{from{transform:rotate(0)}to{transform:rotate(360deg)}}.adorner-container{display:inline-flex;vertical-align:middle}.adorner-container.hidden{display:none}.adorner-container devtools-adorner{margin-left:3px}:host-context(.theme-with-dark-background) devtools-adorner{--override-adorner-border-color:var(--sys-color-tonal-outline);--override-adorner-active-background-color:var(\n --sys-color-state-riple-neutral-on-subtle\n )}.panel{display:flex;overflow:hidden;position:absolute;inset:0;z-index:0;background-color:var(--sys-color-cdt-base-container)}.panel-sidebar{overflow-x:hidden;background-color:var(--sys-color-cdt-base-container)}iframe.extension{flex:auto;width:100%;height:100%}iframe.panel.extension{display:block;height:100%}@media (forced-colors: active){:root{--legacy-accent-color:Highlight;--legacy-focus-ring-inactive-shadow-color:ButtonText}}devtools-toolbar{& > *{position:relative;display:flex;background-color:transparent;flex:none;align-items:center;justify-content:center;height:var(--toolbar-height);border:none;white-space:pre;overflow:hidden;max-width:100%;color:var(--icon-default);cursor:default;& .devtools-link{color:var(--icon-default)}}.status-buttons{padding:0 var(--sys-size-2);gap:var(--sys-size-2)}& > :not(select){padding:0}& > devtools-issue-counter{margin-top:-4px;padding:0 1px}devtools-adorner.fix-perf-icon{--override-adorner-text-color:transparent;--override-adorner-border-color:transparent;--override-adorner-background-color:transparent}devtools-issue-counter.main-toolbar{margin-left:1px;margin-right:1px}.toolbar-dropdown-arrow{pointer-events:none;flex:none;top:2px}.toolbar-button.dark-text .toolbar-dropdown-arrow{color:var(--sys-color-on-surface)}.toolbar-button{white-space:nowrap;overflow:hidden;min-width:28px;background:transparent;border-radius:0;&[aria-haspopup="true"][aria-expanded="true"]{pointer-events:none}}.toolbar-item-search{min-width:5.2em;max-width:300px;flex:1 1 auto;justify-content:start;overflow:revert}.toolbar-text{margin:0 5px;flex:none;color:var(--ui-text)}.toolbar-text:empty{margin:0}.toolbar-has-dropdown{justify-content:space-between;height:var(--sys-size-9);padding:0 var(--sys-size-2) 0 var(--sys-size-4);margin:0 var(--sys-size-2);gap:var(--sys-size-2);border-radius:var(--sys-shape-corner-extra-small);&:hover::after,\n &:active::before{content:"";height:100%;width:100%;border-radius:inherit;position:absolute;top:0;left:0}&:hover::after{background-color:var(--sys-color-state-hover-on-subtle)}&:active::before{background-color:var(--sys-color-state-ripple-neutral-on-subtle)}&:focus-visible{outline:var(--sys-size-2) solid var(--sys-color-state-focus-ring)}&[disabled]{pointer-events:none;background-color:var(--sys-color-state-disabled-container);color:var(--sys-color-state-disabled)}}.toolbar-has-dropdown-shrinkable{flex-shrink:1}.toolbar-has-dropdown .toolbar-text{margin:0;text-overflow:ellipsis;flex:auto;overflow:hidden;text-align:right}.toolbar-button:not(.toolbar-has-dropdown):focus-visible::before{position:absolute;inset:2px;background-color:var(--sys-color-state-focus-highlight);border-radius:2px;content:"";z-index:-1}.toolbar-glyph{flex:none}.toolbar-button:disabled{opacity:50%}.toolbar-button.copied-to-clipboard::after{content:attr(data-content);position:fixed;margin-top:calc(2 * var(--toolbar-height));padding:3px 5px;color:var(--sys-color-token-subtle);background:var(--sys-color-cdt-base-container);animation:2s fade-out;font-weight:normal;border:1px solid var(--sys-color-divider);border-radius:3px}.toolbar-button.toolbar-state-on .toolbar-glyph{color:var(--icon-toggled)}.toolbar-state-on.toolbar-toggle-with-dot .toolbar-text::after{content:"";position:absolute;bottom:2px;background-color:var(--sys-color-primary-bright);width:4.5px;height:4.5px;border:2px solid var(--override-toolbar-background-color,--sys-color-cdt-base-container);border-radius:50%;right:0}.toolbar-button.toolbar-state-on.toolbar-toggle-with-red-color .toolbar-glyph,\n .toolbar-button.toolbar-state-off.toolbar-default-with-red-color\n .toolbar-glyph{color:var(\n --icon-error\n )!important}.toolbar-button:not(\n .toolbar-has-glyph,\n .toolbar-has-dropdown,\n .largeicon-menu,\n .toolbar-button-secondary\n ){font-weight:bold}.toolbar-button.dark-text .toolbar-text{color:var(\n --sys-color-on-surface\n )!important}.toolbar-button.toolbar-state-on .toolbar-text{color:var(--sys-color-primary)}.toolbar-button.toolbar-state-on:enabled:active .toolbar-text{color:var(--sys-color-primary-bright)}.toolbar-button:enabled:hover:not(:active) .toolbar-glyph{color:var(--sys-color-on-surface)}.toolbar-button:enabled:hover:not(:active) .toolbar-text{color:var(--sys-color-on-surface)}.toolbar-button.toolbar-state-on:enabled:hover:not(:active) .toolbar-glyph{color:var(--sys-color-primary)}.toolbar-button.toolbar-state-on:enabled:hover:not(:active) .toolbar-text{color:var(--sys-color-primary)}& > dt-checkbox{padding:0 5px 0 0}& > select{height:var(--sys-size-9);min-width:var(--sys-size-14)}.toolbar-input{box-shadow:inset 0 0 0 2px transparent;box-sizing:border-box;width:120px;height:var(--sys-size-9);padding:0 var(--sys-size-2) 0 var(--sys-size-5);margin:1px 3px;border-radius:100px;min-width:35px;position:relative;&.focused{box-shadow:inset 0 0 0 2px var(--sys-color-state-focus-ring)}&:not(:has(devtools-button:hover), .disabled):hover{background-color:var(--sys-color-state-hover-on-subtle)}&::before{content:"";box-sizing:inherit;height:100%;width:100%;position:absolute;left:0;background:var(--sys-color-cdt-base);z-index:-1}& > devtools-icon{color:var(--sys-color-on-surface-subtle);width:var(--sys-size-8);height:var(--sys-size-8);margin-right:var(--sys-size-3)}&.disabled > devtools-icon{color:var(--sys-color-state-disabled)}}.toolbar-filter .toolbar-input-clear-button{margin-right:var(--sys-size-4)}.toolbar-input-empty .toolbar-input-clear-button{display:none}.toolbar-prompt-proxy{flex:1}.toolbar-input-prompt{flex:1;overflow:hidden;white-space:nowrap;cursor:text;color:var(--sys-color-on-surface)}.toolbar-divider{background-color:var(--sys-color-divider);width:1px;margin:5px 4px;height:16px}.toolbar-spacer{flex:auto}.toolbar-button.emulate-active{background-color:var(--sys-color-surface-variant)}&:not([floating]) > :last-child:not(:first-child, select){flex-shrink:1;justify-content:left}&:not([floating]) > .toolbar-button:last-child:not(:first-child, select){justify-content:left;margin-right:2px}& > .highlight::before{content:"";position:absolute;inset:2px;border-radius:2px;background:var(--sys-color-neutral-container);z-index:-1}& > .highlight:focus-visible{background:var(--sys-color-tonal-container);& > .title{color:var(--sys-color-on-tonal-container)}}devtools-icon.leading-issue-icon{margin:0 7px}@media (forced-colors: active){.toolbar-button:disabled{opacity:100%;color:Graytext}devtools-toolbar > *,\n .toolbar-text{color:ButtonText}.toolbar-button:disabled .toolbar-text{color:Graytext}devtools-toolbar > select:disabled{opacity:100%;color:Graytext}.toolbar-button.toolbar-state-on .toolbar-glyph{forced-color-adjust:none;color:Highlight}.toolbar-button.toolbar-state-on .toolbar-text{forced-color-adjust:none;color:Highlight}.toolbar-button:enabled:hover:not(:active) .toolbar-text,\n .toolbar-button:enabled:focus:not(:active) .toolbar-text{color:HighlightText}.toolbar-button:disabled devtools-icon{color:GrayText}.toolbar-button:disabled .toolbar-glyph{color:GrayText}.toolbar-button:enabled.hover:not(:active) .toolbar-glyph{forced-color-adjust:none;color:Highlight}.toolbar-button:enabled:hover .toolbar-glyph,\n .toolbar-button:enabled:focus .toolbar-glyph,\n .toolbar-button:enabled:hover:not(:active) .toolbar-glyph,\n .toolbar-button:enabled:hover devtools-icon,\n .toolbar-button:enabled:focus devtools-icon{color:HighlightText}.toolbar-input{forced-color-adjust:none;background:canvas;box-shadow:var(--legacy-focus-ring-inactive-shadow)}.toolbar-input.focused,\n .toolbar-input:not(.toolbar-input-empty){forced-color-adjust:none;background:canvas;box-shadow:var(--legacy-focus-ring-active-shadow)}.toolbar-input:hover{box-shadow:var(--legacy-focus-ring-active-shadow)}devtools-toolbar .devtools-link{color:linktext}.toolbar-has-dropdown{forced-color-adjust:none;background:ButtonFace;color:ButtonText}}}@keyframes fade-out{from{opacity:100%}to{opacity:0%}}.webkit-css-property{color:var(--webkit-css-property-color,var(--sys-color-token-property-special))}.webkit-html-comment{color:var(--sys-color-token-comment)}.webkit-html-tag{color:var(--sys-color-token-tag)}.webkit-html-tag-name,\n.webkit-html-close-tag-name{color:var(--sys-color-token-tag)}.webkit-html-pseudo-element{color:var(--sys-color-token-pseudo-element)}.webkit-html-js-node,\n.webkit-html-css-node{color:var(--text-primary);white-space:pre-wrap}.webkit-html-text-node{color:var(--text-primary);unicode-bidi:-webkit-isolate}.webkit-html-entity-value{background-color:rgb(0 0 0/15%);unicode-bidi:-webkit-isolate}.webkit-html-doctype{color:var(--text-secondary)}.webkit-html-attribute-name{color:var(--sys-color-token-attribute);unicode-bidi:-webkit-isolate}.webkit-html-attribute-value{color:var(--sys-color-token-attribute-value);unicode-bidi:-webkit-isolate;word-break:break-all}.devtools-link{color:var(--text-link);text-decoration:underline;outline-offset:2px;.elements-disclosure &{color:var(--text-link)}devtools-icon{vertical-align:baseline;color:var(--sys-color-primary)}:focus .selected & devtools-icon{color:var(--sys-color-tonal-container)}&:focus-visible{outline-width:unset}&.invalid-link{color:var(--text-disabled);text-decoration:none}&:not(.devtools-link-prevent-click, .invalid-link){cursor:pointer}@media (forced-colors: active){&:not(.devtools-link-prevent-click){forced-color-adjust:none;color:linktext}&:focus-visible{background:Highlight;color:HighlightText}}}\n/*# sourceURL=${import.meta.resolve("./inspectorCommon.css")} */\n`},w={cssText:`:host{flex:auto;display:flex}.value-types{width:100%;display:grid;grid-template-columns:auto auto 1fr;gap:4px 24px;min-height:24px;overflow:hidden;padding:2px 12px;align-items:baseline;justify-content:start}.value-type-cell{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:flex;flex-direction:column;min-height:24px}.value-type-value-with-link{display:flex;align-items:center}.value-type-cell-no-mode{grid-column:1/3}.jump-to-button{display:flex;width:20px;height:20px;border:none;padding:0;outline:none;justify-content:center;align-items:center;cursor:pointer;background-color:var(--sys-color-cdt-base-container)}.signed-divider{width:1px;height:15px;background-color:var(--sys-color-divider);margin:0 4px}.selectable-text{user-select:text}.selectable-text::selection{background-color:var(--sys-color-tonal-container);color:currentcolor}\n/*# sourceURL=${import.meta.resolve("./valueInterpreterDisplay.css")} */\n`};const k={notApplicable:"N/A"},S=e.i18n.registerUIStrings("panels/linear_memory_inspector/components/ValueInterpreterDisplayUtils.ts",k),$=e.i18n.getLocalizedString.bind(void 0,S);function T(){return new Map(M)}const M=new Map([["Integer 8-bit","dec"],["Integer 16-bit","dec"],["Integer 32-bit","dec"],["Integer 64-bit","dec"],["Float 32-bit","dec"],["Float 64-bit","dec"],["Pointer 32-bit","hex"],["Pointer 64-bit","hex"]]),I=["dec","hex","oct","sci"];function E(t){return e.i18n.lockedString(t)}function z(e,t){switch(e){case"Integer 8-bit":case"Integer 16-bit":case"Integer 32-bit":case"Integer 64-bit":return"dec"===t||"hex"===t||"oct"===t;case"Float 32-bit":case"Float 64-bit":return"sci"===t||"dec"===t;case"Pointer 32-bit":case"Pointer 64-bit":return"hex"===t;default:return i.assertNever(e,`Unknown value type: ${e}`)}}function A(e){switch(e){case"Integer 8-bit":case"Integer 16-bit":case"Integer 32-bit":case"Integer 64-bit":case"Float 32-bit":case"Float 64-bit":return!0;default:return!1}}function j(e,t,o){if(!C(e))return console.error(`Requesting address of a non-pointer type: ${e}.\n`),NaN;try{const r=new DataView(t),s="Little Endian"===o;return"Pointer 32-bit"===e?r.getUint32(0,s):r.getBigUint64(0,s)}catch{return NaN}}function C(e){return"Pointer 32-bit"===e||"Pointer 64-bit"===e}function L(e){if(!e.mode)return console.error(`No known way of showing value for ${e.type}`),$(k.notApplicable);const t=new DataView(e.buffer),o="Little Endian"===e.endianness;let r;try{switch(e.type){case"Integer 8-bit":return r=e.signed?t.getInt8(0):t.getUint8(0),B(r,e.mode);case"Integer 16-bit":return r=e.signed?t.getInt16(0,o):t.getUint16(0,o),B(r,e.mode);case"Integer 32-bit":return r=e.signed?t.getInt32(0,o):t.getUint32(0,o),B(r,e.mode);case"Integer 64-bit":return r=e.signed?t.getBigInt64(0,o):t.getBigUint64(0,o),B(r,e.mode);case"Float 32-bit":return r=t.getFloat32(0,o),H(r,e.mode);case"Float 64-bit":return r=t.getFloat64(0,o),H(r,e.mode);case"Pointer 32-bit":return r=t.getUint32(0,o),B(r,"hex");case"Pointer 64-bit":return r=t.getBigUint64(0,o),B(r,"hex");default:return i.assertNever(e.type,`Unknown value type: ${e.type}`)}}catch{return $(k.notApplicable)}}function H(e,t){switch(t){case"dec":return e.toFixed(2).toString();case"sci":return e.toExponential(2).toString();default:throw new Error(`Unknown mode for floats: ${t}.`)}}function B(e,t){switch(t){case"dec":return e.toString();case"hex":return e<0?$(k.notApplicable):"0x"+e.toString(16).toUpperCase();case"oct":return e<0?$(k.notApplicable):e.toString(8);default:throw new Error(`Unknown mode for integers: ${t}.`)}}var N=Object.freeze({__proto__:null,VALUE_INTEPRETER_MAX_NUM_BYTES:8,VALUE_TYPE_MODE_LIST:I,format:L,formatFloat:H,formatInteger:B,getDefaultValueTypeMapping:T,getPointerAddress:j,isNumber:A,isPointer:C,isValidMode:z,valueTypeToLocalizedString:E});const R=new CSSStyleSheet;R.replaceSync(x.cssText);const _=new CSSStyleSheet;_.replaceSync(w.cssText);const O={unsignedValue:"`Unsigned` value",changeValueTypeMode:"Change mode",signedValue:"`Signed` value",jumpToPointer:"Jump to address",addressOutOfRange:"Address out of memory range"},P=e.i18n.registerUIStrings("panels/linear_memory_inspector/components/ValueInterpreterDisplay.ts",O),V=e.i18n.getLocalizedString.bind(void 0,P),{render:U,html:F}=t,D=Array.from(T().keys());class G extends Event{static eventName="valuetypemodechanged";data;constructor(e,t){super(G.eventName,{composed:!0}),this.data={type:e,mode:t}}}class q extends Event{static eventName="jumptopointeraddress";data;constructor(e){super(q.eventName,{composed:!0}),this.data=e}}class J extends HTMLElement{#e=this.attachShadow({mode:"open"});#a="Little Endian";#l=new ArrayBuffer(0);#d=new Set;#c=T();#h=0;constructor(){super(),this.#e.adoptedStyleSheets=[R]}connectedCallback(){this.#e.adoptedStyleSheets=[R,_]}set data(e){this.#l=e.buffer,this.#a=e.endianness,this.#d=e.valueTypes,this.#h=e.memoryLength,e.valueTypeModes&&e.valueTypeModes.forEach(((e,t)=>{z(t,e)&&this.#c.set(t,e)})),this.#r()}#r(){U(F`
|
|
24
|
+
<div class="value-types">
|
|
25
|
+
${D.map((e=>this.#d.has(e)?this.#p(e):""))}
|
|
26
|
+
</div>
|
|
27
|
+
`,this.#e,{host:this})}#p(e){if(A(e))return this.#u(e);if(C(e))return this.#g(e);throw new Error(`No known way to format ${e}`)}#g(t){const o=this.#v({type:t,signed:!1}),r=j(t,this.#l,this.#a),s=Number.isNaN(r)||BigInt(r)>=BigInt(this.#h),i=V(s?O.addressOutOfRange:O.jumpToPointer),a=s?"var(--icon-default)":"var(--icon-link)";return F`
|
|
28
|
+
<span class="value-type-cell-no-mode value-type-cell selectable-text">${e.i18n.lockedString(t)}</span>
|
|
29
|
+
<div class="value-type-cell">
|
|
30
|
+
<div class="value-type-value-with-link" data-value="true">
|
|
31
|
+
<span class="selectable-text">${o}</span>
|
|
32
|
+
${F`
|
|
33
|
+
<button class="jump-to-button" data-jump="true" title=${i} ?disabled=${s}
|
|
34
|
+
jslog=${n.action("linear-memory-inspector.jump-to-address").track({click:!0})}
|
|
35
|
+
@click=${this.#m.bind(this,Number(r))}>
|
|
36
|
+
<devtools-icon .data=${{iconName:"open-externally",color:a,width:"16px"}}>
|
|
37
|
+
</devtools-icon>
|
|
38
|
+
</button>`}
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
`}#m(e){this.dispatchEvent(new q(e))}#u(t){return F`
|
|
42
|
+
<span class="value-type-cell selectable-text">${e.i18n.lockedString(t)}</span>
|
|
43
|
+
<div>
|
|
44
|
+
<select title=${V(O.changeValueTypeMode)}
|
|
45
|
+
data-mode-settings="true"
|
|
46
|
+
jslog=${n.dropDown("linear-memory-inspector.value-type-mode").track({change:!0})}
|
|
47
|
+
@change=${this.#b.bind(this,t)}>
|
|
48
|
+
${I.filter((e=>z(t,e))).map((o=>F`
|
|
49
|
+
<option value=${o} .selected=${this.#c.get(t)===o}
|
|
50
|
+
jslog=${n.item(o).track({click:!0})}>${e.i18n.lockedString(o)}
|
|
51
|
+
</option>`))}
|
|
52
|
+
</select>
|
|
53
|
+
</div>
|
|
54
|
+
${this.#y(t)}
|
|
55
|
+
`}#y(e){const t=this.#v({type:e,signed:!1}),o=this.#v({type:e,signed:!0}),r=this.#c.get(e),s=o!==t&&"hex"!==r&&"oct"!==r,n=F`<span class="value-type-cell selectable-text" title=${V(O.unsignedValue)} data-value="true">${t}</span>`;if(!s)return n;const i="Integer 32-bit"===e||"Integer 64-bit"===e,a=F`<span class="selectable-text" data-value="true" title=${V(O.signedValue)}>${o}</span>`;return i?F`
|
|
56
|
+
<div class="value-type-cell">
|
|
57
|
+
${n}
|
|
58
|
+
${a}
|
|
59
|
+
</div>
|
|
60
|
+
`:F`
|
|
61
|
+
<div class="value-type-cell" style="flex-direction: row;">
|
|
62
|
+
${n}
|
|
63
|
+
<span class="signed-divider"></span>
|
|
64
|
+
${a}
|
|
65
|
+
</div>
|
|
66
|
+
`}#b(e,t){t.preventDefault();const o=t.target.value;this.dispatchEvent(new G(e,o))}#v(e){const t=this.#c.get(e.type);return L({buffer:this.#l,type:e.type,endianness:this.#a,signed:e.signed||!1,mode:t})}}customElements.define("devtools-linear-memory-inspector-interpreter-display",J);var K=Object.freeze({__proto__:null,JumpToPointerAddressEvent:q,ValueInterpreterDisplay:J,ValueTypeModeChangedEvent:G}),X={cssText:`:host{flex:auto;display:flex;min-height:20px}.settings{display:flex;flex-wrap:wrap;margin:0 12px 12px;gap:15px 45px}.value-types-selection{display:flex;flex-direction:column}.group{font-weight:bold;margin-bottom:11px}.type-label{white-space:nowrap}.group + .type-label{margin-top:5px}.type-label input{margin:0 6px 0 0;padding:0}.type-label + .type-label{margin-top:6px}\n/*# sourceURL=${import.meta.resolve("./valueInterpreterSettings.css")} */\n`};const W=new CSSStyleSheet;W.replaceSync(X.cssText);const{render:Y,html:Q}=t,Z={otherGroup:"Other"},ee=e.i18n.registerUIStrings("panels/linear_memory_inspector/components/ValueInterpreterSettings.ts",Z),te=e.i18n.getLocalizedString.bind(void 0,ee),oe=new Map([["Integer",["Integer 8-bit","Integer 16-bit","Integer 32-bit","Integer 64-bit"]],["Floating point",["Float 32-bit","Float 64-bit"]],["Other",["Pointer 32-bit","Pointer 64-bit"]]]);class re extends Event{static eventName="typetoggle";data;constructor(e,t){super(re.eventName),this.data={type:e,checked:t}}}class se extends HTMLElement{#e=this.attachShadow({mode:"open"});#d=new Set;connectedCallback(){this.#e.adoptedStyleSheets=[a.checkboxStyles,W]}set data(e){this.#d=e.valueTypes,this.#r()}#r(){Y(Q`
|
|
67
|
+
<div class="settings" jslog=${n.pane("settings")}>
|
|
68
|
+
${[...oe.keys()].map((e=>Q`
|
|
69
|
+
<div class="value-types-selection">
|
|
70
|
+
<span class="group">${function(e){return"Other"===e?te(Z.otherGroup):e}(e)}</span>
|
|
71
|
+
${this.#f(e)}
|
|
72
|
+
</div>
|
|
73
|
+
`))}
|
|
74
|
+
</div>
|
|
75
|
+
`,this.#e,{host:this})}#f(e){const t=oe.get(e);if(!t)throw new Error(`Unknown group ${e}`);return Q`
|
|
76
|
+
${t.map((e=>Q`
|
|
77
|
+
<label class="type-label" title=${E(e)}>
|
|
78
|
+
<input data-input="true" type="checkbox" .checked=${this.#d.has(e)} @change=${t=>this.#x(e,t)} jslog=${n.toggle().track({change:!0}).context(i.StringUtilities.toKebabCase(e))}>
|
|
79
|
+
<span data-title="true">${E(e)}</span>
|
|
80
|
+
</label>
|
|
81
|
+
`))}`}#x(e,t){const o=t.target;this.dispatchEvent(new re(e,o.checked))}}customElements.define("devtools-linear-memory-inspector-interpreter-settings",se);var ne=Object.freeze({__proto__:null,TypeToggleEvent:re,ValueInterpreterSettings:se}),ie={cssText:`:host{flex:auto;display:flex}.value-interpreter{border:1px solid var(--sys-color-divider);background-color:var(--sys-color-cdt-base-container);overflow:hidden;width:400px}.settings-toolbar{min-height:26px;display:flex;flex-wrap:nowrap;justify-content:space-between;padding-left:var(--sys-size-3);padding-right:var(--sys-size-3);align-items:center}.settings-toolbar-button{padding:0;width:20px;height:20px;border:none;outline:none;background-color:transparent}.settings-toolbar-button.active devtools-icon{color:var(--icon-toggled)}.divider{display:block;height:1px;margin-bottom:12px;background-color:var(--sys-color-divider)}\n/*# sourceURL=${import.meta.resolve("./linearMemoryValueInterpreter.css")} */\n`};const ae=new CSSStyleSheet;ae.replaceSync(x.cssText);const le=new CSSStyleSheet;le.replaceSync(ie.cssText);const de={toggleValueTypeSettings:"Toggle value type settings",changeEndianness:"Change `Endianness`"},ce=e.i18n.registerUIStrings("panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts",de),he=e.i18n.getLocalizedString.bind(void 0,ce),{render:pe,html:ue}=t;class ge extends Event{static eventName="endiannesschanged";data;constructor(e){super(ge.eventName),this.data=e}}class ve extends Event{static eventName="valuetypetoggled";data;constructor(e,t){super(ve.eventName),this.data={type:e,checked:t}}}class me extends HTMLElement{#e=this.attachShadow({mode:"open"});#a="Little Endian";#l=new ArrayBuffer(0);#d=new Set;#c=new Map;#h=0;#w=!1;connectedCallback(){this.#e.adoptedStyleSheets=[ae,le]}set data(e){this.#a=e.endianness,this.#l=e.value,this.#d=e.valueTypes,this.#c=e.valueTypeModes||new Map,this.#h=e.memoryLength,this.#r()}#r(){pe(ue`
|
|
82
|
+
<div class="value-interpreter">
|
|
83
|
+
<div class="settings-toolbar">
|
|
84
|
+
${this.#k()}
|
|
85
|
+
<devtools-button data-settings="true" class="toolbar-button ${this.#w?"":"disabled"}"
|
|
86
|
+
title=${he(de.toggleValueTypeSettings)} @click=${this.#S}
|
|
87
|
+
jslog=${n.toggleSubpane("linear-memory-inspector.toggle-value-settings").track({click:!0})}
|
|
88
|
+
.iconName=${"gear"}
|
|
89
|
+
.toggledIconName=${"gear-filled"}
|
|
90
|
+
.toggleType=${"primary-toggle"}
|
|
91
|
+
.variant=${"icon_toggle"}
|
|
92
|
+
></devtools-button>
|
|
93
|
+
</div>
|
|
94
|
+
<span class="divider"></span>
|
|
95
|
+
<div>
|
|
96
|
+
${this.#w?ue`
|
|
97
|
+
<devtools-linear-memory-inspector-interpreter-settings
|
|
98
|
+
.data=${{valueTypes:this.#d}}
|
|
99
|
+
@typetoggle=${this.#x}>
|
|
100
|
+
</devtools-linear-memory-inspector-interpreter-settings>`:ue`
|
|
101
|
+
<devtools-linear-memory-inspector-interpreter-display
|
|
102
|
+
.data=${{buffer:this.#l,valueTypes:this.#d,endianness:this.#a,valueTypeModes:this.#c,memoryLength:this.#h}}>
|
|
103
|
+
</devtools-linear-memory-inspector-interpreter-display>`}
|
|
104
|
+
</div>
|
|
105
|
+
</div>
|
|
106
|
+
`,this.#e,{host:this})}#$(e){e.preventDefault();const t=e.target.value;this.dispatchEvent(new ge(t))}#k(){const t=this.#$.bind(this);return ue`
|
|
107
|
+
<label data-endianness-setting="true" title=${he(de.changeEndianness)}>
|
|
108
|
+
<select
|
|
109
|
+
jslog=${n.dropDown("linear-memory-inspector.endianess").track({change:!0})}
|
|
110
|
+
style="border: none;"
|
|
111
|
+
data-endianness="true" @change=${t}>
|
|
112
|
+
${["Little Endian","Big Endian"].map((t=>ue`<option value=${t} .selected=${this.#a===t}
|
|
113
|
+
jslog=${n.item(i.StringUtilities.toKebabCase(t)).track({click:!0})}>${e.i18n.lockedString(t)}</option>`))}
|
|
114
|
+
</select>
|
|
115
|
+
</label>
|
|
116
|
+
`}#S(){this.#w=!this.#w,this.#r()}#x(e){this.dispatchEvent(new ve(e.data.type,e.data.checked))}}customElements.define("devtools-linear-memory-inspector-interpreter",me);var be=Object.freeze({__proto__:null,EndiannessChangedEvent:ge,LinearMemoryValueInterpreter:me,ValueTypeToggledEvent:ve});const ye=/^0x[a-fA-F0-9]+$/,fe=/^0$|[1-9]\d*$/;function xe(e){const t=e.number.toString(16).padStart(e.pad,"0").toUpperCase();return e.prefix?"0x"+t:t}function we(e){return xe({number:e,pad:8,prefix:!0})}function ke(e){const t=e.match(ye),o=e.match(fe);let r;return t&&t[0].length===e.length?r=parseInt(e,16):o&&o[0].length===e.length&&(r=parseInt(e,10)),r}var Se=Object.freeze({__proto__:null,DECIMAL_REGEXP:fe,HEXADECIMAL_REGEXP:ye,formatAddress:we,parseAddress:ke,toHexString:xe}),$e={cssText:`:host{flex:auto;display:flex;min-height:20px}.view{overflow:hidden;text-overflow:ellipsis;box-sizing:border-box;background:var(--sys-color-cdt-base-container);outline:none}.row{display:flex;height:20px;align-items:center}.cell{text-align:center;border:1px solid transparent;border-radius:2px;&.focused-area{background-color:var(--sys-color-tonal-container);color:var(--sys-color-on-tonal-container)}&.selected{border-color:var(--sys-color-state-focus-ring);color:var(--sys-color-on-tonal-container);background-color:var(--sys-color-state-focus-select)}}.byte-cell{min-width:21px;color:var(--sys-color-on-surface)}.byte-group-margin{margin-left:var(--byte-group-margin)}.text-cell{min-width:14px;color:var(--sys-color-on-surface-subtle)}.address{color:var(--sys-color-state-disabled)}.address.selected{font-weight:bold;color:var(--sys-color-on-surface)}.divider{width:1px;height:inherit;background-color:var(--sys-color-divider);margin:0 4px}.highlight-area{background-color:var(--sys-color-surface-variant)}\n/*# sourceURL=${import.meta.resolve("./linearMemoryViewer.css")} */\n`};const Te=new CSSStyleSheet;Te.replaceSync($e.cssText);const{render:Me,html:Ie}=t;class Ee extends Event{static eventName="byteselected";data;constructor(e){super(Ee.eventName),this.data=e}}class ze extends Event{static eventName="resize";data;constructor(e){super(ze.eventName),this.data=e}}class Ae extends HTMLElement{#e=this.attachShadow({mode:"open"});#T=new ResizeObserver((()=>this.#M()));#I=!1;#E=new Uint8Array;#z=0;#A=0;#j;#o;#C=1;#L=4;#H=!0;#B=void 0;set data(e){if(e.address<e.memoryOffset||e.address>e.memoryOffset+e.memory.length||e.address<0)throw new Error("Address is out of bounds.");if(e.memoryOffset<0)throw new Error("Memory offset has to be greater or equal to zero.");this.#E=e.memory,this.#z=e.address,this.#j=e.highlightInfo,this.#o=e.focusedMemoryHighlight,this.#A=e.memoryOffset,this.#H=e.focus,this.#N()}connectedCallback(){this.style.setProperty("--byte-group-margin","8px"),this.#e.adoptedStyleSheets=[Te]}disconnectedCallback(){this.#I=!1,this.#T.disconnect()}#N(){this.#R(),this.#r(),this.#_(),this.#O()}#_(){if(this.#H){const e=this.#e.querySelector(".view");e&&e.focus()}}#M(){this.#N(),this.dispatchEvent(new ze(this.#L*this.#C))}#R(){if(0===this.clientWidth||0===this.clientHeight||!this.shadowRoot)return this.#L=4,void(this.#C=1);const e=this.shadowRoot.querySelector(".byte-cell"),t=this.shadowRoot.querySelector(".text-cell"),o=this.shadowRoot.querySelector(".divider"),r=this.shadowRoot.querySelector(".row"),s=this.shadowRoot.querySelector(".address");if(!(e&&t&&o&&r&&s))return this.#L=4,void(this.#C=1);const n=4*(e.getBoundingClientRect().width+t.getBoundingClientRect().width)+8,i=o.getBoundingClientRect().width,a=e.getBoundingClientRect().left-s.getBoundingClientRect().left,l=this.clientWidth-1-a-i;if(l<n)return this.#L=4,void(this.#C=1);this.#L=4*Math.floor(l/n),this.#C=Math.floor(this.clientHeight/r.clientHeight)}#O(){this.#T&&!this.#I&&(this.#T.observe(this),this.#I=!0)}#r(){const e=n.section().track({keydown:"ArrowUp|ArrowDown|ArrowLeft|ArrowRight|PageUp|PageDown"}).context("linear-memory-inspector.viewer");Me(Ie`
|
|
117
|
+
<div class="view" tabindex="0" @keydown=${this.#P} jslog=${e}>
|
|
118
|
+
${this.#V()}
|
|
119
|
+
</div>
|
|
120
|
+
`,this.#e,{host:this})}#P(e){const t=e;let o;"ArrowUp"===t.code?o=this.#z-this.#L:"ArrowDown"===t.code?o=this.#z+this.#L:"ArrowLeft"===t.code?o=this.#z-1:"ArrowRight"===t.code?o=this.#z+1:"PageUp"===t.code?o=this.#z-this.#L*this.#C:"PageDown"===t.code&&(o=this.#z+this.#L*this.#C),void 0!==o&&o!==this.#B&&(this.#B=o,this.dispatchEvent(new Ee(o)))}#V(){const e=[];for(let t=0;t<this.#C;++t)e.push(this.#U(t));return Ie`${e}`}#U(e){const{startIndex:o,endIndex:r}={startIndex:e*this.#L,endIndex:(e+1)*this.#L},s={address:!0,selected:Math.floor((this.#z-this.#A)/this.#L)===e};return Ie`
|
|
121
|
+
<div class="row">
|
|
122
|
+
<span class=${t.Directives.classMap(s)}>${xe({number:o+this.#A,pad:8,prefix:!1})}</span>
|
|
123
|
+
<span class="divider"></span>
|
|
124
|
+
${this.#F(o,r)}
|
|
125
|
+
<span class="divider"></span>
|
|
126
|
+
${this.#D(o,r)}
|
|
127
|
+
</div>
|
|
128
|
+
`}#F(e,o){const r=[];for(let s=e;s<o;++s){const o=s+this.#A,i={cell:!0,"byte-cell":!0,"byte-group-margin":s!==e&&(s-e)%4==0,selected:s===this.#z-this.#A,"highlight-area":this.#G(o),"focused-area":this.#q(o)},a=s<this.#E.length,l=a?Ie`${xe({number:this.#E[s],pad:2,prefix:!1})}`:"",d=a?this.#J.bind(this,o):"",c=n.tableCell("linear-memory-inspector.byte-cell").track({click:!0});r.push(Ie`<span class=${t.Directives.classMap(i)} @click=${d} jslog=${c}>${l}</span>`)}return Ie`${r}`}#D(e,o){const r=[];for(let s=e;s<o;++s){const e=s+this.#A,o=this.#G(e),i=this.#q(e),a={cell:!0,"text-cell":!0,selected:this.#z-this.#A===s,"highlight-area":o,"focused-area":i},l=s<this.#E.length,d=l?Ie`${this.#K(this.#E[s])}`:"",c=l?this.#J.bind(this,s+this.#A):"",h=n.tableCell("linear-memory-inspector.text-cell").track({click:!0});r.push(Ie`<span class=${t.Directives.classMap(a)} @click=${c} jslog=${h}>${d}</span>`)}return Ie`${r}`}#K(e){return e>=20&&e<=127?String.fromCharCode(e):"."}#J(e){this.dispatchEvent(new Ee(e))}#G(e){return void 0!==this.#j&&(this.#j.startAddress<=e&&e<this.#j.startAddress+this.#j.size)}#q(e){return!!this.#o&&(this.#o.startAddress<=e&&e<this.#o.startAddress+this.#o.size)}}customElements.define("devtools-linear-memory-inspector-viewer",Ae);var je=Object.freeze({__proto__:null,ByteSelectedEvent:Ee,LinearMemoryViewer:Ae,ResizeEvent:ze}),Ce={cssText:`:host{flex:auto;display:flex}.view{width:100%;display:flex;flex:1;flex-direction:column;font-family:var(--monospace-font-family);font-size:var(--monospace-font-size);padding:9px 12px 9px 7px}devtools-linear-memory-inspector-viewer{justify-content:center}devtools-linear-memory-inspector-navigator + devtools-linear-memory-inspector-viewer{margin-top:12px}.value-interpreter{display:flex}\n/*# sourceURL=${import.meta.resolve("./linearMemoryInspector.css")} */\n`};const Le=new CSSStyleSheet;Le.replaceSync(Ce.cssText);const He={addressHasToBeANumberBetweenSAnd:"Address has to be a number between {PH1} and {PH2}"},Be=e.i18n.registerUIStrings("panels/linear_memory_inspector/components/LinearMemoryInspector.ts",He),Ne=e.i18n.getLocalizedString.bind(void 0,Be);class Re extends Event{static eventName="memoryrequest";data;constructor(e,t,o){super(Re.eventName),this.data={start:e,end:t,address:o}}}class _e extends Event{static eventName="addresschanged";data;constructor(e){super(_e.eventName),this.data=e}}class Oe extends Event{static eventName="settingschanged";data;constructor(e){super(Oe.eventName),this.data=e}}class Pe{#z=0;#X;constructor(e,t){if(e<0)throw new Error("Address should be a greater or equal to zero");this.#z=e,this.#X=t}valid(){return!0}reveal(){this.#X(this.#z)}}class Ve extends HTMLElement{#e=this.attachShadow({mode:"open"});#W=new l.SimpleHistoryManager.SimpleHistoryManager(10);#E=new Uint8Array;#A=0;#Y=0;#z=-1;#j;#Q="Submitted";#Z=`${this.#z}`;#ee=4;#te=T();#d=new Set(this.#te.keys());#a="Little Endian";#oe=!1;connectedCallback(){this.#e.adoptedStyleSheets=[Le]}set data(e){if(e.address<e.memoryOffset||e.address>e.memoryOffset+e.memory.length||e.address<0)throw new Error("Address is out of bounds.");if(e.memoryOffset<0)throw new Error("Memory offset has to be greater or equal to zero.");if(e.highlightInfo){if(e.highlightInfo.size<0)throw new Error("Object size has to be greater than or equal to zero");if(e.highlightInfo.startAddress<0||e.highlightInfo.startAddress>=e.outerMemoryLength)throw new Error("Object start address is out of bounds.")}this.#E=e.memory,this.#A=e.memoryOffset,this.#Y=e.outerMemoryLength,this.#te=e.valueTypeModes||this.#te,this.#d=e.valueTypes||this.#d,this.#a=e.endianness||this.#a,this.#j=e.highlightInfo,this.#oe=e.hideValueInspector??this.#oe,this.#re(e.address),this.#r()}#r(){const{start:e,end:t}=this.#se(this.#z,this.#ee),n="Submitted"===this.#Q?we(this.#z):this.#Z,i=this.#ne(n),a=Ne(He.addressHasToBeANumberBetweenSAnd,{PH1:we(0),PH2:we(this.#Y)}),l=i?void 0:a,d=this.#W.canRollback(),c=this.#W.canRollover(),h=this.#j?[this.#j]:[],p=this.#ie(h,this.#z);o(r`
|
|
129
|
+
<div class="view">
|
|
130
|
+
<devtools-linear-memory-inspector-navigator
|
|
131
|
+
.data=${{address:n,valid:i,mode:this.#Q,error:l,canGoBackInHistory:d,canGoForwardInHistory:c}}
|
|
132
|
+
@refreshrequested=${this.#ae}
|
|
133
|
+
@addressinputchanged=${this.#le}
|
|
134
|
+
@pagenavigation=${this.#de}
|
|
135
|
+
@historynavigation=${this.#ce}></devtools-linear-memory-inspector-navigator>
|
|
136
|
+
<devtools-linear-memory-highlight-chip-list
|
|
137
|
+
.data=${{highlightInfos:h,focusedMemoryHighlight:p}}
|
|
138
|
+
@jumptohighlightedmemory=${this.#he}>
|
|
139
|
+
</devtools-linear-memory-highlight-chip-list>
|
|
140
|
+
<devtools-linear-memory-inspector-viewer
|
|
141
|
+
.data=${{memory:this.#E.slice(e-this.#A,t-this.#A),address:this.#z,memoryOffset:e,focus:"Submitted"===this.#Q,highlightInfo:this.#j,focusedMemoryHighlight:p}}
|
|
142
|
+
@byteselected=${this.#pe}
|
|
143
|
+
@resize=${this.#M}>
|
|
144
|
+
</devtools-linear-memory-inspector-viewer>
|
|
145
|
+
</div>
|
|
146
|
+
${this.#oe?s:r`
|
|
147
|
+
<div class="value-interpreter">
|
|
148
|
+
<devtools-linear-memory-inspector-interpreter
|
|
149
|
+
.data=${{value:this.#E.slice(this.#z-this.#A,this.#z+8).buffer,valueTypes:this.#d,valueTypeModes:this.#te,endianness:this.#a,memoryLength:this.#Y}}
|
|
150
|
+
@valuetypetoggled=${this.#ue}
|
|
151
|
+
@valuetypemodechanged=${this.#ge}
|
|
152
|
+
@endiannesschanged=${this.#ve}
|
|
153
|
+
@jumptopointeraddress=${this.#he}
|
|
154
|
+
>
|
|
155
|
+
</devtools-linear-memory-inspector-interpreter/>
|
|
156
|
+
</div>`}
|
|
157
|
+
`,this.#e,{host:this})}#he(e){e.stopPropagation(),this.#Q="Submitted";const t=Math.max(0,Math.min(e.data,this.#Y-1));this.#me(t)}#ae(){const{start:e,end:t}=this.#se(this.#z,this.#ee);this.dispatchEvent(new Re(e,t,this.#z))}#pe(e){this.#Q="Submitted";const t=Math.max(0,Math.min(e.data,this.#Y-1));this.#me(t)}#be(){return{valueTypes:this.#d,modes:this.#te,endianness:this.#a}}#ve(e){this.#a=e.data,this.dispatchEvent(new Oe(this.#be())),this.#r()}#ne(e){const t=ke(e);return void 0!==t&&t>=0&&t<this.#Y}#le(e){const{address:t,mode:o}=e.data,r=this.#ne(t),s=ke(t);if(this.#Z=t,void 0!==s&&r)return this.#Q=o,void this.#me(s);this.#Q="Submitted"!==o||r?"Edit":"InvalidSubmit",this.#r()}#ue(e){const{type:t,checked:o}=e.data;o?this.#d.add(t):this.#d.delete(t),this.dispatchEvent(new Oe(this.#be())),this.#r()}#ge(e){e.stopImmediatePropagation();const{type:t,mode:o}=e.data;this.#te.set(t,o),this.dispatchEvent(new Oe(this.#be())),this.#r()}#ce(e){return"Forward"===e.data?this.#W.rollover():this.#W.rollback()}#de(e){const t="Forward"===e.data?this.#z+this.#ee:this.#z-this.#ee,o=Math.max(0,Math.min(t,this.#Y-1));this.#me(o)}#me(e){e<0||e>=this.#Y?console.warn(`Specified address is out of bounds: ${e}`):(this.#re(e),this.#N())}#se(e,t){const o=Math.floor(e/t)*t;return{start:o,end:Math.min(o+t,this.#Y)}}#M(e){this.#ee=e.data,this.#N()}#N(){const{start:e,end:t}=this.#se(this.#z,this.#ee);e<this.#A||t>this.#A+this.#E.length?this.dispatchEvent(new Re(e,t,this.#z)):this.#r()}#re(e){if(this.#z===e)return;const t=new Pe(e,(()=>this.#me(e)));this.#W.push(t),this.#z=e,this.dispatchEvent(new _e(this.#z))}#ie(e,t){let o;for(const r of e)r.startAddress<=t&&t<r.startAddress+r.size&&(o?r.size<o.size&&(o=r):o=r);return o}}customElements.define("devtools-linear-memory-inspector-inspector",Ve);var Ue=Object.freeze({__proto__:null,AddressChangedEvent:_e,LinearMemoryInspector:Ve,MemoryRequestEvent:Re,SettingsChangedEvent:Oe}),Fe={cssText:`.navigator{min-height:24px;display:flex;flex-wrap:nowrap;justify-content:space-between;overflow:hidden;align-items:center;background-color:var(--sys-color-cdt-base-container);color:var(--sys-color-on-surface)}.navigator-item{display:flex;white-space:nowrap;overflow:hidden}.address-input{text-align:center;outline:none;color:var(--sys-color-on-surface);border:1px solid var(--sys-color-neutral-outline);background:transparent}.address-input.invalid{color:var(--sys-color-error)}.navigator-button{display:flex;width:20px;height:20px;background:transparent;overflow:hidden;border:none;padding:0;outline:none;justify-content:center;align-items:center;cursor:pointer}.navigator-button:disabled devtools-icon{opacity:50%}.navigator-button:enabled:hover devtools-icon{color:var(--icon-default-hover)}.navigator-button:enabled:focus devtools-icon{color:var(--icon-default-hover)}\n/*# sourceURL=${import.meta.resolve("./linearMemoryNavigator.css")} */\n`};const De=new CSSStyleSheet;De.replaceSync(Fe.cssText);const Ge={enterAddress:"Enter address",goBackInAddressHistory:"Go back in address history",goForwardInAddressHistory:"Go forward in address history",previousPage:"Previous page",nextPage:"Next page",refresh:"Refresh"},qe=e.i18n.registerUIStrings("panels/linear_memory_inspector/components/LinearMemoryNavigator.ts",Ge),Je=e.i18n.getLocalizedString.bind(void 0,qe),{render:Ke,html:Xe,Directives:{ifDefined:We}}=t;class Ye extends Event{static eventName="addressinputchanged";data;constructor(e,t){super(Ye.eventName),this.data={address:e,mode:t}}}class Qe extends Event{static eventName="pagenavigation";data;constructor(e){super(Qe.eventName,{}),this.data=e}}class Ze extends Event{static eventName="historynavigation";data;constructor(e){super(Ze.eventName,{}),this.data=e}}class et extends Event{static eventName="refreshrequested";constructor(){super(et.eventName,{})}}class tt extends HTMLElement{#e=this.attachShadow({mode:"open"});#z="0";#ye=void 0;#fe=!0;#xe=!1;#we=!1;connectedCallback(){this.#e.adoptedStyleSheets=[De]}set data(e){this.#z=e.address,this.#ye=e.error,this.#fe=e.valid,this.#xe=e.canGoBackInHistory,this.#we=e.canGoForwardInHistory,this.#r();const t=this.#e.querySelector(".address-input");t&&("Submitted"===e.mode?t.blur():"InvalidSubmit"===e.mode&&t.select())}#r(){const e=Xe`
|
|
158
|
+
<div class="navigator">
|
|
159
|
+
<div class="navigator-item">
|
|
160
|
+
${this.#ke({icon:"undo",title:Je(Ge.goBackInAddressHistory),event:new Ze("Backward"),enabled:this.#xe,jslogContext:"linear-memory-inspector.history-back"})}
|
|
161
|
+
${this.#ke({icon:"redo",title:Je(Ge.goForwardInAddressHistory),event:new Ze("Forward"),enabled:this.#we,jslogContext:"linear-memory-inspector.history-forward"})}
|
|
162
|
+
</div>
|
|
163
|
+
<div class="navigator-item">
|
|
164
|
+
${this.#ke({icon:"chevron-left",title:Je(Ge.previousPage),event:new Qe("Backward"),enabled:!0,jslogContext:"linear-memory-inspector.previous-page"})}
|
|
165
|
+
${this.#Se()}
|
|
166
|
+
${this.#ke({icon:"chevron-right",title:Je(Ge.nextPage),event:new Qe("Forward"),enabled:!0,jslogContext:"linear-memory-inspector.next-page"})}
|
|
167
|
+
</div>
|
|
168
|
+
${this.#ke({icon:"refresh",title:Je(Ge.refresh),event:new et,enabled:!0,jslogContext:"linear-memory-inspector.refresh"})}
|
|
169
|
+
</div>
|
|
170
|
+
`;Ke(e,this.#e,{host:this})}#Se(){const e={"address-input":!0,invalid:!this.#fe};return Xe`
|
|
171
|
+
<input class=${t.Directives.classMap(e)} data-input="true" .value=${this.#z}
|
|
172
|
+
jslog=${n.textField("linear-memory-inspector.address").track({change:!0})}
|
|
173
|
+
title=${We(this.#fe?Je(Ge.enterAddress):this.#ye)} @change=${this.#le.bind(this,"Submitted")} @input=${this.#le.bind(this,"Edit")}/>`}#le(e,t){const o=t.target;this.dispatchEvent(new Ye(o.value,e))}#ke(e){return Xe`
|
|
174
|
+
<button class="navigator-button" ?disabled=${!e.enabled}
|
|
175
|
+
jslog=${n.action().track({click:!0,keydown:"Enter"}).context(e.jslogContext)}
|
|
176
|
+
data-button=${e.event.type} title=${e.title}
|
|
177
|
+
@click=${this.dispatchEvent.bind(this,e.event)}>
|
|
178
|
+
<devtools-icon name=${e.icon}></devtools-icon>
|
|
179
|
+
</button>`}}customElements.define("devtools-linear-memory-inspector-navigator",tt);var ot=Object.freeze({__proto__:null,AddressInputChangedEvent:Ye,HistoryNavigationEvent:Ze,LinearMemoryNavigator:tt,PageNavigationEvent:Qe,RefreshRequestedEvent:et}),rt=Object.freeze({__proto__:null});export{f as LinearMemoryHighlightChipList,Ue as LinearMemoryInspector,Se as LinearMemoryInspectorUtils,ot as LinearMemoryNavigator,be as LinearMemoryValueInterpreter,je as LinearMemoryViewer,rt as LinearMemoryViewerUtils,K as ValueInterpreterDisplay,N as ValueInterpreterDisplayUtils,ne as ValueInterpreterSettings};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../core/common/common.js";import*as r from"../../core/i18n/i18n.js";import*as o from"../../core/sdk/sdk.js";import*as n from"../../ui/legacy/components/object_ui/object_ui.js";import*as t from"../../ui/legacy/legacy.js";const i={memoryInspector:"Memory inspector",showMemoryInspector:"Show Memory inspector"},a=r.i18n.registerUIStrings("panels/linear_memory_inspector/linear_memory_inspector-meta.ts",i),s=r.i18n.getLazilyComputedLocalizedString.bind(void 0,a);let c;async function m(){return c||(c=await import("./linear_memory_inspector.js")),c}t.ViewManager.registerViewExtension({location:"drawer-view",id:"linear-memory-inspector",title:s(i.memoryInspector),commandPrompt:s(i.showMemoryInspector),order:100,persistence:"closeable",loadView:async()=>(await m()).LinearMemoryInspectorPane.LinearMemoryInspectorPane.instance()}),t.ContextMenu.registerProvider({loadProvider:async()=>(await m()).LinearMemoryInspectorController.LinearMemoryInspectorController.instance(),experiment:void 0,contextTypes:()=>[n.ObjectPropertiesSection.ObjectPropertyTreeElement]}),e.Revealer.registerRevealer({contextTypes:()=>[o.RemoteObject.LinearMemoryInspectable],destination:e.Revealer.RevealerDestination.MEMORY_INSPECTOR_PANEL,loadRevealer:async()=>(await m()).LinearMemoryInspectorController.LinearMemoryInspectorController.instance()});
|
package/client/dist/chrome-devtools-ui/panels/linear_memory_inspector/linear_memory_inspector.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../core/common/common.js";import*as t from"../../core/i18n/i18n.js";import*as r from"../../core/sdk/sdk.js";import*as n from"../../models/bindings/bindings.js";import*as s from"../../ui/legacy/legacy.js";import*as i from"./components/components.js";import*as o from"../../ui/visual_logging/visual_logging.js";const a={noOpenInspections:"No open inspections",memoryInspectorExplanation:"On this page you can inspect binary data.",learnMore:"Learn more"},d=t.i18n.registerUIStrings("panels/linear_memory_inspector/LinearMemoryInspectorPane.ts",a),c=t.i18n.getLocalizedString.bind(void 0,d);let l;class h extends(e.ObjectWrapper.eventMixin(s.Widget.VBox)){#e;constructor(){super(!1),this.element.setAttribute("jslog",`${o.panel("linear-memory-inspector").track({resize:!0})}`),this.#e=new s.TabbedPane.TabbedPane,this.#e.setPlaceholderElement(this.createPlaceholder()),this.#e.setCloseableTabs(!0),this.#e.setAllowTabReorder(!0,!0),this.#e.addEventListener(s.TabbedPane.Events.TabClosed,this.#t,this),this.#e.show(this.contentElement),this.#e.headerElement().setAttribute("jslog",`${o.toolbar().track({keydown:"ArrowUp|ArrowLeft|ArrowDown|ArrowRight|Enter|Space"})}`)}createPlaceholder(){const e=document.createElement("div");e.classList.add("empty-state"),e.createChild("span","empty-state-header").textContent=c(a.noOpenInspections);const t=e.createChild("div","empty-state-description");t.createChild("span").textContent=c(a.memoryInspectorExplanation);const r=s.XLink.XLink.create("https://developer.chrome.com/docs/devtools/memory-inspector",c(a.learnMore),void 0,void 0,"learn-more");return t.appendChild(r),e}static instance(){return l||(l=new h),l}#r(e){const t=this.#e.tabView(e);if(null===t)throw new Error(`No linear memory inspector view for the given tab id: ${e}`);return t}create(e,t,r,n){const s=new g(r,n,e);this.#e.appendTab(e,t,s,void 0,!1,!0),this.#e.selectTab(e)}close(e){this.#e.closeTab(e,!1)}reveal(e,t){const r=this.#r(e);void 0!==t&&r.updateAddress(t),this.refreshView(e),this.#e.selectTab(e)}refreshView(e){this.#r(e).refreshData()}#t(e){const{tabId:t}=e.data;this.dispatchEventToListeners("ViewClosed",t)}}class g extends s.Widget.VBox{#n;#s;#i;#o;firstTimeOpen;#a;constructor(e,t=0,r,n){if(super(!1),t<0||t>=e.length())throw new Error("Requested address is out of bounds.");this.#n=e,this.#s=t,this.#i=r,this.#a=Boolean(n),this.#o=new i.LinearMemoryInspector.LinearMemoryInspector,this.#o.addEventListener(i.LinearMemoryInspector.MemoryRequestEvent.eventName,(e=>{this.#d(e)})),this.#o.addEventListener(i.LinearMemoryInspector.AddressChangedEvent.eventName,(e=>{this.updateAddress(e.data)})),this.#o.addEventListener(i.LinearMemoryInspector.SettingsChangedEvent.eventName,(e=>{e.stopPropagation(),this.saveSettings(e.data)})),this.#o.addEventListener(i.LinearMemoryHighlightChipList.DeleteMemoryHighlightEvent.eventName,(e=>{v.instance().removeHighlight(this.#i,e.data),this.refreshData()})),this.contentElement.appendChild(this.#o),this.firstTimeOpen=!0}wasShown(){this.refreshData()}saveSettings(e){v.instance().saveSettings(e)}updateAddress(e){if(e<0||e>=this.#n.length())throw new Error("Requested address is out of bounds.");this.#s=e}refreshData(){v.getMemoryForAddress(this.#n,this.#s).then((({memory:e,offset:t})=>{let r,n,s;if(this.firstTimeOpen){const e=v.instance().loadSettings();r=e.valueTypes,n=e.modes,s=e.endianness,this.firstTimeOpen=!1}this.#o.data={memory:e,address:this.#s,memoryOffset:t,outerMemoryLength:this.#n.length(),valueTypes:r,valueTypeModes:n,endianness:s,highlightInfo:this.#c(),hideValueInspector:this.#a}}))}#d(e){const{start:t,end:r,address:n}=e.data;if(n<t||n>=r)throw new Error("Requested address is out of bounds.");v.getMemoryRange(this.#n,t,r).then((e=>{this.#o.data={memory:e,address:n,memoryOffset:t,outerMemoryLength:this.#n.length(),highlightInfo:this.#c(),hideValueInspector:this.#a}}))}#c(){const e=v.instance().getHighlightInfo(this.#i);if(void 0!==e){if(e.startAddress<0||e.startAddress>=this.#n.length())throw new Error("HighlightInfo start address is out of bounds.");if(e.size<=0)throw new Error("Highlight size must be a positive number.")}return e}}var m=Object.freeze({__proto__:null,LinearMemoryInspectorPane:h,LinearMemoryInspectorView:g});const p={couldNotOpenLinearMemory:"Could not open linear memory inspector: failed locating buffer.",openInMemoryInspectorPanel:"Open in Memory inspector panel"},u=t.i18n.registerUIStrings("panels/linear_memory_inspector/LinearMemoryInspectorController.ts",p),f=t.i18n.getLocalizedString.bind(void 0,u),b=1e3;let y;class I{#l;constructor(e){this.#l=e}length(){return this.#l.byteLength()}async getRange(e,t){const r=Math.min(t,this.length());if(e<0||e>r)return console.error(`Requesting invalid range of memory: (${e}, ${t})`),new Uint8Array(0);const n=await this.#l.bytes(e,r);return new Uint8Array(n)}}class v extends r.TargetManager.SDKModelObserver{#h=h.instance();#g=new Map;#m=new Map;#p;constructor(){super(),r.TargetManager.TargetManager.instance().observeModels(r.RuntimeModel.RuntimeModel,this),r.TargetManager.TargetManager.instance().addModelListener(r.DebuggerModel.DebuggerModel,r.DebuggerModel.Events.GlobalObjectCleared,this.#u,this),this.#h.addEventListener("ViewClosed",this.#f.bind(this)),r.TargetManager.TargetManager.instance().addModelListener(r.DebuggerModel.DebuggerModel,r.DebuggerModel.Events.DebuggerPaused,this.#b,this);const t=i.ValueInterpreterDisplayUtils.getDefaultValueTypeMapping(),n={valueTypes:Array.from(t.keys()),valueTypeModes:Array.from(t),endianness:"Little Endian"};this.#p=e.Settings.Settings.instance().createSetting("lmi-interpreter-settings",n)}static instance(){return y||(y=new v,y)}static async getMemoryForAddress(e,t){const r=Math.max(0,t-500),n=r+b;return{memory:await e.getRange(r,n),offset:r}}static async getMemoryRange(e,t,r){if(t<0||t>r||t>=e.length())throw new Error("Requested range is out of bounds.");const n=Math.max(r,t+b);return await e.getRange(t,n)}async evaluateExpression(e,t){const r=await e.evaluate({expression:t});if("error"in r)console.error(`Tried to evaluate the expression '${t}' but got an error: ${r.error}`);else{if(!("exceptionDetails"in r)||!r?.exceptionDetails?.text)return r.object;console.error(`Tried to evaluate the expression '${t}' but got an exception: ${r.exceptionDetails.text}`)}}saveSettings(e){const t=Array.from(e.valueTypes),r=[...e.modes];this.#p.set({valueTypes:t,valueTypeModes:r,endianness:e.endianness})}loadSettings(){const e=this.#p.get();return{valueTypes:new Set(e.valueTypes),modes:new Map(e.valueTypeModes),endianness:e.endianness}}getHighlightInfo(e){return this.#m.get(e)}removeHighlight(e,t){this.getHighlightInfo(e)===t&&this.#m.delete(e)}setHighlightInfo(e,t){this.#m.set(e,t)}#y(e){this.#m.delete(e)}static async retrieveDWARFMemoryObjectAndAddress(t){if(!(t instanceof n.DebuggerLanguagePlugins.ExtensionRemoteObject))return;const r=t,s=t.linearMemoryAddress;if(void 0===s)return;const i=r.callFrame,o=await t.debuggerModel().agent.invoke_evaluateOnCallFrame({callFrameId:i.id,expression:"memories[0]"}),a=o.getError();a&&(console.error(a),e.Console.Console.instance().error(f(p.couldNotOpenLinearMemory)));return{obj:t.debuggerModel().runtimeModel().createRemoteObject(o.result),address:s}}static extractObjectSize(e){return e.linearMemorySize??0}static extractObjectTypeDescription(e){const t=e.description;if(!t)return"";const r=t.charAt(t.length-1),n=t.charAt(t.length-2);return"*"===r||"&"===r?" "===n?t.slice(0,t.length-2):t.slice(0,t.length-1):t}static extractObjectName(e,t){const r=e.description?.charAt(e.description.length-1);return"*"===r?"*"+t:t}async reveal({object:e,expression:t},n){const i=await v.retrieveDWARFMemoryObjectAndAddress(e);let o,a=e;void 0!==i&&(o=i.address,a=i.obj);const d=await async function(e){const t=await e.runtimeModel().agent.invoke_callFunctionOn({objectId:e.objectId,functionDeclaration:"function() { return this instanceof ArrayBuffer || (typeof SharedArrayBuffer !== 'undefined' && this instanceof SharedArrayBuffer) ? this : this.buffer; }",silent:!0,objectGroup:"linear-memory-inspector"}),n=t.getError();if(n)throw new Error(`Remote object representing ArrayBuffer could not be retrieved: ${n}`);return e=e.runtimeModel().createRemoteObject(t.result),new r.RemoteObject.RemoteArrayBuffer(e)}(a),{internalProperties:c}=await d.object().getOwnProperties(!1),l=c?.find((({name:e})=>"[[ArrayBufferData]]"===e)),h=l?.value?.value;if(!h)throw new Error("Unable to find backing store id for array buffer");const g=c?.find((({name:e})=>"[[WebAssemblyMemory]]"===e)),m=g?.value,p=v.extractHighlightInfo(e,t);if(p?this.setHighlightInfo(h,p):this.#y(h),this.#g.has(h))return this.#h.reveal(h,o),void s.ViewManager.ViewManager.instance().showView("linear-memory-inspector",n);const u=String(m?m.description:d.object().description);this.#g.set(h,d.object());const f=new I(d);this.#h.create(h,u,f,o),s.ViewManager.ViewManager.instance().showView("linear-memory-inspector",n)}appendApplicableItems(e,t,n){if(n.property.value?.isLinearMemoryInspectable()){const e=n.path(),s=n.property.value;t.debugSection().appendItem(f(p.openInMemoryInspectorPanel),this.reveal.bind(this,new r.RemoteObject.LinearMemoryInspectable(s,e)),{jslogContext:"reveal-in-memory-inspector"})}}static extractHighlightInfo(e,t){if(!(e instanceof n.DebuggerLanguagePlugins.ExtensionRemoteObject))return;const r=e.linearMemoryAddress??0;let s;try{s={startAddress:r,size:v.extractObjectSize(e),name:t?v.extractObjectName(e,t):t,type:v.extractObjectTypeDescription(e)}}catch{s=void 0}return s}modelRemoved(e){for(const[t,r]of this.#g)e===r.runtimeModel()&&(this.#g.delete(t),this.#y(t),this.#h.close(t))}#b(e){const t=e.data;for(const[e,r]of this.#g)if(t.runtimeModel()===r.runtimeModel()){const r=t.debuggerPausedDetails()?.callFrames[0];r?this.updateHighlightedMemory(e,r).then((()=>this.#h.refreshView(e))):(this.#y(e),this.#h.refreshView(e))}}#u(e){this.modelRemoved(e.data.runtimeModel())}#f({data:e}){const t=this.#g.get(e);t&&t.release(),this.#g.delete(e),this.#y(e)}async updateHighlightedMemory(e,t){const r=this.getHighlightInfo(e),n=r?.name;if(!r||!n)return void this.#y(e);const s=await this.evaluateExpression(t,n);if(!s)return void this.#y(e);const i=v.extractHighlightInfo(s,n);i&&this.#I(i,r)?this.setHighlightInfo(e,i):this.#y(e)}#I(e,t){return e.type===t.type&&e.startAddress===t.startAddress}}var M=Object.freeze({__proto__:null,LinearMemoryInspectorController:v,RemoteArrayBufferWrapper:I});export{M as LinearMemoryInspectorController,m as LinearMemoryInspectorPane};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as i from"../../core/i18n/i18n.js";import*as e from"../../ui/legacy/legacy.js";const a={media:"Media",video:"video",showMedia:"Show Media"},o=i.i18n.registerUIStrings("panels/media/media-meta.ts",a),n=i.i18n.getLazilyComputedLocalizedString.bind(void 0,o);let t;e.ViewManager.registerViewExtension({location:"panel",id:"medias",title:n(a.media),commandPrompt:n(a.showMedia),persistence:"closeable",order:100,loadView:async()=>new((await async function(){return t||(t=await import("./media.js")),t}()).MainView.MainView),tags:[n(a.media),n(a.video)]});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import*as e from"../../core/i18n/i18n.js";import*as t from"../../ui/legacy/components/data_grid/data_grid.js";import*as s from"../../ui/legacy/components/source_frame/source_frame.js";import*as i from"../../ui/legacy/legacy.js";import*as a from"../../ui/visual_logging/visual_logging.js";import*as r from"../../core/sdk/sdk.js";import*as n from"../../core/common/common.js";import*as o from"../../core/host/host.js";import*as l from"../../ui/legacy/components/perf_ui/perf_ui.js";import*as d from"../../ui/legacy/theme_support/theme_support.js";import*as h from"../../core/platform/platform.js";import*as c from"../../ui/components/icon_button/icon_button.js";var m={cssText:`.no-border-top-datagrid > .data-grid{border-top:0}.event-display-table-contents-table-container > .widget > .data-grid{height:100%}.data-grid .event-display-table-basic-text-table-entry{line-height:26px}.event-display-table-contents-json-wrapper > .json-view{overflow:visible}\n/*# sourceURL=${import.meta.resolve("./eventDisplayTable.css")} */\n`};const p={timestamp:"Timestamp",eventName:"Event name",value:"Value",eventDisplay:"Event display"},u=e.i18n.registerUIStrings("panels/media/EventDisplayTable.ts",p),g=e.i18n.getLocalizedString.bind(void 0,u);class v extends t.DataGrid.DataGridNode{expandableElement;constructor(e){super(e,!1),this.expandableElement=null}createCell(e){const t=this.createTD(e),a=this.data[e];if("value"===e){const e=t.createChild("div","event-display-table-contents-json-wrapper");this.expandableElement=new s.JSONView.JSONView(new s.JSONView.ParsedJSON(a,"",""),!0),this.expandableElement.markAsRoot(),this.expandableElement.show(e)}else t.classList.add("event-display-table-basic-text-table-entry"),i.UIUtils.createTextChild(t,a);return t}}class y extends i.Widget.VBox{dataGrid;firstEventTime;constructor(){super(),this.registerRequiredCSS(m),this.element.setAttribute("jslog",`${a.pane("events")}`),this.contentElement.classList.add("event-display-table-contents-table-container"),this.dataGrid=this.createDataGrid([{id:"display-timestamp",title:g(p.timestamp),weight:1,sortable:!1},{id:"event",title:g(p.eventName),weight:2,sortable:!1},{id:"value",title:g(p.value),weight:7,sortable:!1}]),this.firstEventTime=0,this.dataGrid.setStriped(!0),this.dataGrid.asWidget().show(this.contentElement)}createDataGrid(e){const s=[];for(const t of e)s.push(y.convertToGridDescriptor(t));const i=new t.DataGrid.DataGridImpl({displayName:g(p.eventDisplay),columns:s,deleteCallback:void 0,refreshCallback:void 0});return i.asWidget().contentElement.classList.add("no-border-top-datagrid"),i}onEvent(e){0===this.firstEventTime&&"number"==typeof e.timestamp&&(this.firstEventTime=e.timestamp);const t=(e=this.subtractFirstEventTime(e)).value;try{const s=JSON.parse(t);e.event=s.event,delete s.event,e.value=s;const i=new v(e),a=this.dataGrid.scrollContainer,r=a.scrollTop===a.scrollHeight-a.offsetHeight;this.dataGrid.rootNode().appendChild(i),r&&(a.scrollTop=a.scrollHeight)}catch{}}subtractFirstEventTime(e){return"number"==typeof e.timestamp&&(e.displayTimestamp=(e.timestamp-this.firstEventTime).toFixed(3)),e}static convertToGridDescriptor(e){return{id:e.id,title:e.title,sortable:e.sortable,weight:e.weight||0,sort:t.DataGrid.Order.Ascending}}}var b=Object.freeze({__proto__:null,EventNode:v,PlayerEventsView:y});class f extends r.SDKModel.SDKModel{enabled;agent;constructor(e){super(e),this.enabled=!1,this.agent=e.mediaAgent(),e.registerMediaDispatcher(this)}async resumeModel(){if(!this.enabled)return await Promise.resolve();await this.agent.invoke_enable()}ensureEnabled(){this.agent.invoke_enable(),this.enabled=!0}playerPropertiesChanged(e){this.dispatchEventToListeners("PlayerPropertiesChanged",e)}playerEventsAdded(e){this.dispatchEventToListeners("PlayerEventsAdded",e)}playerMessagesLogged(e){this.dispatchEventToListeners("PlayerMessagesLogged",e)}playerErrorsRaised(e){this.dispatchEventToListeners("PlayerErrorsRaised",e)}playersCreated({players:e}){this.dispatchEventToListeners("PlayersCreated",e)}}r.SDKModel.SDKModel.register(f,{capabilities:262144,autostart:!1});var w=Object.freeze({__proto__:null,MediaModel:f});function E(e,t){const s=Math.pow(10,3-t),i=Math.pow(10,Math.max(0,t));return Math.round(e/s)/i+" s"}class T{minInternal;maxInternal;lowInternal;highInternal;maxRange;minRange;constructor(e,t,s,i){this.minInternal=e,this.maxInternal=t,this.lowInternal=this.minInternal,this.highInternal=this.maxInternal,this.maxRange=s,this.minRange=i}get low(){return this.lowInternal}get high(){return this.highInternal}get min(){return this.minInternal}get max(){return this.maxInternal}get range(){return this.highInternal-this.lowInternal}reassertBounds(){let e=!0;for(;e;){if(e=!1,this.range<this.minRange){e=!0;const t=(this.minRange-this.range)/2;this.highInternal+=t,this.lowInternal-=t}this.lowInternal<this.minInternal&&(e=!0,this.lowInternal=this.minInternal),this.highInternal>this.maxInternal&&(e=!0,this.highInternal=this.maxInternal)}}zoomOut(e,t){const s=this.highInternal-this.lowInternal,i=s*Math.pow(1.1,e)-s,a=i*t,r=i-a;this.lowInternal-=a,this.highInternal+=r,this.reassertBounds()}zoomIn(e,t){const s=this.highInternal-this.lowInternal;if(this.range<=this.minRange)return;const i=s-s/Math.pow(1.1,e),a=i*t,r=i-a;this.lowInternal+=a,this.highInternal-=r,this.reassertBounds()}addMax(e){const t=this.highInternal-this.lowInternal,s=this.highInternal===this.maxInternal,i=this.lowInternal===this.minInternal||t>=this.maxRange;this.maxInternal+=e,s&&i&&(this.highInternal=this.maxInternal),this.reassertBounds()}pushMaxAtLeastTo(e){return this.maxInternal<e&&(this.addMax(e-this.maxInternal),!0)}}var x=Object.freeze({__proto__:null,Bounds:T,formatMillisecondsToSeconds:E});const P="11px "+o.Platform.fontFamily();function k(){return d.ThemeSupport.instance().getComputedValue("--sys-color-on-surface")}const C=["#ffba08","#faa307","#f48c06","#e85d04","#dc2f02","#d00000","#9d0208"],S=["#7400b8","#6930c3","#5e60ce","#5390d9","#4ea8de","#48bfe3","#56cfe1","#64dfdf"];function M(e){const t=n.Color.parse(e)?.as("hsl");return t&&t.l<.5?"#eee":"#444"}class D{timelineData;setLive;setComplete;updateMaxTime;selfIndex;liveInternal;title;colorInternal;fontColorInternal;hoverData;constructor(e,t,s={color:void 0,duration:void 0,hoverData:{},level:0,name:"",startTime:0}){this.timelineData=e,this.setLive=t.setLive,this.setComplete=t.setComplete,this.updateMaxTime=t.updateMaxTime,this.selfIndex=this.timelineData.entryLevels.length,this.liveInternal=!1;const i=void 0===s.duration?0:s.duration;this.timelineData.entryLevels.push(s.level||0),this.timelineData.entryStartTimes.push(s.startTime||0),this.timelineData.entryTotalTimes.push(i),-1===i&&(this.endTime=-1),this.title=s.name||"",this.colorInternal=s.color||C[0],this.fontColorInternal=M(this.colorInternal),this.hoverData=s.hoverData||{}}decorate(e){e.createChild("span").textContent=`Name: ${this.title}`,e.createChild("br");const t=E(this.startTime,2);if(this.liveInternal)e.createChild("span").textContent=`Duration: ${t} - LIVE!`;else if(isNaN(this.duration))e.createChild("span").textContent=`Time: ${t}`;else{const s=E(this.duration+this.startTime,2);e.createChild("span").textContent=`Duration: ${t} - ${s}`}}set endTime(e){if(-1===e)this.timelineData.entryTotalTimes[this.selfIndex]=this.setLive(this.selfIndex),this.liveInternal=!0;else{this.liveInternal=!1;const t=e-this.timelineData.entryStartTimes[this.selfIndex];this.timelineData.entryTotalTimes[this.selfIndex]=t,this.setComplete(this.selfIndex),this.updateMaxTime(e)}}get id(){return this.selfIndex}set level(e){this.timelineData.entryLevels[this.selfIndex]=e}set color(e){this.colorInternal=e,this.fontColorInternal=M(this.colorInternal)}get color(){return this.colorInternal}get fontColor(){return this.fontColorInternal}get startTime(){return this.timelineData.entryStartTimes[this.selfIndex]}get duration(){return this.timelineData.entryTotalTimes[this.selfIndex]}get live(){return this.liveInternal}}class I extends i.Widget.VBox{intervalTimer;lastTimestamp;canTickInternal;ticking;isShown;bounds;dataProvider;delegate;chartGroupExpansionSetting;chart;stoppedPermanently;constructor(){super(),this.intervalTimer=0,this.lastTimestamp=0,this.canTickInternal=!0,this.ticking=!1,this.isShown=!1,this.bounds=new T(0,1e3,3e4,1e3),this.dataProvider=new V(this.bounds,this.updateMaxTime.bind(this)),this.delegate=new L,this.chartGroupExpansionSetting=n.Settings.Settings.instance().createSetting("media-flame-chart-group-expansion",{}),this.chart=new l.FlameChart.FlameChart(this.dataProvider,this.delegate,this.chartGroupExpansionSetting),this.chart.disableRangeSelection(),this.chart.bindCanvasEvent("wheel",(e=>{this.onScroll(e)})),this.chart.show(this.contentElement)}addMarker(e){e.duration=NaN,this.startEvent(e)}startEvent(e){void 0===e.duration&&(e.duration=-1);const t=e.startTime||0,s=this.dataProvider.startEvent(e);return this.updateMaxTime(t),s}addGroup(e,t){this.dataProvider.addGroup(e,t)}updateMaxTime(e){this.bounds.pushMaxAtLeastTo(e)&&this.updateRender()}onScroll(e){const t=Math.round(e.deltaY/50),s=e.offsetX/e.srcElement.clientWidth;t>0?this.bounds.zoomOut(t,s):this.bounds.zoomIn(-t,s),this.updateRender()}willHide(){this.isShown=!1,this.ticking&&this.stop()}wasShown(){this.isShown=!0,this.canTickInternal&&!this.ticking&&this.start()}set canTick(e){this.canTickInternal=e,this.ticking&&!e&&this.stop(),!this.ticking&&this.isShown&&e&&this.start()}start(){0===this.lastTimestamp&&(this.lastTimestamp=Date.now()),0!==this.intervalTimer||this.stoppedPermanently||(this.intervalTimer=window.setInterval(this.updateRender.bind(this),16),this.ticking=!0)}stop(e=!1){window.clearInterval(this.intervalTimer),this.intervalTimer=0,e&&(this.stoppedPermanently=!0),this.ticking=!1}updateRender(){if(this.ticking){const e=Date.now(),t=e-this.lastTimestamp;this.lastTimestamp=e,this.bounds.addMax(t)}this.dataProvider.updateMaxTime(this.bounds),this.chart.setWindowTimes(this.bounds.low,this.bounds.high,!0),this.chart.scheduleUpdate()}}class L{constructor(){}windowChanged(e,t,s){}updateRangeSelection(e,t){}updateSelectedGroup(e,t){}}class V{updateMaxTimeHandle;bounds;liveEvents;eventMap;timelineDataInternal;maxLevel;constructor(e,t){this.updateMaxTimeHandle=t,this.bounds=e,this.liveEvents=new Set,this.eventMap=new Map,this.timelineDataInternal=l.FlameChart.FlameChartTimelineData.createEmpty(),this.maxLevel=0}hasTrackConfigurationMode(){return!1}addGroup(e,t){if(this.timelineDataInternal.groups){const t={name:e,startLevel:this.maxLevel,expanded:!0,selectable:!1,style:{height:20,padding:2,collapsible:!1,font:P,color:k(),backgroundColor:"rgba(100 0 0 / 10%)",nestingLevel:0,itemsHeight:20,shareHeaderLine:!1,useFirstLineForOverview:!1,useDecoratorsForOverview:!1},track:null};this.timelineDataInternal.groups.push(t),d.ThemeSupport.instance().addEventListener(d.ThemeChangeEvent.eventName,(()=>{t.style.color=k()}))}this.maxLevel+=t}startEvent(e){if(e.level=e.level||0,e.level>this.maxLevel)throw new Error(`level ${e.level} is above the maximum allowed of ${this.maxLevel}`);const t=new D(this.timelineDataInternal,{setLive:this.setLive.bind(this),setComplete:this.setComplete.bind(this),updateMaxTime:this.updateMaxTimeHandle},e);return this.eventMap.set(t.id,t),t}setLive(e){return this.liveEvents.add(e),this.bounds.max}setComplete(e){this.liveEvents.delete(e)}updateMaxTime(e){this.bounds=e;for(const e of this.liveEvents.entries())this.eventMap.get(e[0]).endTime=-1}maxStackDepth(){return this.maxLevel+1}timelineData(){return this.timelineDataInternal}minimumBoundary(){return this.bounds.low}totalTime(){return this.bounds.high}entryColor(e){return this.eventMap.get(e).color}textColor(e){return this.eventMap.get(e).fontColor}entryTitle(e){return this.eventMap.get(e).title}entryFont(e){return P}decorateEntry(e,t,s,i,a,r,n,o,l){return!1}forceDecoration(e){return!1}preparePopoverElement(e){const t=document.createElement("div");return this.eventMap.get(e).decorate(t),t}formatValue(e,t){return e+=Math.round(this.bounds.low),this.bounds.range<2800?E(e,2):this.bounds.range<3e4?E(e,1):E(e,0)}canJumpToEntry(e){return!1}}var F=Object.freeze({__proto__:null,ColdColorScheme:S,Event:D,HotColorScheme:C,TickingFlameChart:I});const N={playbackStatus:"Playback Status",bufferingStatus:"Buffering Status"},$=e.i18n.registerUIStrings("panels/media/EventTimelineView.ts",N),_=e.i18n.getLocalizedString.bind(void 0,$);class B extends I{normalizedTimestamp;playbackStatusLastEvent;audioBufferingStateEvent;videoBufferingStateEvent;constructor(){super(),this.element.setAttribute("jslog",`${a.pane("timeline")}`),this.normalizedTimestamp=-1.5,this.addGroup(_(N.playbackStatus),2),this.addGroup(_(N.bufferingStatus),2),this.playbackStatusLastEvent=null,this.audioBufferingStateEvent=null,this.videoBufferingStateEvent=null}ensureNoPreviousPlaybackEvent(e){null!==this.playbackStatusLastEvent&&(this.playbackStatusLastEvent.endTime=e,this.playbackStatusLastEvent=null)}onPlaybackEvent(e,t){switch(e.event){case"kPlay":this.canTick=!0,this.ensureNoPreviousPlaybackEvent(t),this.playbackStatusLastEvent=this.startEvent({level:0,startTime:t,name:"Play"});break;case"kPause":this.ensureNoPreviousPlaybackEvent(t),this.playbackStatusLastEvent=this.startEvent({level:0,startTime:t,name:"Pause",color:C[1]});break;case"kWebMediaPlayerDestroyed":this.canTick=!1,this.ensureNoPreviousPlaybackEvent(t),this.addMarker({level:1,startTime:t,name:"Destroyed",color:C[4]});break;case"kSuspended":this.canTick=!1,this.ensureNoPreviousPlaybackEvent(t),this.playbackStatusLastEvent=this.startEvent({level:1,startTime:t,name:"Suspended",color:C[3]});break;case"kEnded":this.ensureNoPreviousPlaybackEvent(t),this.playbackStatusLastEvent=this.startEvent({level:1,startTime:t,name:"Ended",color:C[2]});break;default:throw new Error(`_onPlaybackEvent cant handle ${e.event}`)}}bufferedEnough(e){return"BUFFERING_HAVE_ENOUGH"===e.state}onBufferingStatus(e,t){let s=null,i=null;if("kBufferingStateChanged"!==e.event)throw new Error(`_onPlaybackEvent cant handle ${e.event}`);s=e.value.audio_buffering_state,i=e.value.video_buffering_state,s&&(null!==this.audioBufferingStateEvent&&(this.audioBufferingStateEvent.endTime=t,this.audioBufferingStateEvent=null),this.bufferedEnough(s)||(this.audioBufferingStateEvent=this.startEvent({level:3,startTime:t,name:"Audio Buffering",color:S[1]}))),i&&(null!==this.videoBufferingStateEvent&&(this.videoBufferingStateEvent.endTime=t,this.videoBufferingStateEvent=null),this.bufferedEnough(i)||(this.videoBufferingStateEvent=this.startEvent({level:2,startTime:t,name:"Video Buffering",color:S[0]})))}onEvent(e){-1.5===this.normalizedTimestamp&&(this.normalizedTimestamp=Number(e.timestamp));const t=1e3*(Number(e.timestamp)-this.normalizedTimestamp);switch(e.event){case"kPlay":case"kPause":case"kWebMediaPlayerDestroyed":case"kSuspended":case"kEnded":return this.onPlaybackEvent(e,t);case"kBufferingStateChanged":return this.onBufferingStatus(e,t)}}}var R={cssText:`.media-messages-header{background-color:var(--sys-color-cdt-base-container);border-bottom:1px solid var(--sys-color-divider);min-height:26px}.media-messages-body{overflow-y:scroll}.media-messages-level-dropdown-element{height:18px;line-height:18px}.media-messages-level-dropdown-text{float:left}.media-messages-level-dropdown-checkbox{float:left;width:18px;height:100%;padding-left:2px}.media-messages-message-container{margin:4px;font-size:14px;line-height:18px;padding:4px;user-select:text}.media-messages-message-container + .media-messages-message-container{border-top:1px solid var(--sys-color-divider);&.media-message-warning,\n &.media-message-error{border:none}}.media-message-warning{border-radius:5px;background-color:var(--sys-color-surface-yellow);color:var(--sys-color-on-surface-yellow)}.media-message-error{border-radius:5px;background-color:var(--sys-color-surface-error);color:var(--sys-color-on-surface-error)}.media-messages-message-filtered{display:none}.media-messages-message-unselected{display:none}.status-error-box{font-family:monospace;border:1px solid var(--sys-color-error-outline);border-radius:5px;padding:4px}.status-error-field-label{padding-right:10px;color:var(--sys-color-token-subtle)}.status-error-field-labeled{display:flex}\n/*# sourceURL=${import.meta.resolve("./playerMessagesView.css")} */\n`};const U={default:"Default",custom:"Custom",all:"All",error:"Error",warning:"Warning",info:"Info",debug:"Debug",logLevel:"Log level:",filterByLogMessages:"Filter by log messages",errorGroupLabel:"Error Group:",errorCodeLabel:"Error Code:",errorDataLabel:"Data:",errorStackLabel:"Stacktrace:",errorCauseLabel:"Caused by:"},A=e.i18n.registerUIStrings("panels/media/PlayerMessagesView.ts",U),z=e.i18n.getLocalizedString.bind(void 0,A);class j{items;view;itemMap;hiddenLevels;bitFieldValue;savedBitFieldValue;defaultTitleInternal;customTitle;allTitle;elementsForItems;constructor(e,t){this.items=e,this.view=t,this.itemMap=new Map,this.hiddenLevels=[],this.bitFieldValue=7,this.savedBitFieldValue=7,this.defaultTitleInternal=z(U.default),this.customTitle=z(U.custom),this.allTitle=z(U.all),this.elementsForItems=new WeakMap}defaultTitle(){return this.defaultTitleInternal}setDefault(e){e.selectItem(this.items.at(0))}populate(){this.items.insert(this.items.length,{title:this.defaultTitleInternal,overwrite:!0,stringValue:"",value:7,selectable:void 0}),this.items.insert(this.items.length,{title:this.allTitle,overwrite:!0,stringValue:"",value:15,selectable:void 0}),this.items.insert(this.items.length,{title:z(U.error),overwrite:!1,stringValue:"error",value:1,selectable:void 0}),this.items.insert(this.items.length,{title:z(U.warning),overwrite:!1,stringValue:"warning",value:2,selectable:void 0}),this.items.insert(this.items.length,{title:z(U.info),overwrite:!1,stringValue:"info",value:4,selectable:void 0}),this.items.insert(this.items.length,{title:z(U.debug),overwrite:!1,stringValue:"debug",value:8,selectable:void 0})}updateCheckMarks(){this.hiddenLevels=[];for(const[e,t]of this.itemMap)if(!t.overwrite){const s=this.elementsForItems.get(t);s?.firstChild&&s.firstChild.remove(),s&&e&this.bitFieldValue?i.UIUtils.createTextChild(s.createChild("div"),"✓"):this.hiddenLevels.push(t.stringValue)}}titleFor(e){if(e.overwrite?this.bitFieldValue=e.value:this.bitFieldValue^=e.value,7===this.bitFieldValue)return this.defaultTitleInternal;if(15===this.bitFieldValue)return this.allTitle;const t=this.itemMap.get(this.bitFieldValue);return t?t.title:this.customTitle}createElementForItem(e){const t=document.createElement("div"),s=i.UIUtils.createShadowRootWithCoreStyles(t,{cssFile:R}).createChild("div","media-messages-level-dropdown-element"),a=s.createChild("div","media-messages-level-dropdown-checkbox"),r=s.createChild("span","media-messages-level-dropdown-text");return i.UIUtils.createTextChild(r,e.title),this.elementsForItems.set(e,a),this.itemMap.set(e.value,e),this.updateCheckMarks(),this.view.regenerateMessageDisplayCss(this.hiddenLevels),t}isItemSelectable(e){return!0}itemSelected(e){this.updateCheckMarks(),this.view.regenerateMessageDisplayCss(this.hiddenLevels)}highlightedItemChanged(e,t,s,i){}}class O extends i.Widget.VBox{headerPanel;bodyPanel;messageLevelSelector;constructor(){super(),this.registerRequiredCSS(R),this.element.setAttribute("jslog",`${a.pane("messages")}`),this.headerPanel=this.contentElement.createChild("div","media-messages-header"),this.bodyPanel=this.contentElement.createChild("div","media-messages-body"),this.buildToolbar()}buildToolbar(){const e=this.headerPanel.createChild("devtools-toolbar","media-messages-toolbar");e.appendText(z(U.logLevel)),e.appendToolbarItem(this.createDropdown()),e.appendSeparator(),e.appendToolbarItem(this.createFilterInput())}createDropdown(){const e=new i.ListModel.ListModel;this.messageLevelSelector=new j(e,this);const t=new i.SoftDropDown.SoftDropDown(e,this.messageLevelSelector,"log-level");t.setRowHeight(18),this.messageLevelSelector.populate(),this.messageLevelSelector.setDefault(t);const s=new i.Toolbar.ToolbarItem(t.element);return s.element.classList.add("toolbar-has-dropdown"),s.setEnabled(!0),s.setTitle(this.messageLevelSelector.defaultTitle()),i.ARIAUtils.setLabel(s.element,`${z(U.logLevel)} ${this.messageLevelSelector.defaultTitle()}`),s}createFilterInput(){const e=new i.Toolbar.ToolbarFilter(z(U.filterByLogMessages),1,1);return e.addEventListener("TextChanged",(e=>{this.filterByString(e)}),this),e}regenerateMessageDisplayCss(e){const t=this.bodyPanel.getElementsByClassName("media-messages-message-container");for(const s of t)this.matchesHiddenLevels(s,e)?s.classList.add("media-messages-message-unselected"):s.classList.remove("media-messages-message-unselected")}matchesHiddenLevels(e,t){for(const s of t)if(e.classList.contains("media-message-"+s))return!0;return!1}filterByString(e){const t=e.data,s=this.bodyPanel.getElementsByClassName("media-messages-message-container");for(const e of s)""===t||e.textContent?.includes(t)?e.classList.remove("media-messages-message-filtered"):e.classList.add("media-messages-message-filtered")}addMessage(e){const t=this.bodyPanel.createChild("div","media-messages-message-container media-message-"+e.level);i.UIUtils.createTextChild(t,e.message)}errorToDiv(e){const t=i.Fragment.Fragment.build`
|
|
2
|
+
<div class="status-error-box">
|
|
3
|
+
<div class="status-error-field-labeled">
|
|
4
|
+
<span class="status-error-field-label" $="status-error-group"></span>
|
|
5
|
+
<span>${e.errorType}</span>
|
|
6
|
+
</div>
|
|
7
|
+
<div class="status-error-field-labeled">
|
|
8
|
+
<span class="status-error-field-label" $="status-error-code"></span>
|
|
9
|
+
<span>${e.code}</span>
|
|
10
|
+
</div>
|
|
11
|
+
<div class="status-error-field-labeled" $="status-error-data">
|
|
12
|
+
</div>
|
|
13
|
+
<div class="status-error-field-labeled" $="status-error-stack">
|
|
14
|
+
</div>
|
|
15
|
+
<div class="status-error-field-labeled" $="status-error-cause">
|
|
16
|
+
</div>
|
|
17
|
+
`;if(t.$("status-error-group").textContent=z(U.errorGroupLabel),t.$("status-error-code").textContent=z(U.errorCodeLabel),0!==Object.keys(e.data).length){const s=t.$("status-error-data").createChild("span","status-error-field-label");i.UIUtils.createTextChild(s,z(U.errorDataLabel));const a=t.$("status-error-data").createChild("div");for(const[t,s]of Object.entries(e.data)){const e=a.createChild("div");i.UIUtils.createTextChild(e,`${t}: ${s}`)}}if(0!==e.stack.length){const s=t.$("status-error-stack").createChild("span","status-error-field-label");i.UIUtils.createTextChild(s,z(U.errorStackLabel));const a=t.$("status-error-stack").createChild("div");for(const t of e.stack){const e=a.createChild("div");i.UIUtils.createTextChild(e,`${t.file}:${t.line}`)}}if(0!==e.cause.length){const s=t.$("status-error-cause").createChild("span","status-error-field-label");i.UIUtils.createTextChild(s,z(U.errorCauseLabel)),t.$("status-error-cause").appendChild(this.errorToDiv(e.cause[0]))}return t.element()}addError(e){this.bodyPanel.createChild("div","media-messages-message-container media-message-error").appendChild(this.errorToDiv(e))}}var W={cssText:`.media-attributes-view{border-bottom:1px solid var(--sys-color-divider)}.media-property-renderer{line-height:20px;min-height:28px;padding:4px 10px;display:block;overflow:hidden;&:hover{background:var(--sys-color-state-hover-on-subtle)}}.media-property-renderer:nth-child(even):not(:hover){background:var(--sys-color-surface1)}.media-property-renderer:has(.json-view){padding-bottom:0}.media-property-renderer:has(.json-view > .expanded){padding-bottom:4px}.media-property-renderer-hidden{display:none}.media-property-renderer-title{font-size:12px;float:left;width:150px}.media-property-renderer-title::first-letter{text-transform:uppercase}.media-property-renderer-contents{position:relative;& > .json-view{overflow:hidden;padding:0}}.media-properties-frame{display:block;overflow-x:hidden}\n/*# sourceURL=${import.meta.resolve("./playerPropertiesView.css")} */\n`};const H={video:"Video",audio:"Audio",track:"Track",decoder:"Decoder",properties:"Properties",textTrack:"Text track",noTextTracks:"No text tracks",resolution:"Resolution",fileSize:"File size",bitrate:"Bitrate",duration:"Duration",startTime:"Start time",streaming:"Streaming",playbackFrameUrl:"Playback frame URL",playbackFrameTitle:"Playback frame title",singleoriginPlayback:"Single-origin playback",rangeHeaderSupport:"`Range` header support",frameRate:"Frame rate",videoPlaybackRoughness:"Video playback roughness",videoFreezingScore:"Video freezing score",rendererName:"Renderer name",decoderName:"Decoder name",noDecoder:"No decoder",hardwareDecoder:"Hardware decoder",decryptingDemuxer:"Decrypting demuxer",encoderName:"Encoder name",noEncoder:"No encoder",hardwareEncoder:"Hardware encoder"},G=e.i18n.registerUIStrings("panels/media/PlayerPropertiesView.ts",H),J=e.i18n.getLocalizedString.bind(void 0,G),K=e.i18n.getLazilyComputedLocalizedString.bind(void 0,G);class q extends i.Widget.VBox{title;contents;value;pseudoColorProtectionElement;constructor(e){super(),this.contentElement.classList.add("media-property-renderer");const t=this.contentElement.createChild("span","media-property-renderer-title");this.contents=this.contentElement.createChild("div","media-property-renderer-contents"),i.UIUtils.createTextChild(t,e),this.title=e,this.value=null,this.pseudoColorProtectionElement=null,this.contentElement.classList.add("media-property-renderer-hidden")}updateData(e,t){if(""===t||null===t)return this.updateDataInternal(e,null);try{t=JSON.parse(t)}catch{}return this.updateDataInternal(e,t)}updateDataInternal(e,t){if(null===t)this.changeContents(null);else{if(this.value===t)return;this.value=t,this.changeContents(t)}}unsetNestedContents(){this.contentElement.classList.add("media-property-renderer-hidden"),null===this.pseudoColorProtectionElement&&(this.pseudoColorProtectionElement=document.createElement("div"),this.pseudoColorProtectionElement.classList.add("media-property-renderer"),this.pseudoColorProtectionElement.classList.add("media-property-renderer-hidden"),this.contentElement.parentNode.insertBefore(this.pseudoColorProtectionElement,this.contentElement))}changeNestedContents(e){if(null===e||0===Object.keys(e).length)this.unsetNestedContents();else{null!==this.pseudoColorProtectionElement&&(this.pseudoColorProtectionElement.remove(),this.pseudoColorProtectionElement=null),this.contentElement.classList.remove("media-property-renderer-hidden"),this.contents.removeChildren();new s.JSONView.JSONView(new s.JSONView.ParsedJSON(e,"",""),!0).show(this.contents)}}changeContents(e){if(null===e)this.unsetNestedContents();else{null!==this.pseudoColorProtectionElement&&(this.pseudoColorProtectionElement.remove(),this.pseudoColorProtectionElement=null),this.contentElement.classList.remove("media-property-renderer-hidden"),this.contents.removeChildren();const t=document.createElement("span");t.textContent=e,this.contents.appendChild(t)}}}class X extends q{formatfunction;constructor(e,t){super(e),this.formatfunction=t}updateDataInternal(e,t){null===t?this.changeContents(null):this.changeContents(this.formatfunction(t))}}class Y extends q{constructor(e,t){super(e),this.changeContents(t)}}class Q extends q{constructor(e,t){super(e),this.changeNestedContents(t)}}class Z extends i.Widget.VBox{contentHash;constructor(e){super(),this.contentHash=0,this.contentElement.classList.add("media-attributes-view");for(const t of e){t.show(this.contentElement);const e=this.contentElement.textContent;null!==e&&(this.contentHash+=h.StringUtilities.hashCode(e))}}getContentHash(){return this.contentHash}}class ee{type;view;constructor(e,t){this.type=t,this.view=e}updateData(e,t){const s=this.view.getTabs(this.type),i=JSON.parse(t);let a=1;for(const e of i)this.addNewTab(s,e,a),a++}addNewTab(t,s,i){const a=[];for(const[t,i]of Object.entries(s))"object"==typeof i?a.push(new Q(e.i18n.lockedString(t),i)):a.push(new Y(e.i18n.lockedString(t),i));const r=new Z(a);t.addNewTab(i,r)}}class te extends ee{constructor(e){super(e,"video")}}class se extends ee{constructor(e){super(e,"text")}}class ie extends ee{constructor(e){super(e,"audio")}}const ae={Video:K(H.video),Audio:K(H.audio)};class re extends i.TabbedPane.TabbedPane{decoderName;trackName;constructor(e,t=J(H.track)){super(),this.decoderName=e,this.trackName=t}addNewTab(e,t){const s=J(H.track),i=`track-${e}`;if(this.hasTab(i)){const e=this.tabView(i);if(null===e)return;if(e.getContentHash()===t.getContentHash())return;this.closeTab(i,!1)}this.appendTab(i,`${this.trackName} #${e}`,t,`${this.decoderName} ${s} #${e}`)}}class ne extends re{constructor(e,t){super(e);const s=`${e} ${J(H.decoder)}`,i=`${s} ${J(H.properties)}`;this.appendTab("decoder-properties",s,t,i)}}class oe extends i.Widget.VBox{isPlaceholder;wrapping;constructor(e,t){super(),this.isPlaceholder=!0,this.wrapping=e,this.wrapping.appendTab("_placeholder",t,new i.Widget.VBox,t),this.wrapping.show(this.contentElement)}addNewTab(e,t){this.isPlaceholder&&(this.wrapping.closeTab("_placeholder"),this.isPlaceholder=!1),this.wrapping.addNewTab(e,t)}}class le extends i.Widget.VBox{mediaElements;videoDecoderElements;audioDecoderElements;textTrackElements;attributeMap;videoProperties;videoDecoderProperties;audioDecoderProperties;videoDecoderTabs;audioDecoderTabs;textTracksTabs;constructor(){super(),this.registerRequiredCSS(W),this.element.setAttribute("jslog",`${a.pane("properties")}`),this.contentElement.classList.add("media-properties-frame"),this.mediaElements=[],this.videoDecoderElements=[],this.audioDecoderElements=[],this.textTrackElements=[],this.attributeMap=new Map,this.populateAttributesAndElements(),this.videoProperties=new Z(this.mediaElements),this.videoDecoderProperties=new Z(this.videoDecoderElements),this.audioDecoderProperties=new Z(this.audioDecoderElements),this.videoProperties.show(this.contentElement),this.videoDecoderTabs=new ne(ae.Video(),this.videoDecoderProperties),this.videoDecoderTabs.show(this.contentElement),this.audioDecoderTabs=new ne(ae.Audio(),this.audioDecoderProperties),this.audioDecoderTabs.show(this.contentElement),this.textTracksTabs=null}lazyCreateTrackTabs(){let e=this.textTracksTabs;if(null===e){const t=new re(J(H.textTrack));e=new oe(t,J(H.noTextTracks)),e.show(this.contentElement),this.textTracksTabs=e}return e}getTabs(e){if("audio"===e)return this.audioDecoderTabs;if("video"===e)return this.videoDecoderTabs;if("text"===e)return this.lazyCreateTrackTabs();throw new Error("Unreachable")}onProperty(e){const t=this.attributeMap.get(e.name);if(!t)throw new Error(`Player property "${e.name}" not supported.`);t.updateData(e.name,e.value)}formatKbps(e){if(""===e)return"0 kbps";return`${Math.floor(Number(e)/1e3)} kbps`}formatTime(e){if(""===e)return"0:00";const t=new Date;return t.setSeconds(Number(e)),t.toISOString().substr(11,8)}formatFileSize(e){if(""===e)return"0 bytes";const t=Number(e);if(t<1e3)return`${e} bytes`;const s=Math.floor(Math.log10(t)/3),i=["bytes","kB","MB","GB","TB"][s];return`${(t/Math.pow(1e3,s)).toFixed(2)} ${i}`}populateAttributesAndElements(){const e=new q(J(H.resolution));this.mediaElements.push(e),this.attributeMap.set("kResolution",e);const t=new X(J(H.fileSize),this.formatFileSize);this.mediaElements.push(t),this.attributeMap.set("kTotalBytes",t);const s=new X(J(H.bitrate),this.formatKbps);this.mediaElements.push(s),this.attributeMap.set("kBitrate",s);const i=new X(J(H.duration),this.formatTime);this.mediaElements.push(i),this.attributeMap.set("kMaxDuration",i);const a=new q(J(H.startTime));this.mediaElements.push(a),this.attributeMap.set("kStartTime",a);const r=new q(J(H.streaming));this.mediaElements.push(r),this.attributeMap.set("kIsStreaming",r);const n=new q(J(H.playbackFrameUrl));this.mediaElements.push(n),this.attributeMap.set("kFrameUrl",n);const o=new q(J(H.playbackFrameTitle));this.mediaElements.push(o),this.attributeMap.set("kFrameTitle",o);const l=new q(J(H.singleoriginPlayback));this.mediaElements.push(l),this.attributeMap.set("kIsSingleOrigin",l);const d=new q(J(H.rangeHeaderSupport));this.mediaElements.push(d),this.attributeMap.set("kIsRangeHeaderSupported",d);const h=new q(J(H.frameRate));this.mediaElements.push(h),this.attributeMap.set("kFramerate",h);const c=new q(J(H.videoPlaybackRoughness));this.mediaElements.push(c),this.attributeMap.set("kVideoPlaybackRoughness",c);const m=new q(J(H.videoFreezingScore));this.mediaElements.push(m),this.attributeMap.set("kVideoPlaybackFreezing",m);const p=new q(J(H.rendererName));this.mediaElements.push(p),this.attributeMap.set("kRendererName",p);const u=new Y(J(H.decoderName),J(H.noDecoder));this.videoDecoderElements.push(u),this.attributeMap.set("kVideoDecoderName",u);const g=new q(J(H.hardwareDecoder));this.videoDecoderElements.push(g),this.attributeMap.set("kIsPlatformVideoDecoder",g);const v=new Y(J(H.encoderName),J(H.noEncoder));this.videoDecoderElements.push(v),this.attributeMap.set("kVideoEncoderName",v);const y=new q(J(H.hardwareEncoder));this.videoDecoderElements.push(y),this.attributeMap.set("kIsPlatformVideoEncoder",y);const b=new q(J(H.decryptingDemuxer));this.videoDecoderElements.push(b),this.attributeMap.set("kIsVideoDecryptingDemuxerStream",b);const f=new te(this);this.attributeMap.set("kVideoTracks",f);const w=new Y(J(H.decoderName),J(H.noDecoder));this.audioDecoderElements.push(w),this.attributeMap.set("kAudioDecoderName",w);const E=new q(J(H.hardwareDecoder));this.audioDecoderElements.push(E),this.attributeMap.set("kIsPlatformAudioDecoder",E);const T=new q(J(H.decryptingDemuxer));this.audioDecoderElements.push(T),this.attributeMap.set("kIsAudioDecryptingDemuxerStream",T);const x=new ie(this);this.attributeMap.set("kAudioTracks",x);const P=new se(this);this.attributeMap.set("kTextTracks",P)}}var de=Object.freeze({__proto__:null,AttributesView:Z,AudioTrackManager:ie,DefaultPropertyRenderer:Y,FormattedPropertyRenderer:X,NestedPropertyRenderer:Q,PlayerPropertiesView:le,PropertyRenderer:q,TextTrackManager:se,TrackManager:ee,VideoTrackManager:te});const he={properties:"Properties",playerProperties:"Player properties",events:"Events",playerEvents:"Player events",messages:"Messages",playerMessages:"Player messages",timeline:"Timeline",playerTimeline:"Player timeline"},ce=e.i18n.registerUIStrings("panels/media/PlayerDetailView.ts",he),me=e.i18n.getLocalizedString.bind(void 0,ce);class pe extends i.TabbedPane.TabbedPane{eventView;propertyView;messageView;timelineView;constructor(){super(),this.eventView=new y,this.propertyView=new le,this.messageView=new O,this.timelineView=new B,this.appendTab("properties",me(he.properties),this.propertyView,me(he.playerProperties)),this.appendTab("events",me(he.events),this.eventView,me(he.playerEvents)),this.appendTab("messages",me(he.messages),this.messageView,me(he.playerMessages)),this.appendTab("timeline",me(he.timeline),this.timelineView,me(he.playerTimeline))}onProperty(e){this.propertyView.onProperty(e)}onError(e){this.messageView.addError(e)}onMessage(e){this.messageView.addMessage(e)}onEvent(e){this.eventView.onEvent(e),this.timelineView.onEvent(e)}}var ue=Object.freeze({__proto__:null,PlayerDetailView:pe}),ge={cssText:`.tree-outline{padding-left:0;color:var(--sys-color-token-subtle)}li.storage-group-list-item{padding:10px 8px 6px}li.storage-group-list-item:not(:first-child){border-top:1px solid var(--sys-color-divider)}li.storage-group-list-item::before{display:none}.player-entry-row{height:26px;min-height:26px;line-height:26px;&:nth-child(odd){background:var(--sys-color-surface1)}&:hover{background:var(--sys-color-state-hover-on-subtle)}&.selected{background:var(--sys-color-tonal-container);color:var(--sys-color-on-tonal-container)}}.player-entry-status-icon-centering{margin:auto;display:inherit}.player-entry-status-icon{width:28px;min-width:28px;height:26px;border-right:1px solid var(--sys-color-divider);overflow:hidden}.player-entry-frame-title{height:26px;width:125px;min-width:125px;text-overflow:ellipsis;padding:0 10px;border-right:1px solid var(--sys-color-divider);overflow:hidden}.player-entry-player-title{height:26px;padding-left:10px;overflow:hidden}.player-entry-header{height:27px;line-height:27px;min-height:27px;padding-left:10px;border-bottom:1px solid var(--sys-color-divider)}\n/*# sourceURL=${import.meta.resolve("./playerListView.css")} */\n`};const ve={hidePlayer:"Hide player",hideAllOthers:"Hide all others",savePlayerInfo:"Save player info",players:"Players"},ye=e.i18n.registerUIStrings("panels/media/PlayerListView.ts",ve),be=e.i18n.getLocalizedString.bind(void 0,ye);class fe extends i.Widget.VBox{playerEntryFragments;playerEntriesWithHostnameFrameTitle;mainContainer;currentlySelectedEntry;constructor(e){super(!0),this.registerRequiredCSS(ge),this.playerEntryFragments=new Map,this.playerEntriesWithHostnameFrameTitle=new Set,this.mainContainer=e,this.currentlySelectedEntry=null,this.contentElement.createChild("div","player-entry-header").textContent=be(ve.players)}createPlayerListEntry(e){const t=i.Fragment.Fragment.build`
|
|
18
|
+
<div class="player-entry-row hbox">
|
|
19
|
+
<div class="player-entry-status-icon vbox">
|
|
20
|
+
<div $="icon" class="player-entry-status-icon-centering"></div>
|
|
21
|
+
</div>
|
|
22
|
+
<div $="frame-title" class="player-entry-frame-title">FrameTitle</div>
|
|
23
|
+
<div $="player-title" class="player-entry-player-title">PlayerTitle</div>
|
|
24
|
+
</div>
|
|
25
|
+
`,s=t.element();return s.setAttribute("jslog",`${a.item("player").track({click:!0})}`),s.addEventListener("click",this.selectPlayer.bind(this,e,s)),s.addEventListener("contextmenu",this.rightClickPlayer.bind(this,e)),t.$("icon").appendChild(c.Icon.create("pause","media-player")),t}selectPlayer(e,t){this.mainContainer.renderMainPanel(e),null!==this.currentlySelectedEntry&&(this.currentlySelectedEntry.classList.remove("selected"),this.currentlySelectedEntry.classList.remove("force-white-icons")),t.classList.add("selected"),t.classList.add("force-white-icons"),this.currentlySelectedEntry=t}rightClickPlayer(e,t){const s=new i.ContextMenu.ContextMenu(t);return s.headerSection().appendItem(be(ve.hidePlayer),this.mainContainer.markPlayerForDeletion.bind(this.mainContainer,e),{jslogContext:"hide-player"}),s.headerSection().appendItem(be(ve.hideAllOthers),this.mainContainer.markOtherPlayersForDeletion.bind(this.mainContainer,e),{jslogContext:"hide-all-others"}),s.headerSection().appendItem(be(ve.savePlayerInfo),this.mainContainer.exportPlayerData.bind(this.mainContainer,e),{jslogContext:"save-player-info"}),s.show(),!0}setMediaElementFrameTitle(e,t,s){if(this.playerEntriesWithHostnameFrameTitle.has(e))s||this.playerEntriesWithHostnameFrameTitle.delete(e);else if(s)return;if(!this.playerEntryFragments.has(e))return;const i=this.playerEntryFragments.get(e);void 0!==i?.element()&&(i.$("frame-title").textContent=t)}setMediaElementPlayerTitle(e,t){if(!this.playerEntryFragments.has(e))return;const s=this.playerEntryFragments.get(e);void 0!==s&&(s.$("player-title").textContent=t)}setMediaElementPlayerIcon(e,t){if(!this.playerEntryFragments.has(e))return;const s=this.playerEntryFragments.get(e);if(void 0===s)return;const i=s.$("icon");void 0!==i&&(i.textContent="",i.appendChild(c.Icon.create(t,"media-player")))}formatAndEvaluate(e,t,s,i,a){s.length<=i||(s.length>=a&&(s=s.substring(0,a-3)+"..."),t.bind(this)(e,s))}addMediaElementItem(e){const t=this.createPlayerListEntry(e);this.contentElement.appendChild(t.element()),this.playerEntryFragments.set(e,t),this.playerEntriesWithHostnameFrameTitle.add(e)}deletePlayer(e){if(!this.playerEntryFragments.has(e))return;const t=this.playerEntryFragments.get(e);void 0!==t?.element()&&(this.contentElement.removeChild(t.element()),this.playerEntryFragments.delete(e))}onEvent(e,t){const s=JSON.parse(t.value),i=s.event;if("kLoad"!==i)"kPlay"!==i?"kPause"!==i&&"kEnded"!==i?"kWebMediaPlayerDestroyed"!==i||this.setMediaElementPlayerIcon(e,"cross"):this.setMediaElementPlayerIcon(e,"pause"):this.setMediaElementPlayerIcon(e,"play");else{const t=s.url,i=t.substring(t.lastIndexOf("/")+1);this.formatAndEvaluate(e,this.setMediaElementPlayerTitle,i,1,20)}}onProperty(e,t){if("kFrameUrl"!==t.name)"kFrameTitle"===t.name&&t.value&&this.formatAndEvaluate(e,this.setMediaElementFrameTitle,t.value,1,20);else{const s=new URL(t.value).hostname;this.formatAndEvaluate(e,this.setMediaElementFrameTitle,s,1,20)}}onError(e,t){}onMessage(e,t){}}var we=Object.freeze({__proto__:null,PlayerListView:fe});const Ee={noPlayerDetailsSelected:"No media player selected",selectToViewDetails:"Select a media player to inspect its details.",noMediaPlayer:"No media player",mediaPlayerDescription:"On this page you can view and export media player details."},Te=e.i18n.registerUIStrings("panels/media/MainView.ts",Ee),xe=e.i18n.getLocalizedString.bind(void 0,Te);class Pe{properties;messages;events;errors;constructor(){this.properties=new Map,this.messages=[],this.events=[],this.errors=[]}onProperty(e){this.properties.set(e.name,e.value)}onError(e){this.errors.push(e)}onMessage(e){this.messages.push(e)}onEvent(e){this.events.push(e)}export(){return{properties:this.properties,messages:this.messages,events:this.events,errors:this.errors}}}class ke{playerDataCollection;constructor(){this.playerDataCollection=new Map}addPlayer(e){this.playerDataCollection.set(e,new Pe)}onProperty(e,t){const s=this.playerDataCollection.get(e);s&&s.onProperty(t)}onError(e,t){const s=this.playerDataCollection.get(e);s&&s.onError(t)}onMessage(e,t){const s=this.playerDataCollection.get(e);s&&s.onMessage(t)}onEvent(e,t){const s=this.playerDataCollection.get(e);s&&s.onEvent(t)}exportPlayerData(e){const t=this.playerDataCollection.get(e);if(!t)throw new Error("Unable to find player");return t.export()}deletePlayer(e){this.playerDataCollection.delete(e)}}class Ce extends i.Panel.PanelWithSidebar{detailPanels;deletedPlayers;downloadStore;sidebar;#e;constructor(e=new ke){super("media"),this.detailPanels=new Map,this.deletedPlayers=new Set,this.downloadStore=e,this.sidebar=new fe(this),this.sidebar.show(this.panelSidebarElement()),this.splitWidget().hideSidebar(),this.#e=new i.EmptyWidget.EmptyWidget(xe(Ee.noMediaPlayer),Ee.mediaPlayerDescription),this.#e.show(this.mainElement()),this.#e.appendLink("https://developer.chrome.com/docs/devtools/media-panel#hide-show"),r.TargetManager.TargetManager.instance().observeModels(f,this,{scoped:!0})}renderMainPanel(e){if(!this.detailPanels.has(e))return;const t=this.splitWidget().mainWidget();t&&t.detachChildWidgets(),this.detailPanels.get(e)?.show(this.mainElement())}wasShown(){super.wasShown();for(const e of r.TargetManager.TargetManager.instance().models(f,{scoped:!0}))this.addEventListeners(e)}willHide(){for(const e of r.TargetManager.TargetManager.instance().models(f,{scoped:!0}))this.removeEventListeners(e)}modelAdded(e){this.isShowing()&&this.addEventListeners(e)}modelRemoved(e){this.removeEventListeners(e)}addEventListeners(e){e.ensureEnabled(),e.addEventListener("PlayerPropertiesChanged",this.propertiesChanged,this),e.addEventListener("PlayerEventsAdded",this.eventsAdded,this),e.addEventListener("PlayerMessagesLogged",this.messagesLogged,this),e.addEventListener("PlayerErrorsRaised",this.errorsRaised,this),e.addEventListener("PlayersCreated",this.playersCreated,this)}removeEventListeners(e){e.removeEventListener("PlayerPropertiesChanged",this.propertiesChanged,this),e.removeEventListener("PlayerEventsAdded",this.eventsAdded,this),e.removeEventListener("PlayerMessagesLogged",this.messagesLogged,this),e.removeEventListener("PlayerErrorsRaised",this.errorsRaised,this),e.removeEventListener("PlayersCreated",this.playersCreated,this)}onPlayerCreated(e){this.sidebar.addMediaElementItem(e),this.detailPanels.set(e,new pe),this.downloadStore.addPlayer(e),1===this.detailPanels.size&&(this.#e.header=xe(Ee.noPlayerDetailsSelected),this.#e.text=xe(Ee.selectToViewDetails))}propertiesChanged(e){for(const t of e.data.properties)this.onProperty(e.data.playerId,t)}eventsAdded(e){for(const t of e.data.events)this.onEvent(e.data.playerId,t)}messagesLogged(e){for(const t of e.data.messages)this.onMessage(e.data.playerId,t)}errorsRaised(e){for(const t of e.data.errors)this.onError(e.data.playerId,t)}shouldPropagate(e){return!this.deletedPlayers.has(e)&&this.detailPanels.has(e)}onProperty(e,t){this.shouldPropagate(e)&&(this.sidebar.onProperty(e,t),this.downloadStore.onProperty(e,t),this.detailPanels.get(e)?.onProperty(t))}onError(e,t){this.shouldPropagate(e)&&(this.sidebar.onError(e,t),this.downloadStore.onError(e,t),this.detailPanels.get(e)?.onError(t))}onMessage(e,t){this.shouldPropagate(e)&&(this.sidebar.onMessage(e,t),this.downloadStore.onMessage(e,t),this.detailPanels.get(e)?.onMessage(t))}onEvent(e,t){this.shouldPropagate(e)&&(this.sidebar.onEvent(e,t),this.downloadStore.onEvent(e,t),this.detailPanels.get(e)?.onEvent(t))}playersCreated(e){e.data.length>0&&"Both"!==this.splitWidget().showMode()&&this.splitWidget().showBoth();for(const t of e.data)this.onPlayerCreated(t)}markPlayerForDeletion(e){if(this.deletedPlayers.add(e),this.detailPanels.delete(e),this.sidebar.deletePlayer(e),this.downloadStore.deletePlayer(e),0===this.detailPanels.size){this.#e.header=xe(Ee.noMediaPlayer),this.#e.text=xe(Ee.mediaPlayerDescription),this.splitWidget().hideSidebar();const e=this.splitWidget().mainWidget();e&&e.detachChildWidgets(),this.#e.show(this.mainElement())}}markOtherPlayersForDeletion(e){for(const t of this.detailPanels.keys())t!==e&&this.markPlayerForDeletion(t)}exportPlayerData(e){const t=this.downloadStore.exportPlayerData(e),s="data:application/octet-stream,"+encodeURIComponent(JSON.stringify(t,null,2)),i=document.createElement("a");i.href=s,i.download=e+".json",i.click()}}var Se=Object.freeze({__proto__:null,MainView:Ce,PlayerDataDownloadManager:ke});export{Se as MainView,w as MediaModel,ue as PlayerDetailView,b as PlayerEventsView,we as PlayerListView,de as PlayerPropertiesView,F as TickingFlameChart,x as TickingFlameChartHelpers};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as t from"../../core/common/common.js";import*as n from"../../core/i18n/i18n.js";import*as e from"../../ui/legacy/legacy.js";const i={throttling:"Throttling",showThrottling:"Show Throttling",goOffline:"Go offline",device:"device",throttlingTag:"throttling",enableSlowGThrottling:"Enable slow `3G` throttling",enableFastGThrottling:"Enable fast `3G` throttling",goOnline:"Go online"},o=n.i18n.registerUIStrings("panels/mobile_throttling/mobile_throttling-meta.ts",i),a=n.i18n.getLazilyComputedLocalizedString.bind(void 0,o);let r;async function g(){return r||(r=await import("./mobile_throttling.js")),r}e.ViewManager.registerViewExtension({location:"settings-view",id:"throttling-conditions",title:a(i.throttling),commandPrompt:a(i.showThrottling),order:35,loadView:async()=>new((await g()).ThrottlingSettingsTab.ThrottlingSettingsTab),settings:["custom-network-conditions","calibrated-cpu-throttling"],iconName:"performance"}),e.ActionRegistration.registerActionExtension({actionId:"network-conditions.network-offline",category:"NETWORK",title:a(i.goOffline),loadActionDelegate:async()=>new((await g()).ThrottlingManager.ActionDelegate),tags:[a(i.device),a(i.throttlingTag)]}),e.ActionRegistration.registerActionExtension({actionId:"network-conditions.network-low-end-mobile",category:"NETWORK",title:a(i.enableSlowGThrottling),loadActionDelegate:async()=>new((await g()).ThrottlingManager.ActionDelegate),tags:[a(i.device),a(i.throttlingTag)]}),e.ActionRegistration.registerActionExtension({actionId:"network-conditions.network-mid-tier-mobile",category:"NETWORK",title:a(i.enableFastGThrottling),loadActionDelegate:async()=>new((await g()).ThrottlingManager.ActionDelegate),tags:[a(i.device),a(i.throttlingTag)]}),e.ActionRegistration.registerActionExtension({actionId:"network-conditions.network-online",category:"NETWORK",title:a(i.goOnline),loadActionDelegate:async()=>new((await g()).ThrottlingManager.ActionDelegate),tags:[a(i.device),a(i.throttlingTag)]}),t.Settings.registerSettingExtension({storageType:"Synced",settingName:"custom-network-conditions",settingType:"array",defaultValue:[]});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as t from"../../core/i18n/i18n.js";import*as e from"../../core/sdk/sdk.js";import*as i from"../../core/common/common.js";import*as n from"../../core/host/host.js";import*as o from"../../core/platform/platform.js";import*as r from"../../ui/components/icon_button/icon_button.js";import*as s from"../../ui/legacy/legacy.js";import*as a from"../../ui/visual_logging/visual_logging.js";import"../../ui/components/cards/cards.js";import*as l from"../../ui/components/buttons/buttons.js";const c={noThrottling:"No CPU and no network throttling",noInternetConnectivity:"No internet connectivity",lowTierMobile:"Low-tier mobile",slowGXCpuSlowdown:"Slow 3G & 6x CPU slowdown",slowGXCpuSlowdownCalibrated:"Slow 3G & {PH1}x CPU slowdown",midtierMobile:"Mid-tier mobile",fastGXCpuSlowdown:"Fast 3G & 4x CPU slowdown",fastGXCpuSlowdownCalibrated:"Fast 3G & {PH1}x CPU slowdown",custom:"Custom",checkNetworkAndPerformancePanels:"Check Network and Performance panels"},d=t.i18n.registerUIStrings("panels/mobile_throttling/ThrottlingPresets.ts",c),h=t.i18n.getLocalizedString.bind(void 0,d);class g{static getNoThrottlingConditions(){return{title:"function"==typeof e.NetworkManager.NoThrottlingConditions.title?e.NetworkManager.NoThrottlingConditions.title():e.NetworkManager.NoThrottlingConditions.title,description:h(c.noThrottling),network:e.NetworkManager.NoThrottlingConditions,cpuThrottlingOption:e.CPUThrottlingManager.NoThrottlingOption,jslogContext:"no-throttling"}}static getOfflineConditions(){return{title:"function"==typeof e.NetworkManager.OfflineConditions.title?e.NetworkManager.OfflineConditions.title():e.NetworkManager.OfflineConditions.title,description:h(c.noInternetConnectivity),network:e.NetworkManager.OfflineConditions,cpuThrottlingOption:e.CPUThrottlingManager.NoThrottlingOption,jslogContext:"offline"}}static getLowEndMobileConditions(){const t=0!==e.CPUThrottlingManager.CalibratedLowTierMobileThrottlingOption.rate(),i=t?e.CPUThrottlingManager.CalibratedLowTierMobileThrottlingOption:e.CPUThrottlingManager.LowTierThrottlingOption,n=t?h(c.slowGXCpuSlowdownCalibrated,{PH1:i.rate()}):h(c.slowGXCpuSlowdown);return{title:h(c.lowTierMobile),description:n,network:e.NetworkManager.Slow3GConditions,cpuThrottlingOption:i,jslogContext:"low-end-mobile"}}static getMidTierMobileConditions(){const t=0!==e.CPUThrottlingManager.CalibratedMidTierMobileThrottlingOption.rate(),i=t?e.CPUThrottlingManager.CalibratedMidTierMobileThrottlingOption:e.CPUThrottlingManager.MidTierThrottlingOption,n=t?h(c.fastGXCpuSlowdownCalibrated,{PH1:i.rate()}):h(c.fastGXCpuSlowdown);return{title:h(c.midtierMobile),description:n,network:e.NetworkManager.Slow4GConditions,cpuThrottlingOption:i,jslogContext:"mid-tier-mobile"}}static getCustomConditions(){return{title:h(c.custom),description:h(c.checkNetworkAndPerformancePanels),jslogContext:"custom"}}static getMobilePresets(){return[g.getMidTierMobileConditions(),g.getLowEndMobileConditions(),g.getCustomConditions()]}static getAdvancedMobilePresets(){return[g.getOfflineConditions()]}static getRecommendedNetworkPreset(t){if(!Number.isFinite(t))return null;if(t<60)return null;let e=null,i=1/0;for(const n of g.networkPresets){const{targetLatency:o}=n;if(!o)continue;const r=Math.abs(o-t);r>200||(i<r||(e=n,i=r))}return e}static networkPresets=[e.NetworkManager.Fast4GConditions,e.NetworkManager.Slow4GConditions,e.NetworkManager.Slow3GConditions,e.NetworkManager.OfflineConditions];static cpuThrottlingPresets=[e.CPUThrottlingManager.NoThrottlingOption,e.CPUThrottlingManager.MidTierThrottlingOption,e.CPUThrottlingManager.LowTierThrottlingOption,e.CPUThrottlingManager.ExtraSlowThrottlingOption,e.CPUThrottlingManager.CalibratedLowTierMobileThrottlingOption,e.CPUThrottlingManager.CalibratedMidTierMobileThrottlingOption]}globalThis.MobileThrottling=globalThis.MobileThrottling||{},globalThis.MobileThrottling.networkPresets=g.networkPresets;var u=Object.freeze({__proto__:null,ThrottlingPresets:g});const p={disabled:"Disabled",presets:"Presets",custom:"Custom"},C=t.i18n.registerUIStrings("panels/mobile_throttling/NetworkThrottlingSelector.ts",p),w=t.i18n.getLocalizedString.bind(void 0,C);class b{populateCallback;selectCallback;customNetworkConditionsSetting;options;constructor(t,i,n){this.populateCallback=t,this.selectCallback=i,this.customNetworkConditionsSetting=n,this.customNetworkConditionsSetting.addChangeListener(this.populateOptions,this),e.NetworkManager.MultitargetNetworkManager.instance().addEventListener("ConditionsChanged",(()=>{this.networkConditionsChanged()}),this),this.populateOptions()}revealAndUpdate(){i.Revealer.reveal(this.customNetworkConditionsSetting),this.networkConditionsChanged()}optionSelected(t){e.NetworkManager.MultitargetNetworkManager.instance().setNetworkConditions(t)}populateOptions(){const t={title:w(p.disabled),items:[e.NetworkManager.NoThrottlingConditions]},i={title:w(p.presets),items:g.networkPresets},n={title:w(p.custom),items:this.customNetworkConditionsSetting.get()};if(this.options=this.populateCallback([t,i,n]),!this.networkConditionsChanged())for(let t=this.options.length-1;t>=0;t--)if(this.options[t]){this.optionSelected(this.options[t]);break}}networkConditionsChanged(){const t=e.NetworkManager.MultitargetNetworkManager.instance().networkConditions();for(let i=0;i<this.options.length;++i){const n=this.options[i];if(n&&e.NetworkManager.networkConditionsEqual(t,n))return this.selectCallback(i),!0}return!1}}var m=Object.freeze({__proto__:null,NetworkThrottlingSelector:b});const k={sS:"{PH1}: {PH2}",add:"Add…",addS:"Add {PH1}",offline:"Offline",forceDisconnectedFromNetwork:"Force disconnected from network",throttling:"Throttling",cpuThrottlingIsEnabled:"CPU throttling is enabled",cpuThrottling:"CPU throttling",excessConcurrency:"Exceeding the default value may degrade system performance.",resetConcurrency:"Reset to the default value",hardwareConcurrency:"Hardware concurrency",hardwareConcurrencySettingLabel:"Override the value reported by navigator.hardwareConcurrency",recommendedThrottling:"{PH1} – recommended",calibrate:"Calibrate…",recalibrate:"Recalibrate…"},v=t.i18n.registerUIStrings("panels/mobile_throttling/ThrottlingManager.ts",k),f=t.i18n.getLocalizedString.bind(void 0,v);let T;class M{cpuThrottlingControls;cpuThrottlingOptions;customNetworkConditionsSetting;currentNetworkThrottlingConditionsSetting;calibratedCpuThrottlingSetting;lastNetworkThrottlingConditions;cpuThrottlingManager;#t=!1;get hardwareConcurrencyOverrideEnabled(){return this.#t}constructor(){this.cpuThrottlingManager=e.CPUThrottlingManager.CPUThrottlingManager.instance(),this.cpuThrottlingManager.addEventListener("RateChanged",(t=>this.onCPUThrottlingRateChangedOnSDK(t.data))),this.cpuThrottlingControls=new Set,this.cpuThrottlingOptions=g.cpuThrottlingPresets,this.customNetworkConditionsSetting=i.Settings.Settings.instance().moduleSetting("custom-network-conditions"),this.currentNetworkThrottlingConditionsSetting=i.Settings.Settings.instance().createSetting("preferred-network-condition",e.NetworkManager.NoThrottlingConditions),this.calibratedCpuThrottlingSetting=i.Settings.Settings.instance().createSetting("calibrated-cpu-throttling",{},"Global"),this.currentNetworkThrottlingConditionsSetting.setSerializer(new e.NetworkManager.ConditionsSerializer),e.NetworkManager.MultitargetNetworkManager.instance().addEventListener("ConditionsChanged",(()=>{this.lastNetworkThrottlingConditions=this.currentNetworkThrottlingConditionsSetting.get(),this.currentNetworkThrottlingConditionsSetting.set(e.NetworkManager.MultitargetNetworkManager.instance().networkConditions())})),this.isDirty()&&e.NetworkManager.MultitargetNetworkManager.instance().setNetworkConditions(this.currentNetworkThrottlingConditionsSetting.get())}static instance(t={forceNew:null}){const{forceNew:e}=t;return T&&!e||(T=new M),T}createOfflineToolbarCheckbox(){const t=new s.Toolbar.ToolbarCheckbox(f(k.offline),f(k.forceDisconnectedFromNetwork),function(){if(t.checked())e.NetworkManager.MultitargetNetworkManager.instance().setNetworkConditions(e.NetworkManager.OfflineConditions);else{const t=this.lastNetworkThrottlingConditions.download||this.lastNetworkThrottlingConditions.upload?this.lastNetworkThrottlingConditions:e.NetworkManager.NoThrottlingConditions;e.NetworkManager.MultitargetNetworkManager.instance().setNetworkConditions(t)}}.bind(this));return t.element.setAttribute("jslog",`${a.toggle("disconnect-from-network").track({click:!0})}`),e.NetworkManager.MultitargetNetworkManager.instance().addEventListener("ConditionsChanged",(function(){t.setChecked(e.NetworkManager.MultitargetNetworkManager.instance().isOffline())})),t.setChecked(e.NetworkManager.MultitargetNetworkManager.instance().isOffline()),t}createMobileThrottlingButton(){const t=new s.Toolbar.ToolbarMenuButton((function(t){for(let o=0;o<e.length;++o){const r=e[o];r&&(r.title===g.getCustomConditions().title&&r.description===g.getCustomConditions().description||t.defaultSection().appendCheckboxItem(r.title,n.optionSelected.bind(n,r),{checked:i===o,jslogContext:r.jslogContext}))}}),void 0,void 0,"mobile-throttling");t.setTitle(f(k.throttling)),t.setDarkText();let e=[],i=-1;const n=new O((function(t){e=[];for(const i of t){for(const t of i.items)e.push(t);e.push(null)}return e}),(function(n){i=n;const o=e[n];o&&(t.setText(o.title),t.setTitle(`${o.title}: ${o.description}`))}));return t}updatePanelIcon(){const t=[];this.cpuThrottlingManager.cpuThrottlingRate()!==e.CPUThrottlingManager.CPUThrottlingRates.NO_THROTTLING&&t.push(f(k.cpuThrottlingIsEnabled)),s.InspectorView.InspectorView.instance().setPanelWarnings("timeline",t)}setCPUThrottlingOption(t){this.cpuThrottlingManager.setCPUThrottlingOption(t)}onCPUThrottlingRateChangedOnSDK(t){t!==e.CPUThrottlingManager.CPUThrottlingRates.NO_THROTTLING&&n.userMetrics.actionTaken(n.UserMetrics.Action.CpuThrottlingEnabled);const i=this.cpuThrottlingOptions.indexOf(this.cpuThrottlingManager.cpuThrottlingOption());for(const t of this.cpuThrottlingControls)t.setSelectedIndex(i);this.updatePanelIcon()}createNetworkThrottlingSelector(t){let e=[],i=[],n=[];const r=new b((function(r){t.removeChildren(),e=[],i=[],n=[];for(let l=0;l<r.length;++l){const c=r[l],d=t.createChild("optgroup");d.label=c.title;for(const t of c.items){const h="function"==typeof t.title?t.title():t.title,g=new Option(h,h);s.ARIAUtils.setLabel(g,f(k.sS,{PH1:c.title,PH2:h}));const u=l===r.length-1?"custom-network-throttling-item":o.StringUtilities.toKebabCase(t.i18nTitleKey||h);g.setAttribute("jslog",`${a.item(u).track({click:!0})}`),d.appendChild(g),e.push(t),i.push(h),n.push(g)}if(l===r.length-1){const t=new Option(f(k.add),f(k.add));s.ARIAUtils.setLabel(t,f(k.addS,{PH1:c.title})),t.setAttribute("jslog",`${a.action("add").track({click:!0})}`),d.appendChild(t),e.push(null)}}return e}),(function(e){t.selectedIndex!==e&&(t.selectedIndex=e)}),this.customNetworkConditionsSetting);return t.setAttribute("jslog",`${a.dropDown().track({change:!0}).context(this.currentNetworkThrottlingConditionsSetting.name)}`),t.addEventListener("change",(function(){if(t.selectedIndex===t.options.length-1)r.revealAndUpdate();else{const i=e[t.selectedIndex];i&&r.optionSelected(i)}}),!1),{selector:r,updateRecommendedConditions(t){for(let o=0;o<n.length;o++){let r=i[o];e[o]===t&&(r=f(k.recommendedThrottling,{PH1:r})),n[o].text=r}}}}createCPUThrottlingSelector(){const t=()=>{const t=this.calibratedCpuThrottlingSetting.get(),e=t.low||t.mid;return f(e?k.recalibrate:k.calibrate)},e=new s.Toolbar.ToolbarComboBox((()=>{if(e.selectedIndex()===e.options().length-1){const t=this.cpuThrottlingOptions.indexOf(this.cpuThrottlingManager.cpuThrottlingOption());e.setSelectedIndex(t),i.Revealer.reveal(this.calibratedCpuThrottlingSetting)}else this.setCPUThrottlingOption(this.cpuThrottlingOptions[e.selectedIndex()])}),f(k.cpuThrottling),"","cpu-throttling");this.cpuThrottlingControls.add(e);const n=this.cpuThrottlingManager.cpuThrottlingOption(),o=[],r=this.cpuThrottlingOptions;for(let t=0;t<this.cpuThrottlingOptions.length;++t){const i=this.cpuThrottlingOptions[t],r=i.title(),s=i.jslogContext,a=e.createOption(r,s);e.addOption(a),n===i&&e.setSelectedIndex(t),o.push(a)}const a=e.createOption(t(),"");return e.addOption(a),o.push(a),{control:e,updateRecommendedOption(e){for(let t=0;t<o.length-1;t++){const i=r[t];o[t].text=i===e?f(k.recommendedThrottling,{PH1:i.title()}):i.title(),o[t].disabled=0===i.rate()}o[o.length-1].textContent=t()}}}createHardwareConcurrencySelector(){const t=new s.Toolbar.ToolbarItem(s.UIUtils.createInput("devtools-text-input","number","hardware-concurrency"));t.setTitle(f(k.hardwareConcurrencySettingLabel));const e=t.element;e.min="1",t.setEnabled(!1);const i=s.UIUtils.CheckboxLabel.create(f(k.hardwareConcurrency),!1,f(k.hardwareConcurrencySettingLabel),"hardware-concurrency"),n=new s.Toolbar.ToolbarButton("Reset concurrency","undo",void 0,"hardware-concurrency-reset");n.setTitle(f(k.resetConcurrency));const o=new r.Icon.Icon;o.data={iconName:"warning-filled",color:"var(--icon-warning)",width:"14px",height:"14px"};const a=new s.Toolbar.ToolbarItem(o);return a.setTitle(f(k.excessConcurrency)),i.checkboxElement.disabled=!0,n.element.classList.add("concurrency-hidden"),a.element.classList.add("concurrency-hidden"),this.cpuThrottlingManager.getHardwareConcurrency().then((o=>{if(void 0===o)return;const r=t=>{t>=1&&this.cpuThrottlingManager.setHardwareConcurrency(t),t>o?a.element.classList.remove("concurrency-hidden"):a.element.classList.add("concurrency-hidden"),t===o?n.element.classList.add("concurrency-hidden"):n.element.classList.remove("concurrency-hidden")};e.value=`${o}`,e.oninput=()=>r(Number(e.value)),i.checkboxElement.disabled=!1,i.checkboxElement.addEventListener("change",(()=>{this.#t=i.checkboxElement.checked,t.setEnabled(this.hardwareConcurrencyOverrideEnabled),r(this.hardwareConcurrencyOverrideEnabled?Number(e.value):o)})),n.addEventListener("Click",(()=>{e.value=`${o}`,r(o)}))})),{numericInput:t,reset:n,warning:a,checkbox:i}}setHardwareConcurrency(t){this.cpuThrottlingManager.setHardwareConcurrency(t)}isDirty(){const t=e.NetworkManager.MultitargetNetworkManager.instance().networkConditions(),i=this.currentNetworkThrottlingConditionsSetting.get();return!e.NetworkManager.networkConditionsEqual(t,i)}}function x(){return M.instance()}var y=Object.freeze({__proto__:null,ActionDelegate:class{handleAction(t,i){return"network-conditions.network-online"===i?(e.NetworkManager.MultitargetNetworkManager.instance().setNetworkConditions(e.NetworkManager.NoThrottlingConditions),!0):"network-conditions.network-low-end-mobile"===i?(e.NetworkManager.MultitargetNetworkManager.instance().setNetworkConditions(e.NetworkManager.Slow3GConditions),!0):"network-conditions.network-mid-tier-mobile"===i?(e.NetworkManager.MultitargetNetworkManager.instance().setNetworkConditions(e.NetworkManager.Slow4GConditions),!0):"network-conditions.network-offline"===i&&(e.NetworkManager.MultitargetNetworkManager.instance().setNetworkConditions(e.NetworkManager.OfflineConditions),!0)}},ThrottlingManager:M,throttlingManager:x});const N={disabled:"Disabled",presets:"Presets",advanced:"Advanced"},S=t.i18n.registerUIStrings("panels/mobile_throttling/MobileThrottlingSelector.ts",N),P=t.i18n.getLocalizedString.bind(void 0,S);class O{populateCallback;selectCallback;options;constructor(t,i){this.populateCallback=t,this.selectCallback=i,e.CPUThrottlingManager.CPUThrottlingManager.instance().addEventListener("RateChanged",this.conditionsChanged,this),e.NetworkManager.MultitargetNetworkManager.instance().addEventListener("ConditionsChanged",this.conditionsChanged,this),this.options=this.populateOptions(),this.conditionsChanged()}optionSelected(t){e.NetworkManager.MultitargetNetworkManager.instance().setNetworkConditions(t.network),x().setCPUThrottlingOption(t.cpuThrottlingOption)}populateOptions(){const t={title:P(N.disabled),items:[g.getNoThrottlingConditions()]},e={title:P(N.presets),items:g.getMobilePresets()},i={title:P(N.advanced),items:g.getAdvancedMobilePresets()};return this.populateCallback([t,e,i])}conditionsChanged(){this.populateOptions();const t=e.NetworkManager.MultitargetNetworkManager.instance().networkConditions(),i=e.CPUThrottlingManager.CPUThrottlingManager.instance().cpuThrottlingOption();for(let e=0;e<this.options.length;++e){const n=this.options[e];if(n&&"network"in n&&n.network===t&&n.cpuThrottlingOption===i)return void this.selectCallback(e)}const n=g.getCustomConditions();for(let t=0;t<this.options.length;++t){const e=this.options[t];if(e&&e.title===n.title&&e.description===n.description)return void this.selectCallback(t)}}}var E=Object.freeze({__proto__:null,MobileThrottlingSelector:O});const L={networkThrottlingIsEnabled:"Network throttling is enabled",requestsMayBeOverridden:"Requests may be overridden locally, see the Sources panel",requestsMayBeBlocked:"Requests may be blocked, see the Network request blocking panel",acceptedEncodingOverrideSet:"The set of accepted `Content-Encoding` headers has been modified by DevTools, see the Network conditions panel"},I=t.i18n.registerUIStrings("panels/mobile_throttling/NetworkPanelIndicator.ts",L),U=t.i18n.getLocalizedString.bind(void 0,I);var B=Object.freeze({__proto__:null,NetworkPanelIndicator:class{constructor(){if(!s.InspectorView.InspectorView.instance().hasPanel("network"))return;const t=e.NetworkManager.MultitargetNetworkManager.instance();function n(){const i=[];t.isThrottling()&&i.push(U(L.networkThrottlingIsEnabled)),e.NetworkManager.MultitargetNetworkManager.instance().isIntercepting()&&i.push(U(L.requestsMayBeOverridden)),t.isBlocking()&&i.push(U(L.requestsMayBeBlocked)),t.isAcceptedEncodingOverrideSet()&&i.push(U(L.acceptedEncodingOverrideSet)),s.InspectorView.InspectorView.instance().setPanelWarnings("network",i)}t.addEventListener("ConditionsChanged",n),t.addEventListener("BlockedPatternsChanged",n),t.addEventListener("InterceptorsChanged",n),t.addEventListener("AcceptedEncodingsChanged",n),i.Settings.Settings.instance().moduleSetting("cache-disabled").addChangeListener(n,this),n()}}});const A={runningCalibration:"Running CPU calibration, please do not leave this tab or close DevTools."},R=t.i18n.registerUIStrings("panels/mobile_throttling/CalibrationController.ts",A),H=t.i18n.getLocalizedString.bind(void 0,R),_=1e3,D=264;function j(t){return Number(t.toFixed(2))}class W{#e;#i;#n;#o;#r="idle";async start(){const t=e.TargetManager.TargetManager.instance().primaryPageTarget();if(!t)return!1;const i=t.model(e.RuntimeModel.RuntimeModel),n=t.model(e.EmulationModel.EmulationModel);if(!i||!n)return!1;return this.#r="running",this.#e=i,this.#i=n,this.#n=t.inspectedURL(),await t.pageAgent().invoke_navigate({url:"about:blank"}),await i.agent.invoke_evaluate({expression:`\n (${function(t){const e=document.createElement("span");e.textContent=t,document.body.append(e),document.body.style.cssText="\n font-family: system-ui, sans-serif;\n height: 100vh;\n margin: 0;\n background-color: antiquewhite;\n font-size: 18px;\n text-align: center;\n\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n ";const i=document.createElement("span");document.body.append(i),i.id="moon",i.textContent="🌑",i.style.cssText="font-size: 5em"}})(${JSON.stringify(H(A.runningCalibration))});\n\n window.runBenchmark = () => {\n window.runs = window.runs ?? 0;\n moon.textContent = ['🌑', '🌒', '🌓', '🌔', '🌕', '🌖', '🌗', '🌘'][window.runs++ % 8];\n return (${z})(250);\n }`}),await this.#s(),!0}async#a(t){if("running"!==this.#r)throw this.#o=void 0,new Error("Calibration has been canceled");await this.#i.setCPUThrottlingRate(t)}async#s(){if("running"!==this.#r)throw this.#o=void 0,new Error("Calibration has been canceled");const{result:t}=await this.#e.agent.invoke_evaluate({expression:"runBenchmark()"});if(!Number.isFinite(t.value)){let e=`unexpected score from benchmark: ${t.value}`;throw t.description&&(e+=`\n${t.description}`),new Error(e)}return t.value}async*iterator(){const t=this;let i=!1;yield{progress:0};const n=new Map;async function o(e){const i=n.get(e);if(void 0!==i)return i;await t.#a(e);const o=await t.#s();return n.set(e,o),o}async function*r(t,e,n){const r={rate:e,score:await o(e)},s={rate:n,score:await o(n)};let a=0,l=0;for(;l++<8;){a=j((s.rate+r.rate)/2);const e=await o(a);if(Math.abs(t-e)<10)break;e<t?(s.rate=a,s.score=e):(r.rate=a,r.score=e),yield{progress:l/8/2+(i?.5:0)}}return j(a)}this.#o={};let s=await o(1);if(s<_&&(n.clear(),s=await o(1),s<_)){if(s<D)return void(this.#o={low:e.CPUThrottlingManager.CalibrationError.DEVICE_TOO_WEAK,mid:e.CPUThrottlingManager.CalibrationError.DEVICE_TOO_WEAK});this.#o={mid:e.CPUThrottlingManager.CalibrationError.DEVICE_TOO_WEAK},i=!0}const a=s/D*1.5,l=yield*r(D,1,a);if(this.#o.low=l,!this.#o.mid){i=!0,yield{progress:.5};const t=l/3.787878787878788,e=yield*r(_,t-t/4,t+t/4);this.#o.mid=e}yield{progress:1}}abort(){"running"===this.#r&&(this.#r="aborting")}result(){return this.#o}async end(){"idle"!==this.#r&&(this.#r="idle",this.#n.startsWith("chrome://")?await this.#e.agent.invoke_evaluate({expression:"history.back()"}):await this.#e.agent.invoke_evaluate({expression:`window.location.href = ${JSON.stringify(this.#n)}`}))}}function z(t=1e3){const e=t/2;return(function(){const t=Date.now();let i=0;for(;Date.now()-t<e;){let t="";for(let e=0;e<1e4;e++)t+="a";if(1===t.length)throw new Error("will never happen, but prevents compiler optimizations");i++}const n=(Date.now()-t)/1e3;return Math.round(i/10/n)}()+function(){const t=[],i=[];for(let e=0;e<1e5;e++)t[e]=i[e]=e;const n=Date.now();let o=0;for(;o%10!=0||Date.now()-n<e;){const e=o%2==0?t:i,n=o%2==0?i:t;for(let t=0;t<e.length;t++)n[t]=e[t];o++}const r=(Date.now()-n)/1e3;return Math.round(o/10/r)}())/2}var G={cssText:`.add-conditions-button{margin:var(--sys-size-5) 0;border:none}.conditions-list{flex:auto;&:has(.list-item){margin-top:var(--sys-size-3)}}.conditions-list-item{padding:3px 5px;height:30px;display:flex;align-items:center;position:relative;flex:auto 1 1}.conditions-list-text{text-overflow:ellipsis;overflow:hidden;flex:0 0 60px;user-select:none;color:var(--sys-color-on-surface);text-align:center;position:relative;& > input{scroll-margin-left:5px}}.conditions-list-text:last-child{flex-basis:100px;text-align:left}.conditions-list-title{text-align:start;display:flex;flex-grow:1;align-items:flex-start}.conditions-list-title-text{flex:auto;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.conditions-list-separator{flex:0 0 1px;background-color:var(--sys-color-divider);height:30px;margin:0 4px}.conditions-list-separator-invisible{visibility:hidden;height:100%!important}.conditions-edit-row{flex:none;display:flex;flex-direction:row;margin:6px 5px;.conditions-list-title-text{white-space:unset}}.conditions-edit-row input{&[type="checkbox"]{margin:auto;top:6px;position:relative;display:flex;align-items:center;justify-content:center}&:not([type="checkbox"]){width:100%;text-align:inherit}}.conditions-edit-optional{margin-top:var(--sys-size-5);color:var(--sys-color-on-surface-subtle)}.editor-buttons{margin-top:10px}.settings-card-container-wrapper{scrollbar-gutter:stable;padding:var(--sys-size-8) 0;overflow:auto;position:absolute;inset:var(--sys-size-8) 0 0}.settings-card-container{display:flex;flex-direction:column;align-items:center;gap:var(--sys-size-9)}.cpu-preset-section{padding:14px;display:flex;justify-content:space-between}.cpu-preset-result.not-calibrated{font-style:italic}.cpu-preset-calibrate{flex-direction:column;gap:14px}.cpu-preset-calibrate .button-container{display:flex;gap:10px}.cpu-preset-calibrate .text-container{display:flex;flex-direction:column;gap:10px}.text-with-icon{display:flex;align-items:center;gap:5px}\n/*# sourceURL=${import.meta.resolve("./throttlingSettingsTab.css")} */\n`};const q={networkThrottlingProfiles:"Network throttling profiles",addCustomProfile:"Add profile",dms:"{PH1} `ms`",profileName:"Profile Name",download:"Download",upload:"Upload",latency:"Latency",packetLoss:"Packet Loss",percent:"percent",packetQueueLength:"Packet Queue Length",packetReordering:"Packet Reordering",packet:"packet",optional:"optional",profileNameCharactersLengthMust:"Profile Name characters length must be between 1 to {PH1} inclusive",sMustBeANumberBetweenSkbsToSkbs:"{PH1} must be a number between {PH2} `kbit/s` to {PH3} `kbit/s` inclusive",latencyMustBeAnIntegerBetweenSms:"Latency must be an integer between {PH1} `ms` to {PH2} `ms` inclusive",packetLossMustBeAnIntegerBetweenSpct:"Packet Loss must be a number between {PH1} `%` to {PH2} `%` inclusive",packetQueueLengthMustBeAnIntegerGreaterOrEqualToZero:"Packet Queue Length must be greater or equal to 0",dskbits:"{PH1} `kbit/s`",fsmbits:"{PH1} `Mbit/s`",on:"On",off:"Off",cpuThrottlingPresets:"CPU throttling presets",calibrate:"Calibrate",recalibrate:"Recalibrate",continue:"Continue",cancel:"Cancel",needsCalibration:"Needs calibration",calibrationCTA:"To use the CPU throttling presets, run the calibration process to determine the ideal throttling rate for your device.",cpuCalibrationDescription:"These presets throttle your CPU to approximate the performance of typical low or mid-tier mobile devices.",calibrationConfirmationPrompt:"Calibration will take ~5 seconds, and temporarily navigate away from your current page. Do you wish to continue?",calibrationWarningHighCPU:"CPU utilization is too high",calibrationWarningRunningOnBattery:"Device is running on battery, please plug in charger for best results",calibrationWarningLowBattery:"Device battery is low (<20%), results may be impacted by CPU throttling",dSlowdown:"{PH1}× slowdown"},$=t.i18n.registerUIStrings("panels/mobile_throttling/ThrottlingSettingsTab.ts",q),F=t.i18n.getLocalizedString.bind(void 0,$);class Q{element;setting;computePressurePromise;controller;lowTierMobileDeviceEl;midTierMobileDeviceEl;calibrateEl;textEl;calibrateButton;cancelButton;progress;state="cta";warnings=[];constructor(){this.setting=i.Settings.Settings.instance().createSetting("calibrated-cpu-throttling",{},"Global"),this.element=document.createElement("devtools-card"),this.element.heading=F(q.cpuThrottlingPresets);this.element.createChild("span").textContent=F(q.cpuCalibrationDescription),this.lowTierMobileDeviceEl=this.element.createChild("div","cpu-preset-section"),this.lowTierMobileDeviceEl.append("Low-tier mobile device"),this.lowTierMobileDeviceEl.createChild("div","cpu-preset-result"),this.midTierMobileDeviceEl=this.element.createChild("div","cpu-preset-section"),this.midTierMobileDeviceEl.append("Mid-tier mobile device"),this.midTierMobileDeviceEl.createChild("div","cpu-preset-result"),this.calibrateEl=this.element.createChild("div","cpu-preset-section cpu-preset-calibrate");const t=this.calibrateEl.createChild("div","button-container");this.calibrateButton=new l.Button.Button,this.calibrateButton.classList.add("calibrate-button"),this.calibrateButton.data={variant:"primary",jslogContext:"throttling.calibrate"},this.calibrateButton.addEventListener("click",(()=>this.calibrateButtonClicked())),t.append(this.calibrateButton),this.cancelButton=new l.Button.Button,this.cancelButton.classList.add("cancel-button"),this.cancelButton.data={variant:"outlined",jslogContext:"throttling.calibrate-cancel"},this.cancelButton.textContent=F(q.cancel),this.cancelButton.addEventListener("click",(()=>this.cancelButtonClicked())),t.append(this.cancelButton),this.textEl=this.calibrateEl.createChild("div","text-container"),this.progress=new s.ProgressIndicator.ProgressIndicator({showStopButton:!1}),this.calibrateEl.append(this.progress.element),this.updateState()}wasShown(){this.computePressurePromise=function(){const t={state:""};return new Promise((e=>{new PressureObserver((i=>{t.state=i.at(-1).state,e(t)})).observe("cpu",{sampleInterval:1e3})}))}(),this.state="cta",this.updateState()}willHide(){this.computePressurePromise=void 0,this.controller&&this.controller.abort()}updateState(){"calibrating"!==this.state&&(this.controller=void 0);const t=this.setting.get(),i=t.low||t.mid;if(this.calibrateButton.style.display="none",this.textEl.style.display="none",this.cancelButton.style.display="none",this.progress.element.style.display="none","cta"===this.state)this.calibrateButton.style.display="",this.calibrateButton.textContent=F(i?q.recalibrate:q.calibrate),i||(this.textEl.style.display="",this.textEl.textContent="",this.textEl.append(this.createTextWithIcon(F(q.calibrationCTA),"info")));else if("prompting"===this.state){this.calibrateButton.style.display="",this.calibrateButton.textContent=F(q.continue),this.cancelButton.style.display="",this.textEl.style.display="",this.textEl.textContent="";for(const t of this.warnings)this.textEl.append(this.createTextWithIcon(t,"warning"));this.textEl.append(this.createTextWithIcon(F(q.calibrationConfirmationPrompt),"info"))}else"calibrating"===this.state&&(this.cancelButton.style.display="",this.progress.element.style.display="");const n=(t,i)=>{if(!t)throw new Error("expected HTMLElement");t.textContent=(t=>void 0===t?F(q.needsCalibration):"string"==typeof t?e.CPUThrottlingManager.calibrationErrorToString(t):"number"!=typeof t?`Invalid: ${t}`:F(q.dSlowdown,{PH1:t.toFixed(1)}))(i),t.classList.toggle("not-calibrated",void 0===i)};n(this.lowTierMobileDeviceEl.querySelector(".cpu-preset-result"),t.low),n(this.midTierMobileDeviceEl.querySelector(".cpu-preset-result"),t.mid)}createTextWithIcon(t,e){const i=document.createElement("div");return i.classList.add("text-with-icon"),i.append(r.Icon.create(e)),i.append(t),i}async getCalibrationWarnings(){const t=[];if(this.computePressurePromise){const e=await this.computePressurePromise;"critical"!==e.state&&"serious"!==e.state||t.push(F(q.calibrationWarningHighCPU))}const e=await navigator.getBattery();return e.charging?e.level<.2&&t.push(F(q.calibrationWarningLowBattery)):t.push(F(q.calibrationWarningRunningOnBattery)),t}async calibrateButtonClicked(){"cta"===this.state?(this.warnings=await this.getCalibrationWarnings(),this.state="prompting",this.updateState()):"prompting"===this.state&&(this.state="calibrating",this.updateState(),this.runCalibration())}cancelButtonClicked(){this.controller?this.controller.abort():(this.state="cta",this.updateState())}async runCalibration(){this.progress.setWorked(0),this.progress.setTotalWork(1),this.controller=new W;try{if(!await this.controller.start())return void console.error("Calibration failed to start");for await(const t of this.controller.iterator())this.progress.setWorked(t.progress)}catch(t){console.error(t)}finally{await this.controller.end()}const t=this.controller.result();t&&(t.low||t.mid)&&(this.setting.set(t),this.progress.setWorked(1),await new Promise((t=>setTimeout(t,200)))),this.state="cta",this.updateState()}}class V extends s.Widget.VBox{list;customSetting;editor;cpuThrottlingCard;constructor(){super(!0),this.registerRequiredCSS(G),this.element.setAttribute("jslog",`${a.pane("throttling-conditions")}`);const t=this.contentElement.createChild("div","settings-card-container-wrapper").createChild("div");t.classList.add("settings-card-container","throttling-conditions-settings"),this.cpuThrottlingCard=new Q,t.append(this.cpuThrottlingCard.element);const e=new l.Button.Button;e.classList.add("add-conditions-button"),e.data={variant:"outlined",iconName:"plus",jslogContext:"network.add-conditions"},e.textContent=F(q.addCustomProfile),e.addEventListener("click",(()=>this.addButtonClicked()));const n=t.createChild("devtools-card");n.heading=F(q.networkThrottlingProfiles);const o=n.createChild("div");this.list=new s.ListWidget.ListWidget(this),this.list.element.classList.add("conditions-list"),this.list.registerRequiredCSS(G),this.list.show(o),o.appendChild(e),this.customSetting=i.Settings.Settings.instance().moduleSetting("custom-network-conditions"),this.customSetting.addChangeListener(this.conditionsUpdated,this)}wasShown(){super.wasShown(),this.cpuThrottlingCard.wasShown(),this.conditionsUpdated()}willHide(){super.willHide(),this.cpuThrottlingCard.willHide()}conditionsUpdated(){this.list.clear();const t=this.customSetting.get();for(let e=0;e<t.length;++e)this.list.appendItem(t[e],!0);this.list.appendSeparator()}addButtonClicked(){this.list.addNewItem(this.customSetting.get().length,{title:()=>"",download:-1,upload:-1,latency:0,packetLoss:0,packetReordering:!1})}renderItem(t,e){const i=document.createElement("div");i.classList.add("conditions-list-item");const n=i.createChild("div","conditions-list-text conditions-list-title").createChild("div","conditions-list-title-text"),o=this.retrieveOptionsTitle(t);return n.textContent=o,s.Tooltip.Tooltip.install(n,o),i.createChild("div","conditions-list-separator"),i.createChild("div","conditions-list-text").textContent=X(t.download),i.createChild("div","conditions-list-separator"),i.createChild("div","conditions-list-text").textContent=X(t.upload),i.createChild("div","conditions-list-separator"),i.createChild("div","conditions-list-text").textContent=F(q.dms,{PH1:t.latency}),i.createChild("div","conditions-list-separator"),i.createChild("div","conditions-list-text").textContent=function(t){if(t<0)return"";return String(t)+"%"}(t.packetLoss??0),i.createChild("div","conditions-list-separator"),i.createChild("div","conditions-list-text").textContent=String(t.packetQueueLength??0),i.createChild("div","conditions-list-separator"),i.createChild("div","conditions-list-text").textContent=t.packetReordering?F(q.on):F(q.off),i}removeItemRequested(t,e){const i=this.customSetting.get();i.splice(e,1),this.customSetting.set(i)}retrieveOptionsTitle(t){return"function"==typeof t.title?t.title():t.title}commitEdit(t,e,i){t.title=e.control("title").value.trim();const n=e.control("download").value.trim();t.download=n?125*parseInt(n,10):-1;const o=e.control("upload").value.trim();t.upload=o?125*parseInt(o,10):-1;const r=e.control("latency").value.trim();t.latency=r?parseInt(r,10):0;const s=e.control("packetLoss").value.trim();t.packetLoss=s?parseFloat(s):0;const a=e.control("packetQueueLength").value.trim();t.packetQueueLength=a?parseFloat(a):0;const l=e.control("packetReordering").checked;t.packetReordering=l;const c=this.customSetting.get();i&&c.push(t),this.customSetting.set(c)}beginEdit(t){const e=this.createEditor();return e.control("title").value=this.retrieveOptionsTitle(t),e.control("download").value=t.download<=0?"":String(t.download/125),e.control("upload").value=t.upload<=0?"":String(t.upload/125),e.control("latency").value=t.latency?String(t.latency):"",e.control("packetLoss").value=t.packetLoss?String(t.packetLoss):"",e.control("packetQueueLength").value=t.packetQueueLength?String(t.packetQueueLength):"",e.control("packetReordering").checked=t.packetReordering??!1,e}createEditor(){if(this.editor)return this.editor;const e=new s.ListWidget.Editor;this.editor=e;const i=e.contentElement(),n=i.createChild("div","conditions-edit-row"),o=n.createChild("div","conditions-list-text conditions-list-title"),r=F(q.profileName);o.createChild("div","conditions-list-title-text").textContent=r,n.createChild("div","conditions-list-separator conditions-list-separator-invisible");const a=n.createChild("div","conditions-list-text"),l=F(q.download);a.createChild("div","conditions-list-title-text").textContent=l,n.createChild("div","conditions-list-separator conditions-list-separator-invisible");const c=n.createChild("div","conditions-list-text").createChild("div","conditions-list-title-text"),d=F(q.upload);c.textContent=d,n.createChild("div","conditions-list-separator conditions-list-separator-invisible");const h=n.createChild("div","conditions-list-text"),g=F(q.latency);h.createChild("div","conditions-list-title-text").textContent=g,n.createChild("div","conditions-list-separator conditions-list-separator-invisible");const u=n.createChild("div","conditions-list-text"),p=F(q.packetLoss);u.createChild("div","conditions-list-title-text").textContent=p,n.createChild("div","conditions-list-separator conditions-list-separator-invisible");const C=n.createChild("div","conditions-list-text"),w=F(q.packetQueueLength);C.createChild("div","conditions-list-title-text").textContent=w,n.createChild("div","conditions-list-separator conditions-list-separator-invisible");const b=n.createChild("div","conditions-list-text"),m=F(q.packetReordering);b.createChild("div","conditions-list-title-text").textContent=m;const k=i.createChild("div","conditions-edit-row"),v=e.createInput("title","text","",(function(t,e,i){const n=i.value.trim(),o=n.length>0&&n.length<=49;if(!o){return{valid:o,errorMessage:F(q.profileNameCharactersLengthMust,{PH1:49})}}return{valid:o,errorMessage:void 0}}));s.ARIAUtils.setLabel(v,r),k.createChild("div","conditions-list-text conditions-list-title").appendChild(v),k.createChild("div","conditions-list-separator conditions-list-separator-invisible");let f=k.createChild("div","conditions-list-text");const T=e.createInput("download","text",t.i18n.lockedString("kbit/s"),E);f.appendChild(T),s.ARIAUtils.setLabel(T,l);const M=f.createChild("div","conditions-edit-optional"),x=F(q.optional);M.textContent=x,s.ARIAUtils.setDescription(T,x),k.createChild("div","conditions-list-separator conditions-list-separator-invisible"),f=k.createChild("div","conditions-list-text");const y=e.createInput("upload","text",t.i18n.lockedString("kbit/s"),E);s.ARIAUtils.setLabel(y,d),f.appendChild(y);f.createChild("div","conditions-edit-optional").textContent=x,s.ARIAUtils.setDescription(y,x),k.createChild("div","conditions-list-separator conditions-list-separator-invisible"),f=k.createChild("div","conditions-list-text");const N=e.createInput("latency","text",t.i18n.lockedString("ms"),(function(t,e,i){const n=1e6,o=i.value.trim(),r=Number(o),s=Number.isInteger(r)&&r>=0&&r<=n;if(!s){return{valid:s,errorMessage:F(q.latencyMustBeAnIntegerBetweenSms,{PH1:0,PH2:n})}}return{valid:s,errorMessage:void 0}}));s.ARIAUtils.setLabel(N,g),f.appendChild(N);f.createChild("div","conditions-edit-optional").textContent=x,s.ARIAUtils.setDescription(N,x),k.createChild("div","conditions-list-separator conditions-list-separator-invisible"),f=k.createChild("div","conditions-list-text");const S=e.createInput("packetLoss","text",t.i18n.lockedString("percent"),(function(t,e,i){const n=i.value.trim(),o=Number(n),r=o>=0&&o<=100;if(!r){return{valid:r,errorMessage:F(q.packetLossMustBeAnIntegerBetweenSpct,{PH1:0,PH2:100})}}return{valid:r,errorMessage:void 0}}));s.ARIAUtils.setLabel(S,p),f.appendChild(S);f.createChild("div","conditions-edit-optional").textContent=x,s.ARIAUtils.setDescription(S,x),k.createChild("div","conditions-list-separator conditions-list-separator-invisible"),f=k.createChild("div","conditions-list-text");const P=e.createInput("packetQueueLength","text",F(q.packet),(function(t,e,i){const n=i.value.trim(),o=Number(n)>=0;if(!o){return{valid:o,errorMessage:F(q.packetQueueLengthMustBeAnIntegerGreaterOrEqualToZero)}}return{valid:o,errorMessage:void 0}}));s.ARIAUtils.setLabel(P,w),f.appendChild(P);f.createChild("div","conditions-edit-optional").textContent=x,s.ARIAUtils.setDescription(P,x),k.createChild("div","conditions-list-separator conditions-list-separator-invisible"),f=k.createChild("div","conditions-list-text");const O=e.createInput("packetReordering","checkbox",F(q.percent),(function(t,e,i){return{valid:!0,errorMessage:void 0}}));return s.ARIAUtils.setLabel(O,p),f.appendChild(O),e;function E(t,e,i){const n=1e7,o=i.value.trim(),r=Number(o),s=i.getAttribute("aria-label"),a=!Number.isNaN(r)&&r>=0&&r<=n;if(!a){return{valid:a,errorMessage:F(q.sMustBeANumberBetweenSkbsToSkbs,{PH1:String(s),PH2:0,PH3:n})}}return{valid:a,errorMessage:void 0}}}}function X(t){if(t<0)return"";const e=t/125;if(e<1e3)return F(q.dskbits,{PH1:e});if(e<1e4){const t=(e/1e3).toFixed(1);return F(q.fsmbits,{PH1:t})}return F(q.fsmbits,{PH1:e/1e3|0})}var K=Object.freeze({__proto__:null,CPUThrottlingCard:Q,ThrottlingSettingsTab:V});export{E as MobileThrottlingSelector,B as NetworkPanelIndicator,m as NetworkThrottlingSelector,y as ThrottlingManager,u as ThrottlingPresets,K as ThrottlingSettingsTab};
|