@react-native/debugger-frontend
Version:
Debugger frontend for React Native based on Chrome DevTools
6 lines • 150 kB
JavaScript
import*as e from"../../core/common/common.js";import*as t from"../../core/i18n/i18n.js";import*as s from"../../core/platform/platform.js";import*as n from"../../core/sdk/sdk.js";import*as o from"../../ui/legacy/legacy.js";import*as i from"../../models/text_utils/text_utils.js";import*as r from"../../core/root/root.js";import*as a from"../../third_party/codemirror.next/codemirror.next.js";import*as l from"../../ui/components/text_editor/text_editor.js";import*as c from"../../ui/legacy/components/object_ui/object_ui.js";import*as d from"../../ui/visual_logging/visual_logging.js";import*as h from"../../ui/components/icon_button/icon_button.js";import*as u from"../../ui/legacy/components/utils/utils.js";import*as m from"../../core/host/host.js";import*as p from"../../models/bindings/bindings.js";import*as g from"../../models/logs/logs.js";import*as f from"../../models/workspace/workspace.js";import*as v from"../../ui/components/buttons/buttons.js";import*as b from"../../ui/components/code_highlighter/code_highlighter.js";import*as C from"../../ui/components/issue_counter/issue_counter.js";import*as x from"../../ui/components/request_link_icon/request_link_icon.js";import*as w from"../../ui/legacy/components/data_grid/data_grid.js";import*as S from"../security/security.js";import*as I from"../../models/formatter/formatter.js";import*as y from"../../models/source_map_scopes/source_map_scopes.js";import*as M from"../../models/issues_manager/issues_manager.js";var E={cssText:`:host{padding:2px 1px 2px 2px;white-space:nowrap;display:flex;flex-direction:column;height:36px;justify-content:center;overflow-y:auto}.title{overflow:hidden;text-overflow:ellipsis;flex-grow:0}.badge{pointer-events:none;margin-right:4px;display:inline-block;height:15px}.subtitle{color:var(--sys-color-token-subtle);margin-right:3px;overflow:hidden;text-overflow:ellipsis;flex-grow:0}:host(.highlighted) .subtitle{color:inherit}\n/*# sourceURL=${import.meta.resolve("./consoleContextSelector.css")} */\n`};const k={javascriptContextNotSelected:"JavaScript context: Not selected",extension:"Extension",javascriptContextS:"JavaScript context: {PH1}"},T=t.i18n.registerUIStrings("panels/console/ConsoleContextSelector.ts",k),F=t.i18n.getLocalizedString.bind(void 0,T);class L{items;dropDown;toolbarItemInternal;constructor(){this.items=new o.ListModel.ListModel,this.dropDown=new o.SoftDropDown.SoftDropDown(this.items,this,"javascript-context"),this.dropDown.setRowHeight(36),this.toolbarItemInternal=new o.Toolbar.ToolbarItem(this.dropDown.element),this.toolbarItemInternal.setEnabled(!1),this.toolbarItemInternal.setTitle(F(k.javascriptContextNotSelected)),this.items.addEventListener("ItemsReplaced",(()=>this.toolbarItemInternal.setEnabled(Boolean(this.items.length)))),this.toolbarItemInternal.element.classList.add("toolbar-has-dropdown"),n.TargetManager.TargetManager.instance().addModelListener(n.RuntimeModel.RuntimeModel,n.RuntimeModel.Events.ExecutionContextCreated,this.onExecutionContextCreated,this,{scoped:!0}),n.TargetManager.TargetManager.instance().addModelListener(n.RuntimeModel.RuntimeModel,n.RuntimeModel.Events.ExecutionContextChanged,this.onExecutionContextChanged,this,{scoped:!0}),n.TargetManager.TargetManager.instance().addModelListener(n.RuntimeModel.RuntimeModel,n.RuntimeModel.Events.ExecutionContextDestroyed,this.onExecutionContextDestroyed,this,{scoped:!0}),n.TargetManager.TargetManager.instance().addModelListener(n.ResourceTreeModel.ResourceTreeModel,n.ResourceTreeModel.Events.FrameNavigated,this.frameNavigated,this,{scoped:!0}),o.Context.Context.instance().addFlavorChangeListener(n.RuntimeModel.ExecutionContext,this.executionContextChangedExternally,this),o.Context.Context.instance().addFlavorChangeListener(n.DebuggerModel.CallFrame,this.callFrameSelectedInUI,this),n.TargetManager.TargetManager.instance().observeModels(n.RuntimeModel.RuntimeModel,this,{scoped:!0}),n.TargetManager.TargetManager.instance().addModelListener(n.DebuggerModel.DebuggerModel,n.DebuggerModel.Events.CallFrameSelected,this.callFrameSelectedInModel,this)}toolbarItem(){return this.toolbarItemInternal}highlightedItemChanged(e,t,s,o){if(n.OverlayModel.OverlayModel.hideDOMNodeHighlight(),t&&t.frameId){const e=n.FrameManager.FrameManager.instance().getFrame(t.frameId);e&&!e.isOutermostFrame()&&e.highlight()}s&&s.classList.remove("highlighted"),o&&o.classList.add("highlighted")}titleFor(e){const t=e.target(),s=e.label();let o=s?t.decorateLabel(s):"";if(e.frameId){const s=t.model(n.ResourceTreeModel.ResourceTreeModel),i=s?.frameForId(e.frameId);i&&(o=o||i.displayName())}return o=o||e.origin,o}depthFor(e){let t=e.target(),s=0;if(e.isDefault||s++,e.frameId){let o=n.FrameManager.FrameManager.instance().getFrame(e.frameId);for(;o;)o=o.parentFrame(),o&&(s++,t=o.resourceTreeModel().target())}let o=0,i=t.parentTarget();for(;i&&t.type()!==n.Target.Type.ServiceWorker;)o++,t=i,i=t.parentTarget();return s+=o,s}executionContextCreated(e){this.items.insertWithComparator(e,e.runtimeModel.executionContextComparator()),e===o.Context.Context.instance().flavor(n.RuntimeModel.ExecutionContext)&&this.dropDown.selectItem(e)}onExecutionContextCreated(e){const t=e.data;this.executionContextCreated(t)}onExecutionContextChanged(e){const t=e.data;-1!==this.items.indexOf(t)&&(this.executionContextDestroyed(t),this.executionContextCreated(t))}executionContextDestroyed(e){const t=this.items.indexOf(e);-1!==t&&this.items.remove(t)}onExecutionContextDestroyed(e){const t=e.data;this.executionContextDestroyed(t)}executionContextChangedExternally({data:e}){e&&!n.TargetManager.TargetManager.instance().isInScope(e.target())||this.dropDown.selectItem(e)}isTopContext(e){if(!e?.isDefault)return!1;const t=e.target().model(n.ResourceTreeModel.ResourceTreeModel),s=e.frameId&&t?.frameForId(e.frameId);return!!s&&s.isOutermostFrame()}hasTopContext(){return this.items.some((e=>this.isTopContext(e)))}modelAdded(e){e.executionContexts().forEach(this.executionContextCreated,this)}modelRemoved(e){for(let t=this.items.length-1;t>=0;t--)this.items.at(t).runtimeModel===e&&this.executionContextDestroyed(this.items.at(t))}createElementForItem(e){const t=document.createElement("div"),n=o.UIUtils.createShadowRootWithCoreStyles(t,{cssFile:E}),i=n.createChild("div","title");o.UIUtils.createTextChild(i,s.StringUtilities.trimEndWithMaxLength(this.titleFor(e),100));const r=n.createChild("div","subtitle");return o.UIUtils.createTextChild(r,this.subtitleFor(e)),t.style.paddingLeft=8+15*this.depthFor(e)+"px",t}subtitleFor(t){const s=t.target();let o=null;if(t.frameId){const e=s.model(n.ResourceTreeModel.ResourceTreeModel);o=e?.frameForId(t.frameId)??null}if(e.ParsedURL.schemeIs(t.origin,"chrome-extension:"))return F(k.extension);const i=o?.sameTargetParentFrame();if(!o||!i||i.securityOrigin!==t.origin){const s=e.ParsedURL.ParsedURL.fromString(t.origin);if(s)return s.domain()}if(o?.securityOrigin){const t=new e.ParsedURL.ParsedURL(o.securityOrigin).domain();if(t)return t}return"IFrame"}isItemSelectable(e){const t=e.debuggerModel.selectedCallFrame(),s=t?.script.executionContext();return!s||e===s}itemSelected(e){this.toolbarItemInternal.element.classList.toggle("highlight",!this.isTopContext(e)&&this.hasTopContext());const t=e?F(k.javascriptContextS,{PH1:this.titleFor(e)}):F(k.javascriptContextNotSelected);this.toolbarItemInternal.setTitle(t),o.Context.Context.instance().setFlavor(n.RuntimeModel.ExecutionContext,e)}callFrameSelectedInUI(){const e=o.Context.Context.instance().flavor(n.DebuggerModel.CallFrame),t=e?.script.executionContext();t&&o.Context.Context.instance().setFlavor(n.RuntimeModel.ExecutionContext,t)}callFrameSelectedInModel(e){const t=e.data;for(const e of this.items)e.debuggerModel===t&&this.dropDown.refreshItem(e)}frameNavigated(e){const t=e.data,s=t.resourceTreeModel().target().model(n.RuntimeModel.RuntimeModel);if(s)for(const e of s.executionContexts())t.id===e.frameId&&this.dropDown.refreshItem(e)}}var R,A=Object.freeze({__proto__:null,ConsoleContextSelector:L});class P{name;parsedFilters;executionContext;levelsMask;constructor(e,t,s,n){this.name=e,this.parsedFilters=t,this.executionContext=s,this.levelsMask=n||P.defaultLevelsFilterValue()}static allLevelsFilterValue(){const e={},t={Verbose:"verbose",Info:"info",Warning:"warning",Error:"error"};for(const s of Object.values(t))e[s]=!0;return e}static defaultLevelsFilterValue(){const e=P.allLevelsFilterValue();return e.verbose=!1,e}static singleLevelMask(e){const t={};return t[e]=!0,t}clone(){const e=this.parsedFilters.map(i.TextUtils.FilterParser.cloneFilter),t=Object.assign({},this.levelsMask);return new P(this.name,e,this.executionContext,t)}shouldBeVisible(e){const t=e.consoleMessage();return(!this.executionContext||this.executionContext.runtimeModel===t.runtimeModel()&&this.executionContext.id===t.getExecutionContextId())&&(t.type===n.ConsoleModel.FrontendMessageType.Command||t.type===n.ConsoleModel.FrontendMessageType.Result||"endGroup"===t.type||!(t.level&&!this.levelsMask[t.level])&&(this.applyFilter(e)||this.parentGroupHasMatch(e.consoleGroup())))}parentGroupHasMatch(e){return null!==e&&(this.applyFilter(e)||this.parentGroupHasMatch(e.consoleGroup()))}applyFilter(e){const t=e.consoleMessage();for(const o of this.parsedFilters)if(o.key)switch(o.key){case R.Context:if(!s(o,t.context,!1))return!1;break;case R.Source:if(!s(o,t.source?n.ConsoleModel.MessageSourceDisplayName.get(t.source):t.source,!0))return!1;break;case R.Url:if(!s(o,t.url,!1))return!1}else{if(o.regex&&e.matchesFilterRegex(o.regex)===o.negative)return!1;if(o.text&&e.matchesFilterText(o.text)===o.negative)return!1}return!0;function s(e,t,s){if(!e.text)return Boolean(t)===e.negative;if(!t)return!e.text==!e.negative;const n=e.text.toLowerCase(),o=t.toLowerCase();return(!s||o===n!==e.negative)&&!(!s&&o.includes(n)===e.negative)}}}!function(e){e.Context="context",e.Source="source",e.Url="url"}(R||(R={}));var U=Object.freeze({__proto__:null,ConsoleFilter:P,get FilterType(){return R}});const B=["black","red","green","yellow","blue","magenta","cyan","gray"],H=["darkgray","lightred","lightgreen","lightyellow","lightblue","lightmagenta","lightcyan","white"],j=(e,t)=>{const s=[],n=new Map;function o(e){const t=n.get("text-decoration")??"";t.includes(e)||n.set("text-decoration",`${t} ${e}`)}function i(e){const t=n.get("text-decoration")?.replace(` ${e}`,"");t?n.set("text-decoration",t):n.delete("text-decoration")}function r(e){e&&(s.length&&"string"===s[s.length-1].type?s[s.length-1].value+=e:s.push({type:"string",value:e}))}let a=0;const l=/%([%_Oocsdfi])|\x1B\[([\d;]*)m/;for(let c=l.exec(e);null!==c;c=l.exec(e)){let l;r(c.input.substring(0,c.index));const d=c[1];switch(d){case"%":r("%"),l="";break;case"s":if(a<t.length){const{description:e}=t[a++];l=e??""}break;case"c":if(a<t.length){const e="style",n=t[a++].description??"";s.push({type:e,value:n}),l=""}break;case"o":case"O":if(a<t.length){const e="O"===d?"generic":"optimal",n=t[a++];s.push({type:e,value:n}),l=""}break;case"_":a<t.length&&(a++,l="");break;case"d":case"f":case"i":if(a<t.length){const{value:e}=t[a++];l="number"!=typeof e?NaN:e,"f"!==d&&(l=Math.floor(l))}break;case void 0:{const e=(c[2]||"0").split(";").map((e=>e?parseInt(e,10):0));for(;e.length;){const t=e.shift();switch(t){case 0:n.clear();break;case 1:n.set("font-weight","bold");break;case 2:n.set("font-weight","lighter");break;case 3:n.set("font-style","italic");break;case 4:o("underline");break;case 9:o("line-through");break;case 22:n.delete("font-weight");break;case 23:n.delete("font-style");break;case 24:i("underline");break;case 29:i("line-through");break;case 38:case 48:if(2===e.shift()){const s=e.shift()??0,o=e.shift()??0,i=e.shift()??0;n.set(38===t?"color":"background-color",`rgb(${s},${o},${i})`)}break;case 39:case 49:n.delete(39===t?"color":"background-color");break;case 53:o("overline");break;case 55:i("overline");break;default:{const e=B[t-30]??H[t-90];if(void 0!==e)n.set("color",`var(--console-color-${e})`);else{const e=B[t-40]??H[t-100];void 0!==e&&n.set("background-color",`var(--console-color-${e})`)}break}}}const t=[...n.entries()].map((([e,t])=>`${e}:${t.trimStart()}`)).join(";"),r="style";s.push({type:r,value:t}),l="";break}}void 0===l&&(r(c[0]),l=""),e=l+c.input.substring(c.index+c[0].length)}return r(e),{tokens:s,args:t.slice(a)}},O=(t,s)=>{const n=["background","border","color","font","line","margin","padding","text"],o=/url\([\'\"]?([^\)]*)/g;t.clear();const i=document.createElement("span");i.setAttribute("style",s);for(const s of i.style){if(!n.some((e=>s.startsWith(e)||s.startsWith(`-webkit-${e}`))))continue;const r=i.style.getPropertyValue(s);[...r.matchAll(o)].map((e=>e[1])).some((t=>!e.ParsedURL.schemeIs(t,"data:")))||t.set(s,{value:r,priority:i.style.getPropertyPriority(s)})}};var V=Object.freeze({__proto__:null,format:j,updateStyle:O}),N={cssText:`.value.object-value-node:hover{background-color:var(--sys-color-state-hover-on-subtle)}.object-value-function-prefix,\n.object-value-boolean{color:var(--sys-color-token-attribute-value)}.object-value-function{font-style:italic}.object-value-function.linkified:hover{--override-linkified-hover-background:rgb(0 0 0/10%);background-color:var(--override-linkified-hover-background);cursor:pointer}.theme-with-dark-background .object-value-function.linkified:hover,\n:host-context(.theme-with-dark-background) .object-value-function.linkified:hover{--override-linkified-hover-background:rgb(230 230 230/10%)}.object-value-number{color:var(--sys-color-token-attribute-value)}.object-value-bigint{color:var(--sys-color-token-comment)}.object-value-string,\n.object-value-regexp,\n.object-value-symbol{white-space:pre;unicode-bidi:-webkit-isolate;color:var(--sys-color-token-property-special)}.object-value-node{position:relative;vertical-align:baseline;color:var(--sys-color-token-variable);white-space:nowrap}.object-value-null,\n.object-value-undefined{color:var(--sys-color-state-disabled)}.object-value-unavailable{color:var(--sys-color-token-tag)}.object-value-calculate-value-button:hover{text-decoration:underline}.object-properties-section-custom-section{display:inline-flex;flex-direction:column}.theme-with-dark-background .object-value-number,\n:host-context(.theme-with-dark-background) .object-value-number,\n.theme-with-dark-background .object-value-boolean,\n:host-context(.theme-with-dark-background) .object-value-boolean{--override-primitive-dark-mode-color:hsl(252deg 100% 75%);color:var(--override-primitive-dark-mode-color)}.object-properties-section .object-description{color:var(--sys-color-token-subtle)}.value .object-properties-preview{white-space:nowrap}.name{color:var(--sys-color-token-tag);flex-shrink:0}.object-properties-preview .name{color:var(--sys-color-token-subtle)}@media (forced-colors: active){.object-value-calculate-value-button:hover{forced-color-adjust:none;color:Highlight}}\n/*# sourceURL=${import.meta.resolve("./objectValue.css")} */\n`},G={cssText:`.close-button{position:absolute;top:1px;left:0}.console-pins{max-height:200px;overflow-y:auto;background:var(--sys-color-cdt-base-container);--override-error-text-color:var(--sys-color-on-error-container)}.console-pins:not(:empty){border-bottom:1px solid var(--sys-color-divider)}.console-pin{position:relative;user-select:text;flex:none;padding:2px 0 6px 24px}.console-pin:not(:last-child){border-bottom:1px solid var(--sys-color-divider)}.console-pin.error-level:not(:focus-within){background-color:var(--sys-color-surface-error);color:var(--override-error-text-color)}.console-pin:not(:last-child).error-level:not(:focus-within){border-top:1px solid var(--sys-color-error-outline);border-bottom:1px solid var(--sys-color-error-outline);margin-top:-1px}.console-pin-name{margin-left:-5px;margin-bottom:1px;height:auto}.console-pin-name,\n.console-pin-preview{width:100%;text-overflow:ellipsis;white-space:nowrap;min-height:13px}.console-pin-preview{overflow:hidden}.console-pin-name:focus-within{background:var(--sys-color-cdt-base-container);border-radius:4px;border:1px solid var(--sys-color-state-focus-ring)}.console-pin:focus-within .console-pin-preview,\n.console-pin-name:not(:focus-within, :hover){opacity:60%}\n/*# sourceURL=${import.meta.resolve("./consolePinPane.css")} */\n`};const D={removeExpression:"Remove expression",removeAllExpressions:"Remove all expressions",removeExpressionS:"Remove expression: {PH1}",removeBlankExpression:"Remove blank expression",liveExpressionEditor:"Live expression editor",expression:"Expression",evaluateAllowingSideEffects:"Evaluate, allowing side effects",notAvailable:"not available"},W=t.i18n.registerUIStrings("panels/console/ConsolePinPane.ts",D),_=t.i18n.getLocalizedString.bind(void 0,W),z=new WeakMap;class $ extends o.ThrottledWidget.ThrottledWidget{liveExpressionButton;focusOut;pins;pinsSetting;constructor(t,s){super(!0,250),this.liveExpressionButton=t,this.focusOut=s,this.registerRequiredCSS(G,N),this.contentElement.classList.add("console-pins","monospace"),this.contentElement.addEventListener("contextmenu",this.contextMenuEventFired.bind(this),!1),this.contentElement.setAttribute("jslog",`${d.pane("console-pins")}`),this.pins=new Set,this.pinsSetting=e.Settings.Settings.instance().createLocalSetting("console-pins",[]);for(const e of this.pinsSetting.get())this.addPin(e)}willHide(){super.willHide();for(const e of this.pins)e.setHovered(!1)}savePins(){const e=Array.from(this.pins).map((e=>e.expression()));this.pinsSetting.set(e)}contextMenuEventFired(e){const t=new o.ContextMenu.ContextMenu(e),s=o.UIUtils.deepElementFromEvent(e);if(s){const e=s.enclosingNodeOrSelfWithClass("console-pin");if(e){const s=z.get(e);s&&(t.editSection().appendItem(_(D.removeExpression),this.removePin.bind(this,s),{jslogContext:"remove-expression"}),s.appendToContextMenu(t))}}t.editSection().appendItem(_(D.removeAllExpressions),this.removeAllPins.bind(this),{jslogContext:"remove-all-expressions"}),t.show()}removeAllPins(){for(const e of this.pins)this.removePin(e)}removePin(e){e.element().remove();const t=this.focusedPinAfterDeletion(e);this.pins.delete(e),this.savePins(),t?t.focus():this.liveExpressionButton.focus()}addPin(e,t){const s=new q(e,this,this.focusOut);this.contentElement.appendChild(s.element()),this.pins.add(s),this.savePins(),t&&s.focus(),this.update()}focusedPinAfterDeletion(e){const t=Array.from(this.pins);for(let s=0;s<t.length;s++)if(t[s]===e)return 1===t.length?null:s===t.length-1?t[s-1]:t[s+1];return null}async doUpdate(){if(!this.pins.size||!this.isShowing())return;this.isShowing()&&this.update();const e=Array.from(this.pins,(e=>e.updatePreview()));await Promise.all(e),this.updatedForTest()}updatedForTest(){}}class q{pinPane;focusOut;pinElement;pinPreview;lastResult;lastExecutionContext;editor;committedExpression;hovered;lastNode;deletePinIcon;constructor(t,s,n){this.pinPane=s,this.focusOut=n,this.deletePinIcon=document.createElement("dt-close-button"),this.deletePinIcon.classList.add("close-button"),this.deletePinIcon.setTabbable(!0),t.length?this.deletePinIcon.setAccessibleName(_(D.removeExpressionS,{PH1:t})):this.deletePinIcon.setAccessibleName(_(D.removeBlankExpression)),self.onInvokeElement(this.deletePinIcon,(e=>{s.removePin(this),e.consume(!0)}));const i=o.Fragment.Fragment.build`
<div class='console-pin'>
${this.deletePinIcon}
<div class='console-pin-name' $='name' jslog="${d.textField().track({change:!0})}"></div>
<div class='console-pin-preview' $='preview'></div>
</div>`;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:"<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),"<anonymous>"===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:"<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:"<URL>",tookNms:"took <N>ms",someEvent:"<some> event",Mxx:" M<XX>",attribute:"<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.linkifyWithCus