diff --git a/packages/debugger-frontend/BUILD_INFO b/packages/debugger-frontend/BUILD_INFO index 9cfd994e67ec..fc070ff008bf 100644 --- a/packages/debugger-frontend/BUILD_INFO +++ b/packages/debugger-frontend/BUILD_INFO @@ -1,5 +1,5 @@ -@generated SignedSource<<9252db36d4b1db907a38c08935ceeb38>> -Git revision: 921566790e9e16d0ecace6e49b3cfaace205958c +@generated SignedSource<> +Git revision: e87564a24cf233c60aaebee8c418ec85724f7214 Built with --nohooks: false Is local checkout: false Remote URL: https://github.com/facebook/react-native-devtools-frontend diff --git a/packages/debugger-frontend/dist/third-party/front_end/panels/console/console.js b/packages/debugger-frontend/dist/third-party/front_end/panels/console/console.js index ff3a7fbed340..342589d4e60c 100644 --- a/packages/debugger-frontend/dist/third-party/front_end/panels/console/console.js +++ b/packages/debugger-frontend/dist/third-party/front_end/panels/console/console.js @@ -3,4 +3,4 @@ import*as e from"../../core/common/common.js";import*as t from"../../core/i18n/i ${this.deletePinIcon}
- `;this.pinElement=i.element(),this.pinPreview=i.$("preview");const r=i.$("name");o.Tooltip.Tooltip.install(r,t),z.set(this.pinElement,this),this.lastResult=null,this.lastExecutionContext=null,this.committedExpression=t,this.hovered=!1,this.lastNode=null,this.editor=this.createEditor(t,r),this.pinPreview.addEventListener("mouseenter",this.setHovered.bind(this,!0),!1),this.pinPreview.addEventListener("mouseleave",this.setHovered.bind(this,!1),!1),this.pinPreview.addEventListener("click",(t=>{this.lastNode&&(e.Revealer.reveal(this.lastNode),t.consume())}),!1),r.addEventListener("keydown",(e=>{"Escape"===e.key&&e.consume()}))}createEditor(e,t){const s=[a.EditorView.contentAttributes.of({"aria-label":_(D.liveExpressionEditor)}),a.EditorView.lineWrapping,a.javascript.javascriptLanguage,l.Config.showCompletionHint,a.placeholder(_(D.expression)),a.keymap.of([{key:"Escape",run:e=>(e.dispatch({changes:{from:0,to:e.state.doc.length,insert:this.committedExpression}}),this.focusOut(),!0)},{key:"Enter",run:()=>(this.focusOut(),!0)},{key:"Mod-Enter",run:()=>(this.focusOut(),!0)},{key:"Tab",run:e=>null===a.completionStatus(this.editor.state)&&(e.dispatch({changes:{from:0,to:e.state.doc.length,insert:this.committedExpression}}),this.focusOut(),!0)},{key:"Shift-Tab",run:e=>null===a.completionStatus(this.editor.state)&&(e.dispatch({changes:{from:0,to:e.state.doc.length,insert:this.committedExpression}}),this.focusOut(),!0)}]),a.EditorView.domEventHandlers({blur:(e,t)=>this.onBlur(t)}),l.Config.baseConfiguration(e),l.Config.closeBrackets.instance(),l.Config.autocompletion.instance()];"true"!==r.Runtime.Runtime.queryParam("noJavaScriptCompletion")&&s.push(l.JavaScript.completion());const n=new l.TextEditor.TextEditor(a.EditorState.create({doc:e,extensions:s}));return t.appendChild(n),n}onBlur(e){const t=e.state.doc.toString(),s=t.trim();this.committedExpression=s,this.pinPane.savePins(),this.committedExpression.length?this.deletePinIcon.setAccessibleName(_(D.removeExpressionS,{PH1:this.committedExpression})):this.deletePinIcon.setAccessibleName(_(D.removeBlankExpression)),e.dispatch({selection:{anchor:s.length},changes:s!==t?{from:0,to:t.length,insert:s}:void 0})}setHovered(e){this.hovered!==e&&(this.hovered=e,!e&&this.lastNode&&n.OverlayModel.OverlayModel.hideDOMNodeHighlight())}expression(){return this.committedExpression}element(){return this.pinElement}async focus(){const e=this.editor;e.editor.focus(),e.dispatch({selection:{anchor:e.state.doc.length}})}appendToContextMenu(e){this.lastResult&&!("error"in this.lastResult)&&this.lastResult.object&&(e.appendApplicableItems(this.lastResult.object),this.lastResult=null)}async updatePreview(){if(!this.editor)return;const e=l.Config.contentIncludingHint(this.editor.editor),t=this.pinElement.hasFocus(),s=t&&e!==this.committedExpression,i=s?250:void 0,r=o.Context.Context.instance().flavor(n.RuntimeModel.ExecutionContext),{preview:a,result:d}=await c.JavaScriptREPL.JavaScriptREPL.evaluateAndBuildPreview(e,s,!0,i,!t,"live-expression",!0,!0);this.lastResult&&this.lastExecutionContext&&this.lastExecutionContext.runtimeModel.releaseEvaluationResult(this.lastResult),this.lastResult=d||null,this.lastExecutionContext=r||null;const h=a.deepTextContent();if(!h||h!==this.pinPreview.deepTextContent()){if(this.pinPreview.removeChildren(),d&&n.RuntimeModel.RuntimeModel.isSideEffectFailure(d)){const e=this.pinPreview.createChild("span","object-value-calculate-value-button");e.textContent="(…)",o.Tooltip.Tooltip.install(e,_(D.evaluateAllowingSideEffects))}else h?this.pinPreview.appendChild(a):t||o.UIUtils.createTextChild(this.pinPreview,_(D.notAvailable));o.Tooltip.Tooltip.install(this.pinPreview,h)}let u=null;d&&!("error"in d)&&"object"===d.object.type&&"node"===d.object.subtype&&(u=d.object),this.hovered&&(u?n.OverlayModel.OverlayModel.highlightObjectAsDOMNode(u):this.lastNode&&n.OverlayModel.OverlayModel.hideDOMNodeHighlight()),this.lastNode=u||null;const m=d&&!("error"in d)&&d.exceptionDetails&&!n.RuntimeModel.RuntimeModel.isSideEffectFailure(d);this.pinElement.classList.toggle("error-level",Boolean(m))}}var K=Object.freeze({__proto__:null,ConsolePin:q,ConsolePinPane:$}),J={cssText:`:host{overflow:auto}.count{flex:none;margin:0 var(--sys-size-3)}devtools-icon{&[name="cross-circle"]{color:var(--sys-color-error-bright)}&[name="warning"]{color:var(--icon-warning)}&[name="info"]{color:var(--icon-info)}}.tree-element-title{flex-grow:1}\n/*# sourceURL=${import.meta.resolve("./consoleSidebar.css")} */\n`};const X={other:"",dUserMessages:"{n, plural, =0 {No user messages} =1 {# user message} other {# user messages}}",dMessages:"{n, plural, =0 {No messages} =1 {# message} other {# messages}}",dErrors:"{n, plural, =0 {No errors} =1 {# error} other {# errors}}",dWarnings:"{n, plural, =0 {No warnings} =1 {# warning} other {# warnings}}",dInfo:"{n, plural, =0 {No info} =1 {# info} other {# info}}",dVerbose:"{n, plural, =0 {No verbose} =1 {# verbose} other {# verbose}}"},Z=t.i18n.registerUIStrings("panels/console/ConsoleSidebar.ts",X),Q=t.i18n.getLocalizedString.bind(void 0,Z);class Y extends(e.ObjectWrapper.eventMixin(o.Widget.VBox)){tree;selectedTreeElement;treeElements;constructor(){super(!0),this.setMinimumSize(125,0),this.tree=new o.TreeOutline.TreeOutlineInShadow("NavigationTree"),this.tree.addEventListener(o.TreeOutline.Events.ElementSelected,this.selectionChanged.bind(this)),this.tree.registerRequiredCSS(J),this.tree.hideOverflow(),this.contentElement.setAttribute("jslog",`${d.pane("sidebar").track({resize:!0})}`),this.contentElement.appendChild(this.tree.element),this.selectedTreeElement=null,this.treeElements=[];const t=e.Settings.Settings.instance().createSetting("console.sidebar-selected-filter",null),s=[{key:R.Source,text:e.Console.FrontendMessageSource.ConsoleAPI,negative:!1,regex:void 0}];this.appendGroup("message",[],P.allLevelsFilterValue(),h.Icon.create("list"),t),this.appendGroup("user message",s,P.allLevelsFilterValue(),h.Icon.create("profile"),t),this.appendGroup("error",[],P.singleLevelMask("error"),h.Icon.create("cross-circle"),t),this.appendGroup("warning",[],P.singleLevelMask("warning"),h.Icon.create("warning"),t),this.appendGroup("info",[],P.singleLevelMask("info"),h.Icon.create("info"),t),this.appendGroup("verbose",[],P.singleLevelMask("verbose"),h.Icon.create("bug"),t);const n=t.get();(this.treeElements.find((e=>e.name()===n))||this.treeElements[0]).select()}appendGroup(e,t,s,n,o){const i=new P(e,t,null,s),r=new ne(i,n,o);this.tree.appendChild(r),this.treeElements.push(r)}clear(){for(const e of this.treeElements)e.clear()}onMessageAdded(e){for(const t of this.treeElements)t.onMessageAdded(e)}shouldBeVisible(e){return!(this.selectedTreeElement instanceof ee)||this.selectedTreeElement.filter().shouldBeVisible(e)}selectionChanged(e){this.selectedTreeElement=e.data,this.dispatchEventToListeners("FilterSelected")}}class ee extends o.TreeOutline.TreeElement{filterInternal;constructor(e,t){super(e),this.filterInternal=t}filter(){return this.filterInternal}}class te extends ee{countElement;messageCount;constructor(e){super(e.name,e),this.countElement=this.listItemElement.createChild("span","count");const t=h.Icon.create("document");this.setLeadingIcons([t]),this.messageCount=0}incrementAndUpdateCounter(){this.messageCount++,this.countElement.textContent=`${this.messageCount}`}}const se=new Map([["user message",X.dUserMessages],["message",X.dMessages],["error",X.dErrors],["warning",X.dWarnings],["info",X.dInfo],["verbose",X.dVerbose]]);class ne extends ee{selectedFilterSetting;urlTreeElements;messageCount;uiStringForFilterCount;constructor(e,t,s){super(e.name,e),this.uiStringForFilterCount=se.get(e.name)||"",this.selectedFilterSetting=s,this.urlTreeElements=new Map,this.setLeadingIcons([t]),this.messageCount=0,this.updateCounter()}clear(){this.urlTreeElements.clear(),this.removeChildren(),this.messageCount=0,this.updateCounter()}name(){return this.filterInternal.name}onselect(e){return this.selectedFilterSetting.set(this.filterInternal.name),super.onselect(e)}updateCounter(){this.title=this.updateGroupTitle(this.messageCount),this.setExpandable(Boolean(this.childCount()))}updateGroupTitle(e){return this.uiStringForFilterCount?Q(this.uiStringForFilterCount,{n:e}):""}onMessageAdded(e){const t=e.consoleMessage(),s=t.type!==n.ConsoleModel.FrontendMessageType.Command&&t.type!==n.ConsoleModel.FrontendMessageType.Result&&!t.isGroupMessage();if(!this.filterInternal.shouldBeVisible(e)||!s)return;this.childElement(t.url).incrementAndUpdateCounter(),this.messageCount++,this.updateCounter()}childElement(t){const s=t||null;let n=this.urlTreeElements.get(s);if(n)return n;const o=this.filterInternal.clone(),i=s?e.ParsedURL.ParsedURL.fromString(s):null;return o.name=s?i?i.displayName:s:Q(X.other),o.parsedFilters.push({key:R.Url,text:s,negative:!1,regex:void 0}),n=new te(o),s&&(n.tooltip=s),this.urlTreeElements.set(s,n),this.appendChild(n),n}}var oe=Object.freeze({__proto__:null,ConsoleSidebar:Y,FilterTreeElement:ne,URLGroupTreeElement:te}),ie={cssText:`.console-view{background-color:var(--sys-color-cdt-base-container);overflow:hidden;--override-error-text-color:var(--sys-color-on-error-container);--message-corner-rounder-background:var(--sys-color-cdt-base-container)}.console-toolbar-container{display:flex;flex:none}.console-main-toolbar{flex:1 1 auto}#console-issues-counter{margin-top:0}.console-toolbar-container > devtools-toolbar{background-color:var(--sys-color-cdt-base-container);border-bottom:1px solid var(--sys-color-divider)}.console-view-fix-select-all{height:0;overflow:hidden}.console-settings-pane{display:grid;grid-template-columns:50% 50%;flex:none;background-color:var(--sys-color-cdt-base-container);border-bottom:1px solid var(--sys-color-divider)}#console-messages{flex:1 1;overflow-y:auto;word-wrap:break-word;user-select:text;transform:translateZ(0);overflow-anchor:none;background-color:var(--sys-color-cdt-base-container)}#console-prompt{clear:right;position:relative;margin:0 22px 0 20px}.console-prompt-editor-container{min-height:21px}.console-message,\n.console-user-command{clear:right;position:relative;padding:3px 22px 1px 0;margin-left:24px;min-height:17px;flex:auto;display:flex}.console-message > *{flex:auto}.console-timestamp{color:var(--sys-color-token-subtle);user-select:none;flex:none;margin-right:5px}.message-level-icon,\n.command-result-icon{position:absolute;left:-17px;top:2px;user-select:none}.console-message-repeat-count{margin:1.4px 0 0 10px;flex:none}.repeated-message{margin-left:4px}.repeated-message .message-level-icon{display:none}.console-message-stack-trace-toggle{display:flex;flex-direction:row;align-items:flex-start;margin-top:-1px}.console-error-level .repeated-message,\n.console-warning-level .repeated-message,\n.console-verbose-level .repeated-message,\n.console-info-level .repeated-message{display:flex}.console-info{color:var(--sys-color-token-subtle);font-style:italic;padding-bottom:2px}.console-group .console-group > .console-group-messages{margin-left:16px}.console-group-title.console-from-api{font-weight:bold}.console-group-title .console-message{margin-left:12px}.expand-group-icon{user-select:none;flex:none;position:relative;left:8px;top:3px;margin-right:2px}.console-group-title .message-level-icon{display:none}.console-message-repeat-count .expand-group-icon{position:static;color:var(--sys-color-cdt-base-container);margin-left:-1px}.console-group{position:relative}.console-message-wrapper{display:flex;flex-direction:column;margin:4px;border-radius:5px;--console-color-black:#000;--console-color-red:#a00;--console-color-green:#0a0;--console-color-yellow:#a50;--console-color-blue:#00a;--console-color-magenta:#a0a;--console-color-cyan:#0aa;--console-color-gray:#aaa;--console-color-darkgray:#555;--console-color-lightred:#f55;--console-color-lightgreen:#5f5;--console-color-lightyellow:#ff5;--console-color-lightblue:#55f;--console-color-ightmagenta:#f5f;--console-color-lightcyan:#5ff;--console-color-white:#fff;&:focus{background-color:var(--sys-color-tonal-container);& ::selection{background-color:var(--sys-color-state-focus-select);color:currentcolor}}}.console-row-wrapper{display:flex;flex-direction:row}.theme-with-dark-background .console-message-wrapper{--console-color-red:rgb(237 78 76);--console-color-green:rgb(1 200 1);--console-color-yellow:rgb(210 192 87);--console-color-blue:rgb(39 116 240);--console-color-magenta:rgb(161 66 244);--console-color-cyan:rgb(18 181 203);--console-color-gray:rgb(207 208 208);--console-color-darkgray:rgb(137 137 137);--console-color-lightred:rgb(242 139 130);--console-color-lightgreen:rgb(161 247 181);--console-color-lightyellow:rgb(221 251 85);--console-color-lightblue:rgb(102 157 246);--console-color-lightmagenta:rgb(214 112 214);--console-color-lightcyan:rgb(132 240 255)}.console-message-wrapper.console-warning-level + .console-message-wrapper,\n.console-message-wrapper.console-error-level + .console-message-wrapper{& .console-message::before,\n & .console-user-command::before{display:none!important}}.console-message-wrapper:not(.console-error-level, .console-warning-level){& .console-message::before,\n & .console-user-command::before{width:calc(100% - 25px);content:"";display:block;position:absolute;top:-2px;border-top:1px solid var(--sys-color-divider)}&:first-of-type .console-message::before,\n &:first-of-type .console-user-command::before{display:none}}.console-message-wrapper.console-adjacent-user-command-result:not(.console-error-level, .console-warning-level){border-top-width:0}.console-message-wrapper:focus + .console-message-wrapper{border-top-color:transparent}.console-message-wrapper.console-adjacent-user-command-result:not(.console-error-level, .console-warning-level):focus{border-top-width:1px}.console-message-wrapper.console-adjacent-user-command-result:not(.console-error-level, .console-warning-level):focus .console-message{padding-top:2px;min-height:16px}.console-message-wrapper.console-adjacent-user-command-result:not(.console-error-level, .console-warning-level):focus .command-result-icon{top:3px}.console-message-wrapper .nesting-level-marker{width:14px;flex:0 0 auto;position:relative;margin-bottom:-1px;margin-top:-1px;background-color:var(--sys-color-cdt-base-container)}.console-message-wrapper .nesting-level-marker + .console-message::after{position:absolute;left:-30px;top:0;width:6px;height:100%;box-sizing:border-box;background-color:var(--sys-color-surface-yellow);border-top-left-radius:5px;border-bottom-left-radius:5px;content:""}.console-error-level{background-color:var(--sys-color-surface-error);--message-corner-rounder-background:var(--sys-color-surface-error)}.console-warning-level{background-color:var(--sys-color-surface-yellow);--message-corner-rounder-background:var(--sys-color-surface-yellow)}.console-view-object-properties-section{padding:0;position:relative;vertical-align:baseline;color:inherit;display:inline-block;overflow-wrap:break-word;max-width:100%}.info-note{background-color:var(--sys-color-tonal-container)}.info-note::before{content:"i"}.console-view-object-properties-section:not(.expanded) .info-note{display:none}.console-system-type.console-info-level{color:var(--sys-color-primary)}#console-messages .link{cursor:pointer;text-decoration:underline}#console-messages .link,\n#console-messages .devtools-link:not(.invalid-link){color:var(--sys-color-primary);word-break:break-all}#console-messages .devtools-link.ignore-list-link{opacity:60%}#console-messages .devtools-link:focus-visible{background-color:transparent}#console-messages .resource-links{margin-top:-1px;margin-bottom:-2px}.console-object-preview{white-space:normal;word-wrap:break-word;font-style:italic}.console-object-preview .name{flex-shrink:0}.console-message-text{.object-value-node{display:inline-block}.object-value-string,\n .object-value-regexp,\n .object-value-symbol{white-space:pre-wrap;word-break:break-all}.formatted-stack-frame:has(.ignore-list-link){display:var(--display-ignored-formatted-stack-frame);opacity:60%;& + .formatted-builtin-stack-frame{display:var(--display-ignored-formatted-stack-frame);opacity:60%}}}.console-message-stack-trace-wrapper{--override-display-stack-preview-toggle-link:none;flex:1 1 auto;display:flex;flex-direction:column;align-items:stretch;&:has(div > .stack-preview-container.show-hidden-rows){--display-ignored-formatted-stack-frame:inherit}&:has(.formatted-stack-frame .ignore-list-link):has(.formatted-stack-frame .devtools-link:not(.ignore-list-link)){--override-display-stack-preview-toggle-link:table-row;--override-display-stack-preview-hidden-div:block;&:not(:has(div > .stack-preview-container.show-hidden-rows)){--display-ignored-formatted-stack-frame:none}}& > .hidden-stack-trace{display:var(--override-display-stack-preview-hidden-div,none);--override-display-stack-preview-tbody:none}}.repeated-message .console-message-stack-trace-toggle,\n.repeated-message > .console-message-text{flex:1}.console-warning-level .console-message-text{color:var(--sys-color-on-surface-yellow)}.console-error-level .console-message-text,\n.console-error-level .console-view-object-properties-section{color:var(--override-error-text-color)!important}.console-message-formatted-table{clear:both}.console-message .source-code{line-height:1.2}.console-message-anchor{float:right;text-align:right;max-width:100%;margin-left:4px}.cookie-report-anchor{margin-top:-3px;margin-bottom:-5px}.console-message-nowrap-below,\n.console-message-nowrap-below div,\n.console-message-nowrap-below span{white-space:nowrap!important}.object-state-note{display:inline-block;width:11px;height:11px;color:var(--sys-color-on-tonal-container);text-align:center;border-radius:3px;line-height:13px;margin:0 6px;font-size:9px}.console-object{white-space:pre-wrap;word-break:break-all}.console-message-stack-trace-wrapper > *{flex:none}.console-message-expand-icon{margin-bottom:-4px}.console-searchable-view{max-height:100%}.console-view-pinpane{flex:none;max-height:50%}.message-count{width:0;height:0}devtools-console-insight{margin:9px 22px 11px 24px}.hover-button{--width:24px;align-items:center;border-radius:50%;border:none;box-shadow:0 1px 3px 1px rgb(0 0 0/15%),0 1px 2px 0 rgb(0 0 0/30%);box-sizing:border-box;background-color:var(--sys-color-tonal-container);color:var(--sys-color-on-tonal-container);font:var(--sys-typescale-body4-medium);height:var(--width);justify-content:center;margin:0;max-height:var(--width);max-width:var(--width);min-height:var(--width);min-width:var(--width);overflow:hidden;padding:var(--sys-size-3) var(--sys-size-4);position:absolute;right:6px;display:none;width:var(--width);z-index:1;.theme-with-dark-background &{border:1px solid var(--sys-color-neutral-outline);background-color:var(--sys-color-primary);color:var(--sys-color-on-primary)}& devtools-icon{box-sizing:border-box;flex-shrink:0;height:var(--sys-size-8);min-height:var(--sys-size-8);min-width:var(--sys-size-8);width:var(--sys-size-8);--devtools-icon-color:var(--sys-color-on-tonal-container)}.theme-with-dark-background & devtools-icon{--devtools-icon-color:var(--sys-color-on-primary)}}.hover-button:focus,\n.hover-button:hover{border-radius:4px;max-width:200px;transition:max-width var(--sys-motion-duration-short4) var(--sys-motion-easing-emphasized),border-radius 50ms linear;width:fit-content;gap:var(--sys-size-3)}.hover-button:focus-visible{outline:2px solid var(--sys-color-primary);outline-offset:2px}.button-label{display:block;overflow:hidden;white-space:nowrap;& div{display:inline-block;vertical-align:-1px}}.console-message-wrapper:not(.has-insight){&:hover,\n &:focus,\n &.console-selected{.hover-button{display:flex;&:focus,\n &:hover{display:inline-flex}}}}@media (forced-colors: active){.console-message-expand-icon,\n .console-warning-level .expand-group-icon{forced-color-adjust:none;color:ButtonText}.console-message-wrapper:focus,\n .console-message-wrapper:focus:last-of-type{forced-color-adjust:none;background-color:Highlight;border-top-color:Highlight;border-bottom-color:Highlight}.console-message-wrapper:focus *,\n .console-message-wrapper:focus:last-of-type *,\n .console-message-wrapper:focus .devtools-link,\n .console-message-wrapper:focus:last-of-type .devtools-link{color:HighlightText!important}#console-messages .devtools-link,\n #console-messages .devtools-link:hover{color:linktext}#console-messages .link:focus-visible,\n #console-messages .devtools-link:focus-visible{background:Highlight;color:HighlightText}.console-message-wrapper:focus devtools-icon{color:HighlightText}.console-message-wrapper.console-error-level:focus,\n .console-message-wrapper.console-error-level:focus:last-of-type{--override-error-text-color:HighlightText}}\n/*# sourceURL=${import.meta.resolve("./consoleView.css")} */\n`};function re(e){return"native"===e?"native":"eval"===e?"eval":""===e?"empty url":e.startsWith?.("address at ")?"address at":null}function ae(e){return/^\s*... skipping \d+ frames$/.exec(e)?"skipping x frames":null}function le(t,s){if(!/^[\w.]*Error\b/.test(s))return null;const n=t.debuggerModel(),o=t.target().inspectedURL(),i=s.split("\n"),r=[],a=new Set;for(const t of i){const i=/^\s*at\s(async\s)?/.exec(t);if(!i){if(r.length&&r[r.length-1].isCallFrame){const e=ae(t);if(null!==e){a.add(e),r[r.length-1].link?r.push({line:t,isCallFrame:!1}):r[r.length-1].line+=`\n${t}`;continue}return m.rnPerfMetrics.stackTraceSymbolicationFailed(s,t,'"at (url)" not found'),null}r.push({line:t});continue}const l=!0;let c=i[0].length,d=t.length,h=!1;for(;")"===t[d-1];)for(d--,h=!0;;){if(c=t.indexOf(" (",c),c<0)return m.rnPerfMetrics.stackTraceSymbolicationFailed(s,t,'left "(" not found'),null;if(c+=2,!t.substring(c).startsWith("eval at "))break;if(c+=8,d=t.lastIndexOf(", ",d)-1,d<0)return m.rnPerfMetrics.stackTraceSymbolicationFailed(s,t,'right "(" not found'),null}const u=t.substring(c,d),p=e.ParsedURL.ParsedURL.splitLineAndColumn(u),g=re(p.url);if(null!==g&&a.add(g),""===p.url||null!==g){r.length&&r[r.length-1].isCallFrame&&!r[r.length-1].link?r[r.length-1].line+=`\n${t}`:r.push({line:t,isCallFrame:l});continue}let f=ce(n,p.url);if(!f&&e.ParsedURL.ParsedURL.isRelativeURL(p.url)&&(f=ce(n,e.ParsedURL.ParsedURL.completeURL(o,p.url))),!f)return m.rnPerfMetrics.stackTraceSymbolicationFailed(s,t,"url parsing failed"),null;r.push({line:t,isCallFrame:l,link:{url:f,prefix:t.substring(0,c),suffix:t.substring(d),enclosedInBraces:h,lineNumber:p.lineNumber,columnNumber:p.columnNumber}})}return r?.length&&m.rnPerfMetrics.stackTraceSymbolicationSucceeded(Array.from(a)),r}function ce(t,s){if(!s)return null;if(e.ParsedURL.ParsedURL.isValidUrlString(s))return s;if(t.scriptsForSourceURL(s).length)return s;const n=new URL(s,"file://");return t.scriptsForSourceURL(n.href).length?n.href:null}function de(e,t){for(const s of e){const e=t.callFrames.find((e=>he(s,e)));e&&s.link&&(s.link.scriptId=e.scriptId)}}function he(e,t){if(!e.link)return!1;const{url:s,lineNumber:n,columnNumber:o}=e.link;return s===t.url&&n===t.lineNumber&&o===t.columnNumber}var ue=Object.freeze({__proto__:null,augmentErrorStackWithScriptIds:de,parseSourcePositionsFromErrorStack:le});const me={consoleclearWasPreventedDueTo:"`console.clear()` was prevented due to 'Preserve log'",consoleWasCleared:"Console was cleared",clearAllMessagesWithS:"Clear all messages with {PH1}",assertionFailed:"Assertion failed: ",violationS:"`[Violation]` {PH1}",interventionS:"`[Intervention]` {PH1}",deprecationS:"`[Deprecation]` {PH1}",thisValueWillNotBeCollectedUntil:"This value will not be collected until console is cleared.",thisValueWasEvaluatedUponFirst:"This value was evaluated upon first expanding. It may have changed since then.",functionWasResolvedFromBound:"Function was resolved from bound function.",exception:"",warning:"Warning",error:"Error",logpoint:"Logpoint",cndBreakpoint:"Conditional Breakpoint",repeatS:"{n, plural, =1 {Repeated # time} other {Repeated # times}}",warningS:"{n, plural, =1 {Warning, Repeated # time} other {Warning, Repeated # times}}",errorS:"{n, plural, =1 {Error, Repeated # time} other {Error, Repeated # times}}",url:"",tookNms:"took ms",someEvent:" event",Mxx:" M",attribute:"",index:"(index)",value:"Value",console:"Console",stackMessageExpanded:"Stack table expanded",stackMessageCollapsed:"Stack table collapsed",explainThisError:"Understand this error",explainThisWarning:"Understand this warning",explainThisMessage:"Understand this message",explainThisErrorWithAI:"Understand this error. Powered by AI.",explainThisWarningWithAI:"Understand this warning. Powered by AI.",explainThisMessageWithAI:"Understand this message. Powered by AI",SeeIssueInCookieReport:"Click to open privacy and security panel and show third-party cookie report"},pe=t.i18n.registerUIStrings("panels/console/ConsoleViewMessage.ts",me),ge=t.i18n.getLocalizedString.bind(void 0,pe),fe=new WeakMap,ve=e=>fe.get(e),be=(e,t)=>{const s=e.indexOf("\n"),n=-1===s?e:e.substring(0,s),o=-1===s?"":e.substring(s);return e=`${n}. ${t}${o}`},Ce=e=>t=>t instanceof n.RemoteObject.RemoteObject?t:e?"object"==typeof t?e.createRemoteObject(t):e.createRemoteObjectFromPrimitiveValue(t):n.RemoteObject.RemoteObject.fromLocalObject(t),xe="explain.console-message.hover",we=new IntersectionObserver((e=>{for(const t of e)t.intersectionRatio>0&&m.userMetrics.actionTaken(m.UserMetrics.Action.InsightHoverButtonShown)}));class Se{message;linkifier;repeatCountInternal;closeGroupDecorationCount;consoleGroupInternal;selectableChildren;messageResized;elementInternal;consoleRowWrapper=null;previewFormatter;searchRegexInternal;messageIcon;traceExpanded;expandTrace;anchorElement;contentElementInternal;nestingLevelMarkers;searchHighlightNodes;searchHighlightNodeChanges;isVisibleInternal;cachedHeight;messagePrefix;timestampElement;inSimilarGroup;similarGroupMarker;lastInSimilarGroup;groupKeyInternal;repeatCountElement;requestResolver;issueResolver;#e=!1;#t=Promise.resolve();constructor(e,t,s,n,o){this.message=e,this.linkifier=t,this.requestResolver=s,this.issueResolver=n,this.repeatCountInternal=1,this.closeGroupDecorationCount=0,this.selectableChildren=[],this.messageResized=o,this.elementInternal=null,this.previewFormatter=new c.RemoteObjectPreviewFormatter.RemoteObjectPreviewFormatter,this.searchRegexInternal=null,this.messageIcon=null,this.traceExpanded=!1,this.expandTrace=null,this.anchorElement=null,this.contentElementInternal=null,this.nestingLevelMarkers=null,this.searchHighlightNodes=[],this.searchHighlightNodeChanges=[],this.isVisibleInternal=!1,this.cachedHeight=0,this.messagePrefix="",this.timestampElement=null,this.inSimilarGroup=!1,this.similarGroupMarker=null,this.lastInSimilarGroup=!1,this.groupKeyInternal="",this.repeatCountElement=null,this.consoleGroupInternal=null}setInsight(e){this.elementInternal?.querySelector("devtools-console-insight")?.remove(),this.elementInternal?.append(e),this.elementInternal?.classList.toggle("has-insight",!0),e.addEventListener("close",(()=>{m.userMetrics.actionTaken(m.UserMetrics.Action.InsightClosed),this.elementInternal?.classList.toggle("has-insight",!1),this.elementInternal?.removeChild(e)}),{once:!0})}element(){return this.toMessageElement()}wasShown(){this.isVisibleInternal=!0}onResize(){}willHide(){this.isVisibleInternal=!1,this.cachedHeight=this.element().offsetHeight}isVisible(){return this.isVisibleInternal}fastHeight(){return this.cachedHeight?this.cachedHeight:this.approximateFastHeight()}approximateFastHeight(){return 19}consoleMessage(){return this.message}formatErrorStackPromiseForTest(){return this.#t}buildMessage(){let t,s=this.message.messageText;if(this.message.source===e.Console.FrontendMessageSource.ConsoleAPI)switch(this.message.type){case"trace":t=this.format(this.message.parameters||["console.trace"]);break;case"clear":t=document.createElement("span"),t.classList.add("console-info"),e.Settings.Settings.instance().moduleSetting("preserve-console-log").get()?t.textContent=ge(me.consoleclearWasPreventedDueTo):t.textContent=ge(me.consoleWasCleared),o.Tooltip.Tooltip.install(t,ge(me.clearAllMessagesWithS,{PH1:String(o.ShortcutRegistry.ShortcutRegistry.instance().shortcutTitleForAction("console.clear"))}));break;case"dir":{const e=["%O",this.message.parameters?this.message.parameters[0]:void 0];t=this.format(e);break}case"profile":case"profileEnd":t=this.format([s]);break;default:{if("assert"===this.message.type&&(this.messagePrefix=ge(me.assertionFailed)),this.message.parameters&&1===this.message.parameters.length){const e=this.message.parameters[0];"string"!=typeof e&&"string"===e.type&&(t=this.tryFormatAsError(e.value))}const e=this.message.parameters||[s];t=t||this.format(e)}}else if("network"===this.message.source)t=this.formatAsNetworkRequest()||this.format([s]);else{const e=this.message.parameters&&s===this.message.parameters[0];"violation"===this.message.source?s=ge(me.violationS,{PH1:s}):"intervention"===this.message.source?s=ge(me.interventionS,{PH1:s}):"deprecation"===this.message.source&&(s=ge(me.deprecationS,{PH1:s}));const n=this.message.parameters||[s];e&&(n[0]=s),t=this.format(n)}t.classList.add("console-message-text");const n=document.createElement("span");if(n.classList.add("source-code"),this.anchorElement=this.buildMessageAnchor(),this.anchorElement&&n.appendChild(this.anchorElement),n.appendChild(t),"fusebox_preserve_log_rec"===this.message.context){const t=document.createElement("button");t.classList.add("devtools-link","text-button","link-style"),t.appendChild(t.ownerDocument.createTextNode("show settings")),t.addEventListener("click",(async()=>{await e.Revealer.reveal(e.Settings.Settings.instance().moduleSetting("preserve-console-log"))})),n.appendChild(t)}return n}formatAsNetworkRequest(){const e=g.NetworkLog.NetworkLog.requestForConsoleMessage(this.message);if(!e)return null;const t=document.createElement("span");if("error"===this.message.level){o.UIUtils.createTextChild(t,e.requestMethod+" ");const s=u.Linkifier.Linkifier.linkifyRevealable(e,e.url(),e.url(),void 0,void 0,"network-request");s.tabIndex=-1,this.selectableChildren.push({element:s,forceSelect:()=>s.focus()}),t.appendChild(s),e.failed&&o.UIUtils.createTextChildren(t," ",e.localizedFailDescription||""),0!==e.statusCode&&o.UIUtils.createTextChildren(t," ",String(e.statusCode));const n=e.getInferredStatusText();n&&o.UIUtils.createTextChildren(t," (",n,")")}else{const s=this.message.messageText,n=this.linkifyWithCustomLinkifier(s,((t,s,n,o)=>{const i=s===e.url()?u.Linkifier.Linkifier.linkifyRevealable(e,s,e.url(),void 0,void 0,"network-request"):u.Linkifier.Linkifier.linkifyURL(s,{text:t,lineNumber:n,columnNumber:o});return i.tabIndex=-1,this.selectableChildren.push({element:i,forceSelect:()=>i.focus()}),i}));t.appendChild(n)}return t}createAffectedResourceLinks(){const e=[],t=this.message.getAffectedResources()?.requestId;if(t){const s=new x.RequestLinkIcon.RequestLinkIcon;s.classList.add("resource-links"),s.data={affectedRequest:{requestId:t},requestResolver:this.requestResolver,displayURL:!1},e.push(s)}const s=this.message.getAffectedResources()?.issueId;if(s){const t=new C.IssueLinkIcon.IssueLinkIcon;t.classList.add("resource-links"),t.data={issueId:s,issueResolver:this.issueResolver},e.push(t)}return e}#s(t){const s=new v.Button.Button;s.data={size:"SMALL",variant:"icon",iconName:"cookie",jslogContext:"privacy",title:ge(me.SeeIssueInCookieReport)},s.addEventListener("click",(()=>{e.Revealer.reveal(new S.CookieReportView.CookieReportView)})),t.appendChild(s)}#n(){const e=g.NetworkLog.NetworkLog.requestForConsoleMessage(this.message);if(e?.resourceType().isStyleSheet())return m.UserMetrics.Action.StyleSheetInitiatorLinkClicked}buildMessageAnchor(){const e=this.message.runtimeModel();if(!e)return null;if(this.message.isCookieReportIssue&&r.Runtime.hostConfig.devToolsPrivacyUI?.enabled){const e=document.createElement("span");return e.classList.add("console-message-anchor","cookie-report-anchor"),this.#s(e),o.UIUtils.createTextChild(e," "),e}const t=(({stackFrameWithBreakpoint:t,scriptId:n,stackTrace:o,url:i,line:r,column:a})=>{const l=this.#n();return t?this.linkifier.maybeLinkifyConsoleCallFrame(e.target(),t,{inlineFrameIndex:0,revealBreakpoint:!0,userMetric:l}):n?this.linkifier.linkifyScriptLocation(e.target(),n,i||s.DevToolsPath.EmptyUrlString,r,{columnNumber:a,inlineFrameIndex:0,userMetric:l}):o?.callFrames.length?this.linkifier.linkifyStackTraceTopFrame(e.target(),o):i&&"undefined"!==i?this.linkifier.linkifyScriptLocation(e.target(),null,i,r,{columnNumber:a,inlineFrameIndex:0,userMetric:l}):null})(this.message);if(t){t.tabIndex=-1,this.selectableChildren.push({element:t,forceSelect:()=>t.focus()});const e=document.createElement("span");e.classList.add("console-message-anchor"),e.appendChild(t);for(const t of this.createAffectedResourceLinks())o.UIUtils.createTextChild(e," "),e.append(t);return o.UIUtils.createTextChild(e," "),e}return null}buildMessageWithStackTrace(t){const s=h.Icon.create("triangle-right","console-message-expand-icon"),{stackTraceElement:n,contentElement:i,messageElement:r,clickableElement:a,toggleElement:l}=this.buildMessageHelper(t.target(),this.message.stackTrace,s);let c;this.expandTrace=e=>{e?c=window.setTimeout((()=>{m.userMetrics.actionTaken(m.UserMetrics.Action.TraceExpanded)}),300):clearTimeout(c),s.name=e?"triangle-down":"triangle-right",n.classList.toggle("hidden-stack-trace",!e);const t=ge(e?me.stackMessageExpanded:me.stackMessageCollapsed);o.ARIAUtils.setLabel(i,`${r.textContent} ${t}`),o.ARIAUtils.alert(t),o.ARIAUtils.setExpanded(a,e),this.traceExpanded=e};return a.addEventListener("click",(e=>{o.UIUtils.isEditing()||i.hasSelection()||(this.expandTrace&&this.expandTrace(n.classList.contains("hidden-stack-trace")),e.consume())}),!1),"trace"===this.message.type&&e.Settings.Settings.instance().moduleSetting("console-trace-expand").get()&&this.expandTrace(!0),l._expandStackTraceForTest=this.expandTrace.bind(this,!0),l}buildMessageWithIgnoreLinks(){const{toggleElement:e}=this.buildMessageHelper(null,void 0,null);return e}buildMessageHelper(e,t,s){const n=document.createElement("div");n.classList.add("console-message-stack-trace-toggle");const i=n.createChild("div","console-message-stack-trace-wrapper"),r=this.buildMessage(),a=i.createChild("div");o.ARIAUtils.setExpanded(a,!1),s&&a.appendChild(s),a.tabIndex=-1,a.appendChild(r);const l=i.createChild("div"),c=u.JSPresentationUtils.buildStackTracePreviewContents(e,this.linkifier,{stackTrace:t,tabStops:void 0,widthConstrained:!0});l.appendChild(c.element);for(const e of c.links)this.selectableChildren.push({element:e,forceSelect:()=>e.focus()});return l.classList.add("hidden-stack-trace"),o.ARIAUtils.setLabel(i,`${r.textContent} ${ge(me.stackMessageCollapsed)}`),o.ARIAUtils.markAsGroup(l),{stackTraceElement:l,contentElement:i,messageElement:r,clickableElement:a,toggleElement:n}}format(e){const t=document.createElement("span");if(this.messagePrefix&&(t.createChild("span").textContent=this.messagePrefix),!e.length)return t;let s=e.map(Ce(this.message.runtimeModel()));const i="string"===n.RemoteObject.RemoteObject.type(s[0])&&(this.message.type!==n.ConsoleModel.FrontendMessageType.Result||"error"===this.message.level);i&&(s=this.formatWithSubstitutionString(s[0].description,s.slice(1),t),s.length&&o.UIUtils.createTextChild(t," "));for(let e=0;ePe()){const e=new c.ObjectPropertiesSection.ExpandableTextPropertyValue(document.createElement("span"),s,Ue());t.appendChild(e.element)}else o.UIUtils.createTextChild(t,s);return t.addEventListener("contextmenu",this.contextMenuEventFired.bind(this,e),!1),t}formatParameterAsTrustedType(e){const t=document.createElement("span"),s=document.createElement("span");return s.appendChild(this.formatParameterAsString(e)),s.classList.add("object-value-string"),o.UIUtils.createTextChild(t,`${e.className} `),t.appendChild(s),t}formatParameterAsObject(e,t){const s=document.createElement("span");if(s.classList.add("console-object"),t&&e.preview)s.classList.add("console-object-preview"),this.previewFormatter.appendObjectPreview(s,e.preview,!1),c.ObjectPropertiesSection.ObjectPropertiesSection.appendMemoryIcon(s,e);else if("function"===e.type){const t=s.createChild("span");c.ObjectPropertiesSection.ObjectPropertiesSection.formatObjectAsFunction(e,t,!1),s.classList.add("object-value-function")}else"trustedtype"===e.subtype?s.appendChild(this.formatParameterAsTrustedType(e)):o.UIUtils.createTextChild(s,e.description||"");if(!e.hasChildren||e.customPreview())return s;const i=s.createChild("span","object-state-note info-note");this.message.type===n.ConsoleModel.FrontendMessageType.QueryObjectResult?o.Tooltip.Tooltip.install(i,ge(me.thisValueWillNotBeCollectedUntil)):o.Tooltip.Tooltip.install(i,ge(me.thisValueWasEvaluatedUponFirst));const r=new c.ObjectPropertiesSection.ObjectPropertiesSection(e,s,this.linkifier);return r.element.classList.add("console-view-object-properties-section"),r.enableContextMenu(),r.setShowSelectionOnKeyboardFocus(!0,!0),this.selectableChildren.push(r),r.addEventListener(o.TreeOutline.Events.ElementAttached,this.messageResized),r.addEventListener(o.TreeOutline.Events.ElementExpanded,this.messageResized),r.addEventListener(o.TreeOutline.Events.ElementCollapsed,this.messageResized),r.element}formatParameterAsFunction(e,t){const s=document.createElement("span");return n.RemoteObject.RemoteFunction.objectAsFunction(e).targetFunction().then(function(n){const i=document.createElement("span"),r=c.ObjectPropertiesSection.ObjectPropertiesSection.formatObjectAsFunction(n,i,!0,t);if(s.appendChild(i),n!==e){const e=s.createChild("span","object-state-note info-note");o.Tooltip.Tooltip.install(e,ge(me.functionWasResolvedFromBound))}s.addEventListener("contextmenu",this.contextMenuEventFired.bind(this,e),!1),r.then((()=>this.formattedParameterAsFunctionForTest()))}.bind(this)),s}formattedParameterAsFunctionForTest(){}contextMenuEventFired(e,t){const s=new o.ContextMenu.ContextMenu(t);s.appendApplicableItems(e),s.show()}renderPropertyPreviewOrAccessor(e,t,s){return"accessor"===t.type?this.formatAsAccessorProperty(e,s.map((e=>e.name.toString())),!1):this.previewFormatter.renderPropertyPreview(t.type,"subtype"in t?t.subtype:void 0,null,t.value)}formatParameterAsNode(e){const t=document.createElement("span"),s=e.runtimeModel().target().model(n.DOMModel.DOMModel);return s?(s.pushObjectAsNodeToFrontend(e).then((async s=>{if(!s)return void t.appendChild(this.formatParameterAsObject(e,!1));const n=await o.UIUtils.Renderer.render(s);n?(n.tree&&(this.selectableChildren.push(n.tree),n.tree.addEventListener(o.TreeOutline.Events.ElementAttached,this.messageResized),n.tree.addEventListener(o.TreeOutline.Events.ElementExpanded,this.messageResized),n.tree.addEventListener(o.TreeOutline.Events.ElementCollapsed,this.messageResized)),t.appendChild(n.node)):t.appendChild(this.formatParameterAsObject(e,!1)),this.formattedParameterAsNodeForTest()})),t):t}formattedParameterAsNodeForTest(){}formatParameterAsString(e){const t=e.description??"",n=s.StringUtilities.formatAsJSLiteral(t),o=document.createElement("span");return o.addEventListener("contextmenu",this.contextMenuEventFired.bind(this,e),!1),o.appendChild(this.linkifyStringAsFragment(n)),o}formatParameterAsError(e){const t=document.createElement("span"),s=async(e,o=!1)=>{const i=n.RemoteObject.RemoteError.objectAsError(e),[r,a]=await Promise.all([i.exceptionDetails(),i.cause()]);let l=this.tryFormatAsError(i.errorStack,r);if(l||(l=document.createElement("span"),l.append(this.linkifyStringAsFragment(i.errorStack))),o){const e=document.createElement("div");e.append("Caused by: ",l),t.appendChild(e)}else t.appendChild(l);if(a&&"error"===a.subtype)await s(a,!0);else if(a&&"string"===a.type){const e=document.createElement("div");e.append(`Caused by: ${a.value}`),t.append(e)}};return this.#t=s(e),t}formatAsArrayEntry(e){return this.previewFormatter.renderPropertyPreview(e.type,e.subtype,e.className,e.description)}formatAsAccessorProperty(e,t,n){const i=c.ObjectPropertiesSection.ObjectPropertyTreeElement.createRemoteObjectAccessorPropertySpan(e,t,function(e){const t=e.wasThrown,r=e.object;if(!r)return;if(i.removeChildren(),t){const e=i.createChild("span");e.textContent=ge(me.exception),o.Tooltip.Tooltip.install(e,r.description)}else if(n)i.appendChild(this.formatAsArrayEntry(r));else{const e=100,t=r.type,n=r.subtype;let o="";"function"!==t&&r.description&&(o="string"===t||"regexp"===n||"trustedtype"===n?s.StringUtilities.trimMiddle(r.description,e):s.StringUtilities.trimEndWithMaxLength(r.description,e)),i.appendChild(this.previewFormatter.renderPropertyPreview(t,n,r.className,o))}}.bind(this));return i}formatWithSubstitutionString(e,t,s){const n=new Map,{tokens:o,args:i}=j(e,t);for(const e of o)switch(e.type){case"generic":s.append(this.formatParameter(e.value,!0,!1));break;case"optimal":s.append(this.formatParameter(e.value,!1,!0));break;case"string":if(0===n.size)s.append(this.linkifyStringAsFragment(e.value));else{const t=e.value.split("\n");for(let e=0;e0&&s.append(document.createElement("br"));const o=document.createElement("span");o.style.setProperty("contain","paint"),o.style.setProperty("display","inline-block"),o.style.setProperty("max-width","100%"),o.appendChild(this.linkifyStringAsFragment(t[e]));for(const[e,{value:t,priority:s}]of n)o.style.setProperty(e,t,s);s.append(o)}}break;case"style":O(n,e.value)}return i}matchesFilterRegex(e){e.lastIndex=0;const t=this.contentElement(),s=this.anchorElement?this.anchorElement.deepTextContent():"";return Boolean(s)&&e.test(s.trim())||e.test(t.deepTextContent().slice(s.length))}matchesFilterText(e){return this.contentElement().deepTextContent().toLowerCase().includes(e.toLowerCase())}updateTimestamp(){this.contentElementInternal&&(e.Settings.Settings.instance().moduleSetting("console-timestamps-enabled").get()?(this.timestampElement||(this.timestampElement=document.createElement("span"),this.timestampElement.classList.add("console-timestamp")),this.timestampElement.textContent=o.UIUtils.formatTimestamp(this.message.timestamp,!1)+" ",o.Tooltip.Tooltip.install(this.timestampElement,o.UIUtils.formatTimestamp(this.message.timestamp,!0)),this.contentElementInternal.insertBefore(this.timestampElement,this.contentElementInternal.firstChild)):this.timestampElement&&(this.timestampElement.remove(),this.timestampElement=null))}nestingLevel(){let e=0;for(let t=this.consoleGroup();null!==t;t=t.consoleGroup())e++;return e}setConsoleGroup(e){this.consoleGroupInternal=e}clearConsoleGroup(){this.consoleGroupInternal=null}consoleGroup(){return this.consoleGroupInternal}setInSimilarGroup(e,t){this.inSimilarGroup=e,this.lastInSimilarGroup=e&&Boolean(t),this.similarGroupMarker&&!e?(this.similarGroupMarker.remove(),this.similarGroupMarker=null):this.elementInternal&&!this.similarGroupMarker&&e&&(this.similarGroupMarker=document.createElement("div"),this.similarGroupMarker.classList.add("nesting-level-marker"),this.consoleRowWrapper?.insertBefore(this.similarGroupMarker,this.consoleRowWrapper.firstChild),this.similarGroupMarker.classList.toggle("group-closed",this.lastInSimilarGroup))}isLastInSimilarGroup(){return Boolean(this.inSimilarGroup)&&Boolean(this.lastInSimilarGroup)}resetCloseGroupDecorationCount(){this.closeGroupDecorationCount&&(this.closeGroupDecorationCount=0,this.updateCloseGroupDecorations())}incrementCloseGroupDecorationCount(){++this.closeGroupDecorationCount,this.updateCloseGroupDecorations()}updateCloseGroupDecorations(){if(this.nestingLevelMarkers)for(let e=0,t=this.nestingLevelMarkers.length;ee.element.hasFocus())):-1}onKeyDown(e){!o.UIUtils.isEditing()&&this.elementInternal&&this.elementInternal.hasFocus()&&!this.elementInternal.hasSelection()&&this.maybeHandleOnKeyDown(e)&&e.consume(!0)}maybeHandleOnKeyDown(e){const t=this.focusedChildIndex(),s=-1===t;if(this.expandTrace&&s&&("ArrowLeft"===e.key&&this.traceExpanded||"ArrowRight"===e.key&&!this.traceExpanded))return this.expandTrace(!this.traceExpanded),!0;if(!this.selectableChildren.length)return!1;if("ArrowLeft"===e.key)return this.elementInternal&&this.elementInternal.focus(),!0;if("ArrowRight"===e.key&&s&&this.selectNearestVisibleChild(0))return!0;if("ArrowUp"===e.key){const e=this.nearestVisibleChild(0);if(this.selectableChildren[t]===e&&e)return this.elementInternal&&this.elementInternal.focus(),!0;if(this.selectNearestVisibleChild(t-1,!0))return!0}if("ArrowDown"===e.key){if(s&&this.selectNearestVisibleChild(0))return!0;if(!s&&this.selectNearestVisibleChild(t+1))return!0}return!1}selectNearestVisibleChild(e,t){const s=this.nearestVisibleChild(e,t);return!!s&&(s.forceSelect(),!0)}nearestVisibleChild(e,t){const s=this.selectableChildren.length;if(e<0||e>=s)return null;const n=t?-1:1;let o=e;for(;!this.selectableChildren[o].element.offsetParent;)if(o+=n,o<0||o>=s)return null;return this.selectableChildren[o]}focusLastChildOrSelf(){this.elementInternal&&!this.selectNearestVisibleChild(this.selectableChildren.length-1,!0)&&this.elementInternal.focus()}setContentElement(e){console.assert(!this.contentElementInternal,"Cannot set content element twice"),this.contentElementInternal=e}getContentElement(){return this.contentElementInternal}contentElement(){if(this.contentElementInternal)return this.contentElementInternal;const e=document.createElement("div");e.classList.add("console-message"),this.messageIcon&&e.appendChild(this.messageIcon),this.contentElementInternal=e;const t=this.message.runtimeModel();let s;const n=Boolean(this.message.stackTrace)&&("network"===this.message.source||"violation"===this.message.source||"error"===this.message.level||"warning"===this.message.level||"trace"===this.message.type);return s=t&&n?this.buildMessageWithStackTrace(t):this.buildMessageWithIgnoreLinks(),e.appendChild(s),this.updateTimestamp(),this.contentElementInternal}toMessageElement(){return this.elementInternal||(this.elementInternal=document.createElement("div"),this.elementInternal.tabIndex=-1,this.elementInternal.addEventListener("keydown",this.onKeyDown.bind(this)),this.updateMessageElement(),this.elementInternal.classList.toggle("console-adjacent-user-command-result",this.#e)),this.elementInternal}updateMessageElement(){if(this.elementInternal){this.elementInternal.className="console-message-wrapper",this.elementInternal.setAttribute("jslog",`${d.item("console-message").track({click:!0,keydown:"ArrowUp|ArrowDown|ArrowLeft|ArrowRight|Enter|Space|Home|End"})}`),this.elementInternal.removeChildren(),this.consoleRowWrapper=this.elementInternal.createChild("div"),this.consoleRowWrapper.classList.add("console-row-wrapper"),this.message.isGroupStartMessage()&&this.elementInternal.classList.add("console-group-title"),this.message.source===e.Console.FrontendMessageSource.ConsoleAPI&&this.elementInternal.classList.add("console-from-api"),this.inSimilarGroup&&(this.similarGroupMarker=this.consoleRowWrapper.createChild("div","nesting-level-marker"),this.similarGroupMarker.classList.toggle("group-closed",this.lastInSimilarGroup)),this.nestingLevelMarkers=[];for(let e=0;e1&&this.showRepeatCountElement()}}shouldShowInsights(){return(this.message.source!==e.Console.FrontendMessageSource.ConsoleAPI||""!==this.message.stackTrace?.callFrames[0]?.url)&&(""!==this.message.messageText&&this.message.source!==e.Console.FrontendMessageSource.SELF_XSS&&("error"===this.message.level||"warning"===this.message.level))}getExplainLabel(){return"error"===this.message.level?ge(me.explainThisError):"warning"===this.message.level?ge(me.explainThisWarning):ge(me.explainThisMessage)}#i(){return"error"===this.message.level?ge(me.explainThisErrorWithAI):"warning"===this.message.level?ge(me.explainThisWarningWithAI):ge(me.explainThisMessageWithAI)}getExplainActionId(){return"error"===this.message.level?"explain.console-message.context.error":"warning"===this.message.level?"explain.console-message.context.warning":"explain.console-message.context.other"}#o(){const e=new h.Icon.Icon;e.data={iconName:"lightbulb-spark",color:"var(--devtools-icon-color)",width:"16px",height:"16px"};const t=document.createElement("button");t.append(e),t.onclick=e=>{e.stopPropagation(),o.Context.Context.instance().setFlavor(Se,this);o.ActionRegistry.ActionRegistry.instance().getAction(xe).execute()};const s=document.createElement("div");s.classList.add("button-label");const n=document.createElement("div");return n.innerText=this.getExplainLabel(),s.append(n),t.append(s),t.classList.add("hover-button"),t.ariaLabel=this.#i(),t.tabIndex=0,t.setAttribute("jslog",`${d.action(xe).track({click:!0})}`),we.observe(t),t}shouldRenderAsWarning(){return!("verbose"!==this.message.level&&"info"!==this.message.level||"violation"!==this.message.source&&"deprecation"!==this.message.source&&"intervention"!==this.message.source&&"recommendation"!==this.message.source)}updateMessageIcon(){this.messageIcon&&(this.messageIcon.remove(),this.messageIcon=null);let e="",t="",s="";"warning"===this.message.level?(e="var(--icon-warning)",t="warning-filled",s=ge(me.warning)):"error"===this.message.level?(e="var(--icon-error)",t="cross-circle-filled",s=ge(me.error)):this.message.originatesFromLogpoint?(t="console-logpoint",s=ge(me.logpoint)):this.message.originatesFromConditionalBreakpoint&&(t="console-conditional-breakpoint",s=ge(me.cndBreakpoint)),t&&(this.messageIcon=new h.Icon.Icon,this.messageIcon.data={iconName:t,color:e,width:"14px",height:"14px"},this.messageIcon.classList.add("message-level-icon"),this.contentElementInternal&&this.contentElementInternal.insertBefore(this.messageIcon,this.contentElementInternal.firstChild),o.ARIAUtils.setLabel(this.messageIcon,s))}setAdjacentUserCommandResult(e){this.#e=e,this.elementInternal?.classList.toggle("console-adjacent-user-command-result",this.#e)}repeatCount(){return this.repeatCountInternal||1}resetIncrementRepeatCount(){this.repeatCountInternal=1,this.repeatCountElement&&(this.repeatCountElement.remove(),this.contentElementInternal&&this.contentElementInternal.classList.remove("repeated-message"),this.repeatCountElement=null)}incrementRepeatCount(){this.repeatCountInternal++,this.showRepeatCountElement()}setRepeatCount(e){this.repeatCountInternal=e,this.showRepeatCountElement()}showRepeatCountElement(){if(!this.elementInternal)return;if(!this.repeatCountElement){switch(this.repeatCountElement=document.createElement("dt-small-bubble"),this.repeatCountElement.classList.add("console-message-repeat-count"),this.message.level){case"warning":this.repeatCountElement.type="warning";break;case"error":this.repeatCountElement.type="error";break;case"verbose":this.repeatCountElement.type="verbose";break;default:this.repeatCountElement.type="info"}this.shouldRenderAsWarning()&&(this.repeatCountElement.type="warning"),this.consoleRowWrapper?.insertBefore(this.repeatCountElement,this.contentElementInternal),this.contentElement().classList.add("repeated-message")}let e;this.repeatCountElement.textContent=`${this.repeatCountInternal}`,e="warning"===this.message.level?ge(me.warningS,{n:this.repeatCountInternal}):"error"===this.message.level?ge(me.errorS,{n:this.repeatCountInternal}):ge(me.repeatS,{n:this.repeatCountInternal}),o.ARIAUtils.setLabel(this.repeatCountElement,e)}get text(){return this.message.messageText}toExportString(){const e=[],t=this.contentElement().childTextNodes().map(u.Linkifier.Linkifier.untruncatedNodeText).join("");for(let s=0;se.uiSourceCodeForURL(t))).flat().filter((e=>!!e)).map((e=>i.scriptsForUISourceCode(e))).flat();if(r.length){const t=new n.DebuggerModel.Location(e,r[0].scriptId,s||0,o),a=await i.pluginManager.getFunctionInfo(r[0],t);return a&&"frames"in a?a:{frames:[]}}return{frames:[]}}async expandInlineStackFrames(e,t,s,n,o,i,r,a){const{frames:l}=await this.getInlineFrames(e,n,o,i);if(!l.length)return!1;for(let c=0;cu.focus()}),h.appendChild(u),h.appendChild(this.linkifyStringAsFragment(s)),h.classList.add("formatted-stack-frame"),r.insertBefore(h,a)}return!0}createScriptLocationLinkForSyntaxError(e,t){const{scriptId:s,lineNumber:n,columnNumber:o}=t;if(!s)return;const i=t.url||e.scriptForId(s)?.sourceURL;if(!i)return;const r=this.linkifier.linkifyScriptLocation(e.target(),t.scriptId||null,i,n,{columnNumber:o,inlineFrameIndex:0,showColumnNumber:!0});return r.tabIndex=-1,r}tryFormatAsError(e,t){const s=this.message.runtimeModel();if(!s)return null;const n=t?.exceptionMetaData?.issueSummary;"string"==typeof n&&(e=be(e,n));const o=le(s,e);if(!o?.length)return null;t?.stackTrace&&de(o,t.stackTrace);const i=s.debuggerModel(),r=document.createElement("span");for(let e=0;eh.focus()}),c.appendChild(h),c.appendChild(this.linkifyStringAsFragment(d)),c.classList.add("formatted-stack-frame"),r.appendChild(c),!a.enclosedInBraces)continue;const u=a.prefix.substring(0,a.prefix.lastIndexOf(" ",a.prefix.length-3)),m=this.selectableChildren.length-1;this.expandInlineStackFrames(i,u,d,a.url,a.lineNumber,a.columnNumber,r,c).then((e=>{e&&(r.removeChild(c),this.selectableChildren.splice(m,1))}))}if(m.rnPerfMetrics.isEnabled()){const e=r.querySelectorAll("[data-fallback-anchor='1']").values().map((e=>e.getAttribute("title")||"")).map((e=>e.replace(/\:\d+(?:\:\d+)?$/,""))).toArray();if(0===e.length)m.rnPerfMetrics.stackTraceFrameUrlResolutionSucceeded();else{const t=Array.from(new Set(e));m.rnPerfMetrics.stackTraceFrameUrlResolutionFailed(t)}}return r}linkifyWithCustomLinkifier(t,n){if(t.length>Pe()){const e=new c.ObjectPropertiesSection.ExpandableTextPropertyValue(document.createElement("span"),t,Ue()),s=document.createDocumentFragment();return s.appendChild(e.element),s}const o=document.createDocumentFragment(),i=Se.tokenizeMessageText(t);let r=!1;for(const t of i)if(t.text)switch(r&&(t.text=`blob:${t.text}`,r=!r),"'blob:"===t.text&&t===i[0]&&(r=!0,t.text="'"),t.type){case"url":{const i=t.text.startsWith("www.")?"http://"+t.text:t.text,r=e.ParsedURL.ParsedURL.splitLineAndColumn(i),a=e.ParsedURL.ParsedURL.removeWasmFunctionInfoFromURL(r.url);let l;l=r?n(t.text,a,r.lineNumber,r.columnNumber):n(t.text,s.DevToolsPath.EmptyUrlString),o.appendChild(l);break}default:o.appendChild(document.createTextNode(t.text))}return o}linkifyStringAsFragment(e){return this.linkifyWithCustomLinkifier(e,((e,t,s,n)=>{const o={text:e,lineNumber:s,columnNumber:n},i=u.Linkifier.Linkifier.linkifyURL(t,o);return i.tabIndex=-1,this.selectableChildren.push({element:i,forceSelect:()=>i.focus()}),i}))}static tokenizeMessageText(e){const{tokenizerRegexes:t,tokenizerTypes:s}=Me();if(e.length>Pe())return[{text:e,type:void 0}];return i.TextUtils.Utils.splitStringByRegexes(e,t).map((e=>({text:e.value,type:s[e.regexIndex]})))}groupKey(){return this.groupKeyInternal||(this.groupKeyInternal=this.message.groupCategoryKey()+":"+this.groupTitle()),this.groupKeyInternal}groupTitle(){return Se.tokenizeMessageText(this.message.messageText).reduce(((e,t)=>{let s=t.text;return"url"===t.type?s=ge(me.url):"time"===t.type?s=ge(me.tookNms):"event"===t.type?s=ge(me.someEvent):"milestone"===t.type?s=ge(me.Mxx):"autofill"===t.type&&(s=ge(me.attribute)),e+s}),"").replace(/[%]o/g,"")}}let Ie=null,ye=null;function Me(){if(!Ie||!ye){const e="\\u0000-\\u0020\\u007f-\\u009f",t=new RegExp("(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\\/\\/|data:|www\\.)[^\\s"+e+'"]{2,}[^\\s'+e+"\"')}\\],:;.!?]","u"),s=/(?:\/[\w\.-]*)+\:[\d]+/,n=/took [\d]+ms/,o=/'\w+' event/,i=/\sM[6-7]\d/,r=/\(suggested: \"[\w-]+\"\)/,a=new Map;return a.set(t,"url"),a.set(s,"url"),a.set(n,"time"),a.set(o,"event"),a.set(i,"milestone"),a.set(r,"autofill"),Ie=Array.from(a.keys()),ye=Array.from(a.values()),{tokenizerRegexes:Ie,tokenizerTypes:ye}}return{tokenizerRegexes:Ie,tokenizerTypes:ye}}class Ee extends Se{collapsedInternal;expandGroupIcon;onToggle;groupEndMessageInternal;constructor(e,t,s,n,o,i){console.assert(e.isGroupStartMessage()),super(e,t,s,n,i),this.collapsedInternal="startGroupCollapsed"===e.type,this.expandGroupIcon=null,this.onToggle=o,this.groupEndMessageInternal=null}setCollapsed(e){this.collapsedInternal=e,this.expandGroupIcon&&(this.expandGroupIcon.name=this.collapsedInternal?"triangle-right":"triangle-down"),this.onToggle.call(null)}collapsed(){return this.collapsedInternal}maybeHandleOnKeyDown(e){return-1===this.focusedChildIndex()&&("ArrowLeft"===e.key&&!this.collapsedInternal||"ArrowRight"===e.key&&this.collapsedInternal)?(this.setCollapsed(!this.collapsedInternal),!0):super.maybeHandleOnKeyDown(e)}toMessageElement(){let e=this.elementInternal||null;if(!e){e=super.toMessageElement();const t=this.collapsedInternal?"triangle-right":"triangle-down";this.expandGroupIcon=h.Icon.create(t,"expand-group-icon"),this.contentElement().tabIndex=-1,this.repeatCountElement?this.repeatCountElement.insertBefore(this.expandGroupIcon,this.repeatCountElement.firstChild):this.consoleRowWrapper?.insertBefore(this.expandGroupIcon,this.contentElementInternal),e.addEventListener("click",(()=>this.setCollapsed(!this.collapsedInternal)))}return e}showRepeatCountElement(){super.showRepeatCountElement(),this.repeatCountElement&&this.expandGroupIcon&&this.repeatCountElement.insertBefore(this.expandGroupIcon,this.repeatCountElement.firstChild)}messagesHidden(){if(this.collapsed())return!0;const e=this.consoleGroup();return Boolean(e?.messagesHidden())}setGroupEnd(e){if("endGroup"!==e.consoleMessage().type)throw new Error("Invalid console message as group end");if(null!==this.groupEndMessageInternal)throw new Error("Console group already has an end");this.groupEndMessageInternal=e}groupEnd(){return this.groupEndMessageInternal}}class ke extends Se{formattedCommand;constructor(e,t,s,n,o){super(e,t,s,n,o),this.formattedCommand=null}contentElement(){const e=this.getContentElement();if(e)return e;const t=document.createElement("div");this.setContentElement(t),t.classList.add("console-user-command");const n=new h.Icon.Icon;return n.data={iconName:"chevron-right",color:"var(--icon-default)",width:"16px",height:"16px"},n.classList.add("command-result-icon"),t.appendChild(n),fe.set(t,this),this.formattedCommand=document.createElement("span"),this.formattedCommand.classList.add("source-code"),this.formattedCommand.textContent=s.StringUtilities.replaceControlCharacters(this.text),t.appendChild(this.formattedCommand),this.formattedCommand.textContent.lengthe===n?ge(me.value):e.toString()));if(a.length&&(this.dataGrid=w.SortableDataGrid.SortableDataGrid.create(l,a,ge(me.console)),this.dataGrid)){this.dataGrid.setStriped(!0),this.dataGrid.setFocusable(!1);const t=document.createElement("span");t.classList.add("console-message-text");const n=t.createChild("div","console-message-formatted-table"),o=n.createChild("span");n.appendChild(this.formatParameter(s,!0,!1));const i=o.attachShadow({mode:"open"}),r=this.dataGrid.asWidget();r.markAsRoot(),r.show(i),r.registerRequiredCSS(ie,N),e.appendChild(t),this.dataGrid.renderInline()}return e}approximateFastHeight(){const e=this.message.parameters?.[0];return e&&"string"!=typeof e&&e.preview?19*e.preview.properties.length:19}}const Le=1e4;let Re=1e4,Ae=5e3;const Pe=()=>Re,Ue=()=>Ae;var Be=Object.freeze({__proto__:null,ConsoleCommand:ke,ConsoleCommandResult:Te,ConsoleGroupViewMessage:Ee,ConsoleTableMessageView:Fe,ConsoleViewMessage:Se,MaxLengthForLinks:40,concatErrorDescriptionAndIssueSummary:be,getLongStringVisibleLength:Ue,getMaxTokenizableStringLength:Pe,getMessageForElement:ve,setLongStringVisibleLength:e=>{Ae=e},setMaxTokenizableStringLength:e=>{Re=e}});class He{element;topGapElement;topGapElementActive;contentElementInternal;bottomGapElement;bottomGapElementActive;provider;virtualSelectedIndex;firstActiveIndex;lastActiveIndex;renderedItems;anchorSelection;headSelection;itemCount;cumulativeHeights;muteCopyHandler;observer;observerConfig;stickToBottomInternal;selectionIsBackward;lastSelectedElement;cachedProviderElements;constructor(e){this.element=document.createElement("div"),this.element.style.overflow="auto",this.topGapElement=this.element.createChild("div"),this.topGapElement.style.height="0px",this.topGapElement.style.color="transparent",this.topGapElementActive=!1,this.contentElementInternal=this.element.createChild("div"),this.bottomGapElement=this.element.createChild("div"),this.bottomGapElement.style.height="0px",this.bottomGapElement.style.color="transparent",this.bottomGapElementActive=!1,this.topGapElement.textContent="\ufeff",this.bottomGapElement.textContent="\ufeff",o.ARIAUtils.setHidden(this.topGapElement,!0),o.ARIAUtils.setHidden(this.bottomGapElement,!0),this.provider=e,this.element.addEventListener("scroll",this.onScroll.bind(this),!1),this.element.addEventListener("copy",this.onCopy.bind(this),!1),this.element.addEventListener("dragstart",this.onDragStart.bind(this),!1),this.contentElementInternal.addEventListener("focusin",this.onFocusIn.bind(this),!1),this.contentElementInternal.addEventListener("focusout",this.onFocusOut.bind(this),!1),this.contentElementInternal.addEventListener("keydown",this.onKeyDown.bind(this),!1),this.virtualSelectedIndex=-1,this.contentElementInternal.tabIndex=-1,this.firstActiveIndex=-1,this.lastActiveIndex=-1,this.renderedItems=[],this.anchorSelection=null,this.headSelection=null,this.itemCount=0,this.cumulativeHeights=new Int32Array(0),this.muteCopyHandler=!1,this.observer=new MutationObserver(this.refresh.bind(this)),this.observerConfig={childList:!0,subtree:!0},this.stickToBottomInternal=!1,this.selectionIsBackward=!1}stickToBottom(){return this.stickToBottomInternal}setStickToBottom(e){this.stickToBottomInternal=e,this.stickToBottomInternal?this.observer.observe(this.contentElementInternal,this.observerConfig):this.observer.disconnect()}hasVirtualSelection(){return-1!==this.virtualSelectedIndex}copyWithStyles(){this.muteCopyHandler=!0,this.element.ownerDocument.execCommand("copy"),this.muteCopyHandler=!1}onCopy(e){if(this.muteCopyHandler)return;const t=this.selectedText();t&&(e.preventDefault(),this.selectionContainsTable()?this.copyWithStyles():e.clipboardData&&e.clipboardData.setData("text/plain",t))}onFocusIn(e){const t=this.renderedItems.findIndex((t=>t.element().isSelfOrAncestor(e.target)));-1!==t&&(this.virtualSelectedIndex=this.firstActiveIndex+t);let s=!1;-1===this.virtualSelectedIndex&&this.isOutsideViewport(e.relatedTarget)&&e.target===this.contentElementInternal&&this.itemCount&&(s=!0,this.virtualSelectedIndex=this.itemCount-1,this.refresh(),this.scrollItemIntoView(this.virtualSelectedIndex)),this.updateFocusedItem(s)}onFocusOut(e){this.isOutsideViewport(e.relatedTarget)&&(this.virtualSelectedIndex=-1),this.updateFocusedItem()}isOutsideViewport(e){return null!==e&&!e.isSelfOrDescendant(this.contentElementInternal)}onDragStart(e){const t=this.selectedText();return!!t&&(e.dataTransfer&&(e.dataTransfer.clearData(),e.dataTransfer.setData("text/plain",t),e.dataTransfer.effectAllowed="copy"),!0)}onKeyDown(e){if(o.UIUtils.isEditing()||!this.itemCount||e.shiftKey)return;let t=!1;switch(e.key){case"ArrowUp":if(!(this.virtualSelectedIndex>0))return;t=!0,this.virtualSelectedIndex--;break;case"ArrowDown":if(!(this.virtualSelectedIndexthis.itemCount-1&&(this.virtualSelectedIndex=this.itemCount-1),this.rebuildCumulativeHeights(),this.refresh()}providerElement(e){this.cachedProviderElements||(this.cachedProviderElements=new Array(this.itemCount));let t=this.cachedProviderElements[e];return t||(t=this.provider.itemElement(e),this.cachedProviderElements[e]=t),t}rebuildCumulativeHeights(){const e=this.firstActiveIndex,t=this.lastActiveIndex;let s=0;this.cumulativeHeights=new Int32Array(this.itemCount);for(let n=0;n1)return void this.rebuildCumulativeHeights();if(t+=o,e+=n,Math.abs(e-t)>1)return void this.rebuildCumulativeHeights()}}cachedItemHeight(e){return 0===e?this.cumulativeHeights[0]:this.cumulativeHeights[e]-this.cumulativeHeights[e-1]}isSelectionBackwards(e){if(!e?.rangeCount||!e.anchorNode||!e.focusNode)return!1;const t=document.createRange();return t.setStart(e.anchorNode,e.anchorOffset),t.setEnd(e.focusNode,e.focusOffset),t.collapsed}createSelectionModel(e,t,s){return{item:e,node:t,offset:s}}updateSelectionModel(e){const t=e?.rangeCount?e.getRangeAt(0):null;if(!t||!e||e.isCollapsed||!this.element.hasSelection())return this.headSelection=null,this.anchorSelection=null,!1;let s=Number.MAX_VALUE,n=-1,o=!1;for(let e=0;ec.item?h:c):o?i?d=a?this.headSelection:this.anchorSelection:r&&(h=a?this.anchorSelection:this.headSelection):(d=l,h=c),a?(this.anchorSelection=h,this.headSelection=d):(this.anchorSelection=d,this.headSelection=h),this.selectionIsBackward=a,!0}restoreSelection(e){if(!e||!this.anchorSelection||!this.headSelection)return;const t=(e,t)=>{if(this.firstActiveIndex<=e.item&&e.item<=this.lastActiveIndex)return{element:e.node,offset:e.offset};return{element:e.item!t.has(e)));for(let e=0;e0&&(s[s.length-1]=s[s.length-1].substring(0,e))}const i=this.providerElement(e.item),r=i?.element();if(r&&e.node?.isSelfOrDescendant(r)){const t=this.textOffsetInNode(r,e.node,e.offset);s[0]=s[0].substring(t)}return s.join("\n")}textOffsetInNode(e,t,s){const n=t.textContent?t.textContent.length:0;t.nodeType!==Node.TEXT_NODE&&(s0&&r!==n&&(s=r),o+s}onScroll(e){this.refresh()}firstVisibleIndex(){return this.cumulativeHeights.length?(this.rebuildCumulativeHeightsIfNeeded(),s.ArrayUtilities.lowerBound(this.cumulativeHeights,this.element.scrollTop+1,s.ArrayUtilities.DEFAULT_COMPARATOR)):-1}lastVisibleIndex(){if(!this.cumulativeHeights.length)return-1;this.rebuildCumulativeHeightsIfNeeded();const e=this.element.scrollTop+this.element.clientHeight,t=this.itemCount-1;return s.ArrayUtilities.lowerBound(this.cumulativeHeights,e,s.ArrayUtilities.DEFAULT_COMPARATOR,void 0,t)}renderedElementAt(e){return-1===e||ethis.lastActiveIndex?null:this.renderedItems[e-this.firstActiveIndex].element()}scrollItemIntoView(e,t){const s=this.firstVisibleIndex(),n=this.lastVisibleIndex();e>s&&e=n&&this.forceScrollItemToBeLast(e))}forceScrollItemToBeFirst(e){console.assert(e>=0&&e0?this.cumulativeHeights[e-1]:0,o.UIUtils.isScrolledToBottom(this.element)&&this.setStickToBottom(!0),this.refresh();const t=this.renderedElementAt(e);t&&t.scrollIntoView(!0)}forceScrollItemToBeLast(e){console.assert(e>=0&&e{this.isSidebarOpen="Both"===e.data,this.isSidebarOpen&&(this.userHasOpenedSidebarAtLeastOnce||(m.userMetrics.actionTaken(m.UserMetrics.Action.ConsoleSidebarOpened),this.userHasOpenedSidebarAtLeastOnce=!0),this.pendingSidebarMessages.forEach((e=>{this.sidebar.onMessageAdded(e)})),this.pendingSidebarMessages=[]),this.filter.setLevelMenuOverridden(this.isSidebarOpen),this.onFilterChanged()})),this.contentsElement=this.searchableViewInternal.element,this.element.classList.add("console-view"),this.visibleViewMessages=[],this.hiddenByFilterCount=0,this.shouldBeHiddenCache=new Set,this.groupableMessages=new Map,this.groupableMessageTitle=new Map,this.shortcuts=new Map,this.regexMatchRanges=[],this.consoleContextSelector=new L,this.filterStatusText=new o.Toolbar.ToolbarText,this.filterStatusText.element.classList.add("dimmed"),this.showSettingsPaneSetting=e.Settings.Settings.instance().createSetting("console-show-settings-toolbar",!1),this.showSettingsPaneButton=new o.Toolbar.ToolbarSettingToggle(this.showSettingsPaneSetting,"gear",Ne(Oe.consoleSettings),"gear-filled"),this.showSettingsPaneButton.element.setAttribute("jslog",`${d.toggleSubpane("console-settings").track({click:!0})}`),this.progressToolbarItem=new o.Toolbar.ToolbarItem(document.createElement("div")),this.groupSimilarSetting=e.Settings.Settings.instance().moduleSetting("console-group-similar"),this.groupSimilarSetting.addChangeListener((()=>this.updateMessageList())),this.showCorsErrorsSetting=e.Settings.Settings.instance().moduleSetting("console-shows-cors-errors"),this.showCorsErrorsSetting.addChangeListener((()=>this.updateMessageList()));const s=this.consoleToolbarContainer.createChild("devtools-toolbar","console-main-toolbar");s.setAttribute("jslog",`${d.toolbar()}`),s.role="presentation",s.wrappable=!0,s.appendToolbarItem(this.splitWidget.createShowHideSidebarButton(Ne(Oe.showConsoleSidebar),Ne(Oe.hideConsoleSidebar),Ne(Oe.consoleSidebarShown),Ne(Oe.consoleSidebarHidden),"console-sidebar")),s.appendToolbarItem(o.Toolbar.Toolbar.createActionButton("console.clear")),s.appendSeparator(),s.appendToolbarItem(this.consoleContextSelector.toolbarItem()),s.appendSeparator(),s.appendSeparator(),s.appendToolbarItem(this.filter.textFilterUI),s.appendToolbarItem(this.filter.levelMenuButton),s.appendToolbarItem(this.progressToolbarItem),s.appendSeparator(),this.issueCounter=new C.IssueCounter.IssueCounter,this.issueCounter.id="console-issues-counter",this.issueCounter.setAttribute("jslog",`${d.counter("issues").track({click:!0})}`);const i=new o.Toolbar.ToolbarItem(this.issueCounter);this.issueCounter.data={clickHandler:()=>{m.userMetrics.issuesPanelOpenedFrom(2),o.ViewManager.ViewManager.instance().showView("issues-pane")},issuesManager:M.IssuesManager.IssuesManager.instance(),accessibleName:Ne(Oe.issueToolbarTooltipGeneral),displayMode:"OmitEmpty"},s.appendToolbarItem(i),s.appendSeparator(),s.appendToolbarItem(this.filterStatusText),s.appendToolbarItem(this.showSettingsPaneButton);const r=e.Settings.Settings.instance().moduleSetting("monitoring-xhr-enabled");this.timestampsSetting=e.Settings.Settings.instance().moduleSetting("console-timestamps-enabled"),this.consoleHistoryAutocompleteSetting=e.Settings.Settings.instance().moduleSetting("console-history-autocomplete"),this.selfXssWarningDisabledSetting=e.Settings.Settings.instance().createSetting("disable-self-xss-warning",!1,"Synced");const a=this.contentsElement.createChild("div","console-settings-pane");o.ARIAUtils.setLabel(a,Ne(Oe.consoleSettings)),o.ARIAUtils.markAsGroup(a);const l=e.Settings.Settings.instance().moduleSetting("preserve-console-log"),c=e.Settings.Settings.instance().moduleSetting("console-user-activation-eval");a.append(o.SettingsUI.createSettingCheckbox(Ne(Oe.hideNetwork),this.filter.hideNetworkMessagesSetting,this.filter.hideNetworkMessagesSetting.title()),o.SettingsUI.createSettingCheckbox(Ne(Oe.logXMLHttpRequests),r),o.SettingsUI.createSettingCheckbox(Ne(Oe.preserveLog),l,Ne(Oe.doNotClearLogOnPageReload)),o.SettingsUI.createSettingCheckbox(Ne(Oe.selectedContextOnly),this.filter.filterByExecutionContextSetting,Ne(Oe.onlyShowMessagesFromTheCurrentContext)),o.SettingsUI.createSettingCheckbox(this.consoleHistoryAutocompleteSetting.title(),this.consoleHistoryAutocompleteSetting,Ne(Oe.autocompleteFromHistory)),o.SettingsUI.createSettingCheckbox(this.groupSimilarSetting.title(),this.groupSimilarSetting,Ne(Oe.groupSimilarMessagesInConsole)),o.SettingsUI.createSettingCheckbox(c.title(),c,Ne(Oe.treatEvaluationAsUserActivation)),o.SettingsUI.createSettingCheckbox(this.showCorsErrorsSetting.title(),this.showCorsErrorsSetting,Ne(Oe.showCorsErrorsInConsole))),this.showSettingsPaneSetting.get()||a.classList.add("hidden"),this.showSettingsPaneSetting.addChangeListener((()=>a.classList.toggle("hidden",!this.showSettingsPaneSetting.get()))),this.viewport=new He(this),this.viewport.setStickToBottom(!0),this.viewport.contentElement().classList.add("console-group","console-group-messages"),this.contentsElement.appendChild(this.viewport.element),this.messagesElement=this.viewport.element,this.messagesElement.id="console-messages",this.messagesElement.classList.add("monospace"),this.messagesElement.addEventListener("click",this.messagesClicked.bind(this),!1),["paste","clipboard-paste","drop"].forEach((e=>{this.messagesElement.addEventListener(e,this.messagesPasted.bind(this),!0)})),this.messagesCountElement=this.consoleToolbarContainer.createChild("div","message-count"),o.ARIAUtils.markAsPoliteLiveRegion(this.messagesCountElement,!1),this.viewportThrottler=new e.Throttler.Throttler(t),this.pendingBatchResize=!1,this.onMessageResizedBound=e=>{this.onMessageResized(e)},this.promptElement=this.messagesElement.createChild("div","source-code"),this.promptElement.id="console-prompt";const h=this.messagesElement.createChild("div","console-view-fix-select-all");h.textContent=".",o.ARIAUtils.setHidden(h,!0),this.registerShortcuts(),this.messagesElement.addEventListener("contextmenu",this.handleContextMenuEvent.bind(this),!1);const p=new e.Throttler.Throttler(100);this.linkifier=new u.Linkifier.Linkifier(40),this.linkifier.addEventListener("liveLocationUpdated",(()=>p.schedule((async()=>this.onFilterChanged())))),this.consoleMessages=[],this.consoleGroupStarts=[],this.prompt=new nt,this.prompt.show(this.promptElement),this.prompt.element.addEventListener("keydown",this.promptKeyDown.bind(this),!0),this.prompt.addEventListener("TextChanged",this.promptTextChanged,this),this.messagesElement.addEventListener("keydown",this.messagesKeyDown.bind(this),!1),this.prompt.element.addEventListener("focusin",(()=>{this.isScrolledToBottom()&&this.viewport.setStickToBottom(!0)})),this.consoleHistoryAutocompleteSetting.addChangeListener(this.consoleHistoryAutocompleteChanged,this),this.consoleHistoryAutocompleteChanged(),this.updateFilterStatus(),this.timestampsSetting.addChangeListener(this.consoleTimestampsSettingChanged,this),this.registerWithMessageSink(),o.Context.Context.instance().addFlavorChangeListener(n.RuntimeModel.ExecutionContext,this.executionContextChanged,this),this.messagesElement.addEventListener("mousedown",(e=>this.updateStickToBottomOnPointerDown(2===e.button)),!1),this.messagesElement.addEventListener("mouseup",this.updateStickToBottomOnPointerUp.bind(this),!1),this.messagesElement.addEventListener("mouseleave",this.updateStickToBottomOnPointerUp.bind(this),!1),this.messagesElement.addEventListener("wheel",this.updateStickToBottomOnWheel.bind(this),!1),this.messagesElement.addEventListener("touchstart",this.updateStickToBottomOnPointerDown.bind(this,!1),!1),this.messagesElement.addEventListener("touchend",this.updateStickToBottomOnPointerUp.bind(this),!1),this.messagesElement.addEventListener("touchcancel",this.updateStickToBottomOnPointerUp.bind(this),!1),n.TargetManager.TargetManager.instance().addModelListener(n.ConsoleModel.ConsoleModel,n.ConsoleModel.Events.ConsoleCleared,this.consoleCleared,this,{scoped:!0}),n.TargetManager.TargetManager.instance().addModelListener(n.ConsoleModel.ConsoleModel,n.ConsoleModel.Events.MessageAdded,this.onConsoleMessageAdded,this,{scoped:!0}),n.TargetManager.TargetManager.instance().addModelListener(n.ConsoleModel.ConsoleModel,n.ConsoleModel.Events.MessageUpdated,this.onConsoleMessageUpdated,this,{scoped:!0}),n.TargetManager.TargetManager.instance().addModelListener(n.ConsoleModel.ConsoleModel,n.ConsoleModel.Events.CommandEvaluated,this.commandEvaluated,this,{scoped:!0}),n.TargetManager.TargetManager.instance().observeModels(n.ConsoleModel.ConsoleModel,this,{scoped:!0});const g=M.IssuesManager.IssuesManager.instance();this.issueToolbarThrottle=new e.Throttler.Throttler(100),g.addEventListener("IssuesCountUpdated",this.#a)}static instance(e){return Ge&&!e?.forceNew||(Ge=new De(e?.viewportThrottlerTimeout??50)),Ge}static clearConsole(){n.ConsoleModel.ConsoleModel.requestClearMessages()}#l(){this.issueToolbarThrottle.schedule((async()=>this.updateIssuesToolbarItem())),this.issuesCountUpdatedForTest()}issuesCountUpdatedForTest(){}modelAdded(e){e.messages().forEach(this.addConsoleMessage,this)}modelRemoved(t){e.Settings.Settings.instance().moduleSetting("preserve-console-log").get()||t.target().outermostTarget()!==t.target()||this.consoleCleared()}onFilterChanged(){if(this.filter.currentFilter.levelsMask=this.isSidebarOpen?P.allLevelsFilterValue():this.filter.messageLevelFiltersSetting.get(),this.cancelBuildHiddenCache(),this.immediatelyFilterMessagesForTest){for(const e of this.consoleMessages)this.computeShouldMessageBeVisible(e);this.updateMessageList()}else this.buildHiddenCache(0,this.consoleMessages.slice())}setImmediatelyFilterMessagesForTest(){this.immediatelyFilterMessagesForTest=!0}searchableView(){return this.searchableViewInternal}clearHistory(){this.prompt.history().clear()}consoleHistoryAutocompleteChanged(){this.prompt.setAddCompletionsFromHistory(this.consoleHistoryAutocompleteSetting.get())}itemCount(){return this.visibleViewMessages.length}itemElement(e){return this.visibleViewMessages[e]}fastHeight(e){return this.visibleViewMessages[e].fastHeight()}minimumRowHeight(){return 16}registerWithMessageSink(){e.Console.Console.instance().messages().forEach(this.addSinkMessage,this),e.Console.Console.instance().addEventListener("messageAdded",(({data:e})=>{this.addSinkMessage(e)}),this)}addSinkMessage(e){let t="verbose";switch(e.level){case"info":t="info";break;case"error":t="error";break;case"warning":t="warning"}const s=e.source||"other",o=new n.ConsoleModel.ConsoleMessage(null,s,t,e.text,{type:n.ConsoleModel.FrontendMessageType.System,timestamp:e.timestamp});this.addConsoleMessage(o)}consoleTimestampsSettingChanged(){this.updateMessageList(),this.consoleMessages.forEach((e=>e.updateTimestamp())),this.groupableMessageTitle.forEach((e=>e.updateTimestamp()))}executionContextChanged(){this.prompt.clearAutocomplete()}willHide(){this.hidePromptSuggestBox()}wasShown(){if(super.wasShown(),this.#r){M.IssuesManager.IssuesManager.instance().addEventListener("IssuesCountUpdated",this.#a)}this.#r=!1,this.updateIssuesToolbarItem(),this.viewport.refresh()}focus(){this.viewport.hasVirtualSelection()?this.viewport.contentElement().focus():this.focusPrompt()}focusPrompt(){if(!this.prompt.hasFocus()){const e=this.viewport.stickToBottom(),t=this.viewport.element.scrollTop;this.prompt.focus(),this.viewport.setStickToBottom(e),this.viewport.element.scrollTop=t}}restoreScrollPositions(){this.viewport.stickToBottom()?this.immediatelyScrollToBottom():super.restoreScrollPositions()}onResize(){this.scheduleViewportRefresh(),this.hidePromptSuggestBox(),this.viewport.stickToBottom()&&this.immediatelyScrollToBottom();for(let e=0;e0?this.consoleMessages.length:s.ArrayUtilities.upperBound(this.consoleMessages,t,l);const i=o=5&&!this.selfXssWarningDisabledSetting.get()&&this.selfXssWarningDisabledSetting.set(!0);else if(e.type!==n.ConsoleModel.FrontendMessageType.Result){const n=s.ArrayUtilities.upperBound(this.consoleGroupStarts,t,l)-1;if(n>=0){!function e(t,s){const n=s.groupEnd();if(null!==n&&l(t,n)>0){const n=s.consoleGroup();if(null===n)return;return void e(t,n)}"endGroup"===t.consoleMessage().type?s.setGroupEnd(t):t.setConsoleGroup(s)}(t,this.consoleGroupStarts[n])}e.isGroupStartMessage()&&(o=s.ArrayUtilities.upperBound(this.consoleGroupStarts,t,l),this.consoleGroupStarts.splice(o,0,t))}this.filter.onMessageAdded(e),this.isSidebarOpen?this.sidebar.onMessageAdded(t):this.pendingSidebarMessages.push(t);let r=!1;const a=this.groupSimilarSetting.get();if(e.isGroupable()){const e=t.groupKey();r=a&&this.groupableMessages.has(e);let s=this.groupableMessages.get(e);s||(s=[],this.groupableMessages.set(e,s)),s.push(t)}function l(e,t){return(_e.get(e)||0)-(_e.get(t)||0)}this.computeShouldMessageBeVisible(t),r||i?this.needsFullUpdate=!0:(this.appendMessageToEnd(t,!a),this.updateFilterStatus(),this.searchableViewInternal.updateSearchMatchesCount(this.regexMatchRanges.length)),this.scheduleViewportRefresh(),this.consoleMessageAddedForTest(t)}onConsoleMessageUpdated(e){const t=e.data,s=ze.get(t);s&&(s.updateMessageElement(),this.computeShouldMessageBeVisible(s),this.updateMessageList())}consoleMessageAddedForTest(e){}shouldMessageBeVisible(e){return!this.shouldBeHiddenCache.has(e)}computeShouldMessageBeVisible(e){!this.filter.shouldBeVisible(e)||this.isSidebarOpen&&!this.sidebar.shouldBeVisible(e)?this.shouldBeHiddenCache.add(e):this.shouldBeHiddenCache.delete(e)}appendMessageToEnd(e,t){if("cors"===e.consoleMessage().category&&!this.showCorsErrorsSetting.get())return;const s=this.visibleViewMessages[this.visibleViewMessages.length-1];if("endGroup"===e.consoleMessage().type){if(s){const e=s.consoleGroup();e&&!e.messagesHidden()&&s.incrementCloseGroupDecorationCount()}return}if(!this.shouldMessageBeVisible(e))return void this.hiddenByFilterCount++;if(!t&&this.tryToCollapseMessages(e,this.visibleViewMessages[this.visibleViewMessages.length-1]))return;const n=e.consoleGroup();if(!n?.messagesHidden()){const t=e.consoleMessage().originatingMessage(),o=Boolean(t&&s?.consoleMessage()===t);e.setAdjacentUserCommandResult(o),function e(t,s){if(null===t)return;if(s.includes(t))return;const n=t.consoleGroup();n&&e(n,s);s.push(t)}(n,this.visibleViewMessages),this.visibleViewMessages.push(e),this.searchMessage(this.visibleViewMessages.length-1)}this.messageAppendedForTests()}messageAppendedForTests(){}createViewMessage(e){switch(e.type){case n.ConsoleModel.FrontendMessageType.Command:return new ke(e,this.linkifier,this.requestResolver,this.issueResolver,this.onMessageResizedBound);case n.ConsoleModel.FrontendMessageType.Result:return new Te(e,this.linkifier,this.requestResolver,this.issueResolver,this.onMessageResizedBound);case"startGroupCollapsed":case"startGroup":return new Ee(e,this.linkifier,this.requestResolver,this.issueResolver,this.updateMessageList.bind(this),this.onMessageResizedBound);case"table":return new Fe(e,this.linkifier,this.requestResolver,this.issueResolver,this.onMessageResizedBound);default:return new Se(e,this.linkifier,this.requestResolver,this.issueResolver,this.onMessageResizedBound)}}async onMessageResized(e){const t=e.data;if(this.pendingBatchResize||!t.treeOutline)return;this.pendingBatchResize=!0,await Promise.resolve();const s=t.treeOutline.element;this.viewport.setStickToBottom(this.isScrolledToBottom()),s.offsetHeight<=this.messagesElement.offsetHeight&&s.scrollIntoViewIfNeeded(),this.pendingBatchResize=!1}consoleCleared(){const e=this.viewport.element.hasFocus();this.cancelBuildHiddenCache(),this.currentMatchRangeIndex=-1,this.consoleMessages=[],this.groupableMessages.clear(),this.groupableMessageTitle.clear(),this.sidebar.clear(),this.pendingSidebarMessages=[],this.updateMessageList(),this.hidePromptSuggestBox(),this.viewport.setStickToBottom(!0),this.linkifier.reset(),this.filter.clear(),this.requestResolver.clear(),this.consoleGroupStarts=[],e&&this.prompt.focus(),o.ARIAUtils.alert(Ne(Oe.consoleCleared))}handleContextMenuEvent(t){const s=new o.ContextMenu.ContextMenu(t),i=t.target;if(i.isSelfOrDescendant(this.promptElement))return void s.show();const r=i.enclosingNodeOrSelfWithClass("console-message-wrapper"),a=r&&ve(r),l=a?a.consoleMessage():null;if(a&&o.Context.Context.instance().setFlavor(Se,a),l&&!a?.element()?.matches(".has-insight")&&a?.shouldShowInsights()&&s.headerSection().appendAction(a?.getExplainActionId(),void 0,!0),l&&l.url){const t=Ne(Oe.hideMessagesFromS,{PH1:new e.ParsedURL.ParsedURL(l.url).displayName});s.headerSection().appendItem(t,this.filter.addMessageURLFilter.bind(this.filter,l.url),{jslogContext:"hide-messages-from"})}if(s.defaultSection().appendAction("console.clear"),s.defaultSection().appendAction("console.clear.history"),s.saveSection().appendItem(Ne(Oe.copyConsole),this.copyConsole.bind(this),{jslogContext:"copy-console"}),s.saveSection().appendItem(Ne(Oe.saveAs),this.saveConsole.bind(this),{jslogContext:"save-as"}),this.element.hasSelection()&&s.clipboardSection().appendItem(Ne(Oe.copyVisibleStyledSelection),this.viewport.copyWithStyles.bind(this.viewport),{jslogContext:"copy-visible-styled-selection"}),l){const e=g.NetworkLog.NetworkLog.requestForConsoleMessage(l);e&&n.NetworkManager.NetworkManager.canReplayRequest(e)&&s.debugSection().appendItem(Ne(Oe.replayXhr),n.NetworkManager.NetworkManager.replayRequest.bind(null,e),{jslogContext:"replay-xhr"})}s.show()}async saveConsole(){const t=n.TargetManager.TargetManager.instance().scopeTarget().inspectedURL(),i=e.ParsedURL.ParsedURL.fromString(t),r=s.StringUtilities.sprintf("%s-%d.log",i?i.host:"console",Date.now()),a=new p.FileUtils.FileOutputStream,l=new o.ProgressIndicator.ProgressIndicator;l.setTitle(Ne(Oe.writingFile)),l.setTotalWork(this.itemCount());if(!await a.open(r))return;this.progressToolbarItem.element.appendChild(l.element);let c=0;for(;c12));++n);n!==t.length?this.buildHiddenCacheTimeout=this.element.window().requestAnimationFrame(this.buildHiddenCache.bind(this,n+1,t)):this.updateMessageList()}cancelBuildHiddenCache(){this.shouldBeHiddenCache.clear(),this.buildHiddenCacheTimeout&&(this.element.window().cancelAnimationFrame(this.buildHiddenCacheTimeout),delete this.buildHiddenCacheTimeout)}updateMessageList(){this.regexMatchRanges=[],this.hiddenByFilterCount=0;for(const e of this.visibleViewMessages)e.resetCloseGroupDecorationCount(),e.resetIncrementRepeatCount();if(this.visibleViewMessages=[],this.groupSimilarSetting.get())this.addGroupableMessagesToEnd();else for(const e of this.consoleMessages)e.setInSimilarGroup(!1),e.consoleMessage().isGroupable()&&e.clearConsoleGroup(),this.appendMessageToEnd(e,!0);this.updateFilterStatus(),this.searchableViewInternal.updateSearchMatchesCount(this.regexMatchRanges.length),this.viewport.invalidate(),this.messagesCountElement.setAttribute("aria-label",Ne(Oe.filteredMessagesInConsole,{PH1:this.visibleViewMessages.length}))}addGroupableMessagesToEnd(){const e=new Set,t=new Set;for(const s of this.consoleMessages){const o=s.consoleMessage();if(e.has(o))continue;if(!o.isGroupable()){this.appendMessageToEnd(s),e.add(o);continue}const i=s.groupKey(),r=this.groupableMessages.get(i);if(!r||r.length<5){s.setInSimilarGroup(!1),this.appendMessageToEnd(s),e.add(o);continue}if(t.has(i))continue;if(!r.find((e=>this.shouldMessageBeVisible(e)))){for(const t of r)e.add(t.consoleMessage());t.add(i);continue}let a=this.groupableMessageTitle.get(i);if(!a){const e=new n.ConsoleModel.ConsoleMessage(null,o.source,o.level,s.groupTitle(),{type:"startGroupCollapsed"});a=this.createViewMessage(e),this.groupableMessageTitle.set(i,a)}a.setRepeatCount(r.length),this.appendMessageToEnd(a);for(const t of r)t.setInSimilarGroup(!0,r[r.length-1]===t),t.setConsoleGroup(a),this.appendMessageToEnd(t,!0),e.add(t.consoleMessage());const l=new n.ConsoleModel.ConsoleMessage(null,o.source,o.level,o.messageText,{type:"endGroup"});this.appendMessageToEnd(this.createViewMessage(l))}}messagesClicked(e){const t=e.target;if(!this.messagesElement.hasSelection()){(t===this.messagesElement||this.prompt.belowEditorElement().isSelfOrAncestor(t))&&(this.prompt.moveCaretToEndOfPrompt(),this.focusPrompt())}}messagesKeyDown(e){const t=e;t.ctrlKey||t.altKey||t.metaKey||1!==t.key.length||o.UIUtils.isEditing()||this.messagesElement.hasSelection()||(this.prompt.moveCaretToEndOfPrompt(),this.focusPrompt())}messagesPasted(e){r.Runtime.Runtime.queryParam("isChromeForTesting")||r.Runtime.Runtime.queryParam("disableSelfXssWarnings")||this.selfXssWarningDisabledSetting.get()||(e.preventDefault(),this.prompt.showSelfXssWarning()),o.UIUtils.isEditing()||this.prompt.focus()}registerShortcuts(){this.shortcuts.set(o.KeyboardShortcut.KeyboardShortcut.makeKey("u",o.KeyboardShortcut.Modifiers.Ctrl.value),this.clearPromptBackwards.bind(this))}clearPromptBackwards(e){this.prompt.clear(),d.logKeyDown(e.currentTarget,e,"clear-prompt")}promptKeyDown(e){const t=e;if("PageUp"===t.key)return void this.updateStickToBottomOnWheel();const s=o.KeyboardShortcut.KeyboardShortcut.makeKeyFromEvent(t),n=this.shortcuts.get(s);n&&(n(t),t.preventDefault())}printResult(e,t,s){if(!e)return;const o=Boolean(s)?"error":"info";let i;i=s?n.ConsoleModel.ConsoleMessage.fromException(e.runtimeModel(),s,n.ConsoleModel.FrontendMessageType.Result,void 0,void 0):new n.ConsoleModel.ConsoleMessage(e.runtimeModel(),"javascript",o,"",{type:n.ConsoleModel.FrontendMessageType.Result,parameters:[e]}),i.setOriginatingMessage(t),e.runtimeModel().target().model(n.ConsoleModel.ConsoleModel)?.addMessage(i)}commandEvaluated(e){const{data:t}=e;this.printResult(t.result,t.commandMessage,t.exceptionDetails)}elementsToRestoreScrollPositionsFor(){return[this.messagesElement]}onSearchCanceled(){this.cleanupAfterSearch();for(const e of this.visibleViewMessages)e.setSearchRegex(null);this.currentMatchRangeIndex=-1,this.regexMatchRanges=[],this.searchRegex=null,this.viewport.refresh()}performSearch(e,t,s){this.onSearchCanceled(),this.searchableViewInternal.updateSearchMatchesCount(0),this.searchRegex=e.toSearchRegex(!0).regex,this.regexMatchRanges=[],this.currentMatchRangeIndex=-1,t&&(this.searchShouldJumpBackwards=Boolean(s)),this.searchProgressIndicator=new o.ProgressIndicator.ProgressIndicator,this.searchProgressIndicator.setTitle(Ne(Oe.searching)),this.searchProgressIndicator.setTotalWork(this.visibleViewMessages.length),this.progressToolbarItem.element.appendChild(this.searchProgressIndicator.element),this.innerSearch(0)}cleanupAfterSearch(){delete this.searchShouldJumpBackwards,this.innerSearchTimeoutId&&(clearTimeout(this.innerSearchTimeoutId),delete this.innerSearchTimeoutId),this.searchProgressIndicator&&(this.searchProgressIndicator.done(),delete this.searchProgressIndicator)}searchFinishedForTests(){}innerSearch(e){if(delete this.innerSearchTimeoutId,this.searchProgressIndicator?.isCanceled())return void this.cleanupAfterSearch();const t=Date.now();for(;e=0){t=this.regexMatchRanges[this.currentMatchRangeIndex];this.visibleViewMessages[t.messageIndex].searchHighlightNode(t.matchIndex).classList.remove(o.UIUtils.highlightedCurrentSearchResultClassName)}e=s.NumberUtilities.mod(e,this.regexMatchRanges.length),this.currentMatchRangeIndex=e,this.searchableViewInternal.updateCurrentMatchIndex(e),t=this.regexMatchRanges[e];const n=this.visibleViewMessages[t.messageIndex].searchHighlightNode(t.matchIndex);n.classList.add(o.UIUtils.highlightedCurrentSearchResultClassName),this.viewport.scrollItemIntoView(t.messageIndex),n.scrollIntoViewIfNeeded()}updateStickToBottomOnPointerDown(e){this.muteViewportUpdates=!e,this.viewport.setStickToBottom(!1),this.waitForScrollTimeout&&(clearTimeout(this.waitForScrollTimeout),delete this.waitForScrollTimeout)}updateStickToBottomOnPointerUp(){this.muteViewportUpdates&&(this.waitForScrollTimeout=window.setTimeout(function(){this.muteViewportUpdates=!1,this.isShowing()&&this.viewport.setStickToBottom(this.isScrolledToBottom());this.maybeDirtyWhileMuted&&(this.scheduleViewportRefresh(),delete this.maybeDirtyWhileMuted);delete this.waitForScrollTimeout,this.updateViewportStickinessForTest()}.bind(this),200))}updateViewportStickinessForTest(){}updateStickToBottomOnWheel(){this.updateStickToBottomOnPointerDown(),this.updateStickToBottomOnPointerUp()}promptTextChanged(){const e=this.viewport.stickToBottom(),t=this.isScrolledToBottom();this.viewport.setStickToBottom(t),t&&!e&&this.scheduleViewportRefresh(),this.promptTextChangedForTest()}promptTextChangedForTest(){}isScrolledToBottom(){return this.messagesElement.scrollHeight-this.messagesElement.scrollTop-this.messagesElement.clientHeight-this.prompt.belowEditorElement().offsetHeight<=2}}globalThis.Console=globalThis.Console||{},globalThis.Console.ConsoleView=De;class We{filterChanged;messageLevelFiltersSetting;hideNetworkMessagesSetting;filterByExecutionContextSetting;suggestionBuilder;textFilterUI;textFilterSetting;filterParser;currentFilter;levelLabels;levelMenuButton;constructor(t){this.filterChanged=t,this.messageLevelFiltersSetting=We.levelFilterSetting(),this.hideNetworkMessagesSetting=e.Settings.Settings.instance().moduleSetting("hide-network-messages"),this.filterByExecutionContextSetting=e.Settings.Settings.instance().moduleSetting("selected-context-filter-enabled"),this.messageLevelFiltersSetting.addChangeListener(this.onFilterChanged.bind(this)),this.hideNetworkMessagesSetting.addChangeListener(this.onFilterChanged.bind(this)),this.filterByExecutionContextSetting.addChangeListener(this.onFilterChanged.bind(this)),o.Context.Context.instance().addFlavorChangeListener(n.RuntimeModel.ExecutionContext,this.onFilterChanged,this);const s=Object.values(R);this.suggestionBuilder=new o.FilterSuggestionBuilder.FilterSuggestionBuilder(s),this.textFilterUI=new o.Toolbar.ToolbarFilter(void 0,1,1,Ne(Oe.egEventdCdnUrlacom),this.suggestionBuilder.completions.bind(this.suggestionBuilder),!0),this.textFilterSetting=e.Settings.Settings.instance().createSetting("console.text-filter",""),this.textFilterSetting.get()&&this.textFilterUI.setValue(this.textFilterSetting.get()),this.textFilterUI.addEventListener("TextChanged",(()=>{this.textFilterSetting.set(this.textFilterUI.value()),this.onFilterChanged()})),this.filterParser=new i.TextUtils.FilterParser(s),this.currentFilter=new P("",[],null,this.messageLevelFiltersSetting.get()),this.updateCurrentFilter(),this.levelLabels=new Map([["verbose",Ne(Oe.verbose)],["info",Ne(Oe.info)],["warning",Ne(Oe.warnings)],["error",Ne(Oe.errors)]]),this.levelMenuButton=new o.Toolbar.ToolbarMenuButton(this.appendLevelMenuItems.bind(this),void 0,void 0,"log-level"),this.updateLevelMenuButtonText(),this.messageLevelFiltersSetting.addChangeListener(this.updateLevelMenuButtonText.bind(this))}onMessageAdded(e){e.type===n.ConsoleModel.FrontendMessageType.Command||e.type===n.ConsoleModel.FrontendMessageType.Result||e.isGroupMessage()||(e.context&&this.suggestionBuilder.addItem(R.Context,e.context),e.source&&this.suggestionBuilder.addItem(R.Source,e.source),e.url&&this.suggestionBuilder.addItem(R.Url,e.url))}setLevelMenuOverridden(e){this.levelMenuButton.setEnabled(!e),e?this.levelMenuButton.setTitle(Ne(Oe.overriddenByFilterSidebar)):this.updateLevelMenuButtonText()}static levelFilterSetting(){return e.Settings.Settings.instance().createSetting("message-level-filters",P.defaultLevelsFilterValue())}updateCurrentFilter(){const e=this.filterParser.parse(this.textFilterUI.value());for(const{key:t}of e)switch(t){case R.Context:m.userMetrics.actionTaken(m.UserMetrics.Action.ConsoleFilterByContext);break;case R.Source:m.userMetrics.actionTaken(m.UserMetrics.Action.ConsoleFilterBySource);break;case R.Url:m.userMetrics.actionTaken(m.UserMetrics.Action.ConsoleFilterByUrl)}this.hideNetworkMessagesSetting.get()&&e.push({key:R.Source,text:"network",negative:!0,regex:void 0}),this.currentFilter.executionContext=this.filterByExecutionContextSetting.get()?o.Context.Context.instance().flavor(n.RuntimeModel.ExecutionContext):null,this.currentFilter.parsedFilters=e,this.currentFilter.levelsMask=this.messageLevelFiltersSetting.get()}onFilterChanged(){this.updateCurrentFilter(),this.filterChanged()}updateLevelMenuButtonText(){let e=!0,t=!0;const s=P.allLevelsFilterValue(),n=P.defaultLevelsFilterValue();let o=null;const i=this.messageLevelFiltersSetting.get(),r={Verbose:"verbose",Info:"info",Warning:"warning",Error:"error"};for(const a of Object.values(r))e=e&&i[a]===s[a],t=t&&i[a]===n[a],i[a]&&(o=o?Ne(Oe.customLevels):Ne(Oe.sOnly,{PH1:String(this.levelLabels.get(a))}));o=e?Ne(Oe.allLevels):t?Ne(Oe.defaultLevels):o||Ne(Oe.hideAll),this.levelMenuButton.element.classList.toggle("warning",!e&&!t),this.levelMenuButton.setText(o),this.levelMenuButton.setTitle(Ne(Oe.logLevelS,{PH1:o}))}appendLevelMenuItems(e){const t=this.messageLevelFiltersSetting,s=t.get();e.headerSection().appendItem(Ne(Oe.default),(()=>t.set(P.defaultLevelsFilterValue())),{jslogContext:"default"});for(const[t,o]of this.levelLabels.entries())e.defaultSection().appendCheckboxItem(o,n.bind(null,t),{checked:s[t],jslogContext:t});function n(e){s[e]=!s[e],t.set(s)}}addMessageURLFilter(e){if(!e)return;const t=this.textFilterUI.value()?` ${this.textFilterUI.value()}`:"";this.textFilterUI.setValue(`-url:${e}${t}`),this.textFilterSetting.set(this.textFilterUI.value()),this.onFilterChanged()}shouldBeVisible(e){return this.currentFilter.shouldBeVisible(e)}clear(){this.suggestionBuilder.clear()}reset(){this.messageLevelFiltersSetting.set(P.defaultLevelsFilterValue()),this.filterByExecutionContextSetting.set(!1),this.hideNetworkMessagesSetting.set(!1),this.textFilterUI.setValue(""),this.onFilterChanged()}}const _e=new WeakMap,ze=new WeakMap;var $e=Object.freeze({__proto__:null,ActionDelegate:class{handleAction(t,s){switch(s){case"console.toggle":return De.instance().hasFocus()&&o.InspectorView.InspectorView.instance().drawerVisible()?(o.InspectorView.InspectorView.instance().closeDrawer(),!0):(m.InspectorFrontendHost.InspectorFrontendHostInstance.bringToFront(),e.Console.Console.instance().show(),De.instance().focusPrompt(),!0);case"console.clear":return De.clearConsole(),!0;case"console.clear.history":return De.instance().clearHistory(),!0}return!1}},ConsoleView:De,ConsoleViewFilter:We});let qe;class Ke extends o.Panel.Panel{view;constructor(){super("console"),this.view=De.instance()}static instance(e={forceNew:null}){const{forceNew:t}=e;return qe&&!t||(qe=new Ke),qe}static updateContextFlavor(){const e=Ke.instance().view;o.Context.Context.instance().setFlavor(De,e.isShowing()?e:null)}wasShown(){super.wasShown();const e=Je;e?.isShowing()&&o.InspectorView.InspectorView.instance().setDrawerMinimized(!0),this.view.show(this.element),Ke.updateContextFlavor()}willHide(){super.willHide(),o.InspectorView.InspectorView.instance().setDrawerMinimized(!1),Je&&Je.showViewInWrapper(),Ke.updateContextFlavor()}searchableView(){return De.instance().searchableView()}}let Je=null;class Xe extends o.Widget.VBox{view;constructor(){super(),this.view=De.instance(),this.element.setAttribute("jslog",`${d.panel("console").track({resize:!0})}`)}static instance(){return Je||(Je=new Xe),Je}wasShown(){Ke.instance().isShowing()?o.InspectorView.InspectorView.instance().setDrawerMinimized(!0):this.showViewInWrapper(),Ke.updateContextFlavor()}willHide(){o.InspectorView.InspectorView.instance().setDrawerMinimized(!1),Ke.updateContextFlavor()}showViewInWrapper(){this.view.show(this.element)}}var Ze=Object.freeze({__proto__:null,ConsolePanel:Ke,ConsoleRevealer:class{async reveal(e){const t=De.instance();t.isShowing()?t.focus():await o.ViewManager.ViewManager.instance().showView("console-view")}},WrapperView:Xe}),Qe={cssText:`#console-prompt .CodeMirror{padding:3px 0 1px}#console-prompt .CodeMirror-line{padding-top:0}#console-prompt .CodeMirror-lines{padding-top:0}#console-prompt .console-prompt-icon{position:absolute;left:-13px;top:2px;user-select:none}.console-eager-preview{padding-bottom:2px;opacity:60%;position:relative}.console-eager-inner-preview{text-overflow:ellipsis;overflow:hidden;margin-left:4px;height:100%;white-space:nowrap}.preview-result-icon{position:absolute;left:-13px;top:-1px}.console-eager-inner-preview:empty,\n.console-eager-inner-preview:empty + .preview-result-icon{opacity:0%}.console-prompt-icon.console-prompt-incomplete{opacity:65%}\n/*# sourceURL=${import.meta.resolve("./consolePrompt.css")} */\n`};const{Direction:Ye}=l.TextEditorHistory,et={consolePrompt:"Console prompt",selfXssWarning:"Warning: Don’t paste code into the DevTools Console that you don’t understand or haven’t reviewed yourself. This could allow attackers to steal your identity or take control of your computer. Please type ‘{PH1}’ below and hit Enter to allow pasting.",allowPasting:"allow pasting"},tt=t.i18n.registerUIStrings("panels/console/ConsolePrompt.ts",et),st=t.i18n.getLocalizedString.bind(void 0,tt);class nt extends(e.ObjectWrapper.eventMixin(o.Widget.Widget)){addCompletionsFromHistory;historyInternal;initialText;editor;eagerPreviewElement;textChangeThrottler;formatter;requestPreviewBound;requestPreviewCurrent=0;innerPreviewElement;promptIcon;iconThrottler;previewRequestForTest;highlightingNode;#c;#d;#h=!1;#u=new a.Compartment;#m(){return this.#h?[]:"true"!==r.Runtime.Runtime.queryParam("noJavaScriptCompletion")?[a.javascript.javascript(),l.JavaScript.completion()]:[a.javascript.javascriptLanguage]}#p(){const e=this.#m(),t=this.#u.reconfigure(e);this.editor.dispatch({effects:t})}constructor(){super(),this.registerRequiredCSS(Qe),this.addCompletionsFromHistory=!0,this.historyInternal=new l.AutocompleteHistory.AutocompleteHistory(e.Settings.Settings.instance().createLocalSetting("console-history",[])),this.initialText="",this.eagerPreviewElement=document.createElement("div"),this.eagerPreviewElement.classList.add("console-eager-preview"),this.textChangeThrottler=new e.Throttler.Throttler(150),this.formatter=new c.RemoteObjectPreviewFormatter.RemoteObjectPreviewFormatter,this.requestPreviewBound=this.requestPreview.bind(this),this.innerPreviewElement=this.eagerPreviewElement.createChild("div","console-eager-inner-preview");const t=new h.Icon.Icon;t.data={iconName:"chevron-left-dot",color:"var(--icon-default)",width:"16px",height:"16px"},t.classList.add("preview-result-icon"),this.eagerPreviewElement.appendChild(t);const s=this.element.createChild("div","console-prompt-editor-container");this.element.appendChild(this.eagerPreviewElement),this.promptIcon=new h.Icon.Icon,this.promptIcon.data={iconName:"chevron-right",color:"var(--icon-action)",width:"16px",height:"16px"},this.promptIcon.classList.add("console-prompt-icon"),this.element.appendChild(this.promptIcon),this.iconThrottler=new e.Throttler.Throttler(0),this.element.tabIndex=0,this.previewRequestForTest=null,this.highlightingNode=!1;const n=l.JavaScript.argumentHints();this.#c=n[0];const o=l.Config.DynamicSetting.bool("console-autocomplete-on-enter",[],l.Config.conservativeCompletion),i=[a.keymap.of(this.editorKeymap()),a.EditorView.updateListener.of((e=>this.editorUpdate(e))),n,o.instance(),l.Config.showCompletionHint,l.Config.baseConfiguration(this.initialText),l.Config.autocompletion.instance(),a.javascript.javascriptLanguage.data.of({autocomplete:e=>this.addCompletionsFromHistory?this.#d.historyCompletions(e):null}),a.EditorView.contentAttributes.of({"aria-label":st(et.consolePrompt)}),a.EditorView.lineWrapping,a.autocompletion({aboveCursor:!0}),this.#u.of(this.#m())],r=this.initialText,u=a.EditorState.create({doc:r,extensions:i});this.editor=new l.TextEditor.TextEditor(u),this.editor.addEventListener("keydown",(e=>{e.defaultPrevented&&e.stopPropagation()})),s.appendChild(this.editor),this.#d=new l.TextEditorHistory.TextEditorHistory(this.editor,this.historyInternal),this.hasFocus()&&this.focus(),this.element.removeAttribute("tabindex"),this.editorSetForTest(),m.userMetrics.panelLoaded("console","DevTools.Launch.Console"),this.element.setAttribute("jslog",`${d.textField("console-prompt").track({change:!0,keydown:"Enter|ArrowUp|ArrowDown|PageUp"})}`)}belowEditorElement(){return this.eagerPreviewElement}onTextChanged(){this.updatePromptIcon(),this.dispatchEventToListeners("TextChanged")}async requestPreview(){const e=++this.requestPreviewCurrent,t=l.Config.contentIncludingHint(this.editor.editor).trim(),s=o.Context.Context.instance().flavor(n.RuntimeModel.ExecutionContext),{preview:i,result:r}=await c.JavaScriptREPL.JavaScriptREPL.evaluateAndBuildPreview(t,!0,!0,500);this.requestPreviewCurrent===e&&(this.innerPreviewElement.removeChildren(),i.deepTextContent()!==l.Config.contentIncludingHint(this.editor.editor).trim()&&this.innerPreviewElement.appendChild(i),r&&"object"in r&&r.object&&"node"===r.object.subtype?(this.highlightingNode=!0,n.OverlayModel.OverlayModel.highlightObjectAsDOMNode(r.object)):this.highlightingNode&&(this.highlightingNode=!1,n.OverlayModel.OverlayModel.hideDOMNodeHighlight()),r&&s&&s.runtimeModel.releaseEvaluationResult(r))}willHide(){super.willHide(),this.highlightingNode&&(this.highlightingNode=!1,n.OverlayModel.OverlayModel.hideDOMNodeHighlight())}history(){return this.historyInternal}clearAutocomplete(){a.closeCompletion(this.editor.editor)}isCaretAtEndOfPrompt(){return this.editor.state.selection.main.head===this.editor.state.doc.length}moveCaretToEndOfPrompt(){this.editor.dispatch({selection:a.EditorSelection.cursor(this.editor.state.doc.length)})}clear(){this.editor.dispatch({changes:{from:0,to:this.editor.state.doc.length}})}text(){return this.editor.state.doc.toString()}setAddCompletionsFromHistory(e){this.addCompletionsFromHistory=e}editorKeymap(){return[{key:"ArrowUp",run:()=>this.#d.moveHistory(-1)},{key:"ArrowDown",run:()=>this.#d.moveHistory(1)},{mac:"Ctrl-p",run:()=>this.#d.moveHistory(-1,!0)},{mac:"Ctrl-n",run:()=>this.#d.moveHistory(1,!0)},{key:"Escape",run:()=>l.JavaScript.closeArgumentsHintsTooltip(this.editor.editor,this.#c)},{key:"Ctrl-Enter",run:()=>(this.handleEnter(!0),!0)},{key:"Enter",run:()=>(this.handleEnter(),!0),shift:a.insertNewlineAndIndent}]}async enterWillEvaluate(e){const{doc:t,selection:s}=this.editor.state;if(!t.length)return!1;if(e||s.main.head{this.promptIcon.classList.toggle("console-prompt-incomplete",!await this.enterWillEvaluate())}))}appendCommand(e,t){const s=o.Context.Context.instance().flavor(n.RuntimeModel.ExecutionContext);if(s){const o=s,i=o.target().model(n.ConsoleModel.ConsoleModel);if(i){const s=i.addCommandMessage(o,e),n=c.JavaScriptREPL.JavaScriptREPL.wrapObjectLiteral(e);this.evaluateCommandInConsole(o,s,n,t),Ke.instance().isShowing()&&m.userMetrics.actionTaken(m.UserMetrics.Action.CommandEvaluatedInConsolePanel)}}}async evaluateCommandInConsole(e,t,s,o){const i=e.debuggerModel.selectedCallFrame();if(i?.script.isJavaScript()){const e=await y.NamesResolver.allVariablesInCallFrame(i);s=await this.substituteNames(s,e)}await(e.target().model(n.ConsoleModel.ConsoleModel)?.evaluateCommandInConsole(e,t,s,o))}async substituteNames(e,t){try{return await I.FormatterWorkerPool.formatterWorkerPool().javaScriptSubstitute(e,t)}catch{return e}}editorUpdate(e){e.docChanged||a.selectedCompletion(e.state)!==a.selectedCompletion(e.startState)?this.onTextChanged():e.selectionSet&&this.updatePromptIcon()}focus(){this.editor.focus()}editorSetForTest(){}}var ot=Object.freeze({__proto__:null,ConsolePrompt:nt});export{A as ConsoleContextSelector,U as ConsoleFilter,V as ConsoleFormat,Ze as ConsolePanel,K as ConsolePinPane,ot as ConsolePrompt,oe as ConsoleSidebar,$e as ConsoleView,Be as ConsoleViewMessage,je as ConsoleViewport,ue as ErrorStackParser}; + `;this.pinElement=i.element(),this.pinPreview=i.$("preview");const r=i.$("name");o.Tooltip.Tooltip.install(r,t),z.set(this.pinElement,this),this.lastResult=null,this.lastExecutionContext=null,this.committedExpression=t,this.hovered=!1,this.lastNode=null,this.editor=this.createEditor(t,r),this.pinPreview.addEventListener("mouseenter",this.setHovered.bind(this,!0),!1),this.pinPreview.addEventListener("mouseleave",this.setHovered.bind(this,!1),!1),this.pinPreview.addEventListener("click",(t=>{this.lastNode&&(e.Revealer.reveal(this.lastNode),t.consume())}),!1),r.addEventListener("keydown",(e=>{"Escape"===e.key&&e.consume()}))}createEditor(e,t){const s=[a.EditorView.contentAttributes.of({"aria-label":_(D.liveExpressionEditor)}),a.EditorView.lineWrapping,a.javascript.javascriptLanguage,l.Config.showCompletionHint,a.placeholder(_(D.expression)),a.keymap.of([{key:"Escape",run:e=>(e.dispatch({changes:{from:0,to:e.state.doc.length,insert:this.committedExpression}}),this.focusOut(),!0)},{key:"Enter",run:()=>(this.focusOut(),!0)},{key:"Mod-Enter",run:()=>(this.focusOut(),!0)},{key:"Tab",run:e=>null===a.completionStatus(this.editor.state)&&(e.dispatch({changes:{from:0,to:e.state.doc.length,insert:this.committedExpression}}),this.focusOut(),!0)},{key:"Shift-Tab",run:e=>null===a.completionStatus(this.editor.state)&&(e.dispatch({changes:{from:0,to:e.state.doc.length,insert:this.committedExpression}}),this.focusOut(),!0)}]),a.EditorView.domEventHandlers({blur:(e,t)=>this.onBlur(t)}),l.Config.baseConfiguration(e),l.Config.closeBrackets.instance(),l.Config.autocompletion.instance()];"true"!==r.Runtime.Runtime.queryParam("noJavaScriptCompletion")&&s.push(l.JavaScript.completion());const n=new l.TextEditor.TextEditor(a.EditorState.create({doc:e,extensions:s}));return t.appendChild(n),n}onBlur(e){const t=e.state.doc.toString(),s=t.trim();this.committedExpression=s,this.pinPane.savePins(),this.committedExpression.length?this.deletePinIcon.setAccessibleName(_(D.removeExpressionS,{PH1:this.committedExpression})):this.deletePinIcon.setAccessibleName(_(D.removeBlankExpression)),e.dispatch({selection:{anchor:s.length},changes:s!==t?{from:0,to:t.length,insert:s}:void 0})}setHovered(e){this.hovered!==e&&(this.hovered=e,!e&&this.lastNode&&n.OverlayModel.OverlayModel.hideDOMNodeHighlight())}expression(){return this.committedExpression}element(){return this.pinElement}async focus(){const e=this.editor;e.editor.focus(),e.dispatch({selection:{anchor:e.state.doc.length}})}appendToContextMenu(e){this.lastResult&&!("error"in this.lastResult)&&this.lastResult.object&&(e.appendApplicableItems(this.lastResult.object),this.lastResult=null)}async updatePreview(){if(!this.editor)return;const e=l.Config.contentIncludingHint(this.editor.editor),t=this.pinElement.hasFocus(),s=t&&e!==this.committedExpression,i=s?250:void 0,r=o.Context.Context.instance().flavor(n.RuntimeModel.ExecutionContext),{preview:a,result:d}=await c.JavaScriptREPL.JavaScriptREPL.evaluateAndBuildPreview(e,s,!0,i,!t,"live-expression",!0,!0);this.lastResult&&this.lastExecutionContext&&this.lastExecutionContext.runtimeModel.releaseEvaluationResult(this.lastResult),this.lastResult=d||null,this.lastExecutionContext=r||null;const h=a.deepTextContent();if(!h||h!==this.pinPreview.deepTextContent()){if(this.pinPreview.removeChildren(),d&&n.RuntimeModel.RuntimeModel.isSideEffectFailure(d)){const e=this.pinPreview.createChild("span","object-value-calculate-value-button");e.textContent="(…)",o.Tooltip.Tooltip.install(e,_(D.evaluateAllowingSideEffects))}else h?this.pinPreview.appendChild(a):t||o.UIUtils.createTextChild(this.pinPreview,_(D.notAvailable));o.Tooltip.Tooltip.install(this.pinPreview,h)}let u=null;d&&!("error"in d)&&"object"===d.object.type&&"node"===d.object.subtype&&(u=d.object),this.hovered&&(u?n.OverlayModel.OverlayModel.highlightObjectAsDOMNode(u):this.lastNode&&n.OverlayModel.OverlayModel.hideDOMNodeHighlight()),this.lastNode=u||null;const m=d&&!("error"in d)&&d.exceptionDetails&&!n.RuntimeModel.RuntimeModel.isSideEffectFailure(d);this.pinElement.classList.toggle("error-level",Boolean(m))}}var K=Object.freeze({__proto__:null,ConsolePin:q,ConsolePinPane:$}),J={cssText:`:host{overflow:auto}.count{flex:none;margin:0 var(--sys-size-3)}devtools-icon{&[name="cross-circle"]{color:var(--sys-color-error-bright)}&[name="warning"]{color:var(--icon-warning)}&[name="info"]{color:var(--icon-info)}}.tree-element-title{flex-grow:1}\n/*# sourceURL=${import.meta.resolve("./consoleSidebar.css")} */\n`};const X={other:"",dUserMessages:"{n, plural, =0 {No user messages} =1 {# user message} other {# user messages}}",dMessages:"{n, plural, =0 {No messages} =1 {# message} other {# messages}}",dErrors:"{n, plural, =0 {No errors} =1 {# error} other {# errors}}",dWarnings:"{n, plural, =0 {No warnings} =1 {# warning} other {# warnings}}",dInfo:"{n, plural, =0 {No info} =1 {# info} other {# info}}",dVerbose:"{n, plural, =0 {No verbose} =1 {# verbose} other {# verbose}}"},Z=t.i18n.registerUIStrings("panels/console/ConsoleSidebar.ts",X),Q=t.i18n.getLocalizedString.bind(void 0,Z);class Y extends(e.ObjectWrapper.eventMixin(o.Widget.VBox)){tree;selectedTreeElement;treeElements;constructor(){super(!0),this.setMinimumSize(125,0),this.tree=new o.TreeOutline.TreeOutlineInShadow("NavigationTree"),this.tree.addEventListener(o.TreeOutline.Events.ElementSelected,this.selectionChanged.bind(this)),this.tree.registerRequiredCSS(J),this.tree.hideOverflow(),this.contentElement.setAttribute("jslog",`${d.pane("sidebar").track({resize:!0})}`),this.contentElement.appendChild(this.tree.element),this.selectedTreeElement=null,this.treeElements=[];const t=e.Settings.Settings.instance().createSetting("console.sidebar-selected-filter",null),s=[{key:R.Source,text:e.Console.FrontendMessageSource.ConsoleAPI,negative:!1,regex:void 0}];this.appendGroup("message",[],P.allLevelsFilterValue(),h.Icon.create("list"),t),this.appendGroup("user message",s,P.allLevelsFilterValue(),h.Icon.create("profile"),t),this.appendGroup("error",[],P.singleLevelMask("error"),h.Icon.create("cross-circle"),t),this.appendGroup("warning",[],P.singleLevelMask("warning"),h.Icon.create("warning"),t),this.appendGroup("info",[],P.singleLevelMask("info"),h.Icon.create("info"),t),this.appendGroup("verbose",[],P.singleLevelMask("verbose"),h.Icon.create("bug"),t);const n=t.get();(this.treeElements.find((e=>e.name()===n))||this.treeElements[0]).select()}appendGroup(e,t,s,n,o){const i=new P(e,t,null,s),r=new ne(i,n,o);this.tree.appendChild(r),this.treeElements.push(r)}clear(){for(const e of this.treeElements)e.clear()}onMessageAdded(e){for(const t of this.treeElements)t.onMessageAdded(e)}shouldBeVisible(e){return!(this.selectedTreeElement instanceof ee)||this.selectedTreeElement.filter().shouldBeVisible(e)}selectionChanged(e){this.selectedTreeElement=e.data,this.dispatchEventToListeners("FilterSelected")}}class ee extends o.TreeOutline.TreeElement{filterInternal;constructor(e,t){super(e),this.filterInternal=t}filter(){return this.filterInternal}}class te extends ee{countElement;messageCount;constructor(e){super(e.name,e),this.countElement=this.listItemElement.createChild("span","count");const t=h.Icon.create("document");this.setLeadingIcons([t]),this.messageCount=0}incrementAndUpdateCounter(){this.messageCount++,this.countElement.textContent=`${this.messageCount}`}}const se=new Map([["user message",X.dUserMessages],["message",X.dMessages],["error",X.dErrors],["warning",X.dWarnings],["info",X.dInfo],["verbose",X.dVerbose]]);class ne extends ee{selectedFilterSetting;urlTreeElements;messageCount;uiStringForFilterCount;constructor(e,t,s){super(e.name,e),this.uiStringForFilterCount=se.get(e.name)||"",this.selectedFilterSetting=s,this.urlTreeElements=new Map,this.setLeadingIcons([t]),this.messageCount=0,this.updateCounter()}clear(){this.urlTreeElements.clear(),this.removeChildren(),this.messageCount=0,this.updateCounter()}name(){return this.filterInternal.name}onselect(e){return this.selectedFilterSetting.set(this.filterInternal.name),super.onselect(e)}updateCounter(){this.title=this.updateGroupTitle(this.messageCount),this.setExpandable(Boolean(this.childCount()))}updateGroupTitle(e){return this.uiStringForFilterCount?Q(this.uiStringForFilterCount,{n:e}):""}onMessageAdded(e){const t=e.consoleMessage(),s=t.type!==n.ConsoleModel.FrontendMessageType.Command&&t.type!==n.ConsoleModel.FrontendMessageType.Result&&!t.isGroupMessage();if(!this.filterInternal.shouldBeVisible(e)||!s)return;this.childElement(t.url).incrementAndUpdateCounter(),this.messageCount++,this.updateCounter()}childElement(t){const s=t||null;let n=this.urlTreeElements.get(s);if(n)return n;const o=this.filterInternal.clone(),i=s?e.ParsedURL.ParsedURL.fromString(s):null;return o.name=s?i?i.displayName:s:Q(X.other),o.parsedFilters.push({key:R.Url,text:s,negative:!1,regex:void 0}),n=new te(o),s&&(n.tooltip=s),this.urlTreeElements.set(s,n),this.appendChild(n),n}}var oe=Object.freeze({__proto__:null,ConsoleSidebar:Y,FilterTreeElement:ne,URLGroupTreeElement:te}),ie={cssText:`.console-view{background-color:var(--sys-color-cdt-base-container);overflow:hidden;--override-error-text-color:var(--sys-color-on-error-container);--message-corner-rounder-background:var(--sys-color-cdt-base-container)}.console-toolbar-container{display:flex;flex:none}.console-main-toolbar{flex:1 1 auto}#console-issues-counter{margin-top:0}.console-toolbar-container > devtools-toolbar{background-color:var(--sys-color-cdt-base-container);border-bottom:1px solid var(--sys-color-divider)}.console-view-fix-select-all{height:0;overflow:hidden}.console-settings-pane{display:grid;grid-template-columns:50% 50%;flex:none;background-color:var(--sys-color-cdt-base-container);border-bottom:1px solid var(--sys-color-divider)}#console-messages{flex:1 1;overflow-y:auto;word-wrap:break-word;user-select:text;transform:translateZ(0);overflow-anchor:none;background-color:var(--sys-color-cdt-base-container)}#console-prompt{clear:right;position:relative;margin:0 22px 0 20px}.console-prompt-editor-container{min-height:21px}.console-message,\n.console-user-command{clear:right;position:relative;padding:3px 22px 1px 0;margin-left:24px;min-height:17px;flex:auto;display:flex}.console-message > *{flex:auto}.console-timestamp{color:var(--sys-color-token-subtle);user-select:none;flex:none;margin-right:5px}.message-level-icon,\n.command-result-icon{position:absolute;left:-17px;top:2px;user-select:none}.console-message-repeat-count{margin:1.4px 0 0 10px;flex:none}.repeated-message{margin-left:4px}.repeated-message .message-level-icon{display:none}.console-message-stack-trace-toggle{display:flex;flex-direction:row;align-items:flex-start;margin-top:-1px}.console-error-level .repeated-message,\n.console-warning-level .repeated-message,\n.console-verbose-level .repeated-message,\n.console-info-level .repeated-message{display:flex}.console-info{color:var(--sys-color-token-subtle);font-style:italic;padding-bottom:2px}.console-group .console-group > .console-group-messages{margin-left:16px}.console-group-title.console-from-api{font-weight:bold}.console-group-title .console-message{margin-left:12px}.expand-group-icon{user-select:none;flex:none;position:relative;left:8px;top:3px;margin-right:2px}.console-group-title .message-level-icon{display:none}.console-message-repeat-count .expand-group-icon{position:static;color:var(--sys-color-cdt-base-container);margin-left:-1px}.console-group{position:relative}.console-message-wrapper{display:flex;flex-direction:column;margin:4px;border-radius:5px;--console-color-black:#000;--console-color-red:#a00;--console-color-green:#0a0;--console-color-yellow:#a50;--console-color-blue:#00a;--console-color-magenta:#a0a;--console-color-cyan:#0aa;--console-color-gray:#aaa;--console-color-darkgray:#555;--console-color-lightred:#f55;--console-color-lightgreen:#5f5;--console-color-lightyellow:#ff5;--console-color-lightblue:#55f;--console-color-ightmagenta:#f5f;--console-color-lightcyan:#5ff;--console-color-white:#fff;&:focus{background-color:var(--sys-color-tonal-container);& ::selection{background-color:var(--sys-color-state-focus-select);color:currentcolor}}}.console-row-wrapper{display:flex;flex-direction:row}.theme-with-dark-background .console-message-wrapper{--console-color-red:rgb(237 78 76);--console-color-green:rgb(1 200 1);--console-color-yellow:rgb(210 192 87);--console-color-blue:rgb(39 116 240);--console-color-magenta:rgb(161 66 244);--console-color-cyan:rgb(18 181 203);--console-color-gray:rgb(207 208 208);--console-color-darkgray:rgb(137 137 137);--console-color-lightred:rgb(242 139 130);--console-color-lightgreen:rgb(161 247 181);--console-color-lightyellow:rgb(221 251 85);--console-color-lightblue:rgb(102 157 246);--console-color-lightmagenta:rgb(214 112 214);--console-color-lightcyan:rgb(132 240 255)}.console-message-wrapper.console-warning-level + .console-message-wrapper,\n.console-message-wrapper.console-error-level + .console-message-wrapper{& .console-message::before,\n & .console-user-command::before{display:none!important}}.console-message-wrapper:not(.console-error-level, .console-warning-level){& .console-message::before,\n & .console-user-command::before{width:calc(100% - 25px);content:"";display:block;position:absolute;top:-2px;border-top:1px solid var(--sys-color-divider)}&:first-of-type .console-message::before,\n &:first-of-type .console-user-command::before{display:none}}.console-message-wrapper.console-adjacent-user-command-result:not(.console-error-level, .console-warning-level){border-top-width:0}.console-message-wrapper:focus + .console-message-wrapper{border-top-color:transparent}.console-message-wrapper.console-adjacent-user-command-result:not(.console-error-level, .console-warning-level):focus{border-top-width:1px}.console-message-wrapper.console-adjacent-user-command-result:not(.console-error-level, .console-warning-level):focus .console-message{padding-top:2px;min-height:16px}.console-message-wrapper.console-adjacent-user-command-result:not(.console-error-level, .console-warning-level):focus .command-result-icon{top:3px}.console-message-wrapper .nesting-level-marker{width:14px;flex:0 0 auto;position:relative;margin-bottom:-1px;margin-top:-1px;background-color:var(--sys-color-cdt-base-container)}.console-message-wrapper .nesting-level-marker + .console-message::after{position:absolute;left:-30px;top:0;width:6px;height:100%;box-sizing:border-box;background-color:var(--sys-color-surface-yellow);border-top-left-radius:5px;border-bottom-left-radius:5px;content:""}.console-error-level{background-color:var(--sys-color-surface-error);--message-corner-rounder-background:var(--sys-color-surface-error)}.console-warning-level{background-color:var(--sys-color-surface-yellow);--message-corner-rounder-background:var(--sys-color-surface-yellow)}.console-view-object-properties-section{padding:0;position:relative;vertical-align:baseline;color:inherit;display:inline-block;overflow-wrap:break-word;max-width:100%}.info-note{background-color:var(--sys-color-tonal-container)}.info-note::before{content:"i"}.console-view-object-properties-section:not(.expanded) .info-note{display:none}.console-system-type.console-info-level{color:var(--sys-color-primary)}#console-messages .link{cursor:pointer;text-decoration:underline}#console-messages .link,\n#console-messages .devtools-link:not(.invalid-link){color:var(--sys-color-primary);word-break:break-all}#console-messages .devtools-link.ignore-list-link{opacity:60%}#console-messages .devtools-link:focus-visible{background-color:transparent}#console-messages .resource-links{margin-top:-1px;margin-bottom:-2px}.console-object-preview{white-space:normal;word-wrap:break-word;font-style:italic}.console-object-preview .name{flex-shrink:0}.console-message-text{.object-value-node{display:inline-block}.object-value-string,\n .object-value-regexp,\n .object-value-symbol{white-space:pre-wrap;word-break:break-all}.formatted-stack-frame{display:var(--display-formatted-stack-frame-default);&:has(.ignore-list-link){display:var(--display-ignored-formatted-stack-frame);opacity:60%;& + .formatted-builtin-stack-frame{display:var(--display-ignored-formatted-stack-frame);opacity:60%}}}}.console-message-stack-trace-wrapper{--override-display-stack-preview-toggle-link:none;--display-formatted-stack-frame-default:block;flex:1 1 auto;display:flex;flex-direction:column;align-items:stretch;&:has(div > .stack-preview-container.show-hidden-rows){--display-ignored-formatted-stack-frame:var(--display-formatted-stack-frame-default)}&:has(.formatted-stack-frame .ignore-list-link):has(.formatted-stack-frame .devtools-link:not(.ignore-list-link)){--override-display-stack-preview-toggle-link:table-row;--override-display-stack-preview-hidden-div:block;&:not(:has(div > .stack-preview-container.show-hidden-rows)){--display-ignored-formatted-stack-frame:none}}& > .hidden-stack-trace{display:var(--override-display-stack-preview-hidden-div,none);--override-display-stack-preview-tbody:none}}.repeated-message .console-message-stack-trace-toggle,\n.repeated-message > .console-message-text{flex:1}.console-warning-level .console-message-text{color:var(--sys-color-on-surface-yellow)}.console-error-level .console-message-text,\n.console-error-level .console-view-object-properties-section{color:var(--override-error-text-color)!important}.console-message-formatted-table{clear:both}.console-message .source-code{line-height:1.2}.console-message-anchor{float:right;text-align:right;max-width:100%;margin-left:4px}.cookie-report-anchor{margin-top:-3px;margin-bottom:-5px}.console-message-nowrap-below,\n.console-message-nowrap-below div,\n.console-message-nowrap-below span{white-space:nowrap!important}.object-state-note{display:inline-block;width:11px;height:11px;color:var(--sys-color-on-tonal-container);text-align:center;border-radius:3px;line-height:13px;margin:0 6px;font-size:9px}.console-object{white-space:pre-wrap;word-break:break-all}.console-message-stack-trace-wrapper > *{flex:none}.console-message-expand-icon{margin-bottom:-4px}.console-searchable-view{max-height:100%}.console-view-pinpane{flex:none;max-height:50%}.message-count{width:0;height:0}devtools-console-insight{margin:9px 22px 11px 24px}.hover-button{--width:24px;align-items:center;border-radius:50%;border:none;box-shadow:0 1px 3px 1px rgb(0 0 0/15%),0 1px 2px 0 rgb(0 0 0/30%);box-sizing:border-box;background-color:var(--sys-color-tonal-container);color:var(--sys-color-on-tonal-container);font:var(--sys-typescale-body4-medium);height:var(--width);justify-content:center;margin:0;max-height:var(--width);max-width:var(--width);min-height:var(--width);min-width:var(--width);overflow:hidden;padding:var(--sys-size-3) var(--sys-size-4);position:absolute;right:6px;display:none;width:var(--width);z-index:1;.theme-with-dark-background &{border:1px solid var(--sys-color-neutral-outline);background-color:var(--sys-color-primary);color:var(--sys-color-on-primary)}& devtools-icon{box-sizing:border-box;flex-shrink:0;height:var(--sys-size-8);min-height:var(--sys-size-8);min-width:var(--sys-size-8);width:var(--sys-size-8);--devtools-icon-color:var(--sys-color-on-tonal-container)}.theme-with-dark-background & devtools-icon{--devtools-icon-color:var(--sys-color-on-primary)}}.hover-button:focus,\n.hover-button:hover{border-radius:4px;max-width:200px;transition:max-width var(--sys-motion-duration-short4) var(--sys-motion-easing-emphasized),border-radius 50ms linear;width:fit-content;gap:var(--sys-size-3)}.hover-button:focus-visible{outline:2px solid var(--sys-color-primary);outline-offset:2px}.button-label{display:block;overflow:hidden;white-space:nowrap;& div{display:inline-block;vertical-align:-1px}}.console-message-wrapper:not(.has-insight){&:hover,\n &:focus,\n &.console-selected{.hover-button{display:flex;&:focus,\n &:hover{display:inline-flex}}}}@media (forced-colors: active){.console-message-expand-icon,\n .console-warning-level .expand-group-icon{forced-color-adjust:none;color:ButtonText}.console-message-wrapper:focus,\n .console-message-wrapper:focus:last-of-type{forced-color-adjust:none;background-color:Highlight;border-top-color:Highlight;border-bottom-color:Highlight}.console-message-wrapper:focus *,\n .console-message-wrapper:focus:last-of-type *,\n .console-message-wrapper:focus .devtools-link,\n .console-message-wrapper:focus:last-of-type .devtools-link{color:HighlightText!important}#console-messages .devtools-link,\n #console-messages .devtools-link:hover{color:linktext}#console-messages .link:focus-visible,\n #console-messages .devtools-link:focus-visible{background:Highlight;color:HighlightText}.console-message-wrapper:focus devtools-icon{color:HighlightText}.console-message-wrapper.console-error-level:focus,\n .console-message-wrapper.console-error-level:focus:last-of-type{--override-error-text-color:HighlightText}}\n/*# sourceURL=${import.meta.resolve("./consoleView.css")} */\n`};function re(e){return"native"===e?"native":"eval"===e?"eval":""===e?"empty url":e.startsWith?.("address at ")?"address at":null}function ae(e){return/^\s*... skipping \d+ frames$/.exec(e)?"skipping x frames":null}function le(t,s){if(!/^[\w.]*Error\b/.test(s))return null;const n=t.debuggerModel(),o=t.target().inspectedURL(),i=s.split("\n"),r=[],a=new Set;for(const t of i){const i=/^\s*at\s(async\s)?/.exec(t);if(!i){if(r.length&&r[r.length-1].isCallFrame){const e=ae(t);if(null!==e){a.add(e),r[r.length-1].link?r.push({line:t,isCallFrame:!1}):r[r.length-1].line+=`\n${t}`;continue}return m.rnPerfMetrics.stackTraceSymbolicationFailed(s,t,'"at (url)" not found'),null}r.push({line:t});continue}const l=!0;let c=i[0].length,d=t.length,h=!1;for(;")"===t[d-1];)for(d--,h=!0;;){if(c=t.indexOf(" (",c),c<0)return m.rnPerfMetrics.stackTraceSymbolicationFailed(s,t,'left "(" not found'),null;if(c+=2,!t.substring(c).startsWith("eval at "))break;if(c+=8,d=t.lastIndexOf(", ",d)-1,d<0)return m.rnPerfMetrics.stackTraceSymbolicationFailed(s,t,'right "(" not found'),null}const u=t.substring(c,d),p=e.ParsedURL.ParsedURL.splitLineAndColumn(u),g=re(p.url);if(null!==g&&a.add(g),""===p.url||null!==g){r.length&&r[r.length-1].isCallFrame&&!r[r.length-1].link?r[r.length-1].line+=`\n${t}`:r.push({line:t,isCallFrame:l});continue}let f=ce(n,p.url);if(!f&&e.ParsedURL.ParsedURL.isRelativeURL(p.url)&&(f=ce(n,e.ParsedURL.ParsedURL.completeURL(o,p.url))),!f)return m.rnPerfMetrics.stackTraceSymbolicationFailed(s,t,"url parsing failed"),null;r.push({line:t,isCallFrame:l,link:{url:f,prefix:t.substring(0,c),suffix:t.substring(d),enclosedInBraces:h,lineNumber:p.lineNumber,columnNumber:p.columnNumber}})}return r?.length&&m.rnPerfMetrics.stackTraceSymbolicationSucceeded(Array.from(a)),r}function ce(t,s){if(!s)return null;if(e.ParsedURL.ParsedURL.isValidUrlString(s))return s;if(t.scriptsForSourceURL(s).length)return s;const n=new URL(s,"file://");return t.scriptsForSourceURL(n.href).length?n.href:null}function de(e,t){for(const s of e){const e=t.callFrames.find((e=>he(s,e)));e&&s.link&&(s.link.scriptId=e.scriptId)}}function he(e,t){if(!e.link)return!1;const{url:s,lineNumber:n,columnNumber:o}=e.link;return s===t.url&&n===t.lineNumber&&o===t.columnNumber}var ue=Object.freeze({__proto__:null,augmentErrorStackWithScriptIds:de,parseSourcePositionsFromErrorStack:le});const me={consoleclearWasPreventedDueTo:"`console.clear()` was prevented due to 'Preserve log'",consoleWasCleared:"Console was cleared",clearAllMessagesWithS:"Clear all messages with {PH1}",assertionFailed:"Assertion failed: ",violationS:"`[Violation]` {PH1}",interventionS:"`[Intervention]` {PH1}",deprecationS:"`[Deprecation]` {PH1}",thisValueWillNotBeCollectedUntil:"This value will not be collected until console is cleared.",thisValueWasEvaluatedUponFirst:"This value was evaluated upon first expanding. It may have changed since then.",functionWasResolvedFromBound:"Function was resolved from bound function.",exception:"",warning:"Warning",error:"Error",logpoint:"Logpoint",cndBreakpoint:"Conditional Breakpoint",repeatS:"{n, plural, =1 {Repeated # time} other {Repeated # times}}",warningS:"{n, plural, =1 {Warning, Repeated # time} other {Warning, Repeated # times}}",errorS:"{n, plural, =1 {Error, Repeated # time} other {Error, Repeated # times}}",url:"",tookNms:"took ms",someEvent:" event",Mxx:" M",attribute:"",index:"(index)",value:"Value",console:"Console",stackMessageExpanded:"Stack table expanded",stackMessageCollapsed:"Stack table collapsed",explainThisError:"Understand this error",explainThisWarning:"Understand this warning",explainThisMessage:"Understand this message",explainThisErrorWithAI:"Understand this error. Powered by AI.",explainThisWarningWithAI:"Understand this warning. Powered by AI.",explainThisMessageWithAI:"Understand this message. Powered by AI",SeeIssueInCookieReport:"Click to open privacy and security panel and show third-party cookie report"},pe=t.i18n.registerUIStrings("panels/console/ConsoleViewMessage.ts",me),ge=t.i18n.getLocalizedString.bind(void 0,pe),fe=new WeakMap,ve=e=>fe.get(e),be=(e,t)=>{const s=e.indexOf("\n"),n=-1===s?e:e.substring(0,s),o=-1===s?"":e.substring(s);return e=`${n}. ${t}${o}`},Ce=e=>t=>t instanceof n.RemoteObject.RemoteObject?t:e?"object"==typeof t?e.createRemoteObject(t):e.createRemoteObjectFromPrimitiveValue(t):n.RemoteObject.RemoteObject.fromLocalObject(t),xe="explain.console-message.hover",we=new IntersectionObserver((e=>{for(const t of e)t.intersectionRatio>0&&m.userMetrics.actionTaken(m.UserMetrics.Action.InsightHoverButtonShown)}));class Se{message;linkifier;repeatCountInternal;closeGroupDecorationCount;consoleGroupInternal;selectableChildren;messageResized;elementInternal;consoleRowWrapper=null;previewFormatter;searchRegexInternal;messageIcon;traceExpanded;expandTrace;anchorElement;contentElementInternal;nestingLevelMarkers;searchHighlightNodes;searchHighlightNodeChanges;isVisibleInternal;cachedHeight;messagePrefix;timestampElement;inSimilarGroup;similarGroupMarker;lastInSimilarGroup;groupKeyInternal;repeatCountElement;requestResolver;issueResolver;#e=!1;#t=Promise.resolve();constructor(e,t,s,n,o){this.message=e,this.linkifier=t,this.requestResolver=s,this.issueResolver=n,this.repeatCountInternal=1,this.closeGroupDecorationCount=0,this.selectableChildren=[],this.messageResized=o,this.elementInternal=null,this.previewFormatter=new c.RemoteObjectPreviewFormatter.RemoteObjectPreviewFormatter,this.searchRegexInternal=null,this.messageIcon=null,this.traceExpanded=!1,this.expandTrace=null,this.anchorElement=null,this.contentElementInternal=null,this.nestingLevelMarkers=null,this.searchHighlightNodes=[],this.searchHighlightNodeChanges=[],this.isVisibleInternal=!1,this.cachedHeight=0,this.messagePrefix="",this.timestampElement=null,this.inSimilarGroup=!1,this.similarGroupMarker=null,this.lastInSimilarGroup=!1,this.groupKeyInternal="",this.repeatCountElement=null,this.consoleGroupInternal=null}setInsight(e){this.elementInternal?.querySelector("devtools-console-insight")?.remove(),this.elementInternal?.append(e),this.elementInternal?.classList.toggle("has-insight",!0),e.addEventListener("close",(()=>{m.userMetrics.actionTaken(m.UserMetrics.Action.InsightClosed),this.elementInternal?.classList.toggle("has-insight",!1),this.elementInternal?.removeChild(e)}),{once:!0})}element(){return this.toMessageElement()}wasShown(){this.isVisibleInternal=!0}onResize(){}willHide(){this.isVisibleInternal=!1,this.cachedHeight=this.element().offsetHeight}isVisible(){return this.isVisibleInternal}fastHeight(){return this.cachedHeight?this.cachedHeight:this.approximateFastHeight()}approximateFastHeight(){return 19}consoleMessage(){return this.message}formatErrorStackPromiseForTest(){return this.#t}buildMessage(){let t,s=this.message.messageText;if(this.message.source===e.Console.FrontendMessageSource.ConsoleAPI)switch(this.message.type){case"trace":t=this.format(this.message.parameters||["console.trace"]);break;case"clear":t=document.createElement("span"),t.classList.add("console-info"),e.Settings.Settings.instance().moduleSetting("preserve-console-log").get()?t.textContent=ge(me.consoleclearWasPreventedDueTo):t.textContent=ge(me.consoleWasCleared),o.Tooltip.Tooltip.install(t,ge(me.clearAllMessagesWithS,{PH1:String(o.ShortcutRegistry.ShortcutRegistry.instance().shortcutTitleForAction("console.clear"))}));break;case"dir":{const e=["%O",this.message.parameters?this.message.parameters[0]:void 0];t=this.format(e);break}case"profile":case"profileEnd":t=this.format([s]);break;default:{if("assert"===this.message.type&&(this.messagePrefix=ge(me.assertionFailed)),this.message.parameters&&1===this.message.parameters.length){const e=this.message.parameters[0];"string"!=typeof e&&"string"===e.type&&(t=this.tryFormatAsError(e.value))}const e=this.message.parameters||[s];t=t||this.format(e)}}else if("network"===this.message.source)t=this.formatAsNetworkRequest()||this.format([s]);else{const e=this.message.parameters&&s===this.message.parameters[0];"violation"===this.message.source?s=ge(me.violationS,{PH1:s}):"intervention"===this.message.source?s=ge(me.interventionS,{PH1:s}):"deprecation"===this.message.source&&(s=ge(me.deprecationS,{PH1:s}));const n=this.message.parameters||[s];e&&(n[0]=s),t=this.format(n)}t.classList.add("console-message-text");const n=document.createElement("span");if(n.classList.add("source-code"),this.anchorElement=this.buildMessageAnchor(),this.anchorElement&&n.appendChild(this.anchorElement),n.appendChild(t),"fusebox_preserve_log_rec"===this.message.context){const t=document.createElement("button");t.classList.add("devtools-link","text-button","link-style"),t.appendChild(t.ownerDocument.createTextNode("show settings")),t.addEventListener("click",(async()=>{await e.Revealer.reveal(e.Settings.Settings.instance().moduleSetting("preserve-console-log"))})),n.appendChild(t)}return n}formatAsNetworkRequest(){const e=g.NetworkLog.NetworkLog.requestForConsoleMessage(this.message);if(!e)return null;const t=document.createElement("span");if("error"===this.message.level){o.UIUtils.createTextChild(t,e.requestMethod+" ");const s=u.Linkifier.Linkifier.linkifyRevealable(e,e.url(),e.url(),void 0,void 0,"network-request");s.tabIndex=-1,this.selectableChildren.push({element:s,forceSelect:()=>s.focus()}),t.appendChild(s),e.failed&&o.UIUtils.createTextChildren(t," ",e.localizedFailDescription||""),0!==e.statusCode&&o.UIUtils.createTextChildren(t," ",String(e.statusCode));const n=e.getInferredStatusText();n&&o.UIUtils.createTextChildren(t," (",n,")")}else{const s=this.message.messageText,n=this.linkifyWithCustomLinkifier(s,((t,s,n,o)=>{const i=s===e.url()?u.Linkifier.Linkifier.linkifyRevealable(e,s,e.url(),void 0,void 0,"network-request"):u.Linkifier.Linkifier.linkifyURL(s,{text:t,lineNumber:n,columnNumber:o});return i.tabIndex=-1,this.selectableChildren.push({element:i,forceSelect:()=>i.focus()}),i}));t.appendChild(n)}return t}createAffectedResourceLinks(){const e=[],t=this.message.getAffectedResources()?.requestId;if(t){const s=new x.RequestLinkIcon.RequestLinkIcon;s.classList.add("resource-links"),s.data={affectedRequest:{requestId:t},requestResolver:this.requestResolver,displayURL:!1},e.push(s)}const s=this.message.getAffectedResources()?.issueId;if(s){const t=new C.IssueLinkIcon.IssueLinkIcon;t.classList.add("resource-links"),t.data={issueId:s,issueResolver:this.issueResolver},e.push(t)}return e}#s(t){const s=new v.Button.Button;s.data={size:"SMALL",variant:"icon",iconName:"cookie",jslogContext:"privacy",title:ge(me.SeeIssueInCookieReport)},s.addEventListener("click",(()=>{e.Revealer.reveal(new S.CookieReportView.CookieReportView)})),t.appendChild(s)}#n(){const e=g.NetworkLog.NetworkLog.requestForConsoleMessage(this.message);if(e?.resourceType().isStyleSheet())return m.UserMetrics.Action.StyleSheetInitiatorLinkClicked}buildMessageAnchor(){const e=this.message.runtimeModel();if(!e)return null;if(this.message.isCookieReportIssue&&r.Runtime.hostConfig.devToolsPrivacyUI?.enabled){const e=document.createElement("span");return e.classList.add("console-message-anchor","cookie-report-anchor"),this.#s(e),o.UIUtils.createTextChild(e," "),e}const t=(({stackFrameWithBreakpoint:t,scriptId:n,stackTrace:o,url:i,line:r,column:a})=>{const l=this.#n();return t?this.linkifier.maybeLinkifyConsoleCallFrame(e.target(),t,{inlineFrameIndex:0,revealBreakpoint:!0,userMetric:l}):n?this.linkifier.linkifyScriptLocation(e.target(),n,i||s.DevToolsPath.EmptyUrlString,r,{columnNumber:a,inlineFrameIndex:0,userMetric:l}):o?.callFrames.length?this.linkifier.linkifyStackTraceTopFrame(e.target(),o):i&&"undefined"!==i?this.linkifier.linkifyScriptLocation(e.target(),null,i,r,{columnNumber:a,inlineFrameIndex:0,userMetric:l}):null})(this.message);if(t){t.tabIndex=-1,this.selectableChildren.push({element:t,forceSelect:()=>t.focus()});const e=document.createElement("span");e.classList.add("console-message-anchor"),e.appendChild(t);for(const t of this.createAffectedResourceLinks())o.UIUtils.createTextChild(e," "),e.append(t);return o.UIUtils.createTextChild(e," "),e}return null}buildMessageWithStackTrace(t){const s=h.Icon.create("triangle-right","console-message-expand-icon"),{stackTraceElement:n,contentElement:i,messageElement:r,clickableElement:a,toggleElement:l}=this.buildMessageHelper(t.target(),this.message.stackTrace,s);let c;this.expandTrace=e=>{e?c=window.setTimeout((()=>{m.userMetrics.actionTaken(m.UserMetrics.Action.TraceExpanded)}),300):clearTimeout(c),s.name=e?"triangle-down":"triangle-right",n.classList.toggle("hidden-stack-trace",!e);const t=ge(e?me.stackMessageExpanded:me.stackMessageCollapsed);o.ARIAUtils.setLabel(i,`${r.textContent} ${t}`),o.ARIAUtils.alert(t),o.ARIAUtils.setExpanded(a,e),this.traceExpanded=e};return a.addEventListener("click",(e=>{o.UIUtils.isEditing()||i.hasSelection()||(this.expandTrace&&this.expandTrace(n.classList.contains("hidden-stack-trace")),e.consume())}),!1),"trace"===this.message.type&&e.Settings.Settings.instance().moduleSetting("console-trace-expand").get()&&this.expandTrace(!0),l._expandStackTraceForTest=this.expandTrace.bind(this,!0),l}buildMessageWithIgnoreLinks(){const{toggleElement:e}=this.buildMessageHelper(null,void 0,null);return e}buildMessageHelper(e,t,s){const n=document.createElement("div");n.classList.add("console-message-stack-trace-toggle");const i=n.createChild("div","console-message-stack-trace-wrapper"),r=this.buildMessage(),a=i.createChild("div");o.ARIAUtils.setExpanded(a,!1),s&&a.appendChild(s),a.tabIndex=-1,a.appendChild(r);const l=i.createChild("div"),c=u.JSPresentationUtils.buildStackTracePreviewContents(e,this.linkifier,{stackTrace:t,tabStops:void 0,widthConstrained:!0});l.appendChild(c.element);for(const e of c.links)this.selectableChildren.push({element:e,forceSelect:()=>e.focus()});return l.classList.add("hidden-stack-trace"),o.ARIAUtils.setLabel(i,`${r.textContent} ${ge(me.stackMessageCollapsed)}`),o.ARIAUtils.markAsGroup(l),{stackTraceElement:l,contentElement:i,messageElement:r,clickableElement:a,toggleElement:n}}format(e){const t=document.createElement("span");if(this.messagePrefix&&(t.createChild("span").textContent=this.messagePrefix),!e.length)return t;let s=e.map(Ce(this.message.runtimeModel()));const i="string"===n.RemoteObject.RemoteObject.type(s[0])&&(this.message.type!==n.ConsoleModel.FrontendMessageType.Result||"error"===this.message.level);i&&(s=this.formatWithSubstitutionString(s[0].description,s.slice(1),t),s.length&&o.UIUtils.createTextChild(t," "));for(let e=0;ePe()){const e=new c.ObjectPropertiesSection.ExpandableTextPropertyValue(document.createElement("span"),s,Ue());t.appendChild(e.element)}else o.UIUtils.createTextChild(t,s);return t.addEventListener("contextmenu",this.contextMenuEventFired.bind(this,e),!1),t}formatParameterAsTrustedType(e){const t=document.createElement("span"),s=document.createElement("span");return s.appendChild(this.formatParameterAsString(e)),s.classList.add("object-value-string"),o.UIUtils.createTextChild(t,`${e.className} `),t.appendChild(s),t}formatParameterAsObject(e,t){const s=document.createElement("span");if(s.classList.add("console-object"),t&&e.preview)s.classList.add("console-object-preview"),this.previewFormatter.appendObjectPreview(s,e.preview,!1),c.ObjectPropertiesSection.ObjectPropertiesSection.appendMemoryIcon(s,e);else if("function"===e.type){const t=s.createChild("span");c.ObjectPropertiesSection.ObjectPropertiesSection.formatObjectAsFunction(e,t,!1),s.classList.add("object-value-function")}else"trustedtype"===e.subtype?s.appendChild(this.formatParameterAsTrustedType(e)):o.UIUtils.createTextChild(s,e.description||"");if(!e.hasChildren||e.customPreview())return s;const i=s.createChild("span","object-state-note info-note");this.message.type===n.ConsoleModel.FrontendMessageType.QueryObjectResult?o.Tooltip.Tooltip.install(i,ge(me.thisValueWillNotBeCollectedUntil)):o.Tooltip.Tooltip.install(i,ge(me.thisValueWasEvaluatedUponFirst));const r=new c.ObjectPropertiesSection.ObjectPropertiesSection(e,s,this.linkifier);return r.element.classList.add("console-view-object-properties-section"),r.enableContextMenu(),r.setShowSelectionOnKeyboardFocus(!0,!0),this.selectableChildren.push(r),r.addEventListener(o.TreeOutline.Events.ElementAttached,this.messageResized),r.addEventListener(o.TreeOutline.Events.ElementExpanded,this.messageResized),r.addEventListener(o.TreeOutline.Events.ElementCollapsed,this.messageResized),r.element}formatParameterAsFunction(e,t){const s=document.createElement("span");return n.RemoteObject.RemoteFunction.objectAsFunction(e).targetFunction().then(function(n){const i=document.createElement("span"),r=c.ObjectPropertiesSection.ObjectPropertiesSection.formatObjectAsFunction(n,i,!0,t);if(s.appendChild(i),n!==e){const e=s.createChild("span","object-state-note info-note");o.Tooltip.Tooltip.install(e,ge(me.functionWasResolvedFromBound))}s.addEventListener("contextmenu",this.contextMenuEventFired.bind(this,e),!1),r.then((()=>this.formattedParameterAsFunctionForTest()))}.bind(this)),s}formattedParameterAsFunctionForTest(){}contextMenuEventFired(e,t){const s=new o.ContextMenu.ContextMenu(t);s.appendApplicableItems(e),s.show()}renderPropertyPreviewOrAccessor(e,t,s){return"accessor"===t.type?this.formatAsAccessorProperty(e,s.map((e=>e.name.toString())),!1):this.previewFormatter.renderPropertyPreview(t.type,"subtype"in t?t.subtype:void 0,null,t.value)}formatParameterAsNode(e){const t=document.createElement("span"),s=e.runtimeModel().target().model(n.DOMModel.DOMModel);return s?(s.pushObjectAsNodeToFrontend(e).then((async s=>{if(!s)return void t.appendChild(this.formatParameterAsObject(e,!1));const n=await o.UIUtils.Renderer.render(s);n?(n.tree&&(this.selectableChildren.push(n.tree),n.tree.addEventListener(o.TreeOutline.Events.ElementAttached,this.messageResized),n.tree.addEventListener(o.TreeOutline.Events.ElementExpanded,this.messageResized),n.tree.addEventListener(o.TreeOutline.Events.ElementCollapsed,this.messageResized)),t.appendChild(n.node)):t.appendChild(this.formatParameterAsObject(e,!1)),this.formattedParameterAsNodeForTest()})),t):t}formattedParameterAsNodeForTest(){}formatParameterAsString(e){const t=e.description??"",n=s.StringUtilities.formatAsJSLiteral(t),o=document.createElement("span");return o.addEventListener("contextmenu",this.contextMenuEventFired.bind(this,e),!1),o.appendChild(this.linkifyStringAsFragment(n)),o}formatParameterAsError(e){const t=document.createElement("span"),s=async(e,o)=>{const i=n.RemoteObject.RemoteError.objectAsError(e),[r,a]=await Promise.all([i.exceptionDetails(),i.cause()]);let l=this.tryFormatAsError(i.errorStack,r);if(l||(l=document.createElement("span"),l.append(this.linkifyStringAsFragment(i.errorStack))),o){const e=document.createElement("div");e.append("Caused by: ",l),t.appendChild(e)}else t.appendChild(l);if(a&&"error"===a.subtype)await s(a,!0);else if(a&&"string"===a.type){const e=document.createElement("div");e.append(`Caused by: ${a.value}`),t.append(e)}};return this.#t=s(e,!1),t}formatAsArrayEntry(e){return this.previewFormatter.renderPropertyPreview(e.type,e.subtype,e.className,e.description)}formatAsAccessorProperty(e,t,n){const i=c.ObjectPropertiesSection.ObjectPropertyTreeElement.createRemoteObjectAccessorPropertySpan(e,t,function(e){const t=e.wasThrown,r=e.object;if(!r)return;if(i.removeChildren(),t){const e=i.createChild("span");e.textContent=ge(me.exception),o.Tooltip.Tooltip.install(e,r.description)}else if(n)i.appendChild(this.formatAsArrayEntry(r));else{const e=100,t=r.type,n=r.subtype;let o="";"function"!==t&&r.description&&(o="string"===t||"regexp"===n||"trustedtype"===n?s.StringUtilities.trimMiddle(r.description,e):s.StringUtilities.trimEndWithMaxLength(r.description,e)),i.appendChild(this.previewFormatter.renderPropertyPreview(t,n,r.className,o))}}.bind(this));return i}formatWithSubstitutionString(e,t,s){const n=new Map,{tokens:o,args:i}=j(e,t);for(const e of o)switch(e.type){case"generic":s.append(this.formatParameter(e.value,!0,!1));break;case"optimal":s.append(this.formatParameter(e.value,!1,!0));break;case"string":if(0===n.size)s.append(this.linkifyStringAsFragment(e.value));else{const t=e.value.split("\n");for(let e=0;e0&&s.append(document.createElement("br"));const o=document.createElement("span");o.style.setProperty("contain","paint"),o.style.setProperty("display","inline-block"),o.style.setProperty("max-width","100%"),o.appendChild(this.linkifyStringAsFragment(t[e]));for(const[e,{value:t,priority:s}]of n)o.style.setProperty(e,t,s);s.append(o)}}break;case"style":O(n,e.value)}return i}matchesFilterRegex(e){e.lastIndex=0;const t=this.contentElement(),s=this.anchorElement?this.anchorElement.deepTextContent():"";return Boolean(s)&&e.test(s.trim())||e.test(t.deepTextContent().slice(s.length))}matchesFilterText(e){return this.contentElement().deepTextContent().toLowerCase().includes(e.toLowerCase())}updateTimestamp(){this.contentElementInternal&&(e.Settings.Settings.instance().moduleSetting("console-timestamps-enabled").get()?(this.timestampElement||(this.timestampElement=document.createElement("span"),this.timestampElement.classList.add("console-timestamp")),this.timestampElement.textContent=o.UIUtils.formatTimestamp(this.message.timestamp,!1)+" ",o.Tooltip.Tooltip.install(this.timestampElement,o.UIUtils.formatTimestamp(this.message.timestamp,!0)),this.contentElementInternal.insertBefore(this.timestampElement,this.contentElementInternal.firstChild)):this.timestampElement&&(this.timestampElement.remove(),this.timestampElement=null))}nestingLevel(){let e=0;for(let t=this.consoleGroup();null!==t;t=t.consoleGroup())e++;return e}setConsoleGroup(e){this.consoleGroupInternal=e}clearConsoleGroup(){this.consoleGroupInternal=null}consoleGroup(){return this.consoleGroupInternal}setInSimilarGroup(e,t){this.inSimilarGroup=e,this.lastInSimilarGroup=e&&Boolean(t),this.similarGroupMarker&&!e?(this.similarGroupMarker.remove(),this.similarGroupMarker=null):this.elementInternal&&!this.similarGroupMarker&&e&&(this.similarGroupMarker=document.createElement("div"),this.similarGroupMarker.classList.add("nesting-level-marker"),this.consoleRowWrapper?.insertBefore(this.similarGroupMarker,this.consoleRowWrapper.firstChild),this.similarGroupMarker.classList.toggle("group-closed",this.lastInSimilarGroup))}isLastInSimilarGroup(){return Boolean(this.inSimilarGroup)&&Boolean(this.lastInSimilarGroup)}resetCloseGroupDecorationCount(){this.closeGroupDecorationCount&&(this.closeGroupDecorationCount=0,this.updateCloseGroupDecorations())}incrementCloseGroupDecorationCount(){++this.closeGroupDecorationCount,this.updateCloseGroupDecorations()}updateCloseGroupDecorations(){if(this.nestingLevelMarkers)for(let e=0,t=this.nestingLevelMarkers.length;ee.element.hasFocus())):-1}onKeyDown(e){!o.UIUtils.isEditing()&&this.elementInternal&&this.elementInternal.hasFocus()&&!this.elementInternal.hasSelection()&&this.maybeHandleOnKeyDown(e)&&e.consume(!0)}maybeHandleOnKeyDown(e){const t=this.focusedChildIndex(),s=-1===t;if(this.expandTrace&&s&&("ArrowLeft"===e.key&&this.traceExpanded||"ArrowRight"===e.key&&!this.traceExpanded))return this.expandTrace(!this.traceExpanded),!0;if(!this.selectableChildren.length)return!1;if("ArrowLeft"===e.key)return this.elementInternal&&this.elementInternal.focus(),!0;if("ArrowRight"===e.key&&s&&this.selectNearestVisibleChild(0))return!0;if("ArrowUp"===e.key){const e=this.nearestVisibleChild(0);if(this.selectableChildren[t]===e&&e)return this.elementInternal&&this.elementInternal.focus(),!0;if(this.selectNearestVisibleChild(t-1,!0))return!0}if("ArrowDown"===e.key){if(s&&this.selectNearestVisibleChild(0))return!0;if(!s&&this.selectNearestVisibleChild(t+1))return!0}return!1}selectNearestVisibleChild(e,t){const s=this.nearestVisibleChild(e,t);return!!s&&(s.forceSelect(),!0)}nearestVisibleChild(e,t){const s=this.selectableChildren.length;if(e<0||e>=s)return null;const n=t?-1:1;let o=e;for(;!this.selectableChildren[o].element.offsetParent;)if(o+=n,o<0||o>=s)return null;return this.selectableChildren[o]}focusLastChildOrSelf(){this.elementInternal&&!this.selectNearestVisibleChild(this.selectableChildren.length-1,!0)&&this.elementInternal.focus()}setContentElement(e){console.assert(!this.contentElementInternal,"Cannot set content element twice"),this.contentElementInternal=e}getContentElement(){return this.contentElementInternal}contentElement(){if(this.contentElementInternal)return this.contentElementInternal;const e=document.createElement("div");e.classList.add("console-message"),this.messageIcon&&e.appendChild(this.messageIcon),this.contentElementInternal=e;const t=this.message.runtimeModel();let s;const n=Boolean(this.message.stackTrace)&&("network"===this.message.source||"violation"===this.message.source||"error"===this.message.level||"warning"===this.message.level||"trace"===this.message.type);return s=t&&n?this.buildMessageWithStackTrace(t):this.buildMessageWithIgnoreLinks(),e.appendChild(s),this.updateTimestamp(),this.contentElementInternal}toMessageElement(){return this.elementInternal||(this.elementInternal=document.createElement("div"),this.elementInternal.tabIndex=-1,this.elementInternal.addEventListener("keydown",this.onKeyDown.bind(this)),this.updateMessageElement(),this.elementInternal.classList.toggle("console-adjacent-user-command-result",this.#e)),this.elementInternal}updateMessageElement(){if(this.elementInternal){this.elementInternal.className="console-message-wrapper",this.elementInternal.setAttribute("jslog",`${d.item("console-message").track({click:!0,keydown:"ArrowUp|ArrowDown|ArrowLeft|ArrowRight|Enter|Space|Home|End"})}`),this.elementInternal.removeChildren(),this.consoleRowWrapper=this.elementInternal.createChild("div"),this.consoleRowWrapper.classList.add("console-row-wrapper"),this.message.isGroupStartMessage()&&this.elementInternal.classList.add("console-group-title"),this.message.source===e.Console.FrontendMessageSource.ConsoleAPI&&this.elementInternal.classList.add("console-from-api"),this.inSimilarGroup&&(this.similarGroupMarker=this.consoleRowWrapper.createChild("div","nesting-level-marker"),this.similarGroupMarker.classList.toggle("group-closed",this.lastInSimilarGroup)),this.nestingLevelMarkers=[];for(let e=0;e1&&this.showRepeatCountElement()}}shouldShowInsights(){return(this.message.source!==e.Console.FrontendMessageSource.ConsoleAPI||""!==this.message.stackTrace?.callFrames[0]?.url)&&(""!==this.message.messageText&&this.message.source!==e.Console.FrontendMessageSource.SELF_XSS&&("error"===this.message.level||"warning"===this.message.level))}getExplainLabel(){return"error"===this.message.level?ge(me.explainThisError):"warning"===this.message.level?ge(me.explainThisWarning):ge(me.explainThisMessage)}#i(){return"error"===this.message.level?ge(me.explainThisErrorWithAI):"warning"===this.message.level?ge(me.explainThisWarningWithAI):ge(me.explainThisMessageWithAI)}getExplainActionId(){return"error"===this.message.level?"explain.console-message.context.error":"warning"===this.message.level?"explain.console-message.context.warning":"explain.console-message.context.other"}#o(){const e=new h.Icon.Icon;e.data={iconName:"lightbulb-spark",color:"var(--devtools-icon-color)",width:"16px",height:"16px"};const t=document.createElement("button");t.append(e),t.onclick=e=>{e.stopPropagation(),o.Context.Context.instance().setFlavor(Se,this);o.ActionRegistry.ActionRegistry.instance().getAction(xe).execute()};const s=document.createElement("div");s.classList.add("button-label");const n=document.createElement("div");return n.innerText=this.getExplainLabel(),s.append(n),t.append(s),t.classList.add("hover-button"),t.ariaLabel=this.#i(),t.tabIndex=0,t.setAttribute("jslog",`${d.action(xe).track({click:!0})}`),we.observe(t),t}shouldRenderAsWarning(){return!("verbose"!==this.message.level&&"info"!==this.message.level||"violation"!==this.message.source&&"deprecation"!==this.message.source&&"intervention"!==this.message.source&&"recommendation"!==this.message.source)}updateMessageIcon(){this.messageIcon&&(this.messageIcon.remove(),this.messageIcon=null);let e="",t="",s="";"warning"===this.message.level?(e="var(--icon-warning)",t="warning-filled",s=ge(me.warning)):"error"===this.message.level?(e="var(--icon-error)",t="cross-circle-filled",s=ge(me.error)):this.message.originatesFromLogpoint?(t="console-logpoint",s=ge(me.logpoint)):this.message.originatesFromConditionalBreakpoint&&(t="console-conditional-breakpoint",s=ge(me.cndBreakpoint)),t&&(this.messageIcon=new h.Icon.Icon,this.messageIcon.data={iconName:t,color:e,width:"14px",height:"14px"},this.messageIcon.classList.add("message-level-icon"),this.contentElementInternal&&this.contentElementInternal.insertBefore(this.messageIcon,this.contentElementInternal.firstChild),o.ARIAUtils.setLabel(this.messageIcon,s))}setAdjacentUserCommandResult(e){this.#e=e,this.elementInternal?.classList.toggle("console-adjacent-user-command-result",this.#e)}repeatCount(){return this.repeatCountInternal||1}resetIncrementRepeatCount(){this.repeatCountInternal=1,this.repeatCountElement&&(this.repeatCountElement.remove(),this.contentElementInternal&&this.contentElementInternal.classList.remove("repeated-message"),this.repeatCountElement=null)}incrementRepeatCount(){this.repeatCountInternal++,this.showRepeatCountElement()}setRepeatCount(e){this.repeatCountInternal=e,this.showRepeatCountElement()}showRepeatCountElement(){if(!this.elementInternal)return;if(!this.repeatCountElement){switch(this.repeatCountElement=document.createElement("dt-small-bubble"),this.repeatCountElement.classList.add("console-message-repeat-count"),this.message.level){case"warning":this.repeatCountElement.type="warning";break;case"error":this.repeatCountElement.type="error";break;case"verbose":this.repeatCountElement.type="verbose";break;default:this.repeatCountElement.type="info"}this.shouldRenderAsWarning()&&(this.repeatCountElement.type="warning"),this.consoleRowWrapper?.insertBefore(this.repeatCountElement,this.contentElementInternal),this.contentElement().classList.add("repeated-message")}let e;this.repeatCountElement.textContent=`${this.repeatCountInternal}`,e="warning"===this.message.level?ge(me.warningS,{n:this.repeatCountInternal}):"error"===this.message.level?ge(me.errorS,{n:this.repeatCountInternal}):ge(me.repeatS,{n:this.repeatCountInternal}),o.ARIAUtils.setLabel(this.repeatCountElement,e)}get text(){return this.message.messageText}toExportString(){const e=[],t=this.contentElement().childTextNodes().map(u.Linkifier.Linkifier.untruncatedNodeText).join("");for(let s=0;se.uiSourceCodeForURL(t))).flat().filter((e=>!!e)).map((e=>i.scriptsForUISourceCode(e))).flat();if(r.length){const t=new n.DebuggerModel.Location(e,r[0].scriptId,s||0,o),a=await i.pluginManager.getFunctionInfo(r[0],t);return a&&"frames"in a?a:{frames:[]}}return{frames:[]}}async expandInlineStackFrames(e,t,s,n,o,i,r,a){const{frames:l}=await this.getInlineFrames(e,n,o,i);if(!l.length)return!1;for(let c=0;cu.focus()}),h.appendChild(u),h.appendChild(this.linkifyStringAsFragment(s)),h.classList.add("formatted-stack-frame"),r.insertBefore(h,a)}return!0}createScriptLocationLinkForSyntaxError(e,t){const{scriptId:s,lineNumber:n,columnNumber:o}=t;if(!s)return;const i=t.url||e.scriptForId(s)?.sourceURL;if(!i)return;const r=this.linkifier.linkifyScriptLocation(e.target(),t.scriptId||null,i,n,{columnNumber:o,inlineFrameIndex:0,showColumnNumber:!0});return r.tabIndex=-1,r}tryFormatAsError(e,t){const s=this.message.runtimeModel();if(!s)return null;const n=t?.exceptionMetaData?.issueSummary;"string"==typeof n&&(e=be(e,n));const o=le(s,e);if(!o?.length)return null;t?.stackTrace&&de(o,t.stackTrace);const i=s.debuggerModel(),r=document.createElement("span");for(let e=0;eh.focus()}),c.appendChild(h),c.appendChild(this.linkifyStringAsFragment(d)),c.classList.add("formatted-stack-frame"),r.appendChild(c),!a.enclosedInBraces)continue;const u=a.prefix.substring(0,a.prefix.lastIndexOf(" ",a.prefix.length-3)),m=this.selectableChildren.length-1;this.expandInlineStackFrames(i,u,d,a.url,a.lineNumber,a.columnNumber,r,c).then((e=>{e&&(r.removeChild(c),this.selectableChildren.splice(m,1))}))}if(m.rnPerfMetrics.isEnabled()){const e=r.querySelectorAll("[data-fallback-anchor='1']").values().map((e=>e.getAttribute("title")||"")).map((e=>e.replace(/\:\d+(?:\:\d+)?$/,""))).toArray();if(0===e.length)m.rnPerfMetrics.stackTraceFrameUrlResolutionSucceeded();else{const t=Array.from(new Set(e));m.rnPerfMetrics.stackTraceFrameUrlResolutionFailed(t)}}return r}linkifyWithCustomLinkifier(t,n){if(t.length>Pe()){const e=new c.ObjectPropertiesSection.ExpandableTextPropertyValue(document.createElement("span"),t,Ue()),s=document.createDocumentFragment();return s.appendChild(e.element),s}const o=document.createDocumentFragment(),i=Se.tokenizeMessageText(t);let r=!1;for(const t of i)if(t.text)switch(r&&(t.text=`blob:${t.text}`,r=!r),"'blob:"===t.text&&t===i[0]&&(r=!0,t.text="'"),t.type){case"url":{const i=t.text.startsWith("www.")?"http://"+t.text:t.text,r=e.ParsedURL.ParsedURL.splitLineAndColumn(i),a=e.ParsedURL.ParsedURL.removeWasmFunctionInfoFromURL(r.url);let l;l=r?n(t.text,a,r.lineNumber,r.columnNumber):n(t.text,s.DevToolsPath.EmptyUrlString),o.appendChild(l);break}default:o.appendChild(document.createTextNode(t.text))}return o}linkifyStringAsFragment(e){return this.linkifyWithCustomLinkifier(e,((e,t,s,n)=>{const o={text:e,lineNumber:s,columnNumber:n},i=u.Linkifier.Linkifier.linkifyURL(t,o);return i.tabIndex=-1,this.selectableChildren.push({element:i,forceSelect:()=>i.focus()}),i}))}static tokenizeMessageText(e){const{tokenizerRegexes:t,tokenizerTypes:s}=Me();if(e.length>Pe())return[{text:e,type:void 0}];return i.TextUtils.Utils.splitStringByRegexes(e,t).map((e=>({text:e.value,type:s[e.regexIndex]})))}groupKey(){return this.groupKeyInternal||(this.groupKeyInternal=this.message.groupCategoryKey()+":"+this.groupTitle()),this.groupKeyInternal}groupTitle(){return Se.tokenizeMessageText(this.message.messageText).reduce(((e,t)=>{let s=t.text;return"url"===t.type?s=ge(me.url):"time"===t.type?s=ge(me.tookNms):"event"===t.type?s=ge(me.someEvent):"milestone"===t.type?s=ge(me.Mxx):"autofill"===t.type&&(s=ge(me.attribute)),e+s}),"").replace(/[%]o/g,"")}}let Ie=null,ye=null;function Me(){if(!Ie||!ye){const e="\\u0000-\\u0020\\u007f-\\u009f",t=new RegExp("(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\\/\\/|data:|www\\.)[^\\s"+e+'"]{2,}[^\\s'+e+"\"')}\\],:;.!?]","u"),s=/(?:\/[\w\.-]*)+\:[\d]+/,n=/took [\d]+ms/,o=/'\w+' event/,i=/\sM[6-7]\d/,r=/\(suggested: \"[\w-]+\"\)/,a=new Map;return a.set(t,"url"),a.set(s,"url"),a.set(n,"time"),a.set(o,"event"),a.set(i,"milestone"),a.set(r,"autofill"),Ie=Array.from(a.keys()),ye=Array.from(a.values()),{tokenizerRegexes:Ie,tokenizerTypes:ye}}return{tokenizerRegexes:Ie,tokenizerTypes:ye}}class Ee extends Se{collapsedInternal;expandGroupIcon;onToggle;groupEndMessageInternal;constructor(e,t,s,n,o,i){console.assert(e.isGroupStartMessage()),super(e,t,s,n,i),this.collapsedInternal="startGroupCollapsed"===e.type,this.expandGroupIcon=null,this.onToggle=o,this.groupEndMessageInternal=null}setCollapsed(e){this.collapsedInternal=e,this.expandGroupIcon&&(this.expandGroupIcon.name=this.collapsedInternal?"triangle-right":"triangle-down"),this.onToggle.call(null)}collapsed(){return this.collapsedInternal}maybeHandleOnKeyDown(e){return-1===this.focusedChildIndex()&&("ArrowLeft"===e.key&&!this.collapsedInternal||"ArrowRight"===e.key&&this.collapsedInternal)?(this.setCollapsed(!this.collapsedInternal),!0):super.maybeHandleOnKeyDown(e)}toMessageElement(){let e=this.elementInternal||null;if(!e){e=super.toMessageElement();const t=this.collapsedInternal?"triangle-right":"triangle-down";this.expandGroupIcon=h.Icon.create(t,"expand-group-icon"),this.contentElement().tabIndex=-1,this.repeatCountElement?this.repeatCountElement.insertBefore(this.expandGroupIcon,this.repeatCountElement.firstChild):this.consoleRowWrapper?.insertBefore(this.expandGroupIcon,this.contentElementInternal),e.addEventListener("click",(()=>this.setCollapsed(!this.collapsedInternal)))}return e}showRepeatCountElement(){super.showRepeatCountElement(),this.repeatCountElement&&this.expandGroupIcon&&this.repeatCountElement.insertBefore(this.expandGroupIcon,this.repeatCountElement.firstChild)}messagesHidden(){if(this.collapsed())return!0;const e=this.consoleGroup();return Boolean(e?.messagesHidden())}setGroupEnd(e){if("endGroup"!==e.consoleMessage().type)throw new Error("Invalid console message as group end");if(null!==this.groupEndMessageInternal)throw new Error("Console group already has an end");this.groupEndMessageInternal=e}groupEnd(){return this.groupEndMessageInternal}}class ke extends Se{formattedCommand;constructor(e,t,s,n,o){super(e,t,s,n,o),this.formattedCommand=null}contentElement(){const e=this.getContentElement();if(e)return e;const t=document.createElement("div");this.setContentElement(t),t.classList.add("console-user-command");const n=new h.Icon.Icon;return n.data={iconName:"chevron-right",color:"var(--icon-default)",width:"16px",height:"16px"},n.classList.add("command-result-icon"),t.appendChild(n),fe.set(t,this),this.formattedCommand=document.createElement("span"),this.formattedCommand.classList.add("source-code"),this.formattedCommand.textContent=s.StringUtilities.replaceControlCharacters(this.text),t.appendChild(this.formattedCommand),this.formattedCommand.textContent.lengthe===n?ge(me.value):e.toString()));if(a.length&&(this.dataGrid=w.SortableDataGrid.SortableDataGrid.create(l,a,ge(me.console)),this.dataGrid)){this.dataGrid.setStriped(!0),this.dataGrid.setFocusable(!1);const t=document.createElement("span");t.classList.add("console-message-text");const n=t.createChild("div","console-message-formatted-table"),o=n.createChild("span");n.appendChild(this.formatParameter(s,!0,!1));const i=o.attachShadow({mode:"open"}),r=this.dataGrid.asWidget();r.markAsRoot(),r.show(i),r.registerRequiredCSS(ie,N),e.appendChild(t),this.dataGrid.renderInline()}return e}approximateFastHeight(){const e=this.message.parameters?.[0];return e&&"string"!=typeof e&&e.preview?19*e.preview.properties.length:19}}const Le=1e4;let Re=1e4,Ae=5e3;const Pe=()=>Re,Ue=()=>Ae;var Be=Object.freeze({__proto__:null,ConsoleCommand:ke,ConsoleCommandResult:Te,ConsoleGroupViewMessage:Ee,ConsoleTableMessageView:Fe,ConsoleViewMessage:Se,MaxLengthForLinks:40,concatErrorDescriptionAndIssueSummary:be,getLongStringVisibleLength:Ue,getMaxTokenizableStringLength:Pe,getMessageForElement:ve,setLongStringVisibleLength:e=>{Ae=e},setMaxTokenizableStringLength:e=>{Re=e}});class He{element;topGapElement;topGapElementActive;contentElementInternal;bottomGapElement;bottomGapElementActive;provider;virtualSelectedIndex;firstActiveIndex;lastActiveIndex;renderedItems;anchorSelection;headSelection;itemCount;cumulativeHeights;muteCopyHandler;observer;observerConfig;stickToBottomInternal;selectionIsBackward;lastSelectedElement;cachedProviderElements;constructor(e){this.element=document.createElement("div"),this.element.style.overflow="auto",this.topGapElement=this.element.createChild("div"),this.topGapElement.style.height="0px",this.topGapElement.style.color="transparent",this.topGapElementActive=!1,this.contentElementInternal=this.element.createChild("div"),this.bottomGapElement=this.element.createChild("div"),this.bottomGapElement.style.height="0px",this.bottomGapElement.style.color="transparent",this.bottomGapElementActive=!1,this.topGapElement.textContent="\ufeff",this.bottomGapElement.textContent="\ufeff",o.ARIAUtils.setHidden(this.topGapElement,!0),o.ARIAUtils.setHidden(this.bottomGapElement,!0),this.provider=e,this.element.addEventListener("scroll",this.onScroll.bind(this),!1),this.element.addEventListener("copy",this.onCopy.bind(this),!1),this.element.addEventListener("dragstart",this.onDragStart.bind(this),!1),this.contentElementInternal.addEventListener("focusin",this.onFocusIn.bind(this),!1),this.contentElementInternal.addEventListener("focusout",this.onFocusOut.bind(this),!1),this.contentElementInternal.addEventListener("keydown",this.onKeyDown.bind(this),!1),this.virtualSelectedIndex=-1,this.contentElementInternal.tabIndex=-1,this.firstActiveIndex=-1,this.lastActiveIndex=-1,this.renderedItems=[],this.anchorSelection=null,this.headSelection=null,this.itemCount=0,this.cumulativeHeights=new Int32Array(0),this.muteCopyHandler=!1,this.observer=new MutationObserver(this.refresh.bind(this)),this.observerConfig={childList:!0,subtree:!0},this.stickToBottomInternal=!1,this.selectionIsBackward=!1}stickToBottom(){return this.stickToBottomInternal}setStickToBottom(e){this.stickToBottomInternal=e,this.stickToBottomInternal?this.observer.observe(this.contentElementInternal,this.observerConfig):this.observer.disconnect()}hasVirtualSelection(){return-1!==this.virtualSelectedIndex}copyWithStyles(){this.muteCopyHandler=!0,this.element.ownerDocument.execCommand("copy"),this.muteCopyHandler=!1}onCopy(e){if(this.muteCopyHandler)return;const t=this.selectedText();t&&(e.preventDefault(),this.selectionContainsTable()?this.copyWithStyles():e.clipboardData&&e.clipboardData.setData("text/plain",t))}onFocusIn(e){const t=this.renderedItems.findIndex((t=>t.element().isSelfOrAncestor(e.target)));-1!==t&&(this.virtualSelectedIndex=this.firstActiveIndex+t);let s=!1;-1===this.virtualSelectedIndex&&this.isOutsideViewport(e.relatedTarget)&&e.target===this.contentElementInternal&&this.itemCount&&(s=!0,this.virtualSelectedIndex=this.itemCount-1,this.refresh(),this.scrollItemIntoView(this.virtualSelectedIndex)),this.updateFocusedItem(s)}onFocusOut(e){this.isOutsideViewport(e.relatedTarget)&&(this.virtualSelectedIndex=-1),this.updateFocusedItem()}isOutsideViewport(e){return null!==e&&!e.isSelfOrDescendant(this.contentElementInternal)}onDragStart(e){const t=this.selectedText();return!!t&&(e.dataTransfer&&(e.dataTransfer.clearData(),e.dataTransfer.setData("text/plain",t),e.dataTransfer.effectAllowed="copy"),!0)}onKeyDown(e){if(o.UIUtils.isEditing()||!this.itemCount||e.shiftKey)return;let t=!1;switch(e.key){case"ArrowUp":if(!(this.virtualSelectedIndex>0))return;t=!0,this.virtualSelectedIndex--;break;case"ArrowDown":if(!(this.virtualSelectedIndexthis.itemCount-1&&(this.virtualSelectedIndex=this.itemCount-1),this.rebuildCumulativeHeights(),this.refresh()}providerElement(e){this.cachedProviderElements||(this.cachedProviderElements=new Array(this.itemCount));let t=this.cachedProviderElements[e];return t||(t=this.provider.itemElement(e),this.cachedProviderElements[e]=t),t}rebuildCumulativeHeights(){const e=this.firstActiveIndex,t=this.lastActiveIndex;let s=0;this.cumulativeHeights=new Int32Array(this.itemCount);for(let n=0;n1)return void this.rebuildCumulativeHeights();if(t+=o,e+=n,Math.abs(e-t)>1)return void this.rebuildCumulativeHeights()}}cachedItemHeight(e){return 0===e?this.cumulativeHeights[0]:this.cumulativeHeights[e]-this.cumulativeHeights[e-1]}isSelectionBackwards(e){if(!e?.rangeCount||!e.anchorNode||!e.focusNode)return!1;const t=document.createRange();return t.setStart(e.anchorNode,e.anchorOffset),t.setEnd(e.focusNode,e.focusOffset),t.collapsed}createSelectionModel(e,t,s){return{item:e,node:t,offset:s}}updateSelectionModel(e){const t=e?.rangeCount?e.getRangeAt(0):null;if(!t||!e||e.isCollapsed||!this.element.hasSelection())return this.headSelection=null,this.anchorSelection=null,!1;let s=Number.MAX_VALUE,n=-1,o=!1;for(let e=0;ec.item?h:c):o?i?d=a?this.headSelection:this.anchorSelection:r&&(h=a?this.anchorSelection:this.headSelection):(d=l,h=c),a?(this.anchorSelection=h,this.headSelection=d):(this.anchorSelection=d,this.headSelection=h),this.selectionIsBackward=a,!0}restoreSelection(e){if(!e||!this.anchorSelection||!this.headSelection)return;const t=(e,t)=>{if(this.firstActiveIndex<=e.item&&e.item<=this.lastActiveIndex)return{element:e.node,offset:e.offset};return{element:e.item!t.has(e)));for(let e=0;e0&&(s[s.length-1]=s[s.length-1].substring(0,e))}const i=this.providerElement(e.item),r=i?.element();if(r&&e.node?.isSelfOrDescendant(r)){const t=this.textOffsetInNode(r,e.node,e.offset);s[0]=s[0].substring(t)}return s.join("\n")}textOffsetInNode(e,t,s){const n=t.textContent?t.textContent.length:0;t.nodeType!==Node.TEXT_NODE&&(s0&&r!==n&&(s=r),o+s}onScroll(e){this.refresh()}firstVisibleIndex(){return this.cumulativeHeights.length?(this.rebuildCumulativeHeightsIfNeeded(),s.ArrayUtilities.lowerBound(this.cumulativeHeights,this.element.scrollTop+1,s.ArrayUtilities.DEFAULT_COMPARATOR)):-1}lastVisibleIndex(){if(!this.cumulativeHeights.length)return-1;this.rebuildCumulativeHeightsIfNeeded();const e=this.element.scrollTop+this.element.clientHeight,t=this.itemCount-1;return s.ArrayUtilities.lowerBound(this.cumulativeHeights,e,s.ArrayUtilities.DEFAULT_COMPARATOR,void 0,t)}renderedElementAt(e){return-1===e||ethis.lastActiveIndex?null:this.renderedItems[e-this.firstActiveIndex].element()}scrollItemIntoView(e,t){const s=this.firstVisibleIndex(),n=this.lastVisibleIndex();e>s&&e=n&&this.forceScrollItemToBeLast(e))}forceScrollItemToBeFirst(e){console.assert(e>=0&&e0?this.cumulativeHeights[e-1]:0,o.UIUtils.isScrolledToBottom(this.element)&&this.setStickToBottom(!0),this.refresh();const t=this.renderedElementAt(e);t&&t.scrollIntoView(!0)}forceScrollItemToBeLast(e){console.assert(e>=0&&e{this.isSidebarOpen="Both"===e.data,this.isSidebarOpen&&(this.userHasOpenedSidebarAtLeastOnce||(m.userMetrics.actionTaken(m.UserMetrics.Action.ConsoleSidebarOpened),this.userHasOpenedSidebarAtLeastOnce=!0),this.pendingSidebarMessages.forEach((e=>{this.sidebar.onMessageAdded(e)})),this.pendingSidebarMessages=[]),this.filter.setLevelMenuOverridden(this.isSidebarOpen),this.onFilterChanged()})),this.contentsElement=this.searchableViewInternal.element,this.element.classList.add("console-view"),this.visibleViewMessages=[],this.hiddenByFilterCount=0,this.shouldBeHiddenCache=new Set,this.groupableMessages=new Map,this.groupableMessageTitle=new Map,this.shortcuts=new Map,this.regexMatchRanges=[],this.consoleContextSelector=new L,this.filterStatusText=new o.Toolbar.ToolbarText,this.filterStatusText.element.classList.add("dimmed"),this.showSettingsPaneSetting=e.Settings.Settings.instance().createSetting("console-show-settings-toolbar",!1),this.showSettingsPaneButton=new o.Toolbar.ToolbarSettingToggle(this.showSettingsPaneSetting,"gear",Ne(Oe.consoleSettings),"gear-filled"),this.showSettingsPaneButton.element.setAttribute("jslog",`${d.toggleSubpane("console-settings").track({click:!0})}`),this.progressToolbarItem=new o.Toolbar.ToolbarItem(document.createElement("div")),this.groupSimilarSetting=e.Settings.Settings.instance().moduleSetting("console-group-similar"),this.groupSimilarSetting.addChangeListener((()=>this.updateMessageList())),this.showCorsErrorsSetting=e.Settings.Settings.instance().moduleSetting("console-shows-cors-errors"),this.showCorsErrorsSetting.addChangeListener((()=>this.updateMessageList()));const s=this.consoleToolbarContainer.createChild("devtools-toolbar","console-main-toolbar");s.setAttribute("jslog",`${d.toolbar()}`),s.role="presentation",s.wrappable=!0,s.appendToolbarItem(this.splitWidget.createShowHideSidebarButton(Ne(Oe.showConsoleSidebar),Ne(Oe.hideConsoleSidebar),Ne(Oe.consoleSidebarShown),Ne(Oe.consoleSidebarHidden),"console-sidebar")),s.appendToolbarItem(o.Toolbar.Toolbar.createActionButton("console.clear")),s.appendSeparator(),s.appendToolbarItem(this.consoleContextSelector.toolbarItem()),s.appendSeparator(),s.appendSeparator(),s.appendToolbarItem(this.filter.textFilterUI),s.appendToolbarItem(this.filter.levelMenuButton),s.appendToolbarItem(this.progressToolbarItem),s.appendSeparator(),this.issueCounter=new C.IssueCounter.IssueCounter,this.issueCounter.id="console-issues-counter",this.issueCounter.setAttribute("jslog",`${d.counter("issues").track({click:!0})}`);const i=new o.Toolbar.ToolbarItem(this.issueCounter);this.issueCounter.data={clickHandler:()=>{m.userMetrics.issuesPanelOpenedFrom(2),o.ViewManager.ViewManager.instance().showView("issues-pane")},issuesManager:M.IssuesManager.IssuesManager.instance(),accessibleName:Ne(Oe.issueToolbarTooltipGeneral),displayMode:"OmitEmpty"},s.appendToolbarItem(i),s.appendSeparator(),s.appendToolbarItem(this.filterStatusText),s.appendToolbarItem(this.showSettingsPaneButton);const r=e.Settings.Settings.instance().moduleSetting("monitoring-xhr-enabled");this.timestampsSetting=e.Settings.Settings.instance().moduleSetting("console-timestamps-enabled"),this.consoleHistoryAutocompleteSetting=e.Settings.Settings.instance().moduleSetting("console-history-autocomplete"),this.selfXssWarningDisabledSetting=e.Settings.Settings.instance().createSetting("disable-self-xss-warning",!1,"Synced");const a=this.contentsElement.createChild("div","console-settings-pane");o.ARIAUtils.setLabel(a,Ne(Oe.consoleSettings)),o.ARIAUtils.markAsGroup(a);const l=e.Settings.Settings.instance().moduleSetting("preserve-console-log"),c=e.Settings.Settings.instance().moduleSetting("console-user-activation-eval");a.append(o.SettingsUI.createSettingCheckbox(Ne(Oe.hideNetwork),this.filter.hideNetworkMessagesSetting,this.filter.hideNetworkMessagesSetting.title()),o.SettingsUI.createSettingCheckbox(Ne(Oe.logXMLHttpRequests),r),o.SettingsUI.createSettingCheckbox(Ne(Oe.preserveLog),l,Ne(Oe.doNotClearLogOnPageReload)),o.SettingsUI.createSettingCheckbox(Ne(Oe.selectedContextOnly),this.filter.filterByExecutionContextSetting,Ne(Oe.onlyShowMessagesFromTheCurrentContext)),o.SettingsUI.createSettingCheckbox(this.consoleHistoryAutocompleteSetting.title(),this.consoleHistoryAutocompleteSetting,Ne(Oe.autocompleteFromHistory)),o.SettingsUI.createSettingCheckbox(this.groupSimilarSetting.title(),this.groupSimilarSetting,Ne(Oe.groupSimilarMessagesInConsole)),o.SettingsUI.createSettingCheckbox(c.title(),c,Ne(Oe.treatEvaluationAsUserActivation)),o.SettingsUI.createSettingCheckbox(this.showCorsErrorsSetting.title(),this.showCorsErrorsSetting,Ne(Oe.showCorsErrorsInConsole))),this.showSettingsPaneSetting.get()||a.classList.add("hidden"),this.showSettingsPaneSetting.addChangeListener((()=>a.classList.toggle("hidden",!this.showSettingsPaneSetting.get()))),this.viewport=new He(this),this.viewport.setStickToBottom(!0),this.viewport.contentElement().classList.add("console-group","console-group-messages"),this.contentsElement.appendChild(this.viewport.element),this.messagesElement=this.viewport.element,this.messagesElement.id="console-messages",this.messagesElement.classList.add("monospace"),this.messagesElement.addEventListener("click",this.messagesClicked.bind(this),!1),["paste","clipboard-paste","drop"].forEach((e=>{this.messagesElement.addEventListener(e,this.messagesPasted.bind(this),!0)})),this.messagesCountElement=this.consoleToolbarContainer.createChild("div","message-count"),o.ARIAUtils.markAsPoliteLiveRegion(this.messagesCountElement,!1),this.viewportThrottler=new e.Throttler.Throttler(t),this.pendingBatchResize=!1,this.onMessageResizedBound=e=>{this.onMessageResized(e)},this.promptElement=this.messagesElement.createChild("div","source-code"),this.promptElement.id="console-prompt";const h=this.messagesElement.createChild("div","console-view-fix-select-all");h.textContent=".",o.ARIAUtils.setHidden(h,!0),this.registerShortcuts(),this.messagesElement.addEventListener("contextmenu",this.handleContextMenuEvent.bind(this),!1);const p=new e.Throttler.Throttler(100);this.linkifier=new u.Linkifier.Linkifier(40),this.linkifier.addEventListener("liveLocationUpdated",(()=>p.schedule((async()=>this.onFilterChanged())))),this.consoleMessages=[],this.consoleGroupStarts=[],this.prompt=new nt,this.prompt.show(this.promptElement),this.prompt.element.addEventListener("keydown",this.promptKeyDown.bind(this),!0),this.prompt.addEventListener("TextChanged",this.promptTextChanged,this),this.messagesElement.addEventListener("keydown",this.messagesKeyDown.bind(this),!1),this.prompt.element.addEventListener("focusin",(()=>{this.isScrolledToBottom()&&this.viewport.setStickToBottom(!0)})),this.consoleHistoryAutocompleteSetting.addChangeListener(this.consoleHistoryAutocompleteChanged,this),this.consoleHistoryAutocompleteChanged(),this.updateFilterStatus(),this.timestampsSetting.addChangeListener(this.consoleTimestampsSettingChanged,this),this.registerWithMessageSink(),o.Context.Context.instance().addFlavorChangeListener(n.RuntimeModel.ExecutionContext,this.executionContextChanged,this),this.messagesElement.addEventListener("mousedown",(e=>this.updateStickToBottomOnPointerDown(2===e.button)),!1),this.messagesElement.addEventListener("mouseup",this.updateStickToBottomOnPointerUp.bind(this),!1),this.messagesElement.addEventListener("mouseleave",this.updateStickToBottomOnPointerUp.bind(this),!1),this.messagesElement.addEventListener("wheel",this.updateStickToBottomOnWheel.bind(this),!1),this.messagesElement.addEventListener("touchstart",this.updateStickToBottomOnPointerDown.bind(this,!1),!1),this.messagesElement.addEventListener("touchend",this.updateStickToBottomOnPointerUp.bind(this),!1),this.messagesElement.addEventListener("touchcancel",this.updateStickToBottomOnPointerUp.bind(this),!1),n.TargetManager.TargetManager.instance().addModelListener(n.ConsoleModel.ConsoleModel,n.ConsoleModel.Events.ConsoleCleared,this.consoleCleared,this,{scoped:!0}),n.TargetManager.TargetManager.instance().addModelListener(n.ConsoleModel.ConsoleModel,n.ConsoleModel.Events.MessageAdded,this.onConsoleMessageAdded,this,{scoped:!0}),n.TargetManager.TargetManager.instance().addModelListener(n.ConsoleModel.ConsoleModel,n.ConsoleModel.Events.MessageUpdated,this.onConsoleMessageUpdated,this,{scoped:!0}),n.TargetManager.TargetManager.instance().addModelListener(n.ConsoleModel.ConsoleModel,n.ConsoleModel.Events.CommandEvaluated,this.commandEvaluated,this,{scoped:!0}),n.TargetManager.TargetManager.instance().observeModels(n.ConsoleModel.ConsoleModel,this,{scoped:!0});const g=M.IssuesManager.IssuesManager.instance();this.issueToolbarThrottle=new e.Throttler.Throttler(100),g.addEventListener("IssuesCountUpdated",this.#a)}static instance(e){return Ge&&!e?.forceNew||(Ge=new De(e?.viewportThrottlerTimeout??50)),Ge}static clearConsole(){n.ConsoleModel.ConsoleModel.requestClearMessages()}#l(){this.issueToolbarThrottle.schedule((async()=>this.updateIssuesToolbarItem())),this.issuesCountUpdatedForTest()}issuesCountUpdatedForTest(){}modelAdded(e){e.messages().forEach(this.addConsoleMessage,this)}modelRemoved(t){e.Settings.Settings.instance().moduleSetting("preserve-console-log").get()||t.target().outermostTarget()!==t.target()||this.consoleCleared()}onFilterChanged(){if(this.filter.currentFilter.levelsMask=this.isSidebarOpen?P.allLevelsFilterValue():this.filter.messageLevelFiltersSetting.get(),this.cancelBuildHiddenCache(),this.immediatelyFilterMessagesForTest){for(const e of this.consoleMessages)this.computeShouldMessageBeVisible(e);this.updateMessageList()}else this.buildHiddenCache(0,this.consoleMessages.slice())}setImmediatelyFilterMessagesForTest(){this.immediatelyFilterMessagesForTest=!0}searchableView(){return this.searchableViewInternal}clearHistory(){this.prompt.history().clear()}consoleHistoryAutocompleteChanged(){this.prompt.setAddCompletionsFromHistory(this.consoleHistoryAutocompleteSetting.get())}itemCount(){return this.visibleViewMessages.length}itemElement(e){return this.visibleViewMessages[e]}fastHeight(e){return this.visibleViewMessages[e].fastHeight()}minimumRowHeight(){return 16}registerWithMessageSink(){e.Console.Console.instance().messages().forEach(this.addSinkMessage,this),e.Console.Console.instance().addEventListener("messageAdded",(({data:e})=>{this.addSinkMessage(e)}),this)}addSinkMessage(e){let t="verbose";switch(e.level){case"info":t="info";break;case"error":t="error";break;case"warning":t="warning"}const s=e.source||"other",o=new n.ConsoleModel.ConsoleMessage(null,s,t,e.text,{type:n.ConsoleModel.FrontendMessageType.System,timestamp:e.timestamp});this.addConsoleMessage(o)}consoleTimestampsSettingChanged(){this.updateMessageList(),this.consoleMessages.forEach((e=>e.updateTimestamp())),this.groupableMessageTitle.forEach((e=>e.updateTimestamp()))}executionContextChanged(){this.prompt.clearAutocomplete()}willHide(){this.hidePromptSuggestBox()}wasShown(){if(super.wasShown(),this.#r){M.IssuesManager.IssuesManager.instance().addEventListener("IssuesCountUpdated",this.#a)}this.#r=!1,this.updateIssuesToolbarItem(),this.viewport.refresh()}focus(){this.viewport.hasVirtualSelection()?this.viewport.contentElement().focus():this.focusPrompt()}focusPrompt(){if(!this.prompt.hasFocus()){const e=this.viewport.stickToBottom(),t=this.viewport.element.scrollTop;this.prompt.focus(),this.viewport.setStickToBottom(e),this.viewport.element.scrollTop=t}}restoreScrollPositions(){this.viewport.stickToBottom()?this.immediatelyScrollToBottom():super.restoreScrollPositions()}onResize(){this.scheduleViewportRefresh(),this.hidePromptSuggestBox(),this.viewport.stickToBottom()&&this.immediatelyScrollToBottom();for(let e=0;e0?this.consoleMessages.length:s.ArrayUtilities.upperBound(this.consoleMessages,t,l);const i=o=5&&!this.selfXssWarningDisabledSetting.get()&&this.selfXssWarningDisabledSetting.set(!0);else if(e.type!==n.ConsoleModel.FrontendMessageType.Result){const n=s.ArrayUtilities.upperBound(this.consoleGroupStarts,t,l)-1;if(n>=0){!function e(t,s){const n=s.groupEnd();if(null!==n&&l(t,n)>0){const n=s.consoleGroup();if(null===n)return;return void e(t,n)}"endGroup"===t.consoleMessage().type?s.setGroupEnd(t):t.setConsoleGroup(s)}(t,this.consoleGroupStarts[n])}e.isGroupStartMessage()&&(o=s.ArrayUtilities.upperBound(this.consoleGroupStarts,t,l),this.consoleGroupStarts.splice(o,0,t))}this.filter.onMessageAdded(e),this.isSidebarOpen?this.sidebar.onMessageAdded(t):this.pendingSidebarMessages.push(t);let r=!1;const a=this.groupSimilarSetting.get();if(e.isGroupable()){const e=t.groupKey();r=a&&this.groupableMessages.has(e);let s=this.groupableMessages.get(e);s||(s=[],this.groupableMessages.set(e,s)),s.push(t)}function l(e,t){return(_e.get(e)||0)-(_e.get(t)||0)}this.computeShouldMessageBeVisible(t),r||i?this.needsFullUpdate=!0:(this.appendMessageToEnd(t,!a),this.updateFilterStatus(),this.searchableViewInternal.updateSearchMatchesCount(this.regexMatchRanges.length)),this.scheduleViewportRefresh(),this.consoleMessageAddedForTest(t)}onConsoleMessageUpdated(e){const t=e.data,s=ze.get(t);s&&(s.updateMessageElement(),this.computeShouldMessageBeVisible(s),this.updateMessageList())}consoleMessageAddedForTest(e){}shouldMessageBeVisible(e){return!this.shouldBeHiddenCache.has(e)}computeShouldMessageBeVisible(e){!this.filter.shouldBeVisible(e)||this.isSidebarOpen&&!this.sidebar.shouldBeVisible(e)?this.shouldBeHiddenCache.add(e):this.shouldBeHiddenCache.delete(e)}appendMessageToEnd(e,t){if("cors"===e.consoleMessage().category&&!this.showCorsErrorsSetting.get())return;const s=this.visibleViewMessages[this.visibleViewMessages.length-1];if("endGroup"===e.consoleMessage().type){if(s){const e=s.consoleGroup();e&&!e.messagesHidden()&&s.incrementCloseGroupDecorationCount()}return}if(!this.shouldMessageBeVisible(e))return void this.hiddenByFilterCount++;if(!t&&this.tryToCollapseMessages(e,this.visibleViewMessages[this.visibleViewMessages.length-1]))return;const n=e.consoleGroup();if(!n?.messagesHidden()){const t=e.consoleMessage().originatingMessage(),o=Boolean(t&&s?.consoleMessage()===t);e.setAdjacentUserCommandResult(o),function e(t,s){if(null===t)return;if(s.includes(t))return;const n=t.consoleGroup();n&&e(n,s);s.push(t)}(n,this.visibleViewMessages),this.visibleViewMessages.push(e),this.searchMessage(this.visibleViewMessages.length-1)}this.messageAppendedForTests()}messageAppendedForTests(){}createViewMessage(e){switch(e.type){case n.ConsoleModel.FrontendMessageType.Command:return new ke(e,this.linkifier,this.requestResolver,this.issueResolver,this.onMessageResizedBound);case n.ConsoleModel.FrontendMessageType.Result:return new Te(e,this.linkifier,this.requestResolver,this.issueResolver,this.onMessageResizedBound);case"startGroupCollapsed":case"startGroup":return new Ee(e,this.linkifier,this.requestResolver,this.issueResolver,this.updateMessageList.bind(this),this.onMessageResizedBound);case"table":return new Fe(e,this.linkifier,this.requestResolver,this.issueResolver,this.onMessageResizedBound);default:return new Se(e,this.linkifier,this.requestResolver,this.issueResolver,this.onMessageResizedBound)}}async onMessageResized(e){const t=e.data;if(this.pendingBatchResize||!t.treeOutline)return;this.pendingBatchResize=!0,await Promise.resolve();const s=t.treeOutline.element;this.viewport.setStickToBottom(this.isScrolledToBottom()),s.offsetHeight<=this.messagesElement.offsetHeight&&s.scrollIntoViewIfNeeded(),this.pendingBatchResize=!1}consoleCleared(){const e=this.viewport.element.hasFocus();this.cancelBuildHiddenCache(),this.currentMatchRangeIndex=-1,this.consoleMessages=[],this.groupableMessages.clear(),this.groupableMessageTitle.clear(),this.sidebar.clear(),this.pendingSidebarMessages=[],this.updateMessageList(),this.hidePromptSuggestBox(),this.viewport.setStickToBottom(!0),this.linkifier.reset(),this.filter.clear(),this.requestResolver.clear(),this.consoleGroupStarts=[],e&&this.prompt.focus(),o.ARIAUtils.alert(Ne(Oe.consoleCleared))}handleContextMenuEvent(t){const s=new o.ContextMenu.ContextMenu(t),i=t.target;if(i.isSelfOrDescendant(this.promptElement))return void s.show();const r=i.enclosingNodeOrSelfWithClass("console-message-wrapper"),a=r&&ve(r),l=a?a.consoleMessage():null;if(a&&o.Context.Context.instance().setFlavor(Se,a),l&&!a?.element()?.matches(".has-insight")&&a?.shouldShowInsights()&&s.headerSection().appendAction(a?.getExplainActionId(),void 0,!0),l&&l.url){const t=Ne(Oe.hideMessagesFromS,{PH1:new e.ParsedURL.ParsedURL(l.url).displayName});s.headerSection().appendItem(t,this.filter.addMessageURLFilter.bind(this.filter,l.url),{jslogContext:"hide-messages-from"})}if(s.defaultSection().appendAction("console.clear"),s.defaultSection().appendAction("console.clear.history"),s.saveSection().appendItem(Ne(Oe.copyConsole),this.copyConsole.bind(this),{jslogContext:"copy-console"}),s.saveSection().appendItem(Ne(Oe.saveAs),this.saveConsole.bind(this),{jslogContext:"save-as"}),this.element.hasSelection()&&s.clipboardSection().appendItem(Ne(Oe.copyVisibleStyledSelection),this.viewport.copyWithStyles.bind(this.viewport),{jslogContext:"copy-visible-styled-selection"}),l){const e=g.NetworkLog.NetworkLog.requestForConsoleMessage(l);e&&n.NetworkManager.NetworkManager.canReplayRequest(e)&&s.debugSection().appendItem(Ne(Oe.replayXhr),n.NetworkManager.NetworkManager.replayRequest.bind(null,e),{jslogContext:"replay-xhr"})}s.show()}async saveConsole(){const t=n.TargetManager.TargetManager.instance().scopeTarget().inspectedURL(),i=e.ParsedURL.ParsedURL.fromString(t),r=s.StringUtilities.sprintf("%s-%d.log",i?i.host:"console",Date.now()),a=new p.FileUtils.FileOutputStream,l=new o.ProgressIndicator.ProgressIndicator;l.setTitle(Ne(Oe.writingFile)),l.setTotalWork(this.itemCount());if(!await a.open(r))return;this.progressToolbarItem.element.appendChild(l.element);let c=0;for(;c12));++n);n!==t.length?this.buildHiddenCacheTimeout=this.element.window().requestAnimationFrame(this.buildHiddenCache.bind(this,n+1,t)):this.updateMessageList()}cancelBuildHiddenCache(){this.shouldBeHiddenCache.clear(),this.buildHiddenCacheTimeout&&(this.element.window().cancelAnimationFrame(this.buildHiddenCacheTimeout),delete this.buildHiddenCacheTimeout)}updateMessageList(){this.regexMatchRanges=[],this.hiddenByFilterCount=0;for(const e of this.visibleViewMessages)e.resetCloseGroupDecorationCount(),e.resetIncrementRepeatCount();if(this.visibleViewMessages=[],this.groupSimilarSetting.get())this.addGroupableMessagesToEnd();else for(const e of this.consoleMessages)e.setInSimilarGroup(!1),e.consoleMessage().isGroupable()&&e.clearConsoleGroup(),this.appendMessageToEnd(e,!0);this.updateFilterStatus(),this.searchableViewInternal.updateSearchMatchesCount(this.regexMatchRanges.length),this.viewport.invalidate(),this.messagesCountElement.setAttribute("aria-label",Ne(Oe.filteredMessagesInConsole,{PH1:this.visibleViewMessages.length}))}addGroupableMessagesToEnd(){const e=new Set,t=new Set;for(const s of this.consoleMessages){const o=s.consoleMessage();if(e.has(o))continue;if(!o.isGroupable()){this.appendMessageToEnd(s),e.add(o);continue}const i=s.groupKey(),r=this.groupableMessages.get(i);if(!r||r.length<5){s.setInSimilarGroup(!1),this.appendMessageToEnd(s),e.add(o);continue}if(t.has(i))continue;if(!r.find((e=>this.shouldMessageBeVisible(e)))){for(const t of r)e.add(t.consoleMessage());t.add(i);continue}let a=this.groupableMessageTitle.get(i);if(!a){const e=new n.ConsoleModel.ConsoleMessage(null,o.source,o.level,s.groupTitle(),{type:"startGroupCollapsed"});a=this.createViewMessage(e),this.groupableMessageTitle.set(i,a)}a.setRepeatCount(r.length),this.appendMessageToEnd(a);for(const t of r)t.setInSimilarGroup(!0,r[r.length-1]===t),t.setConsoleGroup(a),this.appendMessageToEnd(t,!0),e.add(t.consoleMessage());const l=new n.ConsoleModel.ConsoleMessage(null,o.source,o.level,o.messageText,{type:"endGroup"});this.appendMessageToEnd(this.createViewMessage(l))}}messagesClicked(e){const t=e.target;if(!this.messagesElement.hasSelection()){(t===this.messagesElement||this.prompt.belowEditorElement().isSelfOrAncestor(t))&&(this.prompt.moveCaretToEndOfPrompt(),this.focusPrompt())}}messagesKeyDown(e){const t=e;t.ctrlKey||t.altKey||t.metaKey||1!==t.key.length||o.UIUtils.isEditing()||this.messagesElement.hasSelection()||(this.prompt.moveCaretToEndOfPrompt(),this.focusPrompt())}messagesPasted(e){r.Runtime.Runtime.queryParam("isChromeForTesting")||r.Runtime.Runtime.queryParam("disableSelfXssWarnings")||this.selfXssWarningDisabledSetting.get()||(e.preventDefault(),this.prompt.showSelfXssWarning()),o.UIUtils.isEditing()||this.prompt.focus()}registerShortcuts(){this.shortcuts.set(o.KeyboardShortcut.KeyboardShortcut.makeKey("u",o.KeyboardShortcut.Modifiers.Ctrl.value),this.clearPromptBackwards.bind(this))}clearPromptBackwards(e){this.prompt.clear(),d.logKeyDown(e.currentTarget,e,"clear-prompt")}promptKeyDown(e){const t=e;if("PageUp"===t.key)return void this.updateStickToBottomOnWheel();const s=o.KeyboardShortcut.KeyboardShortcut.makeKeyFromEvent(t),n=this.shortcuts.get(s);n&&(n(t),t.preventDefault())}printResult(e,t,s){if(!e)return;const o=Boolean(s)?"error":"info";let i;i=s?n.ConsoleModel.ConsoleMessage.fromException(e.runtimeModel(),s,n.ConsoleModel.FrontendMessageType.Result,void 0,void 0):new n.ConsoleModel.ConsoleMessage(e.runtimeModel(),"javascript",o,"",{type:n.ConsoleModel.FrontendMessageType.Result,parameters:[e]}),i.setOriginatingMessage(t),e.runtimeModel().target().model(n.ConsoleModel.ConsoleModel)?.addMessage(i)}commandEvaluated(e){const{data:t}=e;this.printResult(t.result,t.commandMessage,t.exceptionDetails)}elementsToRestoreScrollPositionsFor(){return[this.messagesElement]}onSearchCanceled(){this.cleanupAfterSearch();for(const e of this.visibleViewMessages)e.setSearchRegex(null);this.currentMatchRangeIndex=-1,this.regexMatchRanges=[],this.searchRegex=null,this.viewport.refresh()}performSearch(e,t,s){this.onSearchCanceled(),this.searchableViewInternal.updateSearchMatchesCount(0),this.searchRegex=e.toSearchRegex(!0).regex,this.regexMatchRanges=[],this.currentMatchRangeIndex=-1,t&&(this.searchShouldJumpBackwards=Boolean(s)),this.searchProgressIndicator=new o.ProgressIndicator.ProgressIndicator,this.searchProgressIndicator.setTitle(Ne(Oe.searching)),this.searchProgressIndicator.setTotalWork(this.visibleViewMessages.length),this.progressToolbarItem.element.appendChild(this.searchProgressIndicator.element),this.innerSearch(0)}cleanupAfterSearch(){delete this.searchShouldJumpBackwards,this.innerSearchTimeoutId&&(clearTimeout(this.innerSearchTimeoutId),delete this.innerSearchTimeoutId),this.searchProgressIndicator&&(this.searchProgressIndicator.done(),delete this.searchProgressIndicator)}searchFinishedForTests(){}innerSearch(e){if(delete this.innerSearchTimeoutId,this.searchProgressIndicator?.isCanceled())return void this.cleanupAfterSearch();const t=Date.now();for(;e=0){t=this.regexMatchRanges[this.currentMatchRangeIndex];this.visibleViewMessages[t.messageIndex].searchHighlightNode(t.matchIndex).classList.remove(o.UIUtils.highlightedCurrentSearchResultClassName)}e=s.NumberUtilities.mod(e,this.regexMatchRanges.length),this.currentMatchRangeIndex=e,this.searchableViewInternal.updateCurrentMatchIndex(e),t=this.regexMatchRanges[e];const n=this.visibleViewMessages[t.messageIndex].searchHighlightNode(t.matchIndex);n.classList.add(o.UIUtils.highlightedCurrentSearchResultClassName),this.viewport.scrollItemIntoView(t.messageIndex),n.scrollIntoViewIfNeeded()}updateStickToBottomOnPointerDown(e){this.muteViewportUpdates=!e,this.viewport.setStickToBottom(!1),this.waitForScrollTimeout&&(clearTimeout(this.waitForScrollTimeout),delete this.waitForScrollTimeout)}updateStickToBottomOnPointerUp(){this.muteViewportUpdates&&(this.waitForScrollTimeout=window.setTimeout(function(){this.muteViewportUpdates=!1,this.isShowing()&&this.viewport.setStickToBottom(this.isScrolledToBottom());this.maybeDirtyWhileMuted&&(this.scheduleViewportRefresh(),delete this.maybeDirtyWhileMuted);delete this.waitForScrollTimeout,this.updateViewportStickinessForTest()}.bind(this),200))}updateViewportStickinessForTest(){}updateStickToBottomOnWheel(){this.updateStickToBottomOnPointerDown(),this.updateStickToBottomOnPointerUp()}promptTextChanged(){const e=this.viewport.stickToBottom(),t=this.isScrolledToBottom();this.viewport.setStickToBottom(t),t&&!e&&this.scheduleViewportRefresh(),this.promptTextChangedForTest()}promptTextChangedForTest(){}isScrolledToBottom(){return this.messagesElement.scrollHeight-this.messagesElement.scrollTop-this.messagesElement.clientHeight-this.prompt.belowEditorElement().offsetHeight<=2}}globalThis.Console=globalThis.Console||{},globalThis.Console.ConsoleView=De;class We{filterChanged;messageLevelFiltersSetting;hideNetworkMessagesSetting;filterByExecutionContextSetting;suggestionBuilder;textFilterUI;textFilterSetting;filterParser;currentFilter;levelLabels;levelMenuButton;constructor(t){this.filterChanged=t,this.messageLevelFiltersSetting=We.levelFilterSetting(),this.hideNetworkMessagesSetting=e.Settings.Settings.instance().moduleSetting("hide-network-messages"),this.filterByExecutionContextSetting=e.Settings.Settings.instance().moduleSetting("selected-context-filter-enabled"),this.messageLevelFiltersSetting.addChangeListener(this.onFilterChanged.bind(this)),this.hideNetworkMessagesSetting.addChangeListener(this.onFilterChanged.bind(this)),this.filterByExecutionContextSetting.addChangeListener(this.onFilterChanged.bind(this)),o.Context.Context.instance().addFlavorChangeListener(n.RuntimeModel.ExecutionContext,this.onFilterChanged,this);const s=Object.values(R);this.suggestionBuilder=new o.FilterSuggestionBuilder.FilterSuggestionBuilder(s),this.textFilterUI=new o.Toolbar.ToolbarFilter(void 0,1,1,Ne(Oe.egEventdCdnUrlacom),this.suggestionBuilder.completions.bind(this.suggestionBuilder),!0),this.textFilterSetting=e.Settings.Settings.instance().createSetting("console.text-filter",""),this.textFilterSetting.get()&&this.textFilterUI.setValue(this.textFilterSetting.get()),this.textFilterUI.addEventListener("TextChanged",(()=>{this.textFilterSetting.set(this.textFilterUI.value()),this.onFilterChanged()})),this.filterParser=new i.TextUtils.FilterParser(s),this.currentFilter=new P("",[],null,this.messageLevelFiltersSetting.get()),this.updateCurrentFilter(),this.levelLabels=new Map([["verbose",Ne(Oe.verbose)],["info",Ne(Oe.info)],["warning",Ne(Oe.warnings)],["error",Ne(Oe.errors)]]),this.levelMenuButton=new o.Toolbar.ToolbarMenuButton(this.appendLevelMenuItems.bind(this),void 0,void 0,"log-level"),this.updateLevelMenuButtonText(),this.messageLevelFiltersSetting.addChangeListener(this.updateLevelMenuButtonText.bind(this))}onMessageAdded(e){e.type===n.ConsoleModel.FrontendMessageType.Command||e.type===n.ConsoleModel.FrontendMessageType.Result||e.isGroupMessage()||(e.context&&this.suggestionBuilder.addItem(R.Context,e.context),e.source&&this.suggestionBuilder.addItem(R.Source,e.source),e.url&&this.suggestionBuilder.addItem(R.Url,e.url))}setLevelMenuOverridden(e){this.levelMenuButton.setEnabled(!e),e?this.levelMenuButton.setTitle(Ne(Oe.overriddenByFilterSidebar)):this.updateLevelMenuButtonText()}static levelFilterSetting(){return e.Settings.Settings.instance().createSetting("message-level-filters",P.defaultLevelsFilterValue())}updateCurrentFilter(){const e=this.filterParser.parse(this.textFilterUI.value());for(const{key:t}of e)switch(t){case R.Context:m.userMetrics.actionTaken(m.UserMetrics.Action.ConsoleFilterByContext);break;case R.Source:m.userMetrics.actionTaken(m.UserMetrics.Action.ConsoleFilterBySource);break;case R.Url:m.userMetrics.actionTaken(m.UserMetrics.Action.ConsoleFilterByUrl)}this.hideNetworkMessagesSetting.get()&&e.push({key:R.Source,text:"network",negative:!0,regex:void 0}),this.currentFilter.executionContext=this.filterByExecutionContextSetting.get()?o.Context.Context.instance().flavor(n.RuntimeModel.ExecutionContext):null,this.currentFilter.parsedFilters=e,this.currentFilter.levelsMask=this.messageLevelFiltersSetting.get()}onFilterChanged(){this.updateCurrentFilter(),this.filterChanged()}updateLevelMenuButtonText(){let e=!0,t=!0;const s=P.allLevelsFilterValue(),n=P.defaultLevelsFilterValue();let o=null;const i=this.messageLevelFiltersSetting.get(),r={Verbose:"verbose",Info:"info",Warning:"warning",Error:"error"};for(const a of Object.values(r))e=e&&i[a]===s[a],t=t&&i[a]===n[a],i[a]&&(o=o?Ne(Oe.customLevels):Ne(Oe.sOnly,{PH1:String(this.levelLabels.get(a))}));o=e?Ne(Oe.allLevels):t?Ne(Oe.defaultLevels):o||Ne(Oe.hideAll),this.levelMenuButton.element.classList.toggle("warning",!e&&!t),this.levelMenuButton.setText(o),this.levelMenuButton.setTitle(Ne(Oe.logLevelS,{PH1:o}))}appendLevelMenuItems(e){const t=this.messageLevelFiltersSetting,s=t.get();e.headerSection().appendItem(Ne(Oe.default),(()=>t.set(P.defaultLevelsFilterValue())),{jslogContext:"default"});for(const[t,o]of this.levelLabels.entries())e.defaultSection().appendCheckboxItem(o,n.bind(null,t),{checked:s[t],jslogContext:t});function n(e){s[e]=!s[e],t.set(s)}}addMessageURLFilter(e){if(!e)return;const t=this.textFilterUI.value()?` ${this.textFilterUI.value()}`:"";this.textFilterUI.setValue(`-url:${e}${t}`),this.textFilterSetting.set(this.textFilterUI.value()),this.onFilterChanged()}shouldBeVisible(e){return this.currentFilter.shouldBeVisible(e)}clear(){this.suggestionBuilder.clear()}reset(){this.messageLevelFiltersSetting.set(P.defaultLevelsFilterValue()),this.filterByExecutionContextSetting.set(!1),this.hideNetworkMessagesSetting.set(!1),this.textFilterUI.setValue(""),this.onFilterChanged()}}const _e=new WeakMap,ze=new WeakMap;var $e=Object.freeze({__proto__:null,ActionDelegate:class{handleAction(t,s){switch(s){case"console.toggle":return De.instance().hasFocus()&&o.InspectorView.InspectorView.instance().drawerVisible()?(o.InspectorView.InspectorView.instance().closeDrawer(),!0):(m.InspectorFrontendHost.InspectorFrontendHostInstance.bringToFront(),e.Console.Console.instance().show(),De.instance().focusPrompt(),!0);case"console.clear":return De.clearConsole(),!0;case"console.clear.history":return De.instance().clearHistory(),!0}return!1}},ConsoleView:De,ConsoleViewFilter:We});let qe;class Ke extends o.Panel.Panel{view;constructor(){super("console"),this.view=De.instance()}static instance(e={forceNew:null}){const{forceNew:t}=e;return qe&&!t||(qe=new Ke),qe}static updateContextFlavor(){const e=Ke.instance().view;o.Context.Context.instance().setFlavor(De,e.isShowing()?e:null)}wasShown(){super.wasShown();const e=Je;e?.isShowing()&&o.InspectorView.InspectorView.instance().setDrawerMinimized(!0),this.view.show(this.element),Ke.updateContextFlavor()}willHide(){super.willHide(),o.InspectorView.InspectorView.instance().setDrawerMinimized(!1),Je&&Je.showViewInWrapper(),Ke.updateContextFlavor()}searchableView(){return De.instance().searchableView()}}let Je=null;class Xe extends o.Widget.VBox{view;constructor(){super(),this.view=De.instance(),this.element.setAttribute("jslog",`${d.panel("console").track({resize:!0})}`)}static instance(){return Je||(Je=new Xe),Je}wasShown(){Ke.instance().isShowing()?o.InspectorView.InspectorView.instance().setDrawerMinimized(!0):this.showViewInWrapper(),Ke.updateContextFlavor()}willHide(){o.InspectorView.InspectorView.instance().setDrawerMinimized(!1),Ke.updateContextFlavor()}showViewInWrapper(){this.view.show(this.element)}}var Ze=Object.freeze({__proto__:null,ConsolePanel:Ke,ConsoleRevealer:class{async reveal(e){const t=De.instance();t.isShowing()?t.focus():await o.ViewManager.ViewManager.instance().showView("console-view")}},WrapperView:Xe}),Qe={cssText:`#console-prompt .CodeMirror{padding:3px 0 1px}#console-prompt .CodeMirror-line{padding-top:0}#console-prompt .CodeMirror-lines{padding-top:0}#console-prompt .console-prompt-icon{position:absolute;left:-13px;top:2px;user-select:none}.console-eager-preview{padding-bottom:2px;opacity:60%;position:relative}.console-eager-inner-preview{text-overflow:ellipsis;overflow:hidden;margin-left:4px;height:100%;white-space:nowrap}.preview-result-icon{position:absolute;left:-13px;top:-1px}.console-eager-inner-preview:empty,\n.console-eager-inner-preview:empty + .preview-result-icon{opacity:0%}.console-prompt-icon.console-prompt-incomplete{opacity:65%}\n/*# sourceURL=${import.meta.resolve("./consolePrompt.css")} */\n`};const{Direction:Ye}=l.TextEditorHistory,et={consolePrompt:"Console prompt",selfXssWarning:"Warning: Don’t paste code into the DevTools Console that you don’t understand or haven’t reviewed yourself. This could allow attackers to steal your identity or take control of your computer. Please type ‘{PH1}’ below and hit Enter to allow pasting.",allowPasting:"allow pasting"},tt=t.i18n.registerUIStrings("panels/console/ConsolePrompt.ts",et),st=t.i18n.getLocalizedString.bind(void 0,tt);class nt extends(e.ObjectWrapper.eventMixin(o.Widget.Widget)){addCompletionsFromHistory;historyInternal;initialText;editor;eagerPreviewElement;textChangeThrottler;formatter;requestPreviewBound;requestPreviewCurrent=0;innerPreviewElement;promptIcon;iconThrottler;previewRequestForTest;highlightingNode;#c;#d;#h=!1;#u=new a.Compartment;#m(){return this.#h?[]:"true"!==r.Runtime.Runtime.queryParam("noJavaScriptCompletion")?[a.javascript.javascript(),l.JavaScript.completion()]:[a.javascript.javascriptLanguage]}#p(){const e=this.#m(),t=this.#u.reconfigure(e);this.editor.dispatch({effects:t})}constructor(){super(),this.registerRequiredCSS(Qe),this.addCompletionsFromHistory=!0,this.historyInternal=new l.AutocompleteHistory.AutocompleteHistory(e.Settings.Settings.instance().createLocalSetting("console-history",[])),this.initialText="",this.eagerPreviewElement=document.createElement("div"),this.eagerPreviewElement.classList.add("console-eager-preview"),this.textChangeThrottler=new e.Throttler.Throttler(150),this.formatter=new c.RemoteObjectPreviewFormatter.RemoteObjectPreviewFormatter,this.requestPreviewBound=this.requestPreview.bind(this),this.innerPreviewElement=this.eagerPreviewElement.createChild("div","console-eager-inner-preview");const t=new h.Icon.Icon;t.data={iconName:"chevron-left-dot",color:"var(--icon-default)",width:"16px",height:"16px"},t.classList.add("preview-result-icon"),this.eagerPreviewElement.appendChild(t);const s=this.element.createChild("div","console-prompt-editor-container");this.element.appendChild(this.eagerPreviewElement),this.promptIcon=new h.Icon.Icon,this.promptIcon.data={iconName:"chevron-right",color:"var(--icon-action)",width:"16px",height:"16px"},this.promptIcon.classList.add("console-prompt-icon"),this.element.appendChild(this.promptIcon),this.iconThrottler=new e.Throttler.Throttler(0),this.element.tabIndex=0,this.previewRequestForTest=null,this.highlightingNode=!1;const n=l.JavaScript.argumentHints();this.#c=n[0];const o=l.Config.DynamicSetting.bool("console-autocomplete-on-enter",[],l.Config.conservativeCompletion),i=[a.keymap.of(this.editorKeymap()),a.EditorView.updateListener.of((e=>this.editorUpdate(e))),n,o.instance(),l.Config.showCompletionHint,l.Config.baseConfiguration(this.initialText),l.Config.autocompletion.instance(),a.javascript.javascriptLanguage.data.of({autocomplete:e=>this.addCompletionsFromHistory?this.#d.historyCompletions(e):null}),a.EditorView.contentAttributes.of({"aria-label":st(et.consolePrompt)}),a.EditorView.lineWrapping,a.autocompletion({aboveCursor:!0}),this.#u.of(this.#m())],r=this.initialText,u=a.EditorState.create({doc:r,extensions:i});this.editor=new l.TextEditor.TextEditor(u),this.editor.addEventListener("keydown",(e=>{e.defaultPrevented&&e.stopPropagation()})),s.appendChild(this.editor),this.#d=new l.TextEditorHistory.TextEditorHistory(this.editor,this.historyInternal),this.hasFocus()&&this.focus(),this.element.removeAttribute("tabindex"),this.editorSetForTest(),m.userMetrics.panelLoaded("console","DevTools.Launch.Console"),this.element.setAttribute("jslog",`${d.textField("console-prompt").track({change:!0,keydown:"Enter|ArrowUp|ArrowDown|PageUp"})}`)}belowEditorElement(){return this.eagerPreviewElement}onTextChanged(){this.updatePromptIcon(),this.dispatchEventToListeners("TextChanged")}async requestPreview(){const e=++this.requestPreviewCurrent,t=l.Config.contentIncludingHint(this.editor.editor).trim(),s=o.Context.Context.instance().flavor(n.RuntimeModel.ExecutionContext),{preview:i,result:r}=await c.JavaScriptREPL.JavaScriptREPL.evaluateAndBuildPreview(t,!0,!0,500);this.requestPreviewCurrent===e&&(this.innerPreviewElement.removeChildren(),i.deepTextContent()!==l.Config.contentIncludingHint(this.editor.editor).trim()&&this.innerPreviewElement.appendChild(i),r&&"object"in r&&r.object&&"node"===r.object.subtype?(this.highlightingNode=!0,n.OverlayModel.OverlayModel.highlightObjectAsDOMNode(r.object)):this.highlightingNode&&(this.highlightingNode=!1,n.OverlayModel.OverlayModel.hideDOMNodeHighlight()),r&&s&&s.runtimeModel.releaseEvaluationResult(r))}willHide(){super.willHide(),this.highlightingNode&&(this.highlightingNode=!1,n.OverlayModel.OverlayModel.hideDOMNodeHighlight())}history(){return this.historyInternal}clearAutocomplete(){a.closeCompletion(this.editor.editor)}isCaretAtEndOfPrompt(){return this.editor.state.selection.main.head===this.editor.state.doc.length}moveCaretToEndOfPrompt(){this.editor.dispatch({selection:a.EditorSelection.cursor(this.editor.state.doc.length)})}clear(){this.editor.dispatch({changes:{from:0,to:this.editor.state.doc.length}})}text(){return this.editor.state.doc.toString()}setAddCompletionsFromHistory(e){this.addCompletionsFromHistory=e}editorKeymap(){return[{key:"ArrowUp",run:()=>this.#d.moveHistory(-1)},{key:"ArrowDown",run:()=>this.#d.moveHistory(1)},{mac:"Ctrl-p",run:()=>this.#d.moveHistory(-1,!0)},{mac:"Ctrl-n",run:()=>this.#d.moveHistory(1,!0)},{key:"Escape",run:()=>l.JavaScript.closeArgumentsHintsTooltip(this.editor.editor,this.#c)},{key:"Ctrl-Enter",run:()=>(this.handleEnter(!0),!0)},{key:"Enter",run:()=>(this.handleEnter(),!0),shift:a.insertNewlineAndIndent}]}async enterWillEvaluate(e){const{doc:t,selection:s}=this.editor.state;if(!t.length)return!1;if(e||s.main.head{this.promptIcon.classList.toggle("console-prompt-incomplete",!await this.enterWillEvaluate())}))}appendCommand(e,t){const s=o.Context.Context.instance().flavor(n.RuntimeModel.ExecutionContext);if(s){const o=s,i=o.target().model(n.ConsoleModel.ConsoleModel);if(i){const s=i.addCommandMessage(o,e),n=c.JavaScriptREPL.JavaScriptREPL.wrapObjectLiteral(e);this.evaluateCommandInConsole(o,s,n,t),Ke.instance().isShowing()&&m.userMetrics.actionTaken(m.UserMetrics.Action.CommandEvaluatedInConsolePanel)}}}async evaluateCommandInConsole(e,t,s,o){const i=e.debuggerModel.selectedCallFrame();if(i?.script.isJavaScript()){const e=await y.NamesResolver.allVariablesInCallFrame(i);s=await this.substituteNames(s,e)}await(e.target().model(n.ConsoleModel.ConsoleModel)?.evaluateCommandInConsole(e,t,s,o))}async substituteNames(e,t){try{return await I.FormatterWorkerPool.formatterWorkerPool().javaScriptSubstitute(e,t)}catch{return e}}editorUpdate(e){e.docChanged||a.selectedCompletion(e.state)!==a.selectedCompletion(e.startState)?this.onTextChanged():e.selectionSet&&this.updatePromptIcon()}focus(){this.editor.focus()}editorSetForTest(){}}var ot=Object.freeze({__proto__:null,ConsolePrompt:nt});export{A as ConsoleContextSelector,U as ConsoleFilter,V as ConsoleFormat,Ze as ConsolePanel,K as ConsolePinPane,ot as ConsolePrompt,oe as ConsoleSidebar,$e as ConsoleView,Be as ConsoleViewMessage,je as ConsoleViewport,ue as ErrorStackParser};