diff --git a/packages/debugger-frontend/BUILD_INFO b/packages/debugger-frontend/BUILD_INFO index 4c4d4f10de5f71..77ccb86aa35c22 100644 --- a/packages/debugger-frontend/BUILD_INFO +++ b/packages/debugger-frontend/BUILD_INFO @@ -1,5 +1,5 @@ -@generated SignedSource<<3e785aa8e1e511007bb7bc59210a9a1a>> -Git revision: c85f7e933aa685da64ee73e398bf06d33d9d2f3c +@generated SignedSource<> +Git revision: 1f006e22bfad4d66df4786d6d775c15101c66e5d 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/sources/sources.js b/packages/debugger-frontend/dist/third-party/front_end/panels/sources/sources.js index 9b18391b1d6496..ab574083ac6da9 100644 --- a/packages/debugger-frontend/dist/third-party/front_end/panels/sources/sources.js +++ b/packages/debugger-frontend/dist/third-party/front_end/panels/sources/sources.js @@ -1,2 +1,2 @@ import*as e from"../../core/i18n/i18n.js";import*as t from"../../ui/legacy/legacy.js";import*as i from"../../models/workspace/workspace.js";import*as o from"../../ui/legacy/components/source_frame/source_frame.js";import*as n from"../../core/common/common.js";import*as r from"../../core/sdk/sdk.js";import*as s from"../../third_party/codemirror.next/codemirror.next.js";import*as a from"../../ui/components/icon_button/icon_button.js";import*as c from"../../ui/components/text_editor/text_editor.js";import*as l from"../../ui/visual_logging/visual_logging.js";import*as d from"../../core/host/host.js";import*as u from"../../core/platform/platform.js";import{assertNotNullOrUndefined as h}from"../../core/platform/platform.js";import*as p from"../../models/bindings/bindings.js";import*as g from"../../models/persistence/persistence.js";import*as m from"../../models/source_map_scopes/source_map_scopes.js";import*as b from"../../models/text_utils/text_utils.js";import*as f from"../coverage/coverage.js";import*as v from"../../ui/legacy/components/color_picker/color_picker.js";import*as S from"../../ui/legacy/components/inline_editor/inline_editor.js";import*as C from"../../models/breakpoints/breakpoints.js";import*as w from"../../models/formatter/formatter.js";import*as I from"../../ui/components/buttons/buttons.js";import*as y from"../../ui/legacy/components/object_ui/object_ui.js";import*as x from"./components/components.js";import*as k from"../../core/root/root.js";import*as T from"../../models/extensions/extensions.js";import*as E from"../snippets/snippets.js";import*as L from"../../ui/components/floating_button/floating_button.js";import{PanelUtils as M}from"../utils/utils.js";import*as P from"../search/search.js";import*as F from"../../ui/legacy/components/quick_open/quick_open.js";import*as D from"../../models/issues_manager/issues_manager.js";import*as A from"../../ui/components/adorners/adorners.js";import*as N from"../../ui/components/issue_counter/issue_counter.js";import*as U from"../../ui/legacy/components/utils/utils.js";var B={cssText:`:host{padding:var(--sys-size-7) var(--sys-size-8)}.widget{align-items:center}label{white-space:nowrap}input[type="text"].add-source-map{box-shadow:0 0 0 1px var(--box-shadow-outline-color);font-size:inherit;margin:0 8px 0 5px}\n/*# sourceURL=${import.meta.resolve("./dialog.css")} */\n`};const R={sourceMapUrl:"Source map URL: ",debugInfoUrl:"DWARF symbols URL: ",add:"Add"},j=e.i18n.registerUIStrings("panels/sources/AddSourceMapURLDialog.ts",R),W=e.i18n.getLocalizedString.bind(void 0,j);class V extends t.Widget.HBox{input;dialog;callback;constructor(e,i,o){super(!0),this.registerRequiredCSS(B),this.contentElement.createChild("label").textContent=e,this.input=t.UIUtils.createInput("add-source-map","text","url"),this.input.addEventListener("keydown",this.onKeyDown.bind(this),!1),this.contentElement.appendChild(this.input);const n=t.UIUtils.createTextButton(W(R.add),this.apply.bind(this),{jslogContext:"add"});this.contentElement.appendChild(n),this.dialog=new t.Dialog.Dialog(i),this.dialog.setSizeBehavior("MeasureContent"),this.dialog.setDefaultFocusedElement(this.input),this.callback=o}static createAddSourceMapURLDialog(e){return new V(W(R.sourceMapUrl),"add-source-map-url",e)}static createAddDWARFSymbolsURLDialog(e){return new V(W(R.debugInfoUrl),"add-debug-info-url",e)}show(){super.show(this.dialog.contentElement),this.dialog.show()}done(e){this.dialog.hide(),this.callback(e)}apply(){this.done(this.input.value)}onKeyDown(e){"Enter"===e.key&&(e.consume(!0),this.apply())}}var O=Object.freeze({__proto__:null,AddDebugInfoURLDialog:V});class H{uiSourceCode;constructor(e,t){this.uiSourceCode=e}static accepts(e){return!1}willHide(){}rightToolbarItems(){return[]}leftToolbarItems(){return[]}populateLineGutterContextMenu(e,t){}populateTextAreaContextMenu(e,t,i){}decorationChanged(e,t){}editorExtension(){return[]}editorInitialized(e){}dispose(){}}var _=Object.freeze({__proto__:null,Plugin:H});const z={aiContentWarning:"This file contains AI-generated content"},q=e.i18n.registerUIStrings("panels/sources/AiWarningInfobarPlugin.ts",z),$=e.i18n.getLocalizedString.bind(void 0,q);class G extends H{#e=void 0;#t=null;constructor(e){super(e),this.uiSourceCode.addEventListener(i.UISourceCode.Events.WorkingCopyCommitted,this.#i,this)}dispose(){this.#t?.dispose(),this.#t=null,this.uiSourceCode.removeEventListener(i.UISourceCode.Events.WorkingCopyCommitted,this.#i,this),super.dispose()}static accepts(e){return e.contentType().hasScripts()||e.contentType().hasStyleSheets()}editorInitialized(e){this.#e=e,this.uiSourceCode.containsAiChanges()&&this.#o()}#i(){this.uiSourceCode.containsAiChanges()||(this.#t?.dispose(),this.#t=null)}#o(){const e=new t.Infobar.Infobar("warning",$(z.aiContentWarning),void 0,void 0,"contains-ai-content-warning");this.#t=e,e.setCloseCallback((()=>this.removeInfobar(this.#t))),this.attachInfobar(this.#t)}attachInfobar(e){this.#e&&this.#e.dispatch({effects:o.SourceFrame.addInfobar.of(e)})}removeInfobar(e){this.#e&&e&&this.#e.dispatch({effects:o.SourceFrame.removeInfobar.of(e)})}}var K=Object.freeze({__proto__:null,AiWarningInfobarPlugin:G}),J={cssText:`:host{z-index:30;padding:4px;background-color:var(--sys-color-surface3);border-radius:7px;border:2px solid var(--sys-color-divider);width:90%;pointer-events:auto}:host(.sources-edit-breakpoint-dialog){border-radius:0;z-index:30;background-color:var(--sys-color-surface3);width:555px;pointer-events:auto;margin-left:-1px;padding:0 10px 10px 5px;border:1px solid var(--sys-color-divider)}:host-context(.sources-edit-breakpoint-dialog) .condition-editor{background-color:var(--sys-color-cdt-base-container);margin:0 6px 20px 3px}:host-context(.sources-edit-breakpoint-dialog) .source-frame-breakpoint-toolbar{font-family:sans-serif;font-size:12px}:host-context(.sources-edit-breakpoint-dialog) .link,\n.devtools-link{font-family:sans-serif;font-size:12px;margin:0 3px}:host-context(.sources-edit-breakpoint-dialog) devtools-icon.link-icon{vertical-align:sub;margin-right:0.5ch;color:var(--icon-link);width:16px;height:16px}:host-context(.sources-edit-breakpoint-dialog) .link-wrapper{display:inline-flex}:host-context(.sources-edit-breakpoint-dialog) .dialog-header{display:flex;justify-content:space-between;align-items:center}:host-context(.sources-edit-breakpoint-dialog) .dialog-header > devtools-icon:hover{color:var(--icon-default-hover)}\n/*# sourceURL=${import.meta.resolve("./breakpointEditDialog.css")} */\n`};const{Direction:Q}=c.TextEditorHistory,X={breakpointType:"Breakpoint type",breakpoint:"Breakpoint",closeDialog:"Close edit dialog and save changes",conditionalBreakpoint:"Conditional breakpoint",logpoint:"Logpoint",expressionToCheckBeforePausingEg:"Expression to check before pausing, e.g. x > 5",pauseOnlyWhenTheConditionIsTrue:"Pause only when the condition is true",learnMoreOnBreakpointTypes:"Learn more: Breakpoint Types",logMessageEgXIsX:"Log message, e.g. `'x is', x`",logAMessageToConsoleDoNotBreak:"Log a message to Console, do not break"},Y=e.i18n.registerUIStrings("panels/sources/BreakpointEditDialog.ts",X),Z=e.i18n.getLocalizedString.bind(void 0,Y);class ee extends t.Widget.Widget{onFinish;finished;editor;typeSelector;placeholderCompartment;#n;#r;constructor(e,i,o,r){super(!0),this.registerRequiredCSS(J);const d=[s.javascript.javascriptLanguage,c.Config.baseConfiguration(i||""),c.Config.closeBrackets.instance(),c.Config.autocompletion.instance(),s.EditorView.lineWrapping,c.Config.showCompletionHint,c.Config.conservativeCompletion,s.javascript.javascriptLanguage.data.of({autocomplete:e=>this.#r.historyCompletions(e)}),s.autocompletion(),c.JavaScript.argumentHints()];this.onFinish=r,this.finished=!1,this.element.tabIndex=-1,this.element.classList.add("sources-edit-breakpoint-dialog"),this.element.setAttribute("jslog",`${l.dialog("edit-breakpoint")}`);const u=this.contentElement.createChild("div","dialog-header"),h=u.createChild("devtools-toolbar","source-frame-breakpoint-toolbar");h.appendText(`Line ${e+1}:`),this.typeSelector=new t.Toolbar.ToolbarComboBox(this.onTypeChanged.bind(this),Z(X.breakpointType),void 0,"type"),this.typeSelector.createOption(Z(X.breakpoint),"REGULAR_BREAKPOINT");const p=this.typeSelector.createOption(Z(X.conditionalBreakpoint),"CONDITIONAL_BREAKPOINT"),g=this.typeSelector.createOption(Z(X.logpoint),"LOGPOINT");this.typeSelector.select(o?g:p),h.appendToolbarItem(this.typeSelector);const m=i||"",b=e=>(c.JavaScript.isExpressionComplete(e.state.doc.toString()).then((t=>{t?this.finishEditing(!0,this.editor.state.doc.toString()):s.insertNewlineAndIndent(e)})),!0),f=[{key:"ArrowUp",run:()=>this.#r.moveHistory(-1)},{key:"ArrowDown",run:()=>this.#r.moveHistory(1)},{mac:"Ctrl-p",run:()=>this.#r.moveHistory(-1,!0)},{mac:"Ctrl-n",run:()=>this.#r.moveHistory(1,!0)},{key:"Mod-Enter",run:b},{key:"Enter",run:b},{key:"Shift-Enter",run:s.insertNewlineAndIndent},{key:"Escape",run:()=>(this.finishEditing(!1,""),!0)}];this.placeholderCompartment=new s.Compartment;const v=this.contentElement.appendChild(document.createElement("div"));v.classList.add("condition-editor"),v.setAttribute("jslog",`${l.textField().track({change:!0})}`),this.editor=new c.TextEditor.TextEditor(s.EditorState.create({doc:m,selection:{anchor:0,head:m.length},extensions:[this.placeholderCompartment.of(this.getPlaceholder()),s.keymap.of(f),d]})),v.appendChild(this.editor);const S=a.Icon.create("cross");S.title=Z(X.closeDialog),S.setAttribute("jslog",`${l.close().track({click:!0})}`),S.onclick=()=>this.finishEditing(!0,this.editor.state.doc.toString()),u.appendChild(S),this.#n=new c.AutocompleteHistory.AutocompleteHistory(n.Settings.Settings.instance().createLocalSetting("breakpoint-condition-history",[])),this.#r=new c.TextEditorHistory.TextEditorHistory(this.editor,this.#n);const C=this.contentElement.appendChild(document.createElement("div"));C.classList.add("link-wrapper");const w=t.Fragment.html`${Z(X.learnMoreOnBreakpointTypes)}`,I=a.Icon.create("open-externally","link-icon");w.prepend(I),C.appendChild(w),this.updateTooltip()}saveAndFinish(){this.finishEditing(!0,this.editor.state.doc.toString())}focusEditor(){this.editor.editor.focus()}onTypeChanged(){"REGULAR_BREAKPOINT"!==this.breakpointType?(this.focusEditor(),this.editor.dispatch({effects:this.placeholderCompartment.reconfigure(this.getPlaceholder())}),this.updateTooltip()):this.finishEditing(!0,"")}get breakpointType(){const e=this.typeSelector.selectedOption();return e?e.value:null}getPlaceholder(){const e=this.breakpointType;return"CONDITIONAL_BREAKPOINT"===e?s.placeholder(Z(X.expressionToCheckBeforePausingEg)):"LOGPOINT"===e?s.placeholder(Z(X.logMessageEgXIsX)):[]}updateTooltip(){const e=this.breakpointType;"CONDITIONAL_BREAKPOINT"===e?t.Tooltip.Tooltip.install(this.typeSelector.element,Z(X.pauseOnlyWhenTheConditionIsTrue)):"LOGPOINT"===e&&t.Tooltip.Tooltip.install(this.typeSelector.element,Z(X.logAMessageToConsoleDoNotBreak))}finishEditing(e,t){if(this.finished)return;this.finished=!0,this.editor.remove(),this.#n.pushHistoryItem(t);const i="LOGPOINT"===this.breakpointType;this.onFinish({committed:e,condition:t,isLogpoint:i})}get editorForTest(){return this.editor}}var te=Object.freeze({__proto__:null,BreakpointEditDialog:ee}),ie={cssText:`.call-frame-warnings-message{text-align:center;font-style:italic;padding:4px;color:var(--sys-color-on-surface-yellow);background-color:var(--sys-color-surface-yellow)}.ignore-listed-message{padding:1px}.ignore-listed-message-label{color:var(--sys-color-token-subtle);align-items:center;display:flex}.show-more-message > .link{margin-left:5px}.show-more-message{text-align:center;font-style:italic;padding:4px;border-top:1px solid var(--sys-color-divider)}.call-frame-item{padding:3px 8px 3px 20px;position:relative;min-height:18px;line-height:15px;display:flex;flex-wrap:wrap}.call-frame-title-text{text-overflow:ellipsis;overflow:hidden}.async-header + .call-frame-item{border-top:0}.call-frame-item:not(.async-header){border-top:1px solid var(--sys-color-divider)}.call-frame-item-title,\n.call-frame-location{display:flex;white-space:nowrap}.async-header .call-frame-item-title{font-weight:bold;color:var(--sys-color-on-surface);background-color:var(--sys-color-cdt-base-container);margin-left:-5px;padding:0 5px;z-index:1}.call-frame-item:focus-visible,\n.call-frame-item.async-header:focus-visible .call-frame-item-title{background-color:var(--sys-color-tonal-container)}.ignore-listed-checkbox:focus-visible{outline-width:unset}.call-frame-item:not(.async-header):hover{background-color:var(--sys-color-state-hover-on-subtle)}.call-frame-location{color:var(--sys-color-token-subtle);margin-left:auto;padding:0 10px}.async-header::before{content:" ";width:100%;border-top:1px solid var(--sys-color-divider);margin-top:8px;position:absolute;left:0}.ignore-listed-call-frame{opacity:60%;font-style:italic}.selected-call-frame-icon{display:none;position:absolute;top:3px;left:4px}.call-frame-item.selected .selected-call-frame-icon{display:block}.call-frame-warning-icon{display:block;position:absolute;top:3px;right:4px}@media (forced-colors: active){.call-frame-item:focus-visible,\n .call-frame-item:not(.async-header):hover{forced-color-adjust:none;background-color:Highlight}.call-frame-item:focus-visible *,\n .call-frame-item:not(.async-header):hover *{color:HighlightText}}\n/*# sourceURL=${import.meta.resolve("./callStackSidebarPane.css")} */\n`};const oe={callStack:"Call Stack",notPaused:"Not paused",onIgnoreList:"on ignore list",showIgnorelistedFrames:"Show ignore-listed frames",showMore:"Show more",copyStackTrace:"Copy stack trace",callFrameWarnings:"Some call frames have warnings",debugFileNotFound:'Failed to load debug file "{PH1}".',restartFrame:"Restart frame"},ne=e.i18n.registerUIStrings("panels/sources/CallStackSidebarPane.ts",oe),re=e.i18n.getLocalizedString.bind(void 0,ne);let se;class ae extends t.View.SimpleView{ignoreListMessageElement;ignoreListCheckboxElement;notPausedMessageElement;callFrameWarningsElement;items;list;showMoreMessageElement;showIgnoreListed;locationPool;updateThrottler;maxAsyncStackChainDepth;updateItemThrottler;scheduledForUpdateItems;muteActivateItem;lastDebuggerModel=null;constructor(){super(re(oe.callStack),!0,"sources.callstack"),this.registerRequiredCSS(ie),this.contentElement.setAttribute("jslog",`${l.section("sources.callstack")}`),({element:this.ignoreListMessageElement,checkbox:this.ignoreListCheckboxElement}=this.createIgnoreListMessageElementAndCheckbox()),this.contentElement.appendChild(this.ignoreListMessageElement),this.notPausedMessageElement=this.contentElement.createChild("div","gray-info-message"),this.notPausedMessageElement.textContent=re(oe.notPaused),this.notPausedMessageElement.tabIndex=-1,this.callFrameWarningsElement=this.contentElement.createChild("div","call-frame-warnings-message");const e=new a.Icon.Icon;e.data={iconName:"warning-filled",color:"var(--icon-warning)",width:"14px",height:"14px"},e.classList.add("call-frame-warning-icon"),this.callFrameWarningsElement.appendChild(e),this.callFrameWarningsElement.appendChild(document.createTextNode(re(oe.callFrameWarnings))),this.callFrameWarningsElement.tabIndex=-1,this.items=new t.ListModel.ListModel,this.list=new t.ListControl.ListControl(this.items,this,t.ListControl.ListMode.NonViewport),this.contentElement.appendChild(this.list.element),this.list.element.addEventListener("contextmenu",this.onContextMenu.bind(this),!1),self.onInvokeElement(this.list.element,(e=>{const t=this.list.itemForNode(e.target);t&&(this.activateItem(t),e.consume(!0))})),this.showMoreMessageElement=this.createShowMoreMessageElement(),this.showMoreMessageElement.classList.add("hidden"),this.contentElement.appendChild(this.showMoreMessageElement),this.showIgnoreListed=!1,this.locationPool=new p.LiveLocation.LiveLocationPool,this.updateThrottler=new n.Throttler.Throttler(100),this.maxAsyncStackChainDepth=le,this.update(),this.updateItemThrottler=new n.Throttler.Throttler(100),this.scheduledForUpdateItems=new Set,r.TargetManager.TargetManager.instance().addModelListener(r.DebuggerModel.DebuggerModel,r.DebuggerModel.Events.DebugInfoAttached,this.debugInfoAttached,this)}static instance(e={forceNew:null}){const{forceNew:t}=e;return se&&!t||(se=new ae),se}flavorChanged(e){this.showIgnoreListed=!1,this.ignoreListCheckboxElement.checked=!1,this.maxAsyncStackChainDepth=le,this.update()}debugInfoAttached(){this.update()}setSourceMapSubscription(e){this.lastDebuggerModel!==e&&(this.lastDebuggerModel&&this.lastDebuggerModel.sourceMapManager().removeEventListener(r.SourceMapManager.Events.SourceMapAttached,this.debugInfoAttached,this),this.lastDebuggerModel=e,this.lastDebuggerModel&&this.lastDebuggerModel.sourceMapManager().addEventListener(r.SourceMapManager.Events.SourceMapAttached,this.debugInfoAttached,this))}update(){this.updateThrottler.schedule((()=>this.doUpdate()))}async doUpdate(){this.locationPool.disposeAll(),this.callFrameWarningsElement.classList.add("hidden");const e=t.Context.Context.instance().flavor(r.DebuggerModel.DebuggerPausedDetails);if(this.setSourceMapSubscription(e?.debuggerModel??null),!e)return this.notPausedMessageElement.classList.remove("hidden"),this.ignoreListMessageElement.classList.add("hidden"),this.showMoreMessageElement.classList.add("hidden"),this.items.replaceAll([]),void t.Context.Context.instance().setFlavor(r.DebuggerModel.CallFrame,null);this.notPausedMessageElement.classList.add("hidden");const i=[],o=new Set;for(const t of e.callFrames){const e=de.createForDebuggerCallFrame(t,this.locationPool,this.refreshItem.bind(this));i.push(e),t.missingDebugInfoDetails&&o.add(t.missingDebugInfoDetails.details)}const n=await Promise.all(i);o.size&&(this.callFrameWarningsElement.classList.remove("hidden"),t.Tooltip.Tooltip.install(this.callFrameWarningsElement,Array.from(o).join("\n")));let s=e.debuggerModel,a=e.asyncStackTraceId,c=e.asyncStackTrace,l=e.callFrames;for(let{maxAsyncStackChainDepth:e}=this;e>0;--e){if(!c){if(!a)break;if(a.debuggerId){const e=await r.DebuggerModel.DebuggerModel.modelForDebuggerId(a.debuggerId);if(!e)break;s=e}if(c=await s.fetchAsyncStackTrace(a),!c)break}const e=t.UIUtils.asyncStackTraceLabel(c.description,l);n.push(...await de.createItemsForAsyncStack(e,s,c.callFrames,this.locationPool,this.refreshItem.bind(this))),l=c.callFrames,a=c.parentId,c=c.parent}this.showMoreMessageElement.classList.toggle("hidden",!c),this.items.replaceAll(n);for(const e of this.items)this.refreshItem(e);if(this.maxAsyncStackChainDepth===le){this.list.selectNextItem(!0,!1);const e=this.list.selectedItem();e&&this.activateItem(e)}this.updatedForTest()}updatedForTest(){}refreshItem(e){this.scheduledForUpdateItems.add(e),this.updateItemThrottler.schedule((async()=>{const e=Array.from(this.scheduledForUpdateItems);if(this.scheduledForUpdateItems.clear(),this.muteActivateItem=!0,!this.showIgnoreListed&&this.items.every((e=>e.isIgnoreListed))){this.showIgnoreListed=!0;for(let e=0;ere(oe.debugFileNotFound,{PH1:n.ParsedURL.ParsedURL.extractName(e.resourceUrl)})));t.Tooltip.Tooltip.install(e,[s.missingDebugInfoDetails.details,...o].join("\n")),i.appendChild(e)}return i}heightForItem(e){return console.assert(!1),0}isItemSelectable(e){return!0}selectedItemChanged(e,t,i,o){i&&(i.tabIndex=-1),o&&(this.setDefaultFocusedElement(o),o.tabIndex=0,this.hasFocus()&&o.focus())}updateSelectedItemARIA(e,t){return!0}createIgnoreListMessageElementAndCheckbox(){const e=document.createElement("div");e.classList.add("ignore-listed-message");const t=e.createChild("label");t.classList.add("ignore-listed-message-label");const i=t.createChild("input");i.tabIndex=0,i.type="checkbox",i.classList.add("ignore-listed-checkbox"),t.append(re(oe.showIgnorelistedFrames));return i.addEventListener("click",(()=>{this.showIgnoreListed=i.checked;for(const e of this.items)this.refreshItem(e)})),{element:e,checkbox:i}}createShowMoreMessageElement(){const e=document.createElement("div");e.classList.add("show-more-message"),e.createChild("span");const t=e.createChild("span","link");return t.textContent=re(oe.showMore),t.addEventListener("click",(()=>{this.maxAsyncStackChainDepth+=le,this.update()}),!1),e}onContextMenu(e){const i=this.list.itemForNode(e.target);if(!i)return;const o=new t.ContextMenu.ContextMenu(e),n=i.frame;n&&o.defaultSection().appendItem(re(oe.restartFrame),(()=>{d.userMetrics.actionTaken(d.UserMetrics.Action.StackFrameRestarted),n.restart()}),{disabled:!n.canBeRestarted,jslogContext:"restart-frame"}),o.defaultSection().appendItem(re(oe.copyStackTrace),this.copyStackTrace.bind(this),{jslogContext:"copy-stack-trace"}),i.uiLocation&&this.appendIgnoreListURLContextMenuItems(o,i.uiLocation.uiSourceCode),o.show()}onClick(e){const t=this.list.itemForNode(e.target);t&&this.activateItem(t)}activateItem(e){const i=e.uiLocation;if(this.muteActivateItem||!i)return;this.list.selectItem(e);const o=e.frame,s=this.activeCallFrameItem();o&&s!==e?(o.debuggerModel.setSelectedCallFrame(o),t.Context.Context.instance().setFlavor(r.DebuggerModel.CallFrame,o),s&&this.refreshItem(s),this.refreshItem(e)):n.Revealer.reveal(i)}activeCallFrameItem(){const e=t.Context.Context.instance().flavor(r.DebuggerModel.CallFrame);return e&&this.items.find((t=>t.frame===e))||null}appendIgnoreListURLContextMenuItems(e,t){const i=g.Persistence.PersistenceImpl.instance().binding(t);i&&(t=i.network);const o=e.section("ignoreList");if(!(o.items.length>0))for(const{text:e,callback:i,jslogContext:n}of p.IgnoreListManager.IgnoreListManager.instance().getIgnoreListURLContextMenuItems(t))o.appendItem(e,i,{jslogContext:n})}selectNextCallFrameOnStack(){const e=this.activeCallFrameItem();for(let t=e?this.items.indexOf(e)+1:0;t=0;t--){const e=this.items.at(t);if(e.frame){this.activateItem(e);break}}}copyStackTrace(){const e=[];for(const t of this.items){let i=t.title;t.uiLocation&&(i+=" ("+t.uiLocation.linkText(!0)+")"),e.push(i)}d.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(e.join("\n"))}}const ce=Symbol("element"),le=32;class de{isIgnoreListed;title;linkText;uiLocation;isAsyncHeader;updateDelegate;frame;static async createForDebuggerCallFrame(e,i,o){const n=e.functionName,r=new de(t.UIUtils.beautifyFunctionName(n),o,e);return await p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().createCallFrameLiveLocation(e.location(),r.update.bind(r),i),m.NamesResolver.resolveDebuggerFrameFunctionName(e).then((e=>{e&&e!==n&&(r.title=e,r.updateDelegate(r))})),r}static async createItemsForAsyncStack(e,i,o,n,r){const s=new WeakMap,a=new de(e,r);s.set(a,new Set),a.isAsyncHeader=!0;const c=[],l=[];for(const e of o){const o=new de(t.UIUtils.beautifyFunctionName(e.functionName),d),r=i.createRawLocationByScriptId(e.scriptId,e.lineNumber,e.columnNumber);l.push(p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().createCallFrameLiveLocation(r,o.update.bind(o),n)),c.push(o)}return await Promise.all(l),r(a),[a,...c];function d(e){r(e);let t=!1;const i=s.get(a);i&&(e.isIgnoreListed?(i.delete(e),t=0===i.size):(t=0===i.size,i.add(e)),a.isIgnoreListed=0===i.size),t&&r(a)}}constructor(e,t,i){this.isIgnoreListed=!1,this.title=e,this.linkText="",this.uiLocation=null,this.isAsyncHeader=!1,this.updateDelegate=t,this.frame=i}async update(e){const t=await e.uiLocation();this.isIgnoreListed=await e.isIgnoreListed(),this.linkText=t?t.linkText():"",this.uiLocation=t,this.updateDelegate(this)}}var ue=Object.freeze({__proto__:null,ActionDelegate:class{handleAction(e,t){switch(t){case"debugger.next-call-frame":return ae.instance().selectNextCallFrameOnStack(),!0;case"debugger.previous-call-frame":return ae.instance().selectPreviousCallFrameOnStack(),!0}return!1}},CallStackSidebarPane:ae,Item:de,defaultMaxAsyncStackChainDepth:le,elementSymbol:ce});const he={beforeBidderWorkletBiddingStart:"Bidder Bidding Phase Start",beforeBidderWorkletReportingStart:"Bidder Reporting Phase Start",beforeSellerWorkletScoringStart:"Seller Scoring Phase Start",beforeSellerWorkletReportingStart:"Seller Reporting Phase Start",setTimeoutOrIntervalFired:"{PH1} fired",scriptFirstStatement:"Script First Statement",scriptBlockedByContentSecurity:"Script Blocked by Content Security Policy",requestAnimationFrame:"Request Animation Frame",cancelAnimationFrame:"Cancel Animation Frame",animationFrameFired:"Animation Frame Fired",webglErrorFired:"WebGL Error Fired",webglWarningFired:"WebGL Warning Fired",setInnerhtml:"Set `innerHTML`",createCanvasContext:"Create canvas context",createAudiocontext:"Create `AudioContext`",closeAudiocontext:"Close `AudioContext`",resumeAudiocontext:"Resume `AudioContext`",suspendAudiocontext:"Suspend `AudioContext`",sinkViolations:"Sink Violations",policyViolations:"Policy Violations"},pe=e.i18n.registerUIStrings("panels/sources/CategorizedBreakpointL10n.ts",he),ge=e.i18n.getLazilyComputedLocalizedString.bind(void 0,pe);function me(t){return(ve.get(t)??e.i18n.lockedLazyString(t))()}const be={beforeBidderWorkletBiddingStart:ge(he.beforeBidderWorkletBiddingStart),beforeBidderWorkletReportingStart:ge(he.beforeBidderWorkletReportingStart),beforeSellerWorkletScoringStart:ge(he.beforeSellerWorkletScoringStart),beforeSellerWorkletReportingStart:ge(he.beforeSellerWorkletReportingStart),setTimeout:e.i18n.lockedLazyString("setTimeout"),clearTimeout:e.i18n.lockedLazyString("clearTimeout"),"setTimeout.callback":ge(he.setTimeoutOrIntervalFired,{PH1:"setTimeout"}),setInterval:e.i18n.lockedLazyString("setInterval"),clearInterval:e.i18n.lockedLazyString("clearInterval"),"setInterval.callback":ge(he.setTimeoutOrIntervalFired,{PH1:"setInterval"}),scriptFirstStatement:ge(he.scriptFirstStatement),scriptBlockedByCSP:ge(he.scriptBlockedByContentSecurity),sharedStorageWorkletScriptFirstStatement:ge(he.scriptFirstStatement),requestAnimationFrame:ge(he.requestAnimationFrame),cancelAnimationFrame:ge(he.cancelAnimationFrame),"requestAnimationFrame.callback":ge(he.animationFrameFired),webglErrorFired:ge(he.webglErrorFired),webglWarningFired:ge(he.webglWarningFired),"Element.setInnerHTML":ge(he.setInnerhtml),canvasContextCreated:ge(he.createCanvasContext),"Geolocation.getCurrentPosition":e.i18n.lockedLazyString("getCurrentPosition"),"Geolocation.watchPosition":e.i18n.lockedLazyString("watchPosition"),"Notification.requestPermission":e.i18n.lockedLazyString("requestPermission"),"DOMWindow.close":e.i18n.lockedLazyString("window.close"),"Document.write":e.i18n.lockedLazyString("document.write"),audioContextCreated:ge(he.createAudiocontext),audioContextClosed:ge(he.closeAudiocontext),audioContextResumed:ge(he.resumeAudiocontext),audioContextSuspended:ge(he.suspendAudiocontext)},fe={"trustedtype-policy-violation":ge(he.policyViolations),"trustedtype-sink-violation":ge(he.sinkViolations)},ve=new Map([...Object.entries(be),...Object.entries(fe)]);var Se=Object.freeze({__proto__:null,getLocalizedBreakpointName:me});const Ce={clickToShowCoveragePanel:"Click to show Coverage Panel",showDetails:"Show Details",coverageS:"Coverage: {PH1}",coverageNa:"Coverage: n/a"},we=e.i18n.registerUIStrings("panels/sources/CoveragePlugin.ts",Ce),Ie=e.i18n.getLocalizedString.bind(void 0,we);class ye extends H{originalSourceCode;infoInToolbar;model;coverage;#s;constructor(e,i){super(e),this.originalSourceCode=this.uiSourceCode,this.#s=i,this.infoInToolbar=new t.Toolbar.ToolbarButton(Ie(Ce.clickToShowCoveragePanel),void 0,void 0,"debugger.show-coverage"),this.infoInToolbar.setSecondary(),this.infoInToolbar.addEventListener("Click",(()=>{t.ViewManager.ViewManager.instance().showView("coverage")}));const o=r.TargetManager.TargetManager.instance().primaryPageTarget();o&&(this.model=o.model(f.CoverageModel.CoverageModel),this.model&&(this.model.addEventListener(f.CoverageModel.Events.CoverageReset,this.handleReset,this),this.coverage=this.model.getCoverageForUrl(this.originalSourceCode.url()),this.coverage&&this.coverage.addEventListener(f.CoverageModel.URLCoverageInfo.Events.SizesChanged,this.handleCoverageSizesChanged,this))),this.updateStats()}dispose(){this.coverage&&this.coverage.removeEventListener(f.CoverageModel.URLCoverageInfo.Events.SizesChanged,this.handleCoverageSizesChanged,this),this.model&&this.model.removeEventListener(f.CoverageModel.Events.CoverageReset,this.handleReset,this)}static accepts(e){return e.contentType().isDocumentOrScriptOrStyleSheet()}handleReset(){this.coverage=null,this.updateStats()}handleCoverageSizesChanged(){this.updateStats()}updateStats(){if(this.coverage){this.infoInToolbar.setTitle(Ie(Ce.showDetails));const t=new Intl.NumberFormat(e.DevToolsLocale.DevToolsLocale.instance().locale,{style:"percent",maximumFractionDigits:1});this.infoInToolbar.setText(Ie(Ce.coverageS,{PH1:t.format(this.coverage.usedPercentage())}))}else this.infoInToolbar.setTitle(Ie(Ce.clickToShowCoveragePanel)),this.infoInToolbar.setText(Ie(Ce.coverageNa))}rightToolbarItems(){return[this.infoInToolbar]}editorExtension(){return Me.of([])}getCoverageManager(){return this.uiSourceCode.getDecorationData("coverage")}editorInitialized(e){this.getCoverageManager()&&this.startDecoUpdate(e)}decorationChanged(e,t){"coverage"===e&&this.startDecoUpdate(t)}startDecoUpdate(e){const i=this.getCoverageManager();(i?i.usageByLine(this.uiSourceCode,this.#a(e)):Promise.resolve([])).then((i=>{const o=Boolean(e.state.field(Le,!1));var n;i.length?o?e.dispatch({effects:Ee.of(i)}):e.dispatch({effects:Me.reconfigure([Le.init((e=>Te(i,e))),(n=this.uiSourceCode.url(),s.gutter({markers:e=>e.state.field(Le),domEventHandlers:{click:()=>(t.ViewManager.ViewManager.instance().showView("coverage").then((()=>{const e=t.ViewManager.ViewManager.instance().view("coverage");return e?.widget()})).then((e=>{const t=n.match(/(.*):formatted$/),i=t?.[1]||n;e.selectCoverageItemByUrl(i)})),!0)},class:"cm-coverageGutter"})),Pe])}):o&&e.dispatch({effects:Me.reconfigure([])})}))}#a(e){const t=[];for(let i=1;i<=e.state.doc.lines;++i){const o=e.state.doc.line(i),{lineNumber:n,columnNumber:r}=this.#s.editorLocationToUILocation(i-1,0),{lineNumber:s,columnNumber:a}=this.#s.editorLocationToUILocation(i-1,o.length);t.push(new b.TextRange.TextRange(n,r,s,a))}return t}}const xe=new class extends s.GutterMarker{elementClass="cm-coverageUsed"},ke=new class extends s.GutterMarker{elementClass="cm-coverageUnused"};function Te(e,t){const i=new s.RangeSetBuilder;for(let o=0;os.RangeSet.empty,update:(e,t)=>t.effects.reduce(((e,i)=>i.is(Ee)?Te(i.value,t.state):e),e.map(t.changes))});const Me=new s.Compartment,Pe=s.EditorView.baseTheme({".cm-line::selection":{backgroundColor:"transparent",color:"currentColor"},".cm-coverageGutter":{width:"5px",marginLeft:"3px"},".cm-coverageUnused":{backgroundColor:"var(--app-color-coverage-unused)"},".cm-coverageUsed":{backgroundColor:"var(--app-color-coverage-used)"}});var Fe=Object.freeze({__proto__:null,CoveragePlugin:ye});const De={openColorPicker:"Open color picker.",openCubicBezierEditor:"Open cubic bezier editor.",addSourceMap:"Add source map…"},Ae=e.i18n.registerUIStrings("panels/sources/CSSPlugin.ts",De),Ne=e.i18n.getLocalizedString.bind(void 0,Ae),Ue=new Set(["ColorLiteral","NumberLiteral","StringLiteral","Comment","Important"]);async function Be(e,t,i){const o=s.syntaxTree(e.state).resolveInner(e.pos,-1);if("ClassName"===o.name){h(i);const e=function(e,t){const i=t.getStyleSheetIdsForURL(e);if(0===i.length)throw new Error("Can't find style sheet ID for current URL");return i[0]}(t.url(),i),n=await i.getClassNames(e);return{from:o.from,options:n.map((e=>({type:"constant",label:e})))}}const n=function(e,t){if(Ue.has(e.name))return null;for(let i=e;i&&"StyleSheet"!==i.name&&"Styles"!==i.name&&"CallExpression"!==i.name;i=i.parent)if("Declaration"===i.name){const e=i.getChild("PropertyName"),o=i.getChild(":");return e&&o&&o.to<=t?e:null}return null}(o,e.pos);if(n){const t=r.CSSMetadata.cssMetadata().getPropertyValues(e.state.sliceDoc(n.from,n.to));return{from:"ValueName"===o.name?o.from:e.pos,options:t.map((e=>({type:"constant",label:e}))),validFor:/^[\w\P{ASCII}\-]+$/u}}return null}class Re extends s.WidgetType{#c;#l;#d;constructor(e,t,i){super(),this.#l=e,this.#c=t,this.#d=i}eq(e){return this.#l.equal(e.#l)&&this.#c===e.#c&&this.#d===e.#d}toDOM(e){const t=new S.ColorSwatch.ColorSwatch(Ne(De.openColorPicker));t.renderColor(this.#l);const i=t.createChild("span");return i.textContent=this.#c,i.setAttribute("hidden","true"),t.addEventListener(S.ColorSwatch.ColorChangedEvent.eventName,(i=>{const o=i.data.color.getAuthoredText()??i.data.color.asString();e.dispatch({changes:{from:this.#d,to:this.#d+this.#c.length,insert:o}}),this.#c=o,this.#l=t.getColor()})),t.addEventListener(S.ColorSwatch.ClickEvent.eventName,(i=>{i.consume(!0),e.dispatch({effects:We.of({type:0,pos:e.posAtDOM(t),text:this.#c,swatch:t,color:this.#l})})})),t}ignoreEvent(){return!0}}class je extends s.WidgetType{curve;text;constructor(e,t){super(),this.curve=e,this.text=t}eq(e){return this.curve.asCSSText()===e.curve.asCSSText()&&this.text===e.text}toDOM(e){const i=S.Swatches.BezierSwatch.create();return i.setBezierText(this.text),t.Tooltip.Tooltip.install(i.iconElement(),Ne(De.openCubicBezierEditor)),i.iconElement().addEventListener("click",(t=>{t.consume(!0),e.dispatch({effects:We.of({type:1,pos:e.posAtDOM(i),text:this.text,swatch:i,curve:this.curve})})}),!1),i.hideText(!0),i}ignoreEvent(){return!0}}const We=s.StateEffect.define(),Ve=s.Annotation.define(),Oe=s.StateField.define({create:()=>null,update(e,t){!t.docChanged&&!t.selection||t.annotation(Ve)||(e=null);for(const i of t.effects)i.is(We)&&(e=i.value);return e},provide:e=>s.showTooltip.from(e,(e=>e&&function(e){return{pos:e.pos,arrow:!1,create(t){let i,o,n=e.text;if(0===e.type){const n=new v.Spectrum.Spectrum;o=e=>{n.addEventListener("ColorChanged",e)},n.addEventListener("SizeChanged",(()=>t.requestMeasure())),n.setColor(e.color),i=n}else{const t=new S.BezierEditor.BezierEditor(e.curve);i=t,o=e=>{t.addEventListener("BezierChanged",e)}}const r=document.createElement("div");return r.className="cm-tooltip-swatchEdit",i.markAsRoot(),i.show(r),i.showWidget(),i.element.addEventListener("keydown",(o=>{"Escape"===o.key&&(o.consume(),t.dispatch({effects:We.of(null),changes:n===e.text?void 0:{from:e.pos,to:e.pos+n.length,insert:e.text}}),i.hideWidget(),t.focus())})),i.element.addEventListener("focusout",(e=>{e.relatedTarget&&!i.element.contains(e.relatedTarget)&&(t.dispatch({effects:We.of(null)}),i.hideWidget())}),!1),i.element.addEventListener("mousedown",(e=>e.consume())),{dom:r,resize:!1,offset:{x:-8,y:0},mount:()=>{i.focus(),i.wasShown(),o((i=>{t.dispatch({changes:{from:e.pos,to:e.pos+n.length,insert:i.data},annotations:Ve.of(!0)}),n=i.data}))}}}}}(e)))});function He(e,i,o){const r=new s.RangeSetBuilder;return function(e,i,o,r,a){let c=e.doc.lineAt(i);function l(t,i){return t>=c.to&&(c=e.doc.lineAt(t)),c.text.slice(t-c.from,i-c.from)}const d=s.ensureSyntaxTree(e,o,100);d&&d.iterate({from:i,to:o,enter:i=>{let o;if("ValueName"===i.name||"ColorLiteral"===i.name?o=l(i.from,i.to):"Callee"===i.name&&/^(?:(?:rgba?|hsla?|hwba?|lch|oklch|lab|oklab|color)|cubic-bezier)$/.test(l(i.from,i.to))&&(o=e.sliceDoc(i.from,i.node.parent.to)),o){const e=n.Color.parse(o);if(e)r(i.from,e,o);else{const e=t.Geometry.CubicBezier.parse(o);e&&a(i.from,e,o)}}}})}(e,i,o,((e,t,i)=>{r.add(e,e,s.Decoration.widget({widget:new Re(t,i,e)}))}),((e,t,i)=>{r.add(e,e,s.Decoration.widget({widget:new je(t,i)}))})),r.finish()}const _e=s.ViewPlugin.fromClass(class{decorations;constructor(e){this.decorations=He(e.state,e.viewport.from,e.viewport.to)}update(e){(e.viewportChanged||e.docChanged)&&(this.decorations=He(e.state,e.view.viewport.from,e.view.viewport.to))}},{decorations:e=>e.decorations});function ze(e){if("Unit"===e.name&&(e=e.parent),"NumberLiteral"===e.name){const t=e.lastChild;return{from:e.from,to:t&&"Unit"===t.name?t.from:e.to}}return null}function qe(e,t){const{head:i}=e.state.selection.main,o=s.syntaxTree(e.state).resolveInner(i,-1),n=ze(o)||ze(o.resolve(i,1));if(!n)return!1;const r=Number(e.state.sliceDoc(n.from,n.to));return!isNaN(r)&&(e.dispatch({changes:{from:n.from,to:n.to,insert:String(r+t)},scrollIntoView:!0,userEvent:"insert.modifyUnit"}),!0)}function $e(){let e=null;const i=t.ShortcutRegistry.ShortcutRegistry.instance().getShortcutListener({"sources.increment-css":()=>Promise.resolve(qe(e,1)),"sources.increment-css-by-ten":()=>Promise.resolve(qe(e,10)),"sources.decrement-css":()=>Promise.resolve(qe(e,-1)),"sources.decrement-css-by-ten":()=>Promise.resolve(qe(e,-10))});return s.EditorView.domEventHandlers({keydown:(t,o)=>{const n=e;return e=o,i(t),e=n,t.defaultPrevented}})}class Ge extends H{#u;constructor(e,t){super(e,t),r.TargetManager.TargetManager.instance().observeModels(r.CSSModel.CSSModel,this)}static accepts(e){return e.contentType().hasStyleSheets()}modelAdded(e){e.target()===r.TargetManager.TargetManager.instance().primaryPageTarget()&&(this.#u=e)}modelRemoved(e){this.#u===e&&(this.#u=void 0)}editorExtension(){return[$e(),this.#h(),[_e,Oe,Ke]]}#h(){const{cssCompletionSource:e}=s.css,t=this.uiSourceCode,i=this.#u;return s.autocompletion({override:[async o=>await(await Be(o,t,i)||e(o))]})}populateTextAreaContextMenu(e){const t=this.#u,o=this.uiSourceCode.url();if(this.uiSourceCode.project().type()===i.Workspace.projectTypes.Network&&t&&!p.IgnoreListManager.IgnoreListManager.instance().isUserIgnoreListedURL(o)){const i=Ne(De.addSourceMap);e.debugSection().appendItem(i,(()=>function(e,t){V.createAddSourceMapURLDialog((i=>{p.CSSWorkspaceBinding.CSSWorkspaceBinding.instance().modelToInfo.get(e)?.addSourceMap(t,i)})).show()}(t,o)),{jslogContext:"add-source-map"})}}}const Ke=s.EditorView.baseTheme({".cm-tooltip.cm-tooltip-swatchEdit":{"box-shadow":"var(--sys-elevation-level2)","background-color":"var(--sys-color-base-container-elevated)","border-radius":"var(--sys-shape-corner-extra-small)"}});var Je=Object.freeze({__proto__:null,CSSPlugin:Ge,cssBindings:$e}),Qe={cssText:`.paused-status{margin:6px;padding:4px 10px;border-radius:10px;background-color:var(--sys-color-yellow-container);color:var(--sys-color-on-yellow-container)}.paused-status.error-reason{background-color:var(--sys-color-surface-error);color:var(--sys-color-on-surface-error)}.status-main{padding-left:18px;position:relative}.status-sub:not(:empty){padding-left:15px;padding-top:5px;overflow:hidden;text-overflow:ellipsis}.paused-status.error-reason .status-sub{color:var(--sys-color-error);line-height:11px;max-height:27px;user-select:text}devtools-icon{position:absolute;left:-1px;top:-1px}\n/*# sourceURL=${import.meta.resolve("./debuggerPausedMessage.css")} */\n`};const Xe={pausedOnS:"Paused on {PH1}",childSAdded:"Child {PH1} added",descendantSAdded:"Descendant {PH1} added",descendantSRemoved:"Descendant {PH1} removed",pausedOnEventListener:"Paused on event listener",pausedOnXhrOrFetch:"Paused on XHR or fetch",pausedOnException:"Paused on exception",pausedOnPromiseRejection:"Paused on `promise` rejection",pausedOnAssertion:"Paused on assertion",pausedOnDebuggedFunction:"Paused on debugged function",pausedBeforePotentialOutofmemory:"Paused before potential out-of-memory crash",pausedOnCspViolation:"Paused on CSP violation",trustedTypeSinkViolation:"`Trusted Type` Sink Violation",trustedTypePolicyViolation:"`Trusted Type` Policy Violation",pausedOnBreakpoint:"Paused on breakpoint",debuggerPaused:"Debugger paused",subtreeModifications:"subtree modifications",attributeModifications:"attribute modifications",nodeRemoval:"node removal",webglErrorFiredS:"WebGL Error Fired ({PH1})",scriptBlockedDueToContent:"Script blocked due to Content Security Policy directive: {PH1}"},Ye=e.i18n.registerUIStrings("panels/sources/DebuggerPausedMessage.ts",Xe),Ze=e.i18n.getLocalizedString.bind(void 0,Ye),et=e.i18n.getLazilyComputedLocalizedString.bind(void 0,Ye);class tt{elementInternal;contentElement;constructor(){this.elementInternal=document.createElement("div"),this.elementInternal.classList.add("paused-message"),this.elementInternal.classList.add("flex-none"),this.elementInternal.setAttribute("jslog",`${l.dialog("debugger-paused")}`);const e=t.UIUtils.createShadowRootWithCoreStyles(this.elementInternal,{cssFile:Qe});this.contentElement=e.createChild("div"),t.ARIAUtils.markAsPoliteLiveRegion(this.elementInternal,!1)}element(){return this.elementInternal}static descriptionWithoutStack(e){const t=/^\s+at\s/m.exec(e);return t?e.substring(0,t.index-1):e.substring(0,e.lastIndexOf("\n"))}static async createDOMBreakpointHitMessage(t){const i=document.createElement("span"),o=t.debuggerModel.target().model(r.DOMDebuggerModel.DOMDebuggerModel);if(!t.auxData||!o)return i;const s=o.resolveDOMBreakpointData(t.auxData);if(!s)return i;const c=i.createChild("div","status-main"),l=new a.Icon.Icon;l.data={iconName:"info",color:"var(--sys-color-on-yellow-container)",width:"16px",height:"16px"},c.appendChild(l);const d=it.get(s.type);c.appendChild(document.createTextNode(Ze(Xe.pausedOnS,{PH1:d?d():String(null)})));const u=i.createChild("div","status-sub monospace"),h=await n.Linkifier.Linkifier.linkify(s.node);if(u.appendChild(h),s.targetNode){const t=await n.Linkifier.Linkifier.linkify(s.targetNode);let i;i=s.insertion?s.targetNode===s.node?e.i18n.getFormatLocalizedString(Ye,Xe.childSAdded,{PH1:t}):e.i18n.getFormatLocalizedString(Ye,Xe.descendantSAdded,{PH1:t}):e.i18n.getFormatLocalizedString(Ye,Xe.descendantSRemoved,{PH1:t}),u.appendChild(document.createElement("br")),u.appendChild(i)}return i}static#p(e){if(!e)return"";const{eventName:t,webglErrorName:i,directiveText:o,targetName:n}=e;if("instrumentation:webglErrorFired"===t&&i){const e=i.replace(/^.*(0x[0-9a-f]+).*$/i,"$1");return Ze(Xe.webglErrorFiredS,{PH1:e})}if("instrumentation:scriptBlockedByCSP"===t&&o)return Ze(Xe.scriptBlockedDueToContent,{PH1:o});let s=r.EventBreakpointsModel.EventBreakpointsManager.instance().resolveEventListenerBreakpoint(e);return s?me(s.name):(s=r.DOMDebuggerModel.DOMDebuggerManager.instance().resolveEventListenerBreakpoint(e),s&&n?n+"."+s.name:s?.name??"")}async render(e,i,o){if(this.contentElement.removeChildren(),this.contentElement.hidden=!e,!e)return;const n=this.contentElement.createChild("div","paused-status"),r="exception"===e.reason||"promiseRejection"===e.reason||"assert"===e.reason||"OOM"===e.reason;let s;if("DOM"===e.reason)s=await tt.createDOMBreakpointHitMessage(e);else if("EventListener"===e.reason){const t=tt.#p(e.auxData);s=c(Ze(Xe.pausedOnEventListener),t)}else if("XHR"===e.reason){const t=e.auxData;s=c(Ze(Xe.pausedOnXhrOrFetch),t.url||"")}else if("exception"===e.reason){const t=e.auxData,i=t.description||t.value||"",o=tt.descriptionWithoutStack(i);s=c(Ze(Xe.pausedOnException),o,i)}else if("promiseRejection"===e.reason){const t=e.auxData,i=t.description||t.value||"",o=tt.descriptionWithoutStack(i);s=c(Ze(Xe.pausedOnPromiseRejection),o,i)}else if("assert"===e.reason)s=c(Ze(Xe.pausedOnAssertion));else if("debugCommand"===e.reason)s=c(Ze(Xe.pausedOnDebuggedFunction));else if("OOM"===e.reason)s=c(Ze(Xe.pausedBeforePotentialOutofmemory));else if("CSPViolation"===e.reason&&e.auxData?.violationType){const t=e.auxData.violationType;"trustedtype-sink-violation"===t?s=c(Ze(Xe.pausedOnCspViolation),Ze(Xe.trustedTypeSinkViolation)):"trustedtype-policy-violation"===t&&(s=c(Ze(Xe.pausedOnCspViolation),Ze(Xe.trustedTypePolicyViolation)))}else if(e.callFrames.length){const t=await i.rawLocationToUILocation(e.callFrames[0].location()),n=t?o.findBreakpoint(t):null;s=c(Ze(n?Xe.pausedOnBreakpoint:Xe.debuggerPaused))}else console.warn("ScriptsPanel paused, but callFrames.length is zero.");function c(e,i,o){const n=document.createElement("span"),s=n.createChild("div","status-main"),c=new a.Icon.Icon;if(c.data={iconName:r?"cross-circle-filled":"info",color:r?"var(--icon-error)":"var(--sys-color-on-yellow-container)",width:"16px",height:"16px"},s.appendChild(c),s.appendChild(document.createTextNode(e)),i){const e=n.createChild("div","status-sub monospace");e.textContent=i,t.Tooltip.Tooltip.install(e,o||i)}return n}n.classList.toggle("error-reason",r),s&&n.appendChild(s)}}const it=new Map([["subtree-modified",et(Xe.subtreeModifications)],["attribute-modified",et(Xe.attributeModifications)],["node-removed",et(Xe.nodeRemoval)]]);var ot=Object.freeze({__proto__:null,BreakpointTypeNouns:it,DebuggerPausedMessage:tt}),nt={cssText:`.is-ignore-listed{.tree-element-title,\n .leading-icons{opacity:40%}}.tree-outline li{min-height:20px}.tree-outline li:hover:not(.selected) .selection{display:block;background-color:var(--sys-color-state-hover-on-subtle)}.navigator-fs-folder-tree-item devtools-icon{color:var(--icon-folder-workspace)}.navigator-fs-tree-item devtools-icon{color:var(--icon-file-authored)}.navigator-nw-folder-tree-item devtools-icon{color:var(--icon-folder-deployed)}.navigator-sm-script-tree-item devtools-icon,\n.navigator-script-tree-item devtools-icon,\n.navigator-snippet-tree-item devtools-icon{color:var(--icon-file-script)}.navigator-file-tree-item .ai-button-container{display:none;position:absolute;z-index:999;right:var(--sys-size-3)}.navigator-file-tree-item:hover .ai-button-container{display:inline-flex}.navigator-file-tree-item devtools-icon.dot::before{width:7px;height:7px;top:12px;left:11px}.navigator-file-tree-item:hover:not(.force-white-icons) devtools-icon.dot::before{outline-color:var(--icon-gap-hover)}.navigator-file-tree-item.selected:not(.force-white-icons) devtools-icon.dot::before{outline-color:var(--icon-gap-inactive)}.navigator-file-tree-item.selected.force-white-icons devtools-icon.dot::before{outline-color:var(--icon-gap-focus-selected)}.navigator-sm-stylesheet-tree-item devtools-icon,\n.navigator-stylesheet-tree-item devtools-icon{color:var(--icon-file-styles)}.navigator-image-tree-item devtools-icon,\n.navigator-font-tree-item devtools-icon{color:var(--icon-file-image)}.navigator-nw-folder-tree-item.is-from-source-map devtools-icon{color:var(--icon-folder-authored)}.navigator-fs-tree-item:not(.has-mapped-files, .selected) > :not(.selection),\n.navigator-fs-folder-tree-item:not(.has-mapped-files, .selected) > :not(.selection){color:var(--sys-color-on-surface-subtle);opacity:40%;& devtools-icon{color:var(--sys-color-on-surface-subtle)}}.tree-outline:not(:has(.navigator-deployed-tree-item)) .navigator-sm-folder-tree-item .tree-element-title,\n.tree-outline:not(:has(.navigator-deployed-tree-item)) .navigator-sm-script-tree-item .tree-element-title,\n.tree-outline:not(:has(.navigator-deployed-tree-item)) .navigator-sm-stylesheet-tree-item .tree-element-title{font-style:italic}@media (forced-colors: active){.tree-outline li .leading-icons devtools-icon{color:ButtonText}.tree-outline li:hover:not(.selected) .selection,\n .tree-outline li:hover:not(:has(dt-checkbox)) .selection{forced-color-adjust:none;background-color:Highlight}.tree-outline:not(.hide-selection-when-blurred) li.parent:hover:not(.selected)::before{background-color:HighlightText}.tree-outline:not(.hide-selection-when-blurred) li:hover:not(.selected) devtools-icon,\n .tree-outline li:not(.selected):hover .tree-element-title{forced-color-adjust:none;color:HighlightText}.navigator-fs-tree-item:not(.has-mapped-files, .selected) > :not(.selection),\n .navigator-fs-folder-tree-item:not(.has-mapped-files, .selected) > :not(.selection),\n .is-ignore-listed{filter:none;opacity:100%}}\n/*# sourceURL=${import.meta.resolve("./navigatorTree.css")} */\n`},rt={cssText:`.navigator-toolbar{border-bottom:1px solid var(--sys-color-divider);padding-left:8px}\n/*# sourceURL=${import.meta.resolve("./navigatorView.css")} */\n`};class st{searchId;searchResultCandidates;searchResultCallback;searchFinishedCallback;searchConfig;constructor(){this.searchId=0,this.searchResultCandidates=[],this.searchResultCallback=null,this.searchFinishedCallback=null,this.searchConfig=null}static filesComparator(e,t){if(e.isDirty()&&!t.isDirty())return-1;if(!e.isDirty()&&t.isDirty())return 1;const o=e.project().type()===i.Workspace.projectTypes.FileSystem&&!g.Persistence.PersistenceImpl.instance().binding(e);if(o!==(t.project().type()===i.Workspace.projectTypes.FileSystem&&!g.Persistence.PersistenceImpl.instance().binding(t)))return o?1:-1;const n=e.url(),r=t.url();return n&&!r?-1:!n&&r?1:u.StringUtilities.naturalOrderComparator(e.fullDisplayName(),t.fullDisplayName())}static urlComparator(e,t){return u.StringUtilities.naturalOrderComparator(e.url(),t.url())}performIndexing(e){this.stopSearch();const t=this.projects(),i=new n.Progress.CompositeProgress(e);for(let e=0;et.type()!==i.Workspace.projectTypes.Service&&(!(!e&&t.isServiceProject()&&t.type()!==i.Workspace.projectTypes.Formatter)&&!(!e&&t.type()===i.Workspace.projectTypes.ContentScripts))))}performSearch(e,t,i,o){this.stopSearch(),this.searchResultCandidates=[],this.searchResultCallback=i,this.searchFinishedCallback=o,this.searchConfig=e;const r=[],s=new n.Progress.CompositeProgress(t),a=s.createSubProgress(),c=new n.Progress.CompositeProgress(s.createSubProgress());for(const t of this.projects()){const i=[...t.uiSourceCodes()].length,o=c.createSubProgress(i),n=this.projectFilesMatchingFileQuery(t,e),s=t.findFilesMatchingSearchRequest(e,n,o).then(this.processMatchingFilesForProject.bind(this,this.searchId,t,e,n));r.push(s)}Promise.all(r).then(this.processMatchingFiles.bind(this,this.searchId,a,this.searchFinishedCallback.bind(this,!0)))}projectFilesMatchingFileQuery(e,t,i){const o=[];for(const n of e.uiSourceCodes()){if(!n.contentType().isTextType())continue;if(p.IgnoreListManager.IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(n))continue;const e=g.Persistence.PersistenceImpl.instance().binding(n);e&&e.network===n||(i&&!n.isDirty()||t.filePathMatchesFileQuery(n.fullDisplayName())&&o.push(n))}return o.sort(st.urlComparator),o}processMatchingFilesForProject(e,t,i,o,n){if(e!==this.searchId&&this.searchFinishedCallback)return void this.searchFinishedCallback(!1);let r=[...n.keys()];r.sort(st.urlComparator),r=u.ArrayUtilities.intersectOrdered(r,o,st.urlComparator);const s=this.projectFilesMatchingFileQuery(t,i,!0);r=u.ArrayUtilities.mergeOrdered(r,s,st.urlComparator);const a=[];for(const e of r){const t=p.DefaultScriptMapping.DefaultScriptMapping.scriptForUISourceCode(e);t&&!t.isAnonymousScript()||a.push(e)}a.sort(st.filesComparator),this.searchResultCandidates=u.ArrayUtilities.mergeOrdered(this.searchResultCandidates,a,st.filesComparator)}processMatchingFiles(e,t,i){if(e!==this.searchId&&this.searchFinishedCallback)return void this.searchFinishedCallback(!1);const o=this.searchResultCandidates;if(!o.length)return t.done(),void i();t.setTotalWork(o.length);let n=0;let r=0;for(let e=0;e<20&&e{c.call(this,e,b.ContentData.ContentData.contentDataOrEmpty(t).textObj)}))}function a(){if(n>=o.length)return r?void 0:(t.done(),void i());++r;const e=o[n++];window.setTimeout(s.bind(this,e),0)}function c(e,i){t.incrementWorked(1);let o=[];const n=this.searchConfig,s=n.queries();if(null!==i){for(let e=0;en.Revealer.reveal(o)),{jslogContext:t?"search-in-folder":"search-in-all-files"})}static treeElementsCompare(e,t){const i=ft.treeElementOrder(e),o=ft.treeElementOrder(t);return i>o?1:ie.frame()===i));o&&this.removeUISourceCodeNode(o)}acceptsUISourceCode(e){return this.acceptProject(e.project())}addUISourceCode(e){if(k.Runtime.experiments.isEnabled("just-my-code")&&p.IgnoreListManager.IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(e))return;if(!this.acceptsUISourceCode(e))return;if(e.isFetchXHR())return;const t=p.NetworkProject.NetworkProject.framesForUISourceCode(e);if(t.length)for(const i of t)this.addUISourceCodeNode(e,i);else this.addUISourceCodeNode(e,null);this.uiSourceCodeAdded(e)}addUISourceCodeNode(e,t){const o=e.contentType().isFromSourceMap();let r;r=e.project().type()===i.Workspace.projectTypes.FileSystem?g.FileSystemWorkspaceBinding.FileSystemWorkspaceBinding.relativePath(e).slice(0,-1):n.ParsedURL.ParsedURL.extractPath(e.url()).split("/").slice(1,-1);const s=e.project(),a=p.NetworkProject.NetworkProject.targetForUISourceCode(e),c=this.folderNode(e,s,a,t,e.origin(),r,o),l=new yt(this,e,t),d=c.child(l.id);d&&d instanceof yt?this.uiSourceCodeNodes.set(e,d):(c.appendChild(l),this.uiSourceCodeNodes.set(e,l),l.updateTitleBubbleUp()),this.selectDefaultTreeNode()}uiSourceCodeAdded(e){}uiSourceCodeAddedCallback(e){const t=e.data;this.addUISourceCode(t)}uiSourceCodeRemovedCallback(e){this.removeUISourceCodes([e.data])}tryAddProject(e){this.projectAdded(e);for(const t of e.uiSourceCodes())this.addUISourceCode(t)}projectAdded(e){const t=this.rootOrDeployedNode();!this.acceptProject(e)||e.type()!==i.Workspace.projectTypes.FileSystem||E.ScriptSnippetFileSystem.isSnippetsProject(e)||t.child(e.id())||(t.appendChild(new kt(this,e,e.id(),mt.FileSystem,e.displayName())),this.selectDefaultTreeNode())}selectDefaultTreeNode(){const e=this.rootNode.children();e.length&&!this.scriptsTree.selectedTreeElement&&e[0].treeNode().select(!0,!1)}computeUniqueFileSystemProjectNames(){const e=this.workspaceInternal.projectsForType(i.Workspace.projectTypes.FileSystem);if(!e.length)return;const t=n.Trie.Trie.newArrayTrie(),o=[];for(const i of e){const e=i.fileSystemPath().split("/").reverse();o.push(e),t.add(e)}const r=this.rootOrDeployedNode();for(let i=0;i{await this.removeUISourceCodeFromProject(e)})),e instanceof yt&&e.uiSourceCode().project().removeUISourceCode(e.uiSourceCode().url())}async deleteDirectoryRecursively(e){e instanceof xt&&await(g.NetworkPersistenceManager.NetworkPersistenceManager.instance().project()?.deleteDirectoryRecursively(e.folderPath))}findTopNonMergedNode(e){return e.isMerged&&e.parent instanceof xt?this.findTopNonMergedNode(e.parent):e}handleFolderContextMenu(e,o){const r=o.folderPath||u.DevToolsPath.EmptyEncodedPathString,s=o.project||null,a=new t.ContextMenu.ContextMenu(e);if(ft.appendSearchItem(a,r),s){if(s.type()===i.Workspace.projectTypes.FileSystem){const e=n.ParsedURL.ParsedURL.urlToRawPathString(g.FileSystemWorkspaceBinding.FileSystemWorkspaceBinding.completeURL(s,r),d.Platform.isWin());a.revealSection().appendItem(gt(ht.openFolder),(()=>d.InspectorFrontendHost.InspectorFrontendHostInstance.showItemInFolder(e)),{jslogContext:"open-folder"}),s.canCreateFile()&&a.defaultSection().appendItem(gt(ht.newFile),(()=>{this.handleContextMenuCreate(s,r,void 0)}),{jslogContext:"new-file"})}else if(o.origin&&o.folderPath){const e=n.ParsedURL.ParsedURL.concatenate(o.origin,"/",o.folderPath),t={isContentScript:o.recursiveProperties.exclusivelyContentScripts||!1,isKnownThirdParty:o.recursiveProperties.exclusivelyThirdParty||!1,isCurrentlyIgnoreListed:o.recursiveProperties.exclusivelyIgnored||!1};for(const{text:i,callback:o,jslogContext:n}of p.IgnoreListManager.IgnoreListManager.instance().getIgnoreListFolderContextMenuItems(e,t))a.defaultSection().appendItem(i,o,{jslogContext:n})}s.canExcludeFolder(r)&&a.defaultSection().appendItem(gt(ht.excludeFolder),this.handleContextMenuExclude.bind(this,s,r),{jslogContext:"exclude-folder"}),s.type()===i.Workspace.projectTypes.FileSystem&&(g.FileSystemWorkspaceBinding.FileSystemWorkspaceBinding.fileSystemType(s)!==g.PlatformFileSystem.PlatformFileSystemType.OVERRIDES?o instanceof kt&&a.defaultSection().appendItem(gt(ht.removeFolderFromWorkspace),(async()=>{const e=gt(ht.areYouSureYouWantToRemoveThis,{PH1:o.title});await t.UIUtils.ConfirmDialog.show(gt(ht.workspaceStopSyncing),e,void 0,{okButtonLabel:gt(ht.remove),jslogContext:"remove-folder-from-workspace-confirmation"})&&s.remove()}),{jslogContext:"remove-folder-from-workspace"}):o instanceof kt||a.defaultSection().appendItem(gt(ht.delete),this.handleDeleteFolder.bind(this,o),{jslogContext:"delete"})),a.show()}}rename(e,t){const i=e.uiSourceCode();e.rename(function(o){if(!t)return;o?e.treeElement?.listItemElement.hasFocus()&&this.sourceSelected(i,!0):i.remove()}.bind(this))}async create(e,t,i){let o="";i&&(o=(await i.requestContent()).content||"");const n=await e.createFile(t,null,o);if(!n)return;this.sourceSelected(n,!1);const r=this.revealUISourceCode(n,!0);r&&this.rename(r,!0)}groupingChanged(){this.reset(!0),this.initGrouping(),this.resetWorkspace(i.Workspace.WorkspaceImpl.instance()),this.workspaceInternal.uiSourceCodes().forEach(this.addUISourceCode.bind(this))}ignoreListChanged(){k.Runtime.experiments.isEnabled("just-my-code")?this.groupingChanged():this.rootNode.updateTitleRecursive()}initGrouping(){this.groupByFrame=!0,this.groupByDomain=this.navigatorGroupByFolderSetting.get(),this.groupByFolder=this.groupByDomain,this.navigatorGroupByAuthoredExperiment?this.groupByAuthored=k.Runtime.experiments.isEnabled(this.navigatorGroupByAuthoredExperiment):this.groupByAuthored=!1}resetForTest(){this.reset(),this.workspaceInternal.uiSourceCodes().forEach(this.addUISourceCode.bind(this))}discardFrame(e,t){if(t)return;const i=this.frameNodes.get(e);if(i){i.parent&&i.parent.removeChild(i),this.frameNodes.delete(e);for(const i of e.childFrames)this.discardFrame(i,t)}}targetAdded(e){}targetRemoved(e){const t=this.rootOrDeployedNode(),i=t.child("target:"+e.id());i&&t.removeChild(i)}targetNameChanged(e){const t=e.data,i=this.rootOrDeployedNode().child("target:"+t.id());i&&i.setTitle(t.name())}}const vt=new WeakSet;class St extends t.TreeOutline.TreeElement{nodeType;navigatorView;hoverCallback;node;hovered;isIgnoreListed;isFromSourceMap;constructor(e,i,o,n){super("",!0,St.#b(i)),this.listItemElement.classList.add("navigator-"+i+"-tree-item","navigator-folder-tree-item"),t.ARIAUtils.setLabel(this.listItemElement,`${o}, ${i}`),this.nodeType=i,this.title=o,this.tooltip=o,this.navigatorView=e,this.hoverCallback=n,this.isFromSourceMap=!1;let r="folder";i===mt.Domain?r="cloud":i===mt.Frame?r="frame":i===mt.Worker?r="gears":i===mt.Authored?r="code":i===mt.Deployed&&(r="deployed");const s=a.Icon.create(r);this.setLeadingIcons([s])}async onpopulate(){this.node.populate()}onattach(){this.collapse(),this.node.onattach(),this.listItemElement.addEventListener("contextmenu",this.handleContextMenuEvent.bind(this),!1),this.listItemElement.addEventListener("mousemove",this.mouseMove.bind(this),!1),this.listItemElement.addEventListener("mouseleave",this.mouseLeave.bind(this),!1)}setIgnoreListed(e){this.isIgnoreListed!==e&&(this.isIgnoreListed=e,this.listItemElement.classList.toggle("is-ignore-listed",e),this.updateTooltip())}setFromSourceMap(e){this.isFromSourceMap=e,this.listItemElement.classList.toggle("is-from-source-map",e)}setNode(e){this.node=e,this.updateTooltip(),t.ARIAUtils.setLabel(this.listItemElement,`${this.title}, ${this.nodeType}`)}updateTooltip(){if(this.node.tooltip)this.tooltip=this.node.tooltip;else{const e=[];let t=this.node;for(;t&&!t.isRoot()&&t.type===this.node.type;)e.push(t.title),t=t.parent;e.reverse();let i=e.join("/");this.isIgnoreListed&&(i=gt(ht.sIgnoreListed,{PH1:i})),this.tooltip=i}}handleContextMenuEvent(e){this.node&&(this.select(),this.navigatorView.handleFolderContextMenu(e,this.node))}mouseMove(e){!this.hovered&&this.hoverCallback&&(this.hovered=!0,this.hoverCallback(!0))}mouseLeave(e){this.hoverCallback&&(this.hovered=!1,this.hoverCallback(!1))}static#b(e){switch(e){case mt.Domain:return"domain";case mt.Frame:return"frame";case mt.Worker:return"worker";case mt.Authored:return"authored";case mt.Deployed:return"deployed"}return"folder"}}class Ct extends t.TreeOutline.TreeElement{nodeType;node;navigatorView;uiSourceCodeInternal;aiButtonContainer;constructor(e,i,o,r){super("",!1,i.contentType().name()),this.nodeType=mt.File,this.node=r,this.title=o,this.listItemElement.classList.add("navigator-"+i.contentType().name()+"-tree-item","navigator-file-tree-item"),this.tooltip=i.url(),t.ARIAUtils.setLabel(this.listItemElement,`${i.name()}, ${this.nodeType}`),n.EventTarget.fireEvent("source-tree-file-added",i.fullDisplayName()),this.navigatorView=e,this.uiSourceCodeInternal=i,this.updateIcon(),this.titleElement.setAttribute("jslog",`${l.value("title").track({change:!0})}`)}updateIcon(){const e=M.getIconForSourceFile(this.uiSourceCodeInternal);this.setLeadingIcons([e])}updateAccessibleName(){t.ARIAUtils.setLabel(this.listItemElement,`${this.uiSourceCodeInternal.name()}, ${this.nodeType}`)}createAiButton(){if(!t.ActionRegistry.ActionRegistry.instance().hasAction("drjones.sources-floating-button"))return;if(!this.uiSourceCode.contentType().isTextType()||E.ScriptSnippetFileSystem.isSnippetsUISourceCode(this.uiSourceCode))return;const e=t.ActionRegistry.ActionRegistry.instance().getAction("drjones.sources-floating-button");if(!this.aiButtonContainer){this.aiButtonContainer=this.listItemElement.createChild("span","ai-button-container");const t=new L.FloatingButton.FloatingButton({title:e.title(),iconName:"smart-assistant"});t.addEventListener("click",(t=>{t.stopPropagation(),this.navigatorView.sourceSelected(this.uiSourceCode,!1),e.execute()}),{capture:!0}),t.addEventListener("mousedown",(e=>{e.stopPropagation()}),{capture:!0}),this.aiButtonContainer.appendChild(t)}}get uiSourceCode(){return this.uiSourceCodeInternal}onattach(){this.listItemElement.draggable=!0,this.listItemElement.addEventListener("click",this.onclick.bind(this),!1),this.listItemElement.addEventListener("contextmenu",this.handleContextMenuEvent.bind(this),!1),this.listItemElement.addEventListener("dragstart",this.ondragstart.bind(this),!1),this.createAiButton()}shouldRenameOnMouseDown(){if(!this.uiSourceCodeInternal.canRename())return!1;if(!this.treeOutline)return!1;return this===this.treeOutline.selectedTreeElement&&this.treeOutline.element.hasFocus()&&!t.UIUtils.isBeingEdited(this.treeOutline.element)}selectOnMouseDown(e){1===e.which&&this.shouldRenameOnMouseDown()?window.setTimeout(function(){this.shouldRenameOnMouseDown()&&this.navigatorView.rename(this.node,!1)}.bind(this),300):super.selectOnMouseDown(e)}ondragstart(e){e.dataTransfer&&(e.dataTransfer.setData("text/plain",this.uiSourceCodeInternal.url()),e.dataTransfer.effectAllowed="copy")}onspace(){return this.navigatorView.sourceSelected(this.uiSourceCode,!0),!0}onclick(e){this.navigatorView.sourceSelected(this.uiSourceCode,!1)}ondblclick(e){const t=1===e.button;return this.navigatorView.sourceSelected(this.uiSourceCode,!t),!1}onenter(){return this.navigatorView.sourceSelected(this.uiSourceCode,!0),!0}ondelete(){return!0}handleContextMenuEvent(e){this.select(),this.navigatorView.handleFileContextMenu(e,this.node)}}class wt{id;navigatorView;type;populated;isMerged;parent;title;tooltip;recursiveProperties;#f=[];#v=new Map;constructor(e,t,i,o){this.id=t,this.navigatorView=e,this.type=i,this.tooltip=o,this.populated=!1,this.isMerged=!1,this.recursiveProperties={exclusivelySourceMapped:null,exclusivelyIgnored:null,exclusivelyContentScripts:null,exclusivelyThirdParty:null}}treeNode(){throw new Error("Not implemented")}dispose(){}updateTitle(){}updateTitleRecursive(){for(const e of this.children())e.updateTitleRecursive();this.updateTitle()}updateTitleBubbleUp(){this.updateTitle(),this.parent&&this.parent.updateTitleBubbleUp()}isRoot(){return!1}hasChildren(){return!0}onattach(){}setTitle(e){throw new Error("Not implemented")}populate(){this.isPopulated()||(this.parent&&this.parent.populate(),this.populated=!0,this.wasPopulated())}wasPopulated(){const e=this.children();for(let t=0;tt.id===e.id));t>=0&&this.#f.splice(t,1),this.#v.delete(e.id),e.parent=null,e.dispose()}reset(){this.#f=[],this.#v.clear()}updateId(e){this.parent&&(this.parent.#v.delete(this.id),this.parent.#v.set(e,this)),this.id=e}}class It extends wt{constructor(e){super(e,"",mt.Root)}isRoot(){return!0}treeNode(){return this.navigatorView.scriptsTree.rootElement()}}class yt extends wt{uiSourceCodeInternal;treeElement;eventListeners;frameInternal;constructor(e,t,o){super(e,"UISourceCode:"+t.canonicalScriptId(),mt.File),this.uiSourceCodeInternal=t,this.treeElement=null,this.eventListeners=[],this.frameInternal=o,this.recursiveProperties.exclusivelySourceMapped=t.contentType().isFromSourceMap(),t.contentType().isScript()&&(this.recursiveProperties.exclusivelyThirdParty=t.isKnownThirdParty(),this.recursiveProperties.exclusivelyContentScripts=t.project().type()===i.Workspace.projectTypes.ContentScripts)}frame(){return this.frameInternal}uiSourceCode(){return this.uiSourceCodeInternal}treeNode(){if(this.treeElement)return this.treeElement;this.treeElement=new Ct(this.navigatorView,this.uiSourceCodeInternal,"",this),this.updateTitle();const e=this.updateTitle.bind(this,void 0);return this.eventListeners=[this.uiSourceCodeInternal.addEventListener(i.UISourceCode.Events.TitleChanged,e),this.uiSourceCodeInternal.addEventListener(i.UISourceCode.Events.WorkingCopyChanged,e),this.uiSourceCodeInternal.addEventListener(i.UISourceCode.Events.WorkingCopyCommitted,e)],this.treeElement}updateTitle(e){const t=p.IgnoreListManager.IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(this.uiSourceCodeInternal);if((this.uiSourceCodeInternal.contentType().isScript()||t)&&(this.recursiveProperties.exclusivelyIgnored=t),!this.treeElement)return;let i=this.uiSourceCodeInternal.displayName();!e&&this.uiSourceCodeInternal.isDirty()&&(i="*"+i),this.treeElement.title=i,this.treeElement.updateIcon(),this.treeElement.listItemElement.classList.toggle("is-ignore-listed",t);let o=this.uiSourceCodeInternal.url();this.uiSourceCodeInternal.contentType().isFromSourceMap()&&(o=gt(ht.sFromSourceMap,{PH1:this.uiSourceCodeInternal.displayName()})),t&&(o=gt(ht.sIgnoreListed,{PH1:o})),this.treeElement.tooltip=o,this.treeElement.updateAccessibleName(),this.updateId("UISourceCode:"+this.uiSourceCodeInternal.canonicalScriptId())}hasChildren(){return!1}dispose(){n.EventTarget.removeEventListeners(this.eventListeners)}reveal(e){this.parent&&(this.parent.populate(),this.parent.treeNode().expand()),this.treeElement&&(this.treeElement.reveal(!0),e&&this.treeElement.select(!0))}rename(e){if(!this.treeElement)return;if(this.treeElement.listItemElement.focus(),!this.treeElement.treeOutline)return;const i=this.treeElement.treeOutline.element;t.UIUtils.markBeingEdited(i,!0);const o=o=>{if(!o)return t.UIUtils.markBeingEdited(i,!1),this.updateTitle(),void this.rename(e);if(this.treeElement){const{parent:e}=this.treeElement;e&&(e.removeChild(this.treeElement),e.appendChild(this.treeElement),this.treeElement.select())}n(!0)},n=o=>{t.UIUtils.markBeingEdited(i,!1),this.updateTitle(),e&&e(o)};this.updateTitle(!0),this.treeElement.startEditingTitle(new t.InplaceEditor.Config(((e,t,i)=>{if(t!==i)return this.treeElement&&(this.treeElement.title=t),void this.uiSourceCodeInternal.rename(t).then(o);n(!0)}),(()=>n(!1)),void 0))}}class xt extends wt{project;folderPath;origin;title;treeElement;constructor(e,t,i,o,n,r,s){super(e,i,o),this.project=t,this.folderPath=n,this.title=r,this.origin=s}treeNode(){return this.treeElement||(this.treeElement=this.createTreeElement(this.title,this),this.updateTitle()),this.treeElement}updateTitle(){let e;for(e in this.recursiveProperties){let t=null;for(const i of this.children()){if(!1===i.recursiveProperties[e]){t=!1;break}i.recursiveProperties[e]&&(t=!0)}this.recursiveProperties[e]=t}if(!this.treeElement)return;if(this.treeElement.setFromSourceMap(this.recursiveProperties.exclusivelySourceMapped||!1),this.treeElement.setIgnoreListed(this.recursiveProperties.exclusivelyIgnored||!1),!this.project||this.project.type()!==i.Workspace.projectTypes.FileSystem)return;const t=n.ParsedURL.ParsedURL.concatenate(g.FileSystemWorkspaceBinding.FileSystemWorkspaceBinding.fileSystemPath(this.project.id()),"/",this.folderPath),o=g.Persistence.PersistenceImpl.instance().filePathHasBindings(t);this.treeElement.listItemElement.classList.toggle("has-mapped-files",o)}createTreeElement(e,t){const i=new St(this.navigatorView,this.type,e);return i.setNode(t),i}wasPopulated(){this.treeElement&&this.treeElement.node===this&&this.addChildrenRecursive()}addChildrenRecursive(){const e=this.children();for(let t=0;te.title)).join("/"),r=[];o=t;do{r.push(o),i=o.children(),o=1===i.length?i[0]:null}while(o?.isMerged);if(!this.isPopulated()){this.treeElement.title=n,this.treeElement.setNode(this);for(let e=0;ee.title)).join("/"),s.parent&&this.navigatorView.removeChild(s.parent,s),this.navigatorView.appendChild(this.treeElement,s),s.expanded&&a.expand(),this.updateTitle()}this.isPopulated()&&this.navigatorView.appendChild(this.treeElement,e.treeNode())}willRemoveChild(e){const t=e;!t.isMerged&&this.isPopulated()&&this.treeElement&&t.treeElement&&this.navigatorView.removeChild(this.treeElement,t.treeElement)}}class kt extends wt{project;title;hoverCallback;treeElement;constructor(e,t,i,o,n,r){super(e,i,o,r),this.project=t,this.title=n,this.populate()}setHoverCallback(e){this.hoverCallback=e}treeNode(){return this.treeElement||(this.treeElement=new St(this.navigatorView,this.type,this.title,this.hoverCallback),this.treeElement.setNode(this)),this.treeElement}onattach(){this.updateTitle()}updateTitle(){if(!this.treeElement||!this.project||this.project.type()!==i.Workspace.projectTypes.FileSystem)return;const e=g.FileSystemWorkspaceBinding.FileSystemWorkspaceBinding.fileSystemPath(this.project.id()),t=this.treeElement.listItemElement.classList.contains("has-mapped-files"),o=g.Persistence.PersistenceImpl.instance().filePathHasBindings(e);t!==o&&(this.treeElement.listItemElement.classList.toggle("has-mapped-files",o),this.treeElement.childrenListElement.hasFocus()||(o?this.treeElement.expand():this.treeElement.collapse()))}setTitle(e){this.title=e,this.treeElement&&(this.treeElement.title=this.title)}}var Tt=Object.freeze({__proto__:null,NavigatorFolderTreeElement:St,NavigatorFolderTreeNode:xt,NavigatorGroupTreeNode:kt,NavigatorRootTreeNode:It,NavigatorSourceTreeElement:Ct,NavigatorTreeNode:wt,NavigatorUISourceCodeTreeNode:yt,NavigatorView:ft,Types:mt}),Et={cssText:`.paused-message{align-self:center;width:fit-content}.scripts-debug-toolbar{position:absolute;top:0;width:100%;background-color:var(--app-color-toolbar-background);border-bottom:1px solid var(--sys-color-divider);overflow:hidden;z-index:1}.scripts-debug-toolbar-drawer{flex:0 0 52px;transition:margin-top 0.1s ease-in-out;margin-top:-26px;padding-top:25px;background-color:var(--sys-color-cdt-base-container);overflow:hidden;white-space:nowrap}.scripts-debug-toolbar-drawer.expanded{margin-top:0}.scripts-debug-toolbar-drawer > dt-checkbox{display:none;padding-left:3px;height:28px}.scripts-debug-toolbar-drawer.expanded > dt-checkbox{display:flex}.y-overflow-only{overflow:hidden auto;background-color:var(--sys-color-cdt-base-container)}.cursor-auto{cursor:auto}.navigator-tabbed-pane{background-color:var(--sys-color-cdt-base-container)}\n/*# sourceURL=${import.meta.resolve("./sourcesPanel.css")} */\n`};class Lt{sourcesView;entries=[];current=-1;revealing=!1;constructor(e){this.sourcesView=e}trackSourceFrameCursorJumps(e){e.addEventListener("EditorUpdate",(t=>this.onEditorUpdate(t.data,e)))}onEditorUpdate(e,t){e.docChanged&&this.mapEntriesFor(t.uiSourceCode(),e.changes);const i=e.startState.selection.main,o=e.state.selection.main;!this.revealing&&i.anchor!==o.anchor&&e.transactions.some((e=>Boolean(e.isUserEvent("select.pointer")||e.isUserEvent("select.reveal")||e.isUserEvent("select.search"))))&&(this.updateCurrentState(t.uiSourceCode(),i.head),this.entries.length>this.current+1&&(this.entries.length=this.current+1),this.entries.push(new Mt(t.uiSourceCode(),o.head)),this.current++,this.entries.length>20&&(this.entries.shift(),this.current--))}updateCurrentState(e,t){if(!this.revealing){const i=this.current>=0?this.entries[this.current]:null;i?.matches(e)&&(i.position=t)}}mapEntriesFor(e,t){for(const i of this.entries)i.matches(e)&&(i.position=t.mapPos(i.position))}reveal(e){const t=i.Workspace.WorkspaceImpl.instance().uiSourceCode(e.projectId,e.url);t&&(this.revealing=!0,this.sourcesView.showSourceLocation(t,e.position,!1,!0),this.revealing=!1)}rollback(){this.current>0&&(this.current--,this.reveal(this.entries[this.current]))}rollover(){this.current=0;t--)this.entries[t].matches(e)&&(this.entries.splice(t,1),this.current>=t&&this.current--)}}class Mt{projectId;url;position;constructor(e,t){this.projectId=e.project().id(),this.url=e.url(),this.position=t}matches(e){return this.url===e.url()&&this.projectId===e.project().id()}}var Pt=Object.freeze({__proto__:null,EditingLocationHistoryManager:Lt,HistoryDepth:20}),Ft={cssText:`#sources-panel-sources-view{--override-highlight-animation-10pc-background-color:rgb(158 54 153);--override-highlight-animation-10pc-foreground-color:rgb(255 255 255);flex:auto;position:relative}#sources-panel-sources-view .sources-toolbar{display:flex;flex:0 0 27px;background-color:var(--sys-color-cdt-base-container);border-top:1px solid var(--sys-color-divider);overflow:hidden;z-index:0}.source-frame-debugger-script{--override-debugger-background-tint:rgb(255 255 194/50%);background-color:var(--override-debugger-background-tint)}.theme-with-dark-background .source-frame-debugger-script{--override-debugger-background-tint:rgb(61 61 0/50%)}\n/*# sourceURL=${import.meta.resolve("./sourcesView.css")} */\n`};const Dt=["application/javascript","application/json","application/manifest+json","text/css","text/html","text/javascript"],At={ms:"ms",mb:"MB",kb:"kB"},Nt=e.i18n.registerUIStrings("panels/sources/ProfilePlugin.ts",At),Ut=e.i18n.getLocalizedString.bind(void 0,Nt);class Bt extends s.GutterMarker{value;constructor(e){super(),this.value=e}eq(e){return this.value===e.value}toDOM(){const e=document.createElement("div");e.className="cm-profileMarker";let t=this.value;const i=u.NumberUtilities.clamp(Math.log10(1+.002*t)/5,.02,1);let o,n;e.style.backgroundColor=`hsla(217, 100%, 70%, ${i.toFixed(3)})`,t/=1e3,t>=1e3?(o=Ut(At.mb),t/=1e3,n=t>=20?0:1):(o=Ut(At.kb),n=0),e.textContent=t.toFixed(n);const r=e.appendChild(document.createElement("span"));return r.className="cm-units",r.textContent=o,e}}class Rt extends s.GutterMarker{value;constructor(e){super(),this.value=e}eq(e){return this.value===e.value}toDOM(){const e=document.createElement("div");e.className="cm-profileMarker";const t=u.NumberUtilities.clamp(Math.log10(1+10*this.value)/5,.02,1);e.textContent=this.value.toFixed(1),e.style.backgroundColor=`hsla(44, 100%, 50%, ${t.toFixed(3)})`;const i=document.createElement("span");return i.className="cm-units",i.textContent=Ut(At.ms),e.appendChild(i),e}}function jt(e,t,i){const o="performance"===i?Rt:Bt,n=[];for(const[i,r]of e)if(i<=t.doc.lines){const{from:e}=t.doc.line(i);n.push(new o(r).range(e))}return s.RangeSet.of(n,!0)}const Wt=e=>class extends H{updateEffect=s.StateEffect.define();field;gutter;compartment=new s.Compartment;constructor(t){super(t),this.field=s.StateField.define({create:()=>s.RangeSet.empty,update:(t,i)=>i.effects.reduce(((t,o)=>o.is(this.updateEffect)?jt(o.value,i.state,e):t),t.map(i.changes))}),this.gutter=s.gutter({markers:e=>e.state.field(this.field),class:`cm-${e}Gutter`})}static accepts(e){return e.contentType().hasScripts()}getLineMap(){return this.uiSourceCode.getDecorationData(e)}editorExtension(){const t=this.getLineMap();return this.compartment.of(t?[this.field.init((i=>jt(t,i,e))),this.gutter,Vt]:[])}decorationChanged(e,t){const i=Boolean(t.state.field(this.field,!1)),o=this.getLineMap();o?i?t.dispatch({effects:this.updateEffect.of(o)}):t.dispatch({effects:this.compartment.reconfigure([this.field.init((t=>jt(o,t,e))),this.gutter,Vt])}):i&&t.dispatch({effects:this.compartment.reconfigure([])})}},Vt=s.EditorView.baseTheme({".cm-line::selection":{backgroundColor:"transparent",color:"currentColor"},".cm-performanceGutter":{width:"60px",backgroundColor:"var(--sys-color-cdt-base-container)",marginLeft:"3px"},".cm-memoryGutter":{width:"48px",backgroundColor:"var(--sys-color-cdt-base-container)",marginLeft:"3px"},".cm-profileMarker":{textAlign:"right",paddingRight:"3px"},".cm-profileMarker .cm-units":{color:"var(--sys-color-token-subtle)",fontSize:"75%",marginLeft:"3px"}}),Ot=Wt("memory"),Ht=Wt("performance"),_t={fromS:"(From {PH1})",sourceMappedFromS:"(Source mapped from {PH1})"},zt=e.i18n.registerUIStrings("panels/sources/ResourceOriginPlugin.ts",_t),qt=e.i18n.getLocalizedString.bind(void 0,zt);class $t extends H{static accepts(e){const t=e.contentType();return t.hasScripts()||t.isFromSourceMap()}rightToolbarItems(){const i=p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance();if(this.uiSourceCode.contentType().isFromSourceMap()){const o=[];for(const e of i.scriptsForUISourceCode(this.uiSourceCode)){const t=i.uiSourceCodeForScript(e);if(!t)continue;const n=t.url(),r=p.ResourceUtils.displayNameForURL(n),s=qt(_t.sourceMappedFromS,{PH1:r});o.push(U.Linkifier.Linkifier.linkifyRevealable(t,r,n,s,void 0,"original-script-location"))}for(const e of p.SASSSourceMapping.SASSSourceMapping.uiSourceOrigin(this.uiSourceCode))o.push(U.Linkifier.Linkifier.linkifyURL(e));if(0===o.length)return[];const n=document.createElement("span");return o.forEach(((e,t)=>{t>0&&n.append(", "),n.append(e)})),[new t.Toolbar.ToolbarItem(e.i18n.getFormatLocalizedString(zt,_t.fromS,{PH1:n}))]}for(const o of i.scriptsForUISourceCode(this.uiSourceCode))if(o.originStackTrace){const i=Gt.linkifyStackTraceTopFrame(o.debuggerModel.target(),o.originStackTrace);return[new t.Toolbar.ToolbarItem(e.i18n.getFormatLocalizedString(zt,_t.fromS,{PH1:i}))]}return[]}}const Gt=new U.Linkifier.Linkifier;var Kt=Object.freeze({__proto__:null,ResourceOriginPlugin:$t,linkifier:Gt});const Jt={enter:"⌘+Enter",ctrlenter:"Ctrl+Enter"},Qt=e.i18n.registerUIStrings("panels/sources/SnippetsPlugin.ts",Jt),Xt=e.i18n.getLocalizedString.bind(void 0,Qt);class Yt extends H{static accepts(e){return E.ScriptSnippetFileSystem.isSnippetsUISourceCode(e)}rightToolbarItems(){const e=t.Toolbar.Toolbar.createActionButton("debugger.run-snippet");return e.setText(d.Platform.isMac()?Xt(Jt.enter):Xt(Jt.ctrlenter)),e.setReducedFocusRing(),[e]}editorExtension(){return c.JavaScript.completion()}}var Zt=Object.freeze({__proto__:null,SnippetsPlugin:Yt});class ei extends(n.ObjectWrapper.eventMixin(o.SourceFrame.SourceFrameImpl)){uiSourceCodeInternal;muteSourceCodeEvents;persistenceBinding;uiSourceCodeEventListeners;messageAndDecorationListeners;boundOnBindingChanged;plugins=[];errorPopoverHelper;openInExternalEditorToolbarButton;#S=!1;constructor(e){if(super((()=>this.workingCopy())),this.uiSourceCodeInternal=e,this.muteSourceCodeEvents=!1,this.persistenceBinding=g.Persistence.PersistenceImpl.instance().binding(e),this.uiSourceCodeEventListeners=[],this.messageAndDecorationListeners=[],this.canOpenInExternalEditor()){this.openInExternalEditorToolbarButton=new t.Toolbar.ToolbarButton("Open in editor",void 0,"Open in editor");const e=globalThis.reactNativeOpenInEditorButtonImage;if("string"==typeof e&&""!==e){const t=new A.Adorner.Adorner;t.classList.add("open-in-external-editor-adorner"),t.style.setProperty("background-image",e),this.openInExternalEditorToolbarButton.element.classList.add("toolbar-has-glyph","open-in-external-editor-button"),this.openInExternalEditorToolbarButton.setAdorner(t)}else this.openInExternalEditorToolbarButton.setGlyph("open-externally");this.openInExternalEditorToolbarButton.addEventListener("Click",(()=>{const e={url:this.uiSourceCode().url()},t=this.textEditor.state,i=t.doc.lineAt(t.selection.main.head),{lineNumber:o}=this.editorLocationToUILocation(i.number);e.lineNumber=o,fetch("/open-stack-frame",{method:"POST",body:JSON.stringify(e)}).catch((e=>console.error(e)))}))}this.boundOnBindingChanged=this.onBindingChanged.bind(this),n.Settings.Settings.instance().moduleSetting("persistence-network-overrides-enabled").addChangeListener(this.onNetworkPersistenceChanged,this),this.errorPopoverHelper=new t.PopoverHelper.PopoverHelper(this.textEditor.editor.contentDOM,this.getErrorPopoverContent.bind(this),"sources.error"),this.errorPopoverHelper.setTimeout(100,100),this.initializeUISourceCode()}canOpenInExternalEditor(){return!!globalThis.enableReactNativeOpenInExternalEditor&&(this.uiSourceCode().url().startsWith("http")??!1)}async workingCopy(){return this.uiSourceCodeInternal.isDirty()?this.uiSourceCodeInternal.workingCopyContentData():await this.uiSourceCodeInternal.requestContentData()}editorConfiguration(e){return[super.editorConfiguration(e),(t=this.allMessages(),[ui.init((e=>di.create(si.create(t),e.doc))),pi]),oi.of(this.plugins.map((e=>e.editorExtension())))];var t}onFocus(){super.onFocus(),t.Context.Context.instance().setFlavor(ei,this)}onBlur(){super.onBlur(),t.Context.Context.instance().setFlavor(ei,null)}installMessageAndDecorationListeners(){if(this.persistenceBinding){const e=this.persistenceBinding.network,t=this.persistenceBinding.fileSystem;this.messageAndDecorationListeners=[e.addEventListener(i.UISourceCode.Events.MessageAdded,this.onMessageAdded,this),e.addEventListener(i.UISourceCode.Events.MessageRemoved,this.onMessageRemoved,this),e.addEventListener(i.UISourceCode.Events.DecorationChanged,this.onDecorationChanged,this),t.addEventListener(i.UISourceCode.Events.MessageAdded,this.onMessageAdded,this),t.addEventListener(i.UISourceCode.Events.MessageRemoved,this.onMessageRemoved,this)]}else this.messageAndDecorationListeners=[this.uiSourceCodeInternal.addEventListener(i.UISourceCode.Events.MessageAdded,this.onMessageAdded,this),this.uiSourceCodeInternal.addEventListener(i.UISourceCode.Events.MessageRemoved,this.onMessageRemoved,this),this.uiSourceCodeInternal.addEventListener(i.UISourceCode.Events.DecorationChanged,this.onDecorationChanged,this)]}uiSourceCode(){return this.uiSourceCodeInternal}setUISourceCode(e){const t=e.contentLoaded()?Promise.resolve():e.requestContent(),i=this.uiSourceCodeInternal;t.then((async()=>{this.uiSourceCodeInternal===i&&(this.unloadUISourceCode(),this.uiSourceCodeInternal=e,e.workingCopy()!==this.textEditor.state.doc.toString()?await this.setContentDataOrError(Promise.resolve(e.workingCopyContentData())):this.reloadPlugins(),this.initializeUISourceCode())}),console.error)}unloadUISourceCode(){n.EventTarget.removeEventListeners(this.messageAndDecorationListeners),n.EventTarget.removeEventListeners(this.uiSourceCodeEventListeners),this.uiSourceCodeInternal.removeWorkingCopyGetter(),g.Persistence.PersistenceImpl.instance().unsubscribeFromBindingEvent(this.uiSourceCodeInternal,this.boundOnBindingChanged)}initializeUISourceCode(){this.uiSourceCodeEventListeners=[this.uiSourceCodeInternal.addEventListener(i.UISourceCode.Events.WorkingCopyChanged,this.onWorkingCopyChanged,this),this.uiSourceCodeInternal.addEventListener(i.UISourceCode.Events.WorkingCopyCommitted,this.onWorkingCopyCommitted,this),this.uiSourceCodeInternal.addEventListener(i.UISourceCode.Events.TitleChanged,this.onTitleChanged,this)],g.Persistence.PersistenceImpl.instance().subscribeForBindingEvent(this.uiSourceCodeInternal,this.boundOnBindingChanged),this.installMessageAndDecorationListeners(),this.updateStyle();const e=Dt.includes(this.contentType)&&!this.uiSourceCodeInternal.project().canSetFileContent()&&null===g.Persistence.PersistenceImpl.instance().binding(this.uiSourceCodeInternal),t=!this.uiSourceCodeInternal.contentType().isFromSourceMap();this.setCanPrettyPrint(e,t)}wasShown(){super.wasShown(),this.setEditable(this.canEditSourceInternal())}willHide(){for(const e of this.plugins)e.willHide();super.willHide(),t.Context.Context.instance().setFlavor(ei,null),this.uiSourceCodeInternal.removeWorkingCopyGetter()}getContentType(){const e=g.Persistence.PersistenceImpl.instance().binding(this.uiSourceCodeInternal),t=e?e.network.mimeType():this.uiSourceCodeInternal.mimeType();return n.ResourceType.ResourceType.simplifyContentType(t)}canEditSourceInternal(){return!this.hasLoadError()&&(!this.uiSourceCodeInternal.editDisabled()&&("application/wasm"!==this.uiSourceCodeInternal.mimeType()&&(!!g.Persistence.PersistenceImpl.instance().binding(this.uiSourceCodeInternal)||(!!this.uiSourceCodeInternal.project().canSetFileContent()||!this.uiSourceCodeInternal.project().isServiceProject()&&(!(this.uiSourceCodeInternal.project().type()!==i.Workspace.projectTypes.Network||!g.NetworkPersistenceManager.NetworkPersistenceManager.instance().active())||(!this.pretty||!this.uiSourceCodeInternal.contentType().hasScripts())&&this.uiSourceCodeInternal.contentType()!==n.ResourceType.resourceTypes.Document)))))}onNetworkPersistenceChanged(){this.setEditable(this.canEditSourceInternal())}commitEditing(){this.uiSourceCodeInternal.isDirty()&&(this.muteSourceCodeEvents=!0,this.uiSourceCodeInternal.commitWorkingCopy(),this.muteSourceCodeEvents=!1)}async setContent(e){this.disposePlugins(),this.loadPlugins(),await super.setContent(e);for(const e of this.plugins)e.editorInitialized(this.textEditor);this.#C(),n.EventTarget.fireEvent("source-file-loaded",this.uiSourceCodeInternal.displayName(!0))}createMessage(e){const{lineNumber:t,columnNumber:i}=this.uiLocationToEditorLocation(e.lineNumber(),e.columnNumber());return new ni(e,t,i)}allMessages(){return(null!==this.persistenceBinding?[...this.persistenceBinding.network.messages(),...this.persistenceBinding.fileSystem.messages()]:[...this.uiSourceCodeInternal.messages()]).map((e=>this.createMessage(e)))}onTextChanged(){const e=this.pretty;super.onTextChanged(),this.errorPopoverHelper.hidePopover(),Gi.instance().updateLastModificationTime(),this.muteSourceCodeEvents=!0,this.uiSourceCodeInternal.setWorkingCopyGetter((()=>this.textEditor.state.sliceDoc())),this.muteSourceCodeEvents=!1,e!==this.pretty&&(this.updateStyle(),this.reloadPlugins())}onWorkingCopyChanged(){this.muteSourceCodeEvents||this.maybeSetContent(this.uiSourceCodeInternal.workingCopyContentData())}onWorkingCopyCommitted(){this.muteSourceCodeEvents||this.maybeSetContent(this.uiSourceCode().workingCopyContentData()),this.contentCommitted(),this.updateStyle()}reloadPlugins(){this.disposePlugins(),this.loadPlugins();const e=this.textEditor;e.dispatch({effects:oi.reconfigure(this.plugins.map((e=>e.editorExtension())))});for(const t of this.plugins)t.editorInitialized(e)}onTitleChanged(){this.updateLanguageMode("").then((()=>this.reloadPlugins()),console.error)}static sourceFramePlugins(){return[Ge,ro,Yt,$t,ye,Ot,Ht,G]}loadPlugins(){const e=g.Persistence.PersistenceImpl.instance().binding(this.uiSourceCodeInternal),t=e?e.network:this.uiSourceCodeInternal;for(const e of ei.sourceFramePlugins())e.accepts(t)&&this.plugins.push(new e(t,this));this.dispatchEventToListeners("ToolbarItemsChanged")}disposePlugins(){for(const e of this.plugins)e.dispose();this.plugins=[]}onBindingChanged(){const e=g.Persistence.PersistenceImpl.instance().binding(this.uiSourceCodeInternal);e!==this.persistenceBinding&&(this.unloadUISourceCode(),this.persistenceBinding=e,this.initializeUISourceCode(),this.reloadMessages(),this.reloadPlugins())}reloadMessages(){const e=this.allMessages(),{editor:t}=this.textEditor;t.dispatch({effects:ai.of(si.create(e))})}updateStyle(){this.setEditable(this.canEditSourceInternal())}maybeSetContent(e){this.textEditor.state.doc.toString()!==e.text&&this.setContentDataOrError(Promise.resolve(e))}populateTextAreaContextMenu(e,t,o){super.populateTextAreaContextMenu(e,t,o),e.appendApplicableItems(this.uiSourceCodeInternal);const n=this.editorLocationToUILocation(t,o);e.appendApplicableItems(new i.UISourceCode.UILocation(this.uiSourceCodeInternal,n.lineNumber,n.columnNumber));for(const i of this.plugins)i.populateTextAreaContextMenu(e,t,o)}populateLineGutterContextMenu(e,t){super.populateLineGutterContextMenu(e,t);for(const i of this.plugins)i.populateLineGutterContextMenu(e,t)}dispose(){this.errorPopoverHelper.dispose(),this.disposePlugins(),this.unloadUISourceCode(),this.textEditor.editor.destroy(),this.detach(),n.Settings.Settings.instance().moduleSetting("persistence-network-overrides-enabled").removeChangeListener(this.onNetworkPersistenceChanged,this)}onMessageAdded(e){const{editor:t}=this.textEditor,i=t.state.field(ui,!1);if(i){const o=this.createMessage(e.data);t.dispatch({effects:ai.of(i.messages.add(o))})}}onMessageRemoved(e){const{editor:t}=this.textEditor,i=t.state.field(ui,!1);if(i){const o=this.createMessage(e.data);t.dispatch({effects:ai.of(i.messages.remove(o))})}}onDecorationChanged(e){for(const t of this.plugins)t.decorationChanged(e.data,this.textEditor)}async toolbarItems(){const e=await super.toolbarItems(),i=[];for(const t of this.plugins)e.push(...t.leftToolbarItems()),i.push(...t.rightToolbarItems());return i.length?(this.openInExternalEditorToolbarButton&&e.push(this.openInExternalEditorToolbarButton),[...e,new t.Toolbar.ToolbarSeparator(!0),...i]):e}getErrorPopoverContent(e){const t=e,i=e.target,o=i.enclosingNodeOrSelfWithClass("cm-messageIcon-error")||i.enclosingNodeOrSelfWithClass("cm-messageIcon-issue");if(!o)return null;const n=this.textEditor.state.field(ui,!1);if(!n||0===n.messages.rows.length)return null;const{editor:r}=this.textEditor,s=r.posAtCoords(t);if(null===s)return null;const a=r.state.doc.lineAt(s);if(s!==a.to)return null;const c=n.messages.rows.find((e=>e[0].lineNumber()===a.number-1));if(!c)return null;const l=o.classList.contains("cm-messageIcon-issue"),d=c.filter((e=>"Issue"===e.level()===l));if(!d.length)return null;const u=o?o.boxInWindow():new AnchorBox(t.clientX,t.clientY,1,1),h=function(e){const t=[];for(let i=0;i(e.contentElement.append(p),!0)}}#C(){if(this.#S)return;this.#S=!0;const e=n.ResourceType.ResourceType.mimeFromURL(this.uiSourceCodeInternal.url()),t=n.ResourceType.ResourceType.mediaTypeForMetrics(e??"",this.uiSourceCodeInternal.contentType().isFromSourceMap(),b.TextUtils.isMinified(this.uiSourceCodeInternal.content()),this.uiSourceCodeInternal.url().startsWith("snippet://"),this.uiSourceCodeInternal.url().startsWith("debugger://"));d.userMetrics.sourcesPanelFileOpened(t)}}function ti(e){return"Error"===e?{color:"var(--icon-error)",width:"16px",height:"14px",iconName:"cross-circle-filled"}:"Warning"===e?{color:"var(--icon-warning)",width:"18px",height:"14px",iconName:"warning-filled"}:"Issue"===e?{color:"var(--icon-warning)",width:"17px",height:"14px",iconName:"issue-exclamation-filled"}:{color:"var(--icon-error)",width:"16px",height:"14px",iconName:"cross-circle-filled"}}function ii(e,t){const i={Issue:2,Warning:3,Error:4};return i[e.level()]-i[t.level()]}const oi=new s.Compartment;class ni{origin;#w;#I;constructor(e,t,i){this.origin=e,this.#w=t,this.#I=i}level(){return this.origin.level()}text(){return this.origin.text()}clickHandler(){return this.origin.clickHandler()}lineNumber(){return this.#w}columnNumber(){return this.#I}isEqual(e){return this.origin.isEqual(e.origin)}}function ri(e,t){const i=t.lineNumber();let o=0;for(;o0)break}return e.splice(o,0,[t]),e}class si{rows;constructor(e){this.rows=e}static create(e){const t=[];for(const i of e)ri(t,i);return new si(t)}remove(e){const t=this.rows.slice();return function(e,t){for(let i=0;i!e.isEqual(t)));o.length?e[i]=o:e.splice(i,1);break}}(t,e),new si(t)}add(e){return new si(ri(this.rows.slice(),e))}}const ai=s.StateEffect.define(),ci=s.Decoration.mark({class:"cm-waveUnderline"});class li extends s.WidgetType{messages;constructor(e){super(),this.messages=e}eq(e){return e.messages===this.messages}toDOM(){const e=document.createElement("span");e.classList.add("cm-messageIcon");const t=this.messages.filter((e=>"Issue"!==e.level()));if(t.length){const i=t.sort(ii)[t.length-1],o=e.appendChild(new a.Icon.Icon);o.data=ti(i.level()),o.classList.add("cm-messageIcon-error")}const i=this.messages.find((e=>"Issue"===e.level()));if(i){const t=e.appendChild(new a.Icon.Icon);t.data=ti("Issue"),t.classList.add("cm-messageIcon-issue"),t.addEventListener("click",(()=>(i.clickHandler()||Math.min)()))}return e}}class di{messages;decorations;constructor(e,t){this.messages=e,this.decorations=t}static create(e,t){const i=new s.RangeSetBuilder;for(const o of e.rows){const e=t.line(Math.min(t.lines,o[0].lineNumber()+1)),n=o.reduce(((e,t)=>Math.min(e,t.columnNumber()||0)),e.length);ndi.create(new si([]),e.doc),update:(e,t)=>e.apply(t),provide:e=>s.Prec.lowest(s.EditorView.decorations.from(e,(e=>e.decorations)))});function hi(e,t){const i=document.createElement("div");if(i.classList.add("text-editor-row-message"),i.style.display="flex",i.style.alignItems="center",i.style.gap="4px",1===t){const t=i.appendChild(new a.Icon.Icon);t.data=function(e){return e.origin instanceof D.SourceFrameIssuesManager.IssueMessage?{...N.IssueCounter.getIssueKindIconData(e.origin.getIssueKind()),width:"12px",height:"12px"}:ti(e.level())}(e),t.classList.add("text-editor-row-message-icon"),t.addEventListener("click",(()=>(e.clickHandler()||Math.min)()))}else{const o=i.createChild("dt-small-bubble","text-editor-row-message-repeat-count");o.textContent=String(t),o.style.flexShrink="0",o.type=function(e){switch(e){case"Error":return"error";case"Warning":case"Issue":return"warning"}}(e.level())}const o=i.createChild("div");for(const t of e.text().split("\n"))o.createChild("div").textContent=t;return i}const pi=s.EditorView.baseTheme({".cm-line::selection":{backgroundColor:"transparent",color:"currentColor"},".cm-tooltip-message":{padding:"4px"},".cm-waveUnderline":{backgroundImage:"var(--image-file-errorWave)",backgroundRepeat:"repeat-x",backgroundPosition:"bottom",paddingBottom:"1px"},".cm-messageIcon":{cursor:"pointer","& > *":{verticalAlign:"text-bottom",marginLeft:"2px"}},".cm-messageIcon-issue, .cm-messageIcon-error":{marginTop:"-1px",marginBottom:"-1px"}});var gi=Object.freeze({__proto__:null,UISourceCodeFrame:ei});const mi={areYouSureYouWantToCloseUnsaved:"Are you sure you want to close unsaved file: {PH1}?",unableToLoadThisContent:"Unable to load this content.",changesToThisFileWereNotSavedTo:"Changes to this file were not saved to file system."},bi=e.i18n.registerUIStrings("panels/sources/TabbedEditorContainer.ts",mi),fi=e.i18n.getLocalizedString.bind(void 0,bi);let vi=0;class Si extends n.ObjectWrapper.ObjectWrapper{delegate;tabbedPane;tabIds;files;previouslyViewedFilesSetting;history;uriToUISourceCode;idToUISourceCode;currentFileInternal;currentView;scrollTimer;reentrantShow;constructor(e,i,o,n){super(),this.delegate=e,this.tabbedPane=new t.TabbedPane.TabbedPane,this.tabbedPane.setPlaceholderElement(o,n),this.tabbedPane.setTabDelegate(new xi(this)),this.tabbedPane.setCloseableTabs(!0),this.tabbedPane.setAllowTabReorder(!0,!0),this.tabbedPane.addEventListener(t.TabbedPane.Events.TabClosed,this.tabClosed,this),this.tabbedPane.addEventListener(t.TabbedPane.Events.TabSelected,this.tabSelected,this),this.tabbedPane.headerElement().setAttribute("jslog",`${l.toolbar("top").track({keydown:"ArrowUp|ArrowLeft|ArrowDown|ArrowRight|Enter|Space"})}`),g.Persistence.PersistenceImpl.instance().addEventListener(g.Persistence.Events.BindingCreated,this.onBindingCreated,this),g.Persistence.PersistenceImpl.instance().addEventListener(g.Persistence.Events.BindingRemoved,this.onBindingRemoved,this),g.NetworkPersistenceManager.NetworkPersistenceManager.instance().addEventListener("RequestsForHeaderOverridesFileChanged",this.#g,this),this.tabIds=new Map,this.files=new Map,this.previouslyViewedFilesSetting=i,this.history=yi.fromObject(this.previouslyViewedFilesSetting.get()),this.uriToUISourceCode=new Map,this.idToUISourceCode=new Map,this.reentrantShow=!1}onBindingCreated(e){const t=e.data;this.updateFileTitle(t.fileSystem);const i=this.tabIds.get(t.network);let o=this.tabIds.get(t.fileSystem);const n=this.currentFileInternal===t.network,r=wi(t.network),s=this.history.selectionRange(r),a=this.history.scrollLineNumber(r);if(this.history.remove(r),i){if(!o){const e=this.tabbedPane.tabView(i),n=this.tabbedPane.tabIndex(i);if(e instanceof ei)this.delegate.recycleUISourceCodeFrame(e,t.fileSystem),o=this.appendFileTab(t.fileSystem,!1,n,e);else{o=this.appendFileTab(t.fileSystem,!1,n);const e=this.tabbedPane.tabView(o);this.restoreEditorProperties(e,s,a)}}this.closeTabs([i],!0),n&&this.tabbedPane.selectTab(o,!1),this.updateHistory()}}#g(e){this.updateFileTitle(e.data)}onBindingRemoved(e){const t=e.data;this.updateFileTitle(t.fileSystem)}get view(){return this.tabbedPane}get visibleView(){return this.tabbedPane.visibleView}fileViews(){return this.tabbedPane.tabViews()}leftToolbar(){return this.tabbedPane.leftToolbar()}rightToolbar(){return this.tabbedPane.rightToolbar()}show(e){this.tabbedPane.show(e)}showFile(e){const i=g.Persistence.PersistenceImpl.instance().binding(e);e=i?i.fileSystem:e;const o=t.Context.Context.instance().flavor(Mi);o?.currentSourceFrame()?.contentSet&&this.currentFileInternal===e&&o?.currentUISourceCode()===e?n.EventTarget.fireEvent("source-file-loaded",e.displayName(!0)):this.innerShowFile(e,!0)}closeFile(e){const t=this.tabIds.get(e);t&&this.closeTabs([t])}closeAllFiles(){this.closeTabs(this.tabbedPane.tabIds())}historyUISourceCodes(){const e=[];for(const{url:t,resourceType:i}of this.history.keys()){const o=this.uriToUISourceCode.get(t);void 0!==o&&o.contentType()===i&&e.push(o)}return e}selectNextTab(){this.tabbedPane.selectNextTab()}selectPrevTab(){this.tabbedPane.selectPrevTab()}addViewListeners(){this.currentView&&this.currentView instanceof o.SourceFrame.SourceFrameImpl&&(this.currentView.addEventListener("EditorUpdate",this.onEditorUpdate,this),this.currentView.addEventListener("EditorScroll",this.onScrollChanged,this))}removeViewListeners(){this.currentView&&this.currentView instanceof o.SourceFrame.SourceFrameImpl&&(this.currentView.removeEventListener("EditorUpdate",this.onEditorUpdate,this),this.currentView.removeEventListener("EditorScroll",this.onScrollChanged,this))}onScrollChanged(){if(this.currentView instanceof o.SourceFrame.SourceFrameImpl&&(this.scrollTimer&&clearTimeout(this.scrollTimer),this.scrollTimer=window.setTimeout((()=>this.previouslyViewedFilesSetting.set(this.history.toObject())),100),this.currentFileInternal)){const{editor:e}=this.currentView.textEditor,t=e.lineBlockAtHeight(e.scrollDOM.getBoundingClientRect().top-e.documentTop),i=e.state.doc.lineAt(t.from).number-1;this.history.updateScrollLineNumber(wi(this.currentFileInternal),i)}}onEditorUpdate({data:e}){if(e.docChanged||e.selectionSet){const{main:t}=e.state.selection,i=e.state.doc.lineAt(t.from),o=e.state.doc.lineAt(t.to),n=new b.TextRange.TextRange(i.number-1,t.from-i.from,o.number-1,t.to-o.from);this.currentFileInternal&&this.history.updateSelectionRange(wi(this.currentFileInternal),n),this.previouslyViewedFilesSetting.set(this.history.toObject()),this.currentFileInternal&&T.ExtensionServer.ExtensionServer.instance().sourceSelectionChanged(this.currentFileInternal.url(),n)}}innerShowFile(e,t){if(this.reentrantShow)return;const o=this.canonicalUISourceCode(e),n=g.Persistence.PersistenceImpl.instance().binding(e);if(e=n?n.fileSystem:e,this.currentFileInternal===e)return;this.removeViewListeners(),this.currentFileInternal=e;try{this.reentrantShow=!0;const e=this.tabIds.get(o)||this.appendFileTab(o,t);this.tabbedPane.selectTab(e,t)}finally{this.reentrantShow=!1}t&&this.editorSelectedByUserAction();const r=this.currentView;this.currentView=this.visibleView,this.addViewListeners(),this.currentView instanceof ei&&this.currentView.uiSourceCode()!==e&&(this.delegate.recycleUISourceCodeFrame(this.currentView,e),e.project().type()!==i.Workspace.projectTypes.FileSystem&&e.disableEdit());const s={currentFile:this.currentFileInternal,currentView:this.currentView,previousView:r,userGesture:t};this.dispatchEventToListeners("EditorSelected",s)}titleForFile(e){let t=u.StringUtilities.trimMiddle(e.displayName(!0),30);return e.isDirty()&&(t+="*"),t}maybeCloseTab(e,t){const i=this.files.get(e);if(!i)return!1;return!(i.isDirty()&&i.project().canSetFileContent()&&!confirm(fi(mi.areYouSureYouWantToCloseUnsaved,{PH1:i.name()})))&&(i.resetWorkingCopy(),t&&this.tabbedPane.selectTab(t,!0),this.tabbedPane.closeTab(e,!0),!0)}closeTabs(e,t){const i=[],o=[];for(let n=0;n{e.loadError()&&this.addLoadErrorIcon(a)})),a}addLoadErrorIcon(e){const i=new a.Icon.Icon;i.data={iconName:"cross-circle-filled",color:"var(--icon-error)",width:"14px",height:"14px"},t.Tooltip.Tooltip.install(i,fi(mi.unableToLoadThisContent)),this.tabbedPane.tabView(e)&&this.tabbedPane.setTrailingTabIcon(e,i)}restoreEditorProperties(e,t,i){const n=e instanceof o.SourceFrame.SourceFrameImpl?e:null;n&&(t&&n.setSelection(t),"number"==typeof i&&n.scrollToLine(i))}tabClosed(e){const{tabId:t,isUserGesture:i}=e.data,o=this.files.get(t);this.currentFileInternal&&this.currentFileInternal.canonicalScriptId()===o?.canonicalScriptId()&&(this.removeViewListeners(),this.currentView=null,this.currentFileInternal=null),o&&this.tabIds.delete(o),this.files.delete(t),o&&(this.removeUISourceCodeListeners(o),this.dispatchEventToListeners("EditorClosed",o),i&&this.editorClosedByUserAction(o))}tabSelected(e){const{tabId:t,isUserGesture:i}=e.data,o=this.files.get(t);o&&this.innerShowFile(o,i)}addUISourceCodeListeners(e){e.addEventListener(i.UISourceCode.Events.TitleChanged,this.uiSourceCodeTitleChanged,this),e.addEventListener(i.UISourceCode.Events.WorkingCopyChanged,this.uiSourceCodeWorkingCopyChanged,this),e.addEventListener(i.UISourceCode.Events.WorkingCopyCommitted,this.uiSourceCodeWorkingCopyCommitted,this)}removeUISourceCodeListeners(e){e.removeEventListener(i.UISourceCode.Events.TitleChanged,this.uiSourceCodeTitleChanged,this),e.removeEventListener(i.UISourceCode.Events.WorkingCopyChanged,this.uiSourceCodeWorkingCopyChanged,this),e.removeEventListener(i.UISourceCode.Events.WorkingCopyCommitted,this.uiSourceCodeWorkingCopyCommitted,this)}updateFileTitle(e){const i=this.tabIds.get(e);if(i){const o=this.titleForFile(e),n=this.tooltipForFile(e);this.tabbedPane.changeTabTitle(i,o,n);let r=null;e.loadError()?(r=new a.Icon.Icon,r.data={iconName:"cross-circle-filled",color:"var(--icon-error)",width:"14px",height:"14px"},t.Tooltip.Tooltip.install(r,fi(mi.unableToLoadThisContent))):g.Persistence.PersistenceImpl.instance().hasUnsavedCommittedChanges(e)?(r=new a.Icon.Icon,r.data={iconName:"warning-filled",color:"var(--icon-warning)",width:"14px",height:"14px"},t.Tooltip.Tooltip.install(r,fi(mi.changesToThisFileWereNotSavedTo))):r=g.PersistenceUtils.PersistenceUtils.iconForUISourceCode(e),this.tabbedPane.setTrailingTabIcon(i,r)}}uiSourceCodeTitleChanged(e){const t=e.data;this.updateFileTitle(t),this.updateHistory();for(const[e,i]of this.uriToUISourceCode)i===t&&e!==i.url()&&this.uriToUISourceCode.delete(e);for(const[e,i]of this.idToUISourceCode)i===t&&e!==i.canonicalScriptId()&&this.idToUISourceCode.delete(e);this.canonicalUISourceCode(t)}uiSourceCodeWorkingCopyChanged(e){const t=e.data;this.updateFileTitle(t)}uiSourceCodeWorkingCopyCommitted(e){const t=e.data.uiSourceCode;this.updateFileTitle(t)}generateTabId(){return"tab-"+vi++}currentFile(){return this.currentFileInternal||null}}const Ci=30;function wi(e){return{url:e.url(),resourceType:e.contentType()}}class Ii{url;resourceType;selectionRange;scrollLineNumber;constructor(e,t,i,o){this.url=e,this.resourceType=t,this.selectionRange=i,this.scrollLineNumber=o}static fromObject(e){const t=n.ResourceType.ResourceType.fromName(e.resourceTypeName);if(null===t)throw new TypeError(`Invalid resource type name "${e.resourceTypeName}"`);const i=e.selectionRange?b.TextRange.TextRange.fromObject(e.selectionRange):void 0;return new Ii(e.url,t,i,e.scrollLineNumber)}toObject(){return this.url.length>=4096?null:{url:this.url,resourceTypeName:this.resourceType.name(),selectionRange:this.selectionRange,scrollLineNumber:this.scrollLineNumber}}}class yi{items;constructor(e){this.items=e}static fromObject(e){const t=[];for(const i of e)try{t.push(Ii.fromObject(i))}catch{}return new yi(t)}index({url:e,resourceType:t}){return this.items.findIndex((i=>i.url===e&&i.resourceType===t))}selectionRange(e){const t=this.index(e);if(-1!==t)return this.items[t].selectionRange}updateSelectionRange(e,t){if(!t)return;const i=this.index(e);-1!==i&&(this.items[i].selectionRange=t)}scrollLineNumber(e){const t=this.index(e);if(-1!==t)return this.items[t].scrollLineNumber}updateScrollLineNumber(e,t){const i=this.index(e);-1!==i&&(this.items[i].scrollLineNumber=t)}update(e){for(let t=e.length-1;t>=0;--t){const i=this.index(e[t]);let o;-1!==i?(o=this.items[i],this.items.splice(i,1)):o=new Ii(e[t].url,e[t].resourceType),this.items.unshift(o)}}remove(e){const t=this.index(e);-1!==t&&this.items.splice(t,1)}toObject(){const e=[];for(const t of this.items){const i=t.toObject();if(i&&e.push(i),e.length===Ci)break}return e}keys(){return this.items}}class xi{editorContainer;constructor(e){this.editorContainer=e}closeTabs(e,t){this.editorContainer.closeTabs(t)}onContextMenu(e,t){this.editorContainer.onContextMenu(e,t)}}var ki=Object.freeze({__proto__:null,EditorContainerTabDelegate:xi,History:yi,HistoryItem:Ii,TabbedEditorContainer:Si});const Ti={openFile:"Open file",runCommand:"Run command",workspaceDropInAFolderToSyncSources:"To sync edits to the workspace, drop a folder with your sources here or",selectFolder:"Select folder",sourceViewActions:"Source View Actions"},Ei=e.i18n.registerUIStrings("panels/sources/SourcesView.ts",Ti),Li=e.i18n.getLocalizedString.bind(void 0,Ei);class Mi extends(n.ObjectWrapper.eventMixin(t.Widget.VBox)){selectedIndex;searchableViewInternal;sourceViewByUISourceCode;editorContainer;historyManager;toolbarContainerElementInternal;scriptViewToolbar;bottomToolbarInternal;toolbarChangedListener;focusedPlaceholderElement;searchView;searchConfig;constructor(){super(),this.registerRequiredCSS(Ft),this.element.id="sources-panel-sources-view",this.element.setAttribute("jslog",`${l.pane("editor").track({keydown:"Escape"})}`),this.setMinimumAndPreferredSizes(88,52,150,100),this.selectedIndex=0;const e=i.Workspace.WorkspaceImpl.instance();this.searchableViewInternal=new t.SearchableView.SearchableView(this,this,"sources-view-search-config"),this.searchableViewInternal.setMinimalSearchQuerySize(0),this.searchableViewInternal.show(this.element),this.sourceViewByUISourceCode=new Map,this.editorContainer=new Si(this,n.Settings.Settings.instance().createLocalSetting("previously-viewed-files",[]),this.placeholderElement(),this.focusedPlaceholderElement),this.editorContainer.show(this.searchableViewInternal.element),this.editorContainer.addEventListener("EditorSelected",this.editorSelected,this),this.editorContainer.addEventListener("EditorClosed",this.editorClosed,this),this.historyManager=new Lt(this),this.toolbarContainerElementInternal=this.element.createChild("div","sources-toolbar"),this.toolbarContainerElementInternal.setAttribute("jslog",`${l.toolbar("bottom")}`),this.scriptViewToolbar=this.toolbarContainerElementInternal.createChild("devtools-toolbar"),this.scriptViewToolbar.style.flex="auto",this.bottomToolbarInternal=this.toolbarContainerElementInternal.createChild("devtools-toolbar"),this.toolbarChangedListener=null,t.UIUtils.startBatchUpdate(),e.uiSourceCodes().forEach(this.addUISourceCode.bind(this)),t.UIUtils.endBatchUpdate(),e.addEventListener(i.Workspace.Events.UISourceCodeAdded,this.uiSourceCodeAdded,this),e.addEventListener(i.Workspace.Events.UISourceCodeRemoved,this.uiSourceCodeRemoved,this),e.addEventListener(i.Workspace.Events.ProjectRemoved,this.projectRemoved.bind(this),this),r.TargetManager.TargetManager.instance().addScopeChangeListener(this.#y.bind(this)),window.opener||window.addEventListener("beforeunload",(function(e){if(e.returnValue)return;const o=[],r=i.Workspace.WorkspaceImpl.instance().projectsForType(i.Workspace.projectTypes.FileSystem);for(const e of r)for(const t of e.uiSourceCodes())t.isDirty()&&o.push(t);if(o.length){e.returnValue=!0,t.ViewManager.ViewManager.instance().showView("sources");for(const e of o)n.Revealer.reveal(e)}}),!0)}placeholderElement(){const e=document.createElement("div");if(e.classList.add("sources-placeholder"),k.Runtime.Runtime.isDescriptorEnabled({experiment:void 0,condition:k.Runtime.conditions.notSourcesHideAddFolder})){const t=e.createChild("div","tabbed-pane-placeholder-row");t.classList.add("workspace");const i=a.Icon.create("sync","sync-icon");t.createChild("span","icon-container").appendChild(i);const o=t.createChild("span");o.textContent=Ti.workspaceDropInAFolderToSyncSources;const n=o.createChild("button");n.textContent=Li(Ti.selectFolder),n.addEventListener("click",this.addFileSystemClicked.bind(this))}const i=[{actionId:"quick-open.show",description:Li(Ti.openFile)},{actionId:"quick-open.show-command-menu",description:Li(Ti.runCommand)}],o=e.createChild("div","shortcuts-list");o.classList.add("tabbed-pane-placeholder-row"),t.ARIAUtils.markAsList(o),t.ARIAUtils.setLabel(o,Li(Ti.sourceViewActions));for(const e of i){const i=t.ShortcutRegistry.ShortcutRegistry.instance().shortcutsForAction(e.actionId),n=o.createChild("div");if(n.classList.add("shortcut-line"),t.ARIAUtils.markAsListitem(n),i?.[0]){const o=n.createChild("button");o.textContent=e.description;const r=t.ActionRegistry.ActionRegistry.instance().getAction(e.actionId);o.addEventListener("click",(()=>r.execute()));const s=n.createChild("span","shortcuts"),a=d.Platform.isMac()?" ":" + ";i[0].descriptors.flatMap((e=>e.name.split(a))).forEach((e=>{s.createChild("span","keybinds-key").createChild("span").textContent=e}))}}return e}async addFileSystemClicked(){await g.IsolatedFileSystemManager.IsolatedFileSystemManager.instance().addFileSystem()&&(d.userMetrics.actionTaken(d.UserMetrics.Action.WorkspaceSelectFolder),t.ViewManager.ViewManager.instance().showView("navigator-files"))}static defaultUISourceCodeScores(){const e=new Map,i=t.Context.Context.instance().flavor(Mi);if(i){const t=i.editorContainer.historyUISourceCodes();for(let i=1;i{this.scriptViewToolbar.removeToolbarItems();for(const e of Di())this.scriptViewToolbar.appendToolbarItem(e.getOrCreateButton(this));e.map((e=>this.scriptViewToolbar.appendToolbarItem(e)))}))}showSourceLocation(e,t,i,o){const n=this.currentSourceFrame();n&&this.historyManager.updateCurrentState(n.uiSourceCode(),n.textEditor.state.selection.main.head),this.editorContainer.showFile(e);const r=this.currentSourceFrame();r&&t&&r.revealPosition(t,!o);const s=this.visibleView();!i&&s&&s.focus()}createSourceView(e){let t;const r=e.contentType();return r===n.ResourceType.resourceTypes.Image||e.mimeType().startsWith("image/")?t=new o.ImageView.ImageView(e.mimeType(),e):r===n.ResourceType.resourceTypes.Font||e.mimeType().includes("font")?t=new o.FontView.FontView(e.mimeType(),e):e.name()===Ni?t=new x.HeadersView.HeadersView(e):(t=new ei(e),this.historyManager.trackSourceFrameCursorJumps(t)),e.addEventListener(i.UISourceCode.Events.TitleChanged,this.#x,this),this.sourceViewByUISourceCode.set(e,t),t}#k(e){return e instanceof o.ImageView.ImageView?"ImageView":e instanceof o.FontView.FontView?"FontView":e instanceof x.HeadersView.HeadersView?"HeadersView":"SourceView"}#T(e){if(e.name()===Ni)return"HeadersView";switch(e.contentType()){case n.ResourceType.resourceTypes.Image:return"ImageView";case n.ResourceType.resourceTypes.Font:return"FontView";default:return"SourceView"}}#x(e){const t=e.data,i=this.sourceViewByUISourceCode.get(t);i&&this.#k(i)!==this.#T(t)&&(this.removeUISourceCodes([t]),this.showSourceLocation(t))}getSourceView(e){return this.sourceViewByUISourceCode.get(e)}getOrCreateSourceView(e){return this.sourceViewByUISourceCode.get(e)||this.createSourceView(e)}recycleUISourceCodeFrame(e,t){e.uiSourceCode().removeEventListener(i.UISourceCode.Events.TitleChanged,this.#x,this),this.sourceViewByUISourceCode.delete(e.uiSourceCode()),e.setUISourceCode(t),this.sourceViewByUISourceCode.set(t,e),t.addEventListener(i.UISourceCode.Events.TitleChanged,this.#x,this)}viewForFile(e){return this.getOrCreateSourceView(e)}removeSourceFrame(e){const t=this.sourceViewByUISourceCode.get(e);this.sourceViewByUISourceCode.delete(e),t&&t instanceof ei&&t.dispose(),e.removeEventListener(i.UISourceCode.Events.TitleChanged,this.#x,this)}editorClosed(e){const t=e.data;this.historyManager.removeHistoryForSourceCode(t);let i=!1;this.editorContainer.currentFile()||(i=!0),this.removeToolbarChangedListener(),this.updateScriptViewToolbarItems(),this.searchableViewInternal.resetSearch();const o={uiSourceCode:t,wasSelected:i};this.dispatchEventToListeners("EditorClosed",o)}editorSelected(e){const t=e.data.previousView instanceof ei?e.data.previousView:null;t&&t.setSearchableView(null);const i=e.data.currentView instanceof ei?e.data.currentView:null;i&&i.setSearchableView(this.searchableViewInternal),this.searchableViewInternal.setReplaceable(Boolean(i?.canEditSource())),this.searchableViewInternal.refreshSearch(),this.updateToolbarChangedListener(),this.updateScriptViewToolbarItems();const o=this.editorContainer.currentFile();o&&this.dispatchEventToListeners("EditorSelected",o)}removeToolbarChangedListener(){this.toolbarChangedListener&&n.EventTarget.removeEventListeners([this.toolbarChangedListener]),this.toolbarChangedListener=null}updateToolbarChangedListener(){this.removeToolbarChangedListener();const e=this.currentSourceFrame();e&&(this.toolbarChangedListener=e.addEventListener("ToolbarItemsChanged",this.updateScriptViewToolbarItems,this))}onSearchCanceled(){this.searchView&&this.searchView.onSearchCanceled(),delete this.searchView,delete this.searchConfig}performSearch(e,t,i){const o=this.currentSourceFrame();o&&(this.searchView=o,this.searchConfig=e,this.searchView.performSearch(this.searchConfig,t,i))}jumpToNextSearchResult(){this.searchView&&(this.searchConfig&&this.searchView!==this.currentSourceFrame()?this.performSearch(this.searchConfig,!0):this.searchView.jumpToNextSearchResult())}jumpToPreviousSearchResult(){if(this.searchView)return this.searchConfig&&this.searchView!==this.currentSourceFrame()?(this.performSearch(this.searchConfig,!0),void(this.searchView&&this.searchView.jumpToLastSearchResult())):void this.searchView.jumpToPreviousSearchResult()}supportsCaseSensitiveSearch(){return!0}supportsRegexSearch(){return!0}replaceSelectionWith(e,t){const i=this.currentSourceFrame();i?i.replaceSelectionWith(e,t):console.assert(Boolean(i))}replaceAllWith(e,t){const i=this.currentSourceFrame();i?i.replaceAllWith(e,t):console.assert(Boolean(i))}showOutlineQuickOpen(){F.QuickOpen.QuickOpenImpl.show("@")}showGoToLineQuickOpen(){this.editorContainer.currentFile()&&F.QuickOpen.QuickOpenImpl.show(":")}save(){this.saveSourceFrame(this.currentSourceFrame())}saveAll(){this.editorContainer.fileViews().forEach(this.saveSourceFrame.bind(this))}saveSourceFrame(e){if(!(e instanceof ei))return;e.commitEditing()}toggleBreakpointsActiveState(e){this.editorContainer.view.element.classList.toggle("breakpoints-deactivated",!e)}}const Pi=[];function Fi(e){Pi.push(e)}function Di(){return Pi.map((e=>e()))}class Ai{static nextFile(e){function t(e){const t=e.lastIndexOf(".");return e.substr(0,-1!==t?t:e.length).toLowerCase()}const i=[],o=e.parentURL(),r=e.name(),s=t(r);for(const n of e.project().uiSourceCodes())o===n.parentURL()&&t(n.name())===s&&i.push(n.name());i.sort(u.StringUtilities.naturalOrderComparator);const a=u.NumberUtilities.mod(i.indexOf(r)+1,i.length),c=n.ParsedURL.ParsedURL.concatenate(o?n.ParsedURL.ParsedURL.concatenate(o,"/"):"",i[a]),l=e.project().uiSourceCodeForURL(c);return l!==e?l:null}handleAction(e,t){const i=e.flavor(Mi);if(!i)return!1;const o=i.currentUISourceCode();if(!o)return!1;const n=Ai.nextFile(o);return!!n&&(i.showSourceLocation(n),!0)}}const Ni=".headers";var Ui=Object.freeze({__proto__:null,ActionDelegate:class{handleAction(e,t){const i=e.flavor(Mi);if(!i)return!1;switch(t){case"sources.close-all":return i.editorContainer.closeAllFiles(),!0;case"sources.jump-to-previous-location":return i.onJumpToPreviousLocation(),!0;case"sources.jump-to-next-location":return i.onJumpToNextLocation(),!0;case"sources.next-editor-tab":return i.editorContainer.selectNextTab(),!0;case"sources.previous-editor-tab":return i.editorContainer.selectPrevTab(),!0;case"sources.close-editor-tab":return i.onCloseEditorTab();case"sources.go-to-line":return i.showGoToLineQuickOpen(),!0;case"sources.go-to-member":return i.showOutlineQuickOpen(),!0;case"sources.save":return i.save(),!0;case"sources.save-all":return i.saveAll(),!0}return!1}},SourcesView:Mi,SwitchFileActionDelegate:Ai,getRegisteredEditorActions:Di,registerEditorAction:Fi}),Bi={cssText:`.thread-item{padding:3px 8px 3px 20px;position:relative;min-height:18px;line-height:15px;display:flex;flex-wrap:wrap}.thread-item + .thread-item{border-top:1px solid var(--sys-color-divider)}.thread-item:hover{background-color:var(--sys-color-state-hover-on-subtle)}.thread-item:focus-visible{background-color:var(--sys-color-tonal-container)}.thread-item-title,\n.thread-item-paused-state{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.thread-item-paused-state{color:var(--sys-color-state-disabled);margin-left:auto;padding:0 10px}.selected-thread-icon{display:none;position:absolute;top:3px;left:4px}.thread-item.selected .selected-thread-icon{display:block}@media (forced-colors: active){.thread-item:hover,\n .thread-item:focus-visible{forced-color-adjust:none;background-color:Highlight}.thread-item:hover > div,\n .thread-item:focus-visible > div{color:HighlightText}}\n/*# sourceURL=${import.meta.resolve("./threadsSidebarPane.css")} */\n`};const Ri={paused:"paused"},ji=e.i18n.registerUIStrings("panels/sources/ThreadsSidebarPane.ts",Ri),Wi=e.i18n.getLocalizedString.bind(void 0,ji);class Vi extends t.Widget.VBox{items;list;selectedModel;constructor(){super(!0),this.registerRequiredCSS(Bi),this.contentElement.setAttribute("jslog",`${l.section("sources.threads")}`),this.items=new t.ListModel.ListModel,this.list=new t.ListControl.ListControl(this.items,this,t.ListControl.ListMode.NonViewport);const e=t.Context.Context.instance().flavor(r.Target.Target);this.selectedModel=null!==e?e.model(r.DebuggerModel.DebuggerModel):null,this.contentElement.appendChild(this.list.element),t.Context.Context.instance().addFlavorChangeListener(r.Target.Target,this.targetFlavorChanged,this),r.TargetManager.TargetManager.instance().observeModels(r.DebuggerModel.DebuggerModel,this)}static shouldBeShown(){return r.TargetManager.TargetManager.instance().models(r.DebuggerModel.DebuggerModel).length>=2}createElementForItem(e){const i=document.createElement("div");i.classList.add("thread-item");const o=i.createChild("div","thread-item-title"),n=i.createChild("div","thread-item-paused-state"),s=new a.Icon.Icon;s.data={iconName:"large-arrow-right-filled",color:"var(--icon-arrow-main-thread)",width:"14px",height:"14px"},s.classList.add("selected-thread-icon"),i.appendChild(s),i.tabIndex=-1,self.onInvokeElement(i,(i=>{t.Context.Context.instance().setFlavor(r.Target.Target,e.target()),i.consume(!0)}));const c=t.Context.Context.instance().flavor(r.Target.Target)===e.target();function l(){const t=e.runtimeModel().defaultExecutionContext();o.textContent=t?.label()?t.label():e.target().name()}function d(){n.textContent=e.isPaused()?Wi(Ri.paused):""}return i.classList.toggle("selected",c),t.ARIAUtils.setSelected(i,c),e.addEventListener(r.DebuggerModel.Events.DebuggerPaused,d),e.addEventListener(r.DebuggerModel.Events.DebuggerResumed,d),e.runtimeModel().addEventListener(r.RuntimeModel.Events.ExecutionContextChanged,l),r.TargetManager.TargetManager.instance().addEventListener("NameChanged",(function(t){t.data===e.target()&&l()})),d(),l(),i}heightForItem(e){return console.assert(!1),0}isItemSelectable(e){return!0}selectedItemChanged(e,t,i,o){i&&(i.tabIndex=-1);const n=o;n&&(this.setDefaultFocusedElement(n),n.tabIndex=0,this.hasFocus()&&n.focus())}updateSelectedItemARIA(e,t){return!1}modelAdded(e){this.items.insert(this.items.length,e);t.Context.Context.instance().flavor(r.Target.Target)===e.target()&&this.list.selectItem(e)}modelRemoved(e){this.items.remove(this.items.indexOf(e))}targetFlavorChanged({data:e}){const t=this.hasFocus(),i=e.model(r.DebuggerModel.DebuggerModel);this.list.selectItem(i),i&&this.list.refreshItem(i),null!==this.selectedModel&&this.list.refreshItem(this.selectedModel),this.selectedModel=i,t&&this.focus()}}var Oi=Object.freeze({__proto__:null,ThreadsSidebarPane:Vi});const Hi={dropWorkspaceFolderHere:"Drop workspace folder here",moreOptions:"More options",showNavigator:"Show navigator",hideNavigator:"Hide navigator",navigatorShown:"Navigator sidebar shown",navigatorHidden:"Navigator sidebar hidden",debuggerShown:"Debugger sidebar shown",debuggerHidden:"Debugger sidebar hidden",showDebugger:"Show debugger",hideDebugger:"Hide debugger",groupByFolder:"Group by folder",groupByAuthored:"Group by Authored/Deployed",hideIgnoreListed:"Hide ignore-listed sources",resumeWithAllPausesBlockedForMs:"Resume with all pauses blocked for 500 ms",terminateCurrentJavascriptCall:"Terminate current JavaScript call",pauseOnCaughtExceptions:"Pause on caught exceptions",revealInSidebar:"Reveal in navigator sidebar",continueToHere:"Continue to here",storeAsGlobalVariable:"Store as global variable",copyS:"Copy {PH1}",copyStringContents:"Copy string contents",copyStringAsJSLiteral:"Copy string as JavaScript literal",copyStringAsJSONLiteral:"Copy string as JSON literal",showFunctionDefinition:"Show function definition",openInSourcesPanel:"Open in Sources panel"},_i=e.i18n.registerUIStrings("panels/sources/SourcesPanel.ts",Hi),zi=e.i18n.getLocalizedString.bind(void 0,_i),qi=new Set(["number","boolean","bigint","undefined"]);let $i;class Gi extends t.Panel.Panel{workspace;togglePauseAction;stepOverAction;stepIntoAction;stepOutAction;stepAction;toggleBreakpointsActiveAction;debugToolbar;debugToolbarDrawer;debuggerPausedMessage;overlayLoggables;splitWidget;editorView;navigatorTabbedLocation;sourcesViewInternal;toggleNavigatorSidebarButton;toggleDebuggerSidebarButton;threadsSidebarPane;watchSidebarPane;callstackPane;liveLocationPool;lastModificationTime;pausedInternal;switchToPausedTargetTimeout;ignoreExecutionLineEvents;executionLineLocation;pauseOnExceptionButton;sidebarPaneStack;tabbedLocationHeader;extensionSidebarPanesContainer;sidebarPaneView;#E=null;constructor(){super("sources"),this.registerRequiredCSS(Et),k.Runtime.Runtime.isDescriptorEnabled({experiment:void 0,condition:k.Runtime.conditions.notSourcesHideAddFolder})&&new t.DropTarget.DropTarget(this.element,[t.DropTarget.Type.Folder],zi(Hi.dropWorkspaceFolderHere),this.handleDrop.bind(this)),this.workspace=i.Workspace.WorkspaceImpl.instance(),this.togglePauseAction=t.ActionRegistry.ActionRegistry.instance().getAction("debugger.toggle-pause"),this.stepOverAction=t.ActionRegistry.ActionRegistry.instance().getAction("debugger.step-over"),this.stepIntoAction=t.ActionRegistry.ActionRegistry.instance().getAction("debugger.step-into"),this.stepOutAction=t.ActionRegistry.ActionRegistry.instance().getAction("debugger.step-out"),this.stepAction=t.ActionRegistry.ActionRegistry.instance().getAction("debugger.step"),this.toggleBreakpointsActiveAction=t.ActionRegistry.ActionRegistry.instance().getAction("debugger.toggle-breakpoints-active"),this.debugToolbar=this.createDebugToolbar(),this.debugToolbarDrawer=this.createDebugToolbarDrawer(),this.debuggerPausedMessage=new tt;this.splitWidget=new t.SplitWidget.SplitWidget(!0,!0,"sources-panel-split-view-state",225),this.splitWidget.enableShowModeSaving(),this.splitWidget.show(this.element);this.editorView=new t.SplitWidget.SplitWidget(!0,!1,"sources-panel-navigator-split-view-state",225),this.editorView.enableShowModeSaving(),this.splitWidget.setMainWidget(this.editorView),this.navigatorTabbedLocation=t.ViewManager.ViewManager.instance().createTabbedLocation(this.revealNavigatorSidebar.bind(this),"navigator-view",!0,!0);const e=this.navigatorTabbedLocation.tabbedPane();e.setMinimumSize(100,25),e.element.classList.add("navigator-tabbed-pane"),e.headerElement().setAttribute("jslog",`${l.toolbar("navigator").track({keydown:"ArrowUp|ArrowLeft|ArrowDown|ArrowRight|Enter|Space"})}`);const o=new t.Toolbar.ToolbarMenuButton(this.populateNavigatorMenu.bind(this),!0,!0,"more-options","dots-vertical");if(o.setTitle(zi(Hi.moreOptions)),e.rightToolbar().appendToolbarItem(o),t.ViewManager.ViewManager.instance().hasViewsForLocation("run-view-sidebar")){const i=new t.SplitWidget.SplitWidget(!1,!0,"source-panel-navigator-sidebar-split-view-state");i.setMainWidget(e);const o=t.ViewManager.ViewManager.instance().createTabbedLocation(this.revealNavigatorSidebar.bind(this),"run-view-sidebar").tabbedPane();i.setSidebarWidget(o),i.installResizer(o.headerElement()),this.editorView.setSidebarWidget(i)}else this.editorView.setSidebarWidget(e);this.sourcesViewInternal=new Mi,this.sourcesViewInternal.addEventListener("EditorSelected",this.editorSelected.bind(this)),this.toggleNavigatorSidebarButton=this.editorView.createShowHideSidebarButton(zi(Hi.showNavigator),zi(Hi.hideNavigator),zi(Hi.navigatorShown),zi(Hi.navigatorHidden),"navigator"),this.toggleDebuggerSidebarButton=this.splitWidget.createShowHideSidebarButton(zi(Hi.showDebugger),zi(Hi.hideDebugger),zi(Hi.debuggerShown),zi(Hi.debuggerHidden),"debugger"),this.editorView.setMainWidget(this.sourcesViewInternal),this.threadsSidebarPane=null,this.watchSidebarPane=t.ViewManager.ViewManager.instance().view("sources.watch"),this.callstackPane=ae.instance(),n.Settings.Settings.instance().moduleSetting("sidebar-position").addChangeListener(this.updateSidebarPosition.bind(this)),this.updateSidebarPosition(),this.updateDebuggerButtonsAndStatus(),this.liveLocationPool=new p.LiveLocation.LiveLocationPool,this.setTarget(t.Context.Context.instance().flavor(r.Target.Target)),n.Settings.Settings.instance().moduleSetting("breakpoints-active").addChangeListener(this.breakpointsActiveStateChanged,this),t.Context.Context.instance().addFlavorChangeListener(r.Target.Target,this.onCurrentTargetChanged,this),t.Context.Context.instance().addFlavorChangeListener(r.DebuggerModel.CallFrame,this.callFrameChanged,this),r.TargetManager.TargetManager.instance().addModelListener(r.DebuggerModel.DebuggerModel,r.DebuggerModel.Events.DebuggerWasEnabled,this.debuggerWasEnabled,this),r.TargetManager.TargetManager.instance().addModelListener(r.DebuggerModel.DebuggerModel,r.DebuggerModel.Events.DebuggerPaused,this.debuggerPaused,this),r.TargetManager.TargetManager.instance().addModelListener(r.DebuggerModel.DebuggerModel,r.DebuggerModel.Events.DebugInfoAttached,this.debugInfoAttached,this),r.TargetManager.TargetManager.instance().addModelListener(r.DebuggerModel.DebuggerModel,r.DebuggerModel.Events.DebuggerResumed,(e=>this.debuggerResumed(e.data))),r.TargetManager.TargetManager.instance().addModelListener(r.DebuggerModel.DebuggerModel,r.DebuggerModel.Events.GlobalObjectCleared,(e=>this.debuggerResumed(e.data))),T.ExtensionServer.ExtensionServer.instance().addEventListener("SidebarPaneAdded",this.extensionSidebarPaneAdded,this),r.TargetManager.TargetManager.instance().observeTargets(this),this.lastModificationTime=-1/0}static instance(e={forceNew:null}){const{forceNew:t}=e;return $i&&!t||($i=new Gi),$i}static updateResizerAndSidebarButtons(e){e.sourcesViewInternal.leftToolbar().removeToolbarItems(),e.sourcesViewInternal.rightToolbar().removeToolbarItems(),e.sourcesViewInternal.bottomToolbar().removeToolbarItems();const i=t.Context.Context.instance().flavor(Xi)&&!t.InspectorView.InspectorView.instance().isDrawerMinimized();e.splitWidget.isVertical()||i?e.splitWidget.uninstallResizer(e.sourcesViewInternal.toolbarContainerElement()):e.splitWidget.installResizer(e.sourcesViewInternal.toolbarContainerElement()),i||(e.sourcesViewInternal.leftToolbar().appendToolbarItem(e.toggleNavigatorSidebarButton),e.splitWidget.isVertical()?e.sourcesViewInternal.rightToolbar().appendToolbarItem(e.toggleDebuggerSidebarButton):e.sourcesViewInternal.bottomToolbar().appendToolbarItem(e.toggleDebuggerSidebarButton))}targetAdded(e){this.showThreadsIfNeeded()}targetRemoved(e){}showThreadsIfNeeded(){Vi.shouldBeShown()&&!this.threadsSidebarPane&&(this.threadsSidebarPane=t.ViewManager.ViewManager.instance().view("sources.threads"),this.sidebarPaneStack&&this.threadsSidebarPane&&this.sidebarPaneStack.appendView(this.threadsSidebarPane,this.splitWidget.isVertical()?this.watchSidebarPane:this.callstackPane))}setTarget(e){if(!e)return;const t=e.model(r.DebuggerModel.DebuggerModel);t&&(t.isPaused()?this.showDebuggerPausedDetails(t.debuggerPausedDetails()):(this.pausedInternal=!1,this.clearInterface(),this.toggleDebuggerSidebarButton.setEnabled(!0)))}onCurrentTargetChanged({data:e}){this.setTarget(e)}paused(){return this.pausedInternal||!1}wasShown(){t.Context.Context.instance().setFlavor(Gi,this),super.wasShown(),t.Context.Context.instance().flavor(Xi)&&(t.InspectorView.InspectorView.instance().setDrawerMinimized(!0),Gi.updateResizerAndSidebarButtons(this)),this.editorView.setMainWidget(this.sourcesViewInternal)}willHide(){super.willHide(),t.Context.Context.instance().setFlavor(Gi,null);const e=t.Context.Context.instance().flavor(Xi);e&&(e.showViewInWrapper(),t.InspectorView.InspectorView.instance().setDrawerMinimized(!1),Gi.updateResizerAndSidebarButtons(this))}resolveLocation(e){return"sources.sidebar-top"===e||"sources.sidebar-bottom"===e||"sources.sidebar-tabs"===e?this.sidebarPaneStack||null:this.navigatorTabbedLocation}ensureSourcesViewVisible(){return!!t.Context.Context.instance().flavor(Xi)||!!t.InspectorView.InspectorView.instance().canSelectPanel("sources")&&(t.ViewManager.ViewManager.instance().showView("sources"),!0)}onResize(){"auto"===n.Settings.Settings.instance().moduleSetting("sidebar-position").get()&&this.element.window().requestAnimationFrame(this.updateSidebarPosition.bind(this))}searchableView(){return this.sourcesViewInternal.searchableView()}toggleNavigatorSidebar(){this.editorView.toggleSidebar()}toggleDebuggerSidebar(){this.splitWidget.toggleSidebar()}debuggerPaused(e){const i=e.data,o=i.debuggerPausedDetails();!this.pausedInternal&&n.Settings.Settings.instance().moduleSetting("auto-focus-on-debugger-paused-enabled").get()&&this.setAsCurrentPanel(),t.Context.Context.instance().flavor(r.Target.Target)===i.target()?this.showDebuggerPausedDetails(o):this.pausedInternal||t.Context.Context.instance().setFlavor(r.Target.Target,i.target())}debugInfoAttached(e){const{debuggerModel:i}=e.data;if(!i.isPaused())return;const o=i.debuggerPausedDetails();o&&t.Context.Context.instance().flavor(r.Target.Target)===i.target()&&this.showDebuggerPausedDetails(o)}showDebuggerPausedDetails(e){this.pausedInternal=!0,this.updateDebuggerButtonsAndStatus(),t.Context.Context.instance().setFlavor(r.DebuggerModel.DebuggerPausedDetails,e),this.toggleDebuggerSidebarButton.setEnabled(!1),this.revealDebuggerSidebar();const i=e.debuggerModel.target();this.threadsSidebarPane&&this.#E?.deref()!==i&&i!==r.TargetManager.TargetManager.instance().primaryPageTarget()&&this.sidebarPaneStack?.showView(this.threadsSidebarPane),window.focus(),d.InspectorFrontendHost.InspectorFrontendHostInstance.bringToFront();t.Context.Context.instance().flavor(r.Target.Target)?.model(r.OverlayModel.OverlayModel)&&!n.Settings.Settings.instance().moduleSetting("disable-paused-state-overlay").get()&&!this.overlayLoggables&&(this.overlayLoggables={debuggerPausedMessage:{},resumeButton:{},stepOverButton:{}},l.registerLoggable(this.overlayLoggables.debuggerPausedMessage,`${l.dialog("debugger-paused")}`,null),l.registerLoggable(this.overlayLoggables.resumeButton,`${l.action("debugger.toggle-pause")}`,this.overlayLoggables.debuggerPausedMessage),l.registerLoggable(this.overlayLoggables.stepOverButton,`${l.action("debugger.step-over")}`,this.overlayLoggables.debuggerPausedMessage)),this.#E=new WeakRef(e.debuggerModel.target())}maybeLogOverlayAction(){if(!this.overlayLoggables)return;const e=!document.hasFocus();window.setTimeout((()=>{if(this.overlayLoggables){if(e){const e=t.Context.Context.instance().flavor(r.DebuggerModel.DebuggerPausedDetails);l.logClick(this.pausedInternal&&"step"===e?.reason?this.overlayLoggables.stepOverButton:this.overlayLoggables.resumeButton,new MouseEvent("click"))}this.pausedInternal||(l.logResize(this.overlayLoggables.debuggerPausedMessage,new DOMRect(0,0,0,0)),this.overlayLoggables=void 0)}}),500)}debuggerResumed(e){this.maybeLogOverlayAction();const i=e.target();t.Context.Context.instance().flavor(r.Target.Target)===i&&(this.pausedInternal=!1,this.clearInterface(),this.toggleDebuggerSidebarButton.setEnabled(!0),this.switchToPausedTargetTimeout=window.setTimeout(this.switchToPausedTarget.bind(this,e),500))}debuggerWasEnabled(e){const i=e.data;t.Context.Context.instance().flavor(r.Target.Target)===i.target()&&this.updateDebuggerButtonsAndStatus()}get visibleView(){return this.sourcesViewInternal.visibleView()}showUISourceCode(e,i,o){if(o){if(!this.isShowing()&&!t.Context.Context.instance().flavor(Xi))return}else this.showEditor();this.sourcesViewInternal.showSourceLocation(e,i,o)}showEditor(){t.Context.Context.instance().flavor(Xi)||this.setAsCurrentPanel()}showUILocation(e,t){const{uiSourceCode:i,lineNumber:o,columnNumber:n}=e;this.showUISourceCode(i,{lineNumber:o,columnNumber:n},t)}async revealInNavigator(e,i){const o=t.ViewManager.ViewManager.instance();for(const t of o.viewsForLocation("navigator-view")){const o=await t.widget();if(o instanceof ft&&o.acceptProject(e.project())){o.revealUISourceCode(e,!0),this.navigatorTabbedLocation.tabbedPane().selectTab(t.viewId(),!0),i||(this.editorView.showBoth(!0),o.focus());break}}}addExperimentMenuItem(e,t,i){e.appendCheckboxItem(i,(function(){const e=k.Runtime.experiments.isEnabled(t);k.Runtime.experiments.setEnabled(t,!e),d.userMetrics.experimentChanged(t,e);const i=n.Settings.Settings.instance().moduleSetting("navigator-group-by-folder");i.set(i.get())}),{checked:k.Runtime.experiments.isEnabled(t),additionalElement:a.Icon.create("experiment"),jslogContext:u.StringUtilities.toKebabCase(t)})}populateNavigatorMenu(e){const t=n.Settings.Settings.instance().moduleSetting("navigator-group-by-folder");e.appendItemsAtLocation("navigatorMenu"),e.viewSection().appendCheckboxItem(zi(Hi.groupByFolder),(()=>t.set(!t.get())),{checked:t.get(),jslogContext:t.name}),this.addExperimentMenuItem(e.viewSection(),"authored-deployed-grouping",zi(Hi.groupByAuthored)),this.addExperimentMenuItem(e.viewSection(),"just-my-code",zi(Hi.hideIgnoreListed))}updateLastModificationTime(){this.lastModificationTime=window.performance.now()}async executionLineChanged(e){const t=await e.uiLocation();e.isDisposed()||t&&(window.performance.now()-this.lastModificationTimee.debuggerModel===i.debuggerModel));o&&this.prepareToResume()&&o.continueToLocation()}toggleBreakpointsActive(){n.Settings.Settings.instance().moduleSetting("breakpoints-active").set(!n.Settings.Settings.instance().moduleSetting("breakpoints-active").get())}breakpointsActiveStateChanged(){const e=n.Settings.Settings.instance().moduleSetting("breakpoints-active").get();this.toggleBreakpointsActiveAction.setToggled(!e),this.sourcesViewInternal.toggleBreakpointsActiveState(e)}createDebugToolbar(){const e=document.createElement("devtools-toolbar");e.classList.add("scripts-debug-toolbar"),e.setAttribute("jslog",`${l.toolbar("debug").track({keydown:"ArrowUp|ArrowLeft|ArrowDown|ArrowRight|Enter|Space"})}`);const i=new t.Toolbar.ToolbarButton(zi(Hi.resumeWithAllPausesBlockedForMs),"play");i.addEventListener("Click",this.longResume,this);const o=new t.Toolbar.ToolbarButton(zi(Hi.terminateCurrentJavascriptCall),"stop");o.addEventListener("Click",this.terminateExecution,this);const n=t.Toolbar.Toolbar.createLongPressActionButton(this.togglePauseAction,[o,i],[]);return n.toggleOnClick(!1),e.appendToolbarItem(n),e.appendToolbarItem(t.Toolbar.Toolbar.createActionButton(this.stepOverAction)),e.appendToolbarItem(t.Toolbar.Toolbar.createActionButton(this.stepIntoAction)),e.appendToolbarItem(t.Toolbar.Toolbar.createActionButton(this.stepOutAction)),e.appendToolbarItem(t.Toolbar.Toolbar.createActionButton(this.stepAction)),e.appendSeparator(),e.appendToolbarItem(t.Toolbar.Toolbar.createActionButton(this.toggleBreakpointsActiveAction)),e}createDebugToolbarDrawer(){const e=document.createElement("div");e.classList.add("scripts-debug-toolbar-drawer");const i=zi(Hi.pauseOnCaughtExceptions),o=n.Settings.Settings.instance().moduleSetting("pause-on-caught-exception");return e.appendChild(t.SettingsUI.createSettingCheckbox(i,o)),e}appendApplicableItems(e,t,o){o instanceof i.UISourceCode.UISourceCode?this.appendUISourceCodeItems(e,t,o):o instanceof ei?this.appendUISourceCodeFrameItems(t,o):o instanceof i.UISourceCode.UILocation?this.appendUILocationItems(t,o):o instanceof r.RemoteObject.RemoteObject?this.appendRemoteObjectItems(t,o):this.appendNetworkRequestItems(t,o)}appendUISourceCodeItems(e,o,n){if(!e.target)return;const r=e.target;if(n.project().isServiceProject()||r.isSelfOrDescendant(this.navigatorTabbedLocation.widget().element)||k.Runtime.experiments.isEnabled("just-my-code")&&p.IgnoreListManager.IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(n)||o.revealSection().appendItem(zi(Hi.revealInSidebar),this.revealInNavigator.bind(this,n),{jslogContext:"sources.reveal-in-navigator-sidebar"}),t.ActionRegistry.ActionRegistry.instance().hasAction("drjones.sources-panel-context")){const e=this.element.querySelector("devtools-text-editor");!r.isSelfOrDescendant(e)&&n.contentType().isTextType()&&(t.Context.Context.instance().setFlavor(i.UISourceCode.UISourceCode,n),o.footerSection().appendAction("drjones.sources-panel-context"))}n.contentType().hasScripts()&&p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().scriptsForUISourceCode(n).every((e=>e.isJavaScript()))&&this.callstackPane.appendIgnoreListURLContextMenuItems(o,n)}appendUISourceCodeFrameItems(e,t){t.uiSourceCode().contentType().isFromSourceMap()||t.textEditor.state.selection.main.empty||e.debugSection().appendAction("debugger.evaluate-selection")}appendUILocationItems(e,i){const o=i.uiSourceCode;if(!p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().scriptsForUISourceCode(o).every((e=>e.isJavaScript())))return;if(o.contentType().hasScripts()){const n=t.Context.Context.instance().flavor(r.Target.Target),s=n?n.model(r.DebuggerModel.DebuggerModel):null;s?.isPaused()&&e.debugSection().appendItem(zi(Hi.continueToHere),this.continueToLocation.bind(this,i),{jslogContext:"continue-to-here"}),this.callstackPane.appendIgnoreListURLContextMenuItems(e,o)}}appendRemoteObjectItems(e,i){const o=n.Settings.Settings.instance().moduleSetting("text-editor-indent").get(),s=t.Context.Context.instance().flavor(r.RuntimeModel.ExecutionContext);const a="wasm"===i.type?i.subtype:"node"===i.subtype?"outerHTML":i.type;e.debugSection().appendItem(zi(Hi.storeAsGlobalVariable),(()=>s?.target().model(r.ConsoleModel.ConsoleModel)?.saveToTempVariable(s,i)),{jslogContext:"store-as-global-variable"});const c=e.clipboardSection(),l=d.InspectorFrontendHost.InspectorFrontendHostInstance;if("string"===i.type)c.appendItem(zi(Hi.copyStringContents),(()=>{l.copyText(i.value)}),{jslogContext:"copy-string-contents"}),c.appendItem(zi(Hi.copyStringAsJSLiteral),(()=>{l.copyText(u.StringUtilities.formatAsJSLiteral(i.value))}),{jslogContext:"copy-string-as-js-literal"}),c.appendItem(zi(Hi.copyStringAsJSONLiteral),(()=>{l.copyText(JSON.stringify(i.value))}),{jslogContext:"copy-string-as-json-literal"});else if(qi.has(i.type))c.appendItem(zi(Hi.copyS,{PH1:String(a)}),(()=>{l.copyText(i.description)}),{jslogContext:"copy-primitive"});else if("object"===i.type){const e=async()=>{const e=await i.callFunctionJSON(h,[{value:{subtype:i.subtype,indent:o}}]);l.copyText(e)};c.appendItem(zi(Hi.copyS,{PH1:String(a)}),e,{jslogContext:"copy-object"})}else"function"===i.type&&e.debugSection().appendItem(zi(Hi.showFunctionDefinition),this.showFunctionDefinition.bind(this,i),{jslogContext:"show-function-definition"});function h(e){const t=e.subtype,i=e.indent;if("map"!==t){if("set"!==t){if("node"===t)return this instanceof Element?this.outerHTML:void 0;if(t&&void 0===this)return String(t);try{return JSON.stringify(this,null,i)}catch{return String(this)}}else if(this instanceof Set){const e=Array.from(this.values());return`new Set(${0===e.length?"":JSON.stringify(e,null,i)})`}}else if(this instanceof Map){const e=Array.from(this.entries());return`new Map(${0===e.length?"":JSON.stringify(e,null,i)})`}}}appendNetworkRequestItems(e,t){const i=this.workspace.uiSourceCodeForURL(t.url());if(!i)return;const o=zi(Hi.openInSourcesPanel),n=this.showUILocation.bind(this,i.uiLocation(0,0));e.revealSection().appendItem(o,n,{jslogContext:"reveal-in-sources"})}showFunctionDefinition(e){r.RemoteObject.RemoteFunction.objectAsFunction(e).targetFunction().then((e=>e.debuggerModel().functionDetailsPromise(e).then(this.didGetFunctionDetails.bind(this))))}async didGetFunctionDetails(e){if(!e?.location)return;const t=await p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().rawLocationToUILocation(e.location);t&&this.showUILocation(t)}revealNavigatorSidebar(){this.setAsCurrentPanel(),this.editorView.showBoth(!0)}revealDebuggerSidebar(){n.Settings.Settings.instance().moduleSetting("auto-focus-on-debugger-paused-enabled").get()&&(this.setAsCurrentPanel(),this.splitWidget.showBoth(!0))}updateSidebarPosition(){let e;const i=n.Settings.Settings.instance().moduleSetting("sidebar-position").get();if(e="right"!==i&&("bottom"===i||t.InspectorView.InspectorView.instance().element.offsetWidth<680),this.sidebarPaneView&&e===!this.splitWidget.isVertical())return;if(this.sidebarPaneView?.shouldHideOnDetach())return;this.sidebarPaneView&&this.sidebarPaneView.detach(),this.splitWidget.setVertical(!e),this.splitWidget.element.classList.toggle("sources-split-view-vertical",e),Gi.updateResizerAndSidebarButtons(this);const o=new t.Widget.VBox;o.element.appendChild(this.debugToolbar),o.element.appendChild(this.debugToolbarDrawer),o.setMinimumAndPreferredSizes(Ji,25,Ji,100),this.sidebarPaneStack=t.ViewManager.ViewManager.instance().createStackLocation(this.revealDebuggerSidebar.bind(this),void 0,"debug"),this.sidebarPaneStack.widget().element.classList.add("y-overflow-only"),this.sidebarPaneStack.widget().show(o.element),this.sidebarPaneStack.widget().element.appendChild(this.debuggerPausedMessage.element()),this.sidebarPaneStack.appendApplicableItems("sources.sidebar-top"),this.threadsSidebarPane&&this.sidebarPaneStack.appendView(this.threadsSidebarPane);const r=t.ViewManager.ViewManager.instance().view("sources.js-breakpoints"),s=t.ViewManager.ViewManager.instance().view("sources.scope-chain");if(this.tabbedLocationHeader&&(this.splitWidget.uninstallResizer(this.tabbedLocationHeader),this.tabbedLocationHeader=null),e){const e=new t.SplitWidget.SplitWidget(!0,!0,"sources-panel-debugger-sidebar-split-view-state",.5);e.setMainWidget(o),this.sidebarPaneStack.showView(r),this.sidebarPaneStack.showView(this.callstackPane);const i=t.ViewManager.ViewManager.instance().createTabbedLocation(this.revealDebuggerSidebar.bind(this));e.setSidebarWidget(i.tabbedPane()),this.tabbedLocationHeader=i.tabbedPane().headerElement(),this.splitWidget.installResizer(this.tabbedLocationHeader),this.splitWidget.installResizer(this.debugToolbar),i.appendView(s),i.appendView(this.watchSidebarPane),i.appendApplicableItems("sources.sidebar-tabs"),this.extensionSidebarPanesContainer=i,this.sidebarPaneView=e}else this.sidebarPaneStack.appendView(this.watchSidebarPane),this.sidebarPaneStack.showView(r),this.sidebarPaneStack.showView(s),this.sidebarPaneStack.showView(this.callstackPane),this.extensionSidebarPanesContainer=this.sidebarPaneStack,this.sidebarPaneView=o,this.splitWidget.uninstallResizer(this.debugToolbar);this.sidebarPaneStack.appendApplicableItems("sources.sidebar-bottom");const a=T.ExtensionServer.ExtensionServer.instance().sidebarPanes();for(let e=0;e{Gi.updateResizerAndSidebarButtons(Gi.instance())})),super.willHide(),t.Context.Context.instance().setFlavor(Xi,null)}showViewInWrapper(){this.view.show(this.element)}}var Yi=Object.freeze({__proto__:null,ActionDelegate:class{handleAction(e,t){const i=Gi.instance();switch(t){case"debugger.step-over":return i.stepOver(),!0;case"debugger.step-into":return i.stepIntoAsync(),!0;case"debugger.step":return i.stepInto(),!0;case"debugger.step-out":return i.stepOut(),!0;case"debugger.run-snippet":return i.runSnippet(),!0;case"debugger.toggle-breakpoints-active":return i.toggleBreakpointsActive(),!0;case"debugger.evaluate-selection":{const t=e.flavor(ei);if(t){const{state:i}=t.textEditor;let o=i.sliceDoc(i.selection.main.from,i.selection.main.to);const n=e.flavor(r.RuntimeModel.ExecutionContext),s=n?.target().model(r.ConsoleModel.ConsoleModel);if(n&&s){const e=s.addCommandMessage(n,o);o=y.JavaScriptREPL.JavaScriptREPL.wrapObjectLiteral(o),s.evaluateCommandInConsole(n,e,o,!0)}}return!0}case"sources.reveal-in-navigator-sidebar":{const e=i.sourcesView().currentUISourceCode();return null!==e&&(i.revealInNavigator(e),!0)}case"sources.toggle-navigator-sidebar":return i.toggleNavigatorSidebar(),!0;case"sources.toggle-debugger-sidebar":return i.toggleDebuggerSidebar(),!0}return!1}},DebuggerLocationRevealer:class{async reveal(e,t){const i=await p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().rawLocationToUILocation(e);i&&Gi.instance().showUILocation(i,t)}},DebuggerPausedDetailsRevealer:class{async reveal(e){if(n.Settings.Settings.instance().moduleSetting("auto-focus-on-debugger-paused-enabled").get())return await Gi.instance().setAsCurrentPanel()}},QuickSourceView:Xi,RevealingActionDelegate:class{handleAction(e,i){const o=Gi.instance();if(!o.ensureSourcesViewVisible())return!1;if("debugger.toggle-pause"===i){return e.flavor(t.ShortcutRegistry.ForwardedShortcut)&&!n.Settings.Settings.instance().moduleSetting("disable-paused-state-overlay").get()||o.togglePause(),!0}return!1}},SourcesPanel:Gi,UILocationRangeRevealer:Qi,UILocationRevealer:class{async reveal(e,t){Gi.instance().showUILocation(e,t)}},UISourceCodeRevealer:class{async reveal(e,t){Gi.instance().showUISourceCode(e,void 0,t)}},lastModificationTimeout:Ki,minToolbarWidth:Ji});const{EMPTY_BREAKPOINT_CONDITION:Zi,NEVER_PAUSE_HERE_CONDITION:eo}=C.BreakpointManager,to={thisScriptIsOnTheDebuggersIgnore:"This script is on the debugger's ignore list",removeFromIgnoreList:"Remove from ignore list",configure:"Configure",addBreakpoint:"Add breakpoint",addConditionalBreakpoint:"Add conditional breakpoint…",addLogpoint:"Add logpoint…",neverPauseHere:"Never pause here",removeBreakpoint:"{n, plural, =1 {Remove breakpoint} other {Remove all breakpoints in line}}",editBreakpoint:"Edit breakpoint…",disableBreakpoint:"{n, plural, =1 {Disable breakpoint} other {Disable all breakpoints in line}}",enableBreakpoint:"{n, plural, =1 {Enable breakpoint} other {Enable all breakpoints in line}}",addSourceMap:"Add source map…",addWasmDebugInfo:"Add DWARF debug info…",sourceMapLoaded:"Source map loaded",associatedFilesAreAvailable:"Associated files are available via file tree or {PH1}.",associatedFilesShouldBeAdded:"Associated files should be added to the file tree. You can debug these resolved source files as regular JavaScript files.",theDebuggerWillSkipStepping:"The debugger will skip stepping through this script, and will not stop on exceptions.",sourceMapSkipped:"Source map skipped for this file",sourceMapFailed:"Source map failed to load",debuggingPowerReduced:"DevTools can't show authored sources, but you can debug the deployed code.",reloadForSourceMap:"To enable again, make sure the file isn't on the ignore list and reload.",errorLoading:"Error loading url {PH1}: {PH2}",debugFileNotFound:'Failed to load debug file "{PH1}".',debugInfoNotFound:"Failed to load any debug info for {PH1}",showRequest:"Show request",openDeveloperResources:"Opens the request in the Developer resource panel"},io=e.i18n.registerUIStrings("panels/sources/DebuggerPlugin.ts",to),oo=e.i18n.getLocalizedString.bind(void 0,io),no=new Map;class ro extends H{transformer;editor=void 0;executionLocation=null;controlDown=!1;controlTimeout=void 0;sourceMapInfobar=null;scriptsPanel;breakpointManager;popoverHelper=null;scriptFileForDebuggerModel;breakpoints=[];continueToLocations=null;liveLocationPool;muted;initializedMuted;ignoreListInfobar;refreshBreakpointsTimeout=void 0;activeBreakpointDialog=null;#M=void 0;#P=!1;missingDebugInfoBar=null;#F=!1;loader;ignoreListCallback;constructor(e,o){super(e),this.transformer=o,no.set(e,this),this.scriptsPanel=Gi.instance(),this.breakpointManager=C.BreakpointManager.BreakpointManager.instance(),this.breakpointManager.addEventListener(C.BreakpointManager.Events.BreakpointAdded,this.breakpointChange,this),this.breakpointManager.addEventListener(C.BreakpointManager.Events.BreakpointRemoved,this.breakpointChange,this),this.uiSourceCode.addEventListener(i.UISourceCode.Events.WorkingCopyChanged,this.workingCopyChanged,this),this.uiSourceCode.addEventListener(i.UISourceCode.Events.WorkingCopyCommitted,this.workingCopyCommitted,this),this.scriptFileForDebuggerModel=new Map,this.loader=r.PageResourceLoader.PageResourceLoader.instance(),this.loader.addEventListener("Update",this.showSourceMapInfobarIfNeeded.bind(this),this),this.ignoreListCallback=this.showIgnoreListInfobarIfNeeded.bind(this),p.IgnoreListManager.IgnoreListManager.instance().addChangeListener(this.ignoreListCallback),t.Context.Context.instance().addFlavorChangeListener(r.DebuggerModel.CallFrame,this.callFrameChanged,this),this.liveLocationPool=new p.LiveLocation.LiveLocationPool,this.updateScriptFiles(),this.muted=this.uiSourceCode.isDirty(),this.initializedMuted=this.muted,this.ignoreListInfobar=null,this.showIgnoreListInfobarIfNeeded();for(const e of this.scriptFileForDebuggerModel.values())e.checkMapping()}editorExtension(){const e=this.shortcutHandlers();return[s.EditorView.updateListener.of((e=>this.onEditorUpdate(e))),s.EditorView.domEventHandlers({keydown:t=>!!this.onKeyDown(t)||(e(t),t.defaultPrevented),keyup:e=>this.onKeyUp(e),mousemove:e=>this.onMouseMove(e),mousedown:e=>this.onMouseDown(e),focusout:e=>this.onBlur(e),wheel:e=>this.onWheel(e)}),s.lineNumbers({domEventHandlers:{click:(e,t,i)=>{if(d.rnPerfMetrics.isEnabled()){const e=i.target;if(e.classList&&e.classList.contains("cm-gutterElement")&&!e.classList.contains("cm-breakpoint")){const t=Date.now(),i=new MutationObserver((o=>{o.forEach((o=>{"attributes"===o.type&&"class"===o.attributeName&&e.classList.contains("cm-breakpoint")&&(d.rnPerfMetrics.manualBreakpointSetSucceeded(Date.now()-t),i.disconnect())}))}));i.observe(e,{attributes:!0}),setTimeout((()=>i.disconnect()),3e3)}}return this.handleGutterClick(e.state.doc.lineAt(t.from),i)}}}),lo,c.ExecutionPositionHighlighter.positionHighlighter("cm-executionLine","cm-executionToken"),s.Prec.lowest(fo.field),Co,Io.field,s.Prec.lowest(Po.field),Fo,this.uiSourceCode.project().type()===i.Workspace.projectTypes.Debugger?s.EditorView.editorAttributes.of({class:"source-frame-debugger-script"}):[]]}shortcutHandlers(){const e=e=>e.state.doc.lineAt(e.state.selection.main.head);return t.ShortcutRegistry.ShortcutRegistry.instance().getShortcutListener({"debugger.toggle-breakpoint":async()=>!(this.muted||!this.editor)&&(await this.toggleBreakpoint(e(this.editor),!1),!0),"debugger.toggle-breakpoint-enabled":async()=>!(this.muted||!this.editor)&&(await this.toggleBreakpoint(e(this.editor),!0),!0),"debugger.breakpoint-input-window":async()=>{if(this.muted||!this.editor)return!1;const t=e(this.editor);return this.#D(t),!0}})}#D(e,t){if(this.muted)return;this.activeBreakpointDialog&&this.activeBreakpointDialog.finishEditing(!1,"");const i=this.breakpoints.find((t=>t.position>=e.from&&t.position<=e.to))?.breakpoint||null;void 0===t&&null!==i&&(t=i.isLogpoint()),this.editBreakpointCondition({line:e,breakpoint:i,location:null,isLogpoint:t})}editorInitialized(e){this.editor=e,async function(e,t,i){const o=p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance(),n=await o.getMappedLines(i);if(!n)return[];const r=[];for(let i=0;i{t.length&&e.dispatch({effects:o.SourceFrame.addNonBreakableLines.of(t)})}),console.error),this.ignoreListInfobar&&this.attachInfobar(this.ignoreListInfobar),this.missingDebugInfoBar&&this.attachInfobar(this.missingDebugInfoBar),this.sourceMapInfobar&&this.attachInfobar(this.sourceMapInfobar),this.muted||this.refreshBreakpoints(),this.callFrameChanged(),this.popoverHelper?.dispose(),this.popoverHelper=new t.PopoverHelper.PopoverHelper(e,this.getPopoverRequest.bind(this),"sources.object-properties"),this.popoverHelper.setDisableOnClick(!0),this.popoverHelper.setTimeout(250,250)}static accepts(e){return e.contentType().hasScripts()}showIgnoreListInfobarIfNeeded(){const e=this.uiSourceCode;if(!e.contentType().hasScripts())return;if(!p.IgnoreListManager.IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(e))return void this.hideIgnoreListInfobar();this.ignoreListInfobar&&this.ignoreListInfobar.dispose();const i=new t.Infobar.Infobar("warning",oo(to.thisScriptIsOnTheDebuggersIgnore),[{text:oo(to.configure),delegate:t.ViewManager.ViewManager.instance().showView.bind(t.ViewManager.ViewManager.instance(),"blackbox"),dismiss:!1,jslogContext:"configure"},{text:oo(to.removeFromIgnoreList),delegate:function(){p.IgnoreListManager.IgnoreListManager.instance().unIgnoreListUISourceCode(e)},buttonVariant:"tonal",dismiss:!0,jslogContext:"remove-from-ignore-list"}],void 0,"script-on-ignore-list");this.ignoreListInfobar=i,i.setCloseCallback((()=>this.removeInfobar(this.ignoreListInfobar))),i.createDetailsRowMessage(oo(to.theDebuggerWillSkipStepping)),this.attachInfobar(this.ignoreListInfobar)}attachInfobar(e){this.editor&&this.editor.dispatch({effects:o.SourceFrame.addInfobar.of(e)})}removeInfobar(e){this.editor&&e&&this.editor.dispatch({effects:o.SourceFrame.removeInfobar.of(e)})}hideIgnoreListInfobar(){this.ignoreListInfobar&&(this.ignoreListInfobar.dispose(),this.ignoreListInfobar=null)}willHide(){this.popoverHelper?.hidePopover()}editBreakpointLocation({breakpoint:e,uiLocation:t}){const{lineNumber:i}=this.transformer.uiLocationToEditorLocation(t.lineNumber,t.columnNumber),o=this.editor?.state.doc.line(i+1);o&&this.editBreakpointCondition({line:o,breakpoint:e,location:null,isLogpoint:e.isLogpoint()})}populateLineGutterContextMenu(e,t){const n=new i.UISourceCode.UILocation(this.uiSourceCode,t,0);if(this.scriptsPanel.appendUILocationItems(e,n),this.muted||!this.editor)return;const r=this.editor.state.doc.line(t+1),s=this.lineBreakpoints(r),a=p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().supportsConditionalBreakpoints(this.uiSourceCode);if(s.length){const t=oo(to.removeBreakpoint,{n:s.length});e.debugSection().appendItem(t,(()=>s.forEach((e=>{d.userMetrics.actionTaken(d.UserMetrics.Action.BreakpointRemovedFromGutterContextMenu),e.remove(!1)}))),{jslogContext:"remove-breakpoint"}),1===s.length&&a&&e.debugSection().appendItem(oo(to.editBreakpoint),(()=>{this.editBreakpointCondition({line:r,breakpoint:s[0],location:null})}),{jslogContext:"edit-breakpoint"});if(s.some((e=>e.enabled()))){const t=oo(to.disableBreakpoint,{n:s.length});e.debugSection().appendItem(t,(()=>s.forEach((e=>e.setEnabled(!1)))),{jslogContext:"enable-breakpoint"})}if(s.some((e=>!e.enabled()))){const t=oo(to.enableBreakpoint,{n:s.length});e.debugSection().appendItem(t,(()=>s.forEach((e=>e.setEnabled(!0)))),{jslogContext:"disable-breakpoint"})}}else this.editor&&o.SourceFrame.isBreakableLine(this.editor.state,r)&&(e.debugSection().appendItem(oo(to.addBreakpoint),this.createNewBreakpoint.bind(this,r,Zi,!0,!1),{jslogContext:"add-breakpoint"}),a&&(e.debugSection().appendItem(oo(to.addConditionalBreakpoint),(()=>{this.editBreakpointCondition({line:r,breakpoint:null,location:null,isLogpoint:!1})}),{jslogContext:"add-cnd-breakpoint"}),e.debugSection().appendItem(oo(to.addLogpoint),(()=>{this.editBreakpointCondition({line:r,breakpoint:null,location:null,isLogpoint:!0})}),{jslogContext:"add-logpoint"}),e.debugSection().appendItem(oo(to.neverPauseHere),this.createNewBreakpoint.bind(this,r,eo,!0,!1),{jslogContext:"never-pause-here"})))}populateTextAreaContextMenu(e){function t(e,t){t&&e.addSourceMapURL(t)}function o(e,t){t&&(e.addDebugInfoURL(t),e.script?.debuggerModel&&this.updateScriptFile(e.script?.debuggerModel))}if(this.uiSourceCode.project().type()===i.Workspace.projectTypes.Network&&n.Settings.Settings.instance().moduleSetting("js-source-maps-enabled").get()&&!p.IgnoreListManager.IgnoreListManager.instance().isUserIgnoreListedURL(this.uiSourceCode.url())&&this.scriptFileForDebuggerModel.size){const i=this.scriptFileForDebuggerModel.values().next().value,n=oo(to.addSourceMap);e.debugSection().appendItem(n,function(e){V.createAddSourceMapURLDialog(t.bind(null,e)).show()}.bind(null,i),{jslogContext:"add-source-map"}),i.script?.isWasm()&&!p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().pluginManager.hasPluginForScript(i.script)&&e.debugSection().appendItem(oo(to.addWasmDebugInfo),function(e){V.createAddDWARFSymbolsURLDialog(o.bind(this,e)).show()}.bind(this,i),{jslogContext:"add-wasm-debug-info"})}}workingCopyChanged(){this.scriptFileForDebuggerModel.size||this.setMuted(this.uiSourceCode.isDirty())}workingCopyCommitted(){this.scriptsPanel.updateLastModificationTime(),this.scriptFileForDebuggerModel.size||this.setMuted(!1)}didMergeToVM(){this.consistentScripts()&&this.setMuted(!1)}didDivergeFromVM(){this.setMuted(!0)}setMuted(e){this.initializedMuted||e!==this.muted&&(this.muted=e,e?this.editor&&this.editor.dispatch({effects:ao.of(null)}):this.restoreBreakpointsAfterEditing())}consistentScripts(){for(const e of this.scriptFileForDebuggerModel.values())if(e.hasDivergedFromVM()||e.isMergingToVM())return!1;return!0}isVariableIdentifier(e){return"VariableName"===e||"VariableDefinition"===e}isIdentifier(e){return"VariableName"===e||"VariableDefinition"===e||"PropertyName"===e||"PropertyDefinition"===e}getPopoverRequest(e){if(e instanceof KeyboardEvent)return null;if(t.KeyboardShortcut.KeyboardShortcut.eventHasCtrlEquivalentKey(e))return null;const i=t.Context.Context.instance().flavor(r.Target.Target),o=i?i.model(r.DebuggerModel.DebuggerModel):null,{editor:n}=this;if(!o||!o.isPaused()||!n)return null;const a=t.Context.Context.instance().flavor(r.DebuggerModel.CallFrame);if(!a)return null;let c=n.editor.posAtCoords(e);if(!c)return null;const l=n.editor.coordsAtPos(c);if(!l||e.clientYl.bottom||e.clientXl.right+30)return null;e.clientXn.state.doc.lineAt(c).from&&(c-=1);const d=Eo(n.state,this.uiSourceCode.mimeType(),c);if(!d)return null;const u=n.state.doc.lineAt(d.from);if(d.to>u.to)return null;const h=n.editor.coordsAtPos(d.from),p=n.editor.coordsAtPos(d.to);if(!h||!p)return null;const g=new AnchorBox(h.left,h.top-2,p.right-h.left,p.bottom-h.top),b=n.state.sliceDoc(d.from,d.to);let f=null;return{box:g,show:async e=>{let i="";if(a.script.isJavaScript()){const e=await m.NamesResolver.allVariablesInCallFrame(a);try{i=await w.FormatterWorkerPool.formatterWorkerPool().javaScriptSubstitute(b,e)}catch{}}const c=d.containsSideEffects,l=await a.evaluate({expression:i||b,objectGroup:"popover",includeCommandLineAPI:!1,silent:!0,returnByValue:!1,generatePreview:!1,throwOnSideEffect:c,timeout:void 0,disableBreaks:void 0,replMode:void 0,allowUnsafeEvalBlockedByCSP:void 0});if(!l||"error"in l||!l.object||"object"===l.object.type&&"error"===l.object.subtype)return!1;f=await y.ObjectPopoverHelper.ObjectPopoverHelper.buildObjectPopover(l.object,e);const u=t.Context.Context.instance().flavor(r.DebuggerModel.CallFrame);if(!f||a!==u)return o.runtimeModel().releaseObjectGroup("popover"),f&&f.dispose(),!1;const h=s.Decoration.set(Mo.range(d.from,d.to));return n.dispatch({effects:Po.update.of(h)}),!0},hide:()=>{f&&f.dispose(),o.runtimeModel().releaseObjectGroup("popover"),n.dispatch({effects:Po.update.of(s.Decoration.none)})}}}onEditorUpdate(e){if(!e.changes.empty)for(const t of this.breakpoints)t.position=e.changes.mapPos(t.position)}onWheel(e){this.executionLocation&&t.KeyboardShortcut.KeyboardShortcut.eventHasCtrlEquivalentKey(e)&&e.preventDefault()}onKeyDown(e){const i=t.KeyboardShortcut.KeyboardShortcut.eventHasCtrlEquivalentKey(e);return i||this.setControlDown(!1),e.key===u.KeyboardUtilities.ESCAPE_KEY&&this.popoverHelper?.isPopoverVisible()?(this.popoverHelper.hidePopover(),e.consume(),!0):(i&&this.executionLocation&&this.setControlDown(!0),!1)}onMouseMove(e){this.executionLocation&&this.controlDown&&t.KeyboardShortcut.KeyboardShortcut.eventHasCtrlEquivalentKey(e)&&(this.continueToLocations||this.showContinueToLocations())}onMouseDown(e){if(!this.executionLocation||!t.KeyboardShortcut.KeyboardShortcut.eventHasCtrlEquivalentKey(e))return;if(!this.continueToLocations||!this.editor)return;e.consume();const i=this.editor.editor.posAtCoords(e);if(null!==i)for(const{from:e,to:t,click:o}of this.continueToLocations)if(e<=i&&t>=i){o();break}}onBlur(e){this.setControlDown(!1)}onKeyUp(e){this.setControlDown(!1)}setControlDown(e){e!==this.controlDown&&(this.controlDown=e,clearTimeout(this.controlTimeout),this.controlTimeout=void 0,e&&this.executionLocation?this.controlTimeout=window.setTimeout((()=>{this.executionLocation&&this.controlDown&&this.showContinueToLocations()}),150):this.clearContinueToLocations())}editBreakpointCondition(e){const{line:t,breakpoint:i,location:o,isLogpoint:n}=e;if(i?.isRemoved)return;this.#P=!1;if(this.#M&&function(e,t){if(e.line.number!==t.line.number)return!1;if(e.line.from!==t.line.from)return!1;if(e.line.text!==t.line.text)return!1;if(e.breakpoint!==t.breakpoint)return!1;if(e.location!==t.location)return!1;return e.isLogpoint===t.isLogpoint}(this.#M,e))return;this.activeBreakpointDialog&&this.activeBreakpointDialog.saveAndFinish();const r=this.editor,a=i?i.condition():"",c=i?.isLogpoint()??Boolean(n),l=document.createElement("div"),d=new s.Compartment,u=new ee(t.number-1,a,c,(async e=>{this.activeBreakpointDialog=null,this.#M=void 0,u.detach(),r.dispatch({effects:d.reconfigure([])}),e.committed?(x.BreakpointsView.BreakpointsSidebarController.instance().breakpointEditFinished(i,a!==e.condition),i?i.setCondition(e.condition,e.isLogpoint):o?await this.setBreakpoint(o.lineNumber,o.columnNumber,e.condition,!0,e.isLogpoint):await this.createNewBreakpoint(t,e.condition,!0,e.isLogpoint)):x.BreakpointsView.BreakpointsSidebarController.instance().breakpointEditFinished(i,!1)}));r.dispatch({effects:s.StateEffect.appendConfig.of(d.of(s.EditorView.decorations.of(s.Decoration.set([s.Decoration.widget({block:!0,widget:new class extends s.WidgetType{toDOM(){return l}},side:1}).range(t.to)]))))}),u.element.addEventListener("blur",(async e=>{(!e.relatedTarget||e.relatedTarget&&!e.relatedTarget.isSelfOrDescendant(u.element))&&(this.#P=!0,setTimeout((()=>{this.activeBreakpointDialog===u&&(this.#P?(u.saveAndFinish(),this.#P=!1):u.focusEditor())}),200))}),!0),u.markAsExternallyManaged(),u.show(l),u.focusEditor(),this.activeBreakpointDialog=u,this.#M=e}async updateValueDecorations(){if(!this.editor)return;const e=this.executionLocation?await this.computeValueDecorations():null;this.editor&&(e||this.editor.state.field(Io.field).size)&&this.editor.dispatch({effects:Io.update.of(e||s.Decoration.none)})}async#A(e,t){const i=e&&await p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().rawLocationToUILocation(e);if(!i||i.uiSourceCode.url()!==t)return null;const o=this.editor?.toOffset(this.transformer.uiLocationToEditorLocation(i.lineNumber,i.columnNumber));return o??null}async computeValueDecorations(){if(!this.editor)return null;if(!n.Settings.Settings.instance().moduleSetting("inline-variable-values").get())return null;if(!t.Context.Context.instance().flavor(r.RuntimeModel.ExecutionContext))return null;const e=t.Context.Context.instance().flavor(r.DebuggerModel.CallFrame);if(!e)return null;const i=this.uiSourceCode.url(),o=this.#A(e.functionLocation(),i),a=this.#A(e.location(),i),[c,l]=await Promise.all([o,a]);if(!c||!l||!this.editor)return null;if(c>=l||l-c>1e4)return null;for(;s.syntaxParserRunning(this.editor.editor);){if(await new Promise((e=>window.requestIdleCallback(e))),!this.editor)return null;s.ensureSyntaxTree(this.editor.state,l,16)}const d=xo(this.editor.state,c,l,l);if(0===d.length)return null;const u=await ko(e,(e=>this.#A(e,i)));if(!this.editor||0===u.length)return null;const h=To(u,d);if(!h||!this.editor)return null;const p=[];for(const[e,t]of h){const i=h.get(e-1);let o=i?Array.from(t).filter((e=>i.get(e[0])!==e[1])):Array.from(t);o.length&&(o.length>10&&(o=o.slice(0,10)),p.push(s.Decoration.widget({widget:new wo(o),side:1}).range(this.editor.state.doc.line(e+1).to)))}return s.Decoration.set(p,!0)}async showContinueToLocations(){this.popoverHelper?.hidePopover();if(!t.Context.Context.instance().flavor(r.RuntimeModel.ExecutionContext)||!this.editor)return;const e=t.Context.Context.instance().flavor(r.DebuggerModel.CallFrame);if(!e)return;const i=e.functionLocation()||e.location(),o=e.debuggerModel,{state:n}=this.editor,a=await o.getPossibleBreakpoints(i,null,!0);this.continueToLocations=[];let c=-1;for(const e of a.reverse()){const t=this.transformer.uiLocationToEditorLocation(e.lineNumber,e.columnNumber);if(c===t.lineNumber&&"call"!==e.type||t.lineNumber>=n.doc.lines)continue;const i=n.doc.line(t.lineNumber+1),o=Math.min(i.to,i.from+t.columnNumber);let r=s.syntaxTree(n).resolveInner(o,1);if(r.firstChild||r.fromi.to)continue;if("."===r.name){const e=r.resolve(r.to,1);if(e.firstChild||e.fromi.to)continue;r=e}const a=r.name,l="this"===a||"return"===a||"new"===a||"break"===a||"continue"===a;if(!l&&!this.isIdentifier(a))continue;this.continueToLocations.push({from:r.from,to:r.to,async:!1,click:()=>e.continueToLocation()}),"call"===e.type&&(c=t.lineNumber);const d=l?"":i.text.slice(r.from-i.from,r.to-i.from);let u=null;if("then"===d&&"MemberExpression"===r.parent?.name?u=r.parent.parent:"setTimeout"!==d&&"setInterval"!==d&&"postMessage"!==d||(u=r.parent),"new"===a){const e=r.parent?.getChild("Expression");e&&"VariableName"===e.name&&"Worker"===n.sliceDoc(e.from,e.to)&&(u=r.parent)}if(u&&("CallExpression"===u.name||"NewExpression"===u.name)&&"call"===e.type){const t=u.getChild("ArgList")?.firstChild?.nextSibling;let i;if("VariableName"===t?.name?i=t:"ArrowFunction"!==t?.name&&"FunctionExpression"!==t?.name||(i=t.firstChild,"async"===i?.name&&(i=i.nextSibling)),i){const t=this.executionLocation&&e.lineNumber===this.executionLocation.lineNumber&&e.columnNumber===this.executionLocation.columnNumber;this.continueToLocations.push({from:i.from,to:i.to,async:!0,click:()=>this.asyncStepIn(e,Boolean(t))})}}}const l=s.Decoration.set(this.continueToLocations.map((e=>(e.async?bo:mo).range(e.from,e.to))),!0);this.editor.dispatch({effects:fo.update.of(l)})}clearContinueToLocations(){this.editor?.state.field(fo.field).size&&this.editor.dispatch({effects:fo.update.of(s.Decoration.none)})}asyncStepIn(e,t){function i(){e.debuggerModel.scheduleStepIntoAsync()}t?i():e.continueToLocation(i)}fetchBreakpoints(){if(!this.editor)return[];const{editor:e}=this;return this.breakpointManager.breakpointLocationsForUISourceCode(this.uiSourceCode).map((({uiLocation:t,breakpoint:i})=>{const o=this.transformer.uiLocationToEditorLocation(t.lineNumber,t.columnNumber);return{position:e.toOffset(o),breakpoint:i}}))}lineBreakpoints(e){return this.breakpoints.filter((t=>t.position>=e.from&&t.position<=e.to)).map((e=>e.breakpoint))}async linePossibleBreakpoints(e){const t=this.transformer.editorLocationToUILocation(e.number-1,0),i=this.transformer.editorLocationToUILocation(e.number-1,Math.min(e.length,2500)),o=new b.TextRange.TextRange(t.lineNumber,t.columnNumber||0,i.lineNumber,i.columnNumber||0);return await this.breakpointManager.possibleBreakpoints(this.uiSourceCode,o)}async computeBreakpointDecoration(e,t){const i=[],o=[],n=new Map,r=new Map,a=[],c=new Set,l=(e,t,i)=>{let o=r.get(e);o||(o=[],r.set(e,o)),o.push({breakpoint:i,column:t})};for(const{position:i,breakpoint:o}of t){const t=e.doc.lineAt(i);let r=n.get(t.from);r||(r=[],n.set(t.from,r)),o.enabled()&&r.every((e=>!e.enabled()))&&a.push(this.linePossibleBreakpoints(t).then((e=>d(t,e)))),r.push(o),o.enabled()&&(c.add(i),l(t.from,i-t.from,o))}for(const[e,t]of n){const i=t.sort(po)[0];let n="cm-breakpoint";i.enabled()||(n+=" cm-breakpoint-disabled"),i.bound()||(n+=" cm-breakpoint-unbound"),i.isLogpoint()?n+=" cm-breakpoint-logpoint":i.condition()&&(n+=" cm-breakpoint-conditional"),o.push(new ho(n,e).range(e))}const d=(e,t)=>{for(const i of t){const t=this.transformer.uiLocationToEditorLocation(i.lineNumber,i.columnNumber);if(t.lineNumber!==e.number-1)continue;const o=Math.min(e.to,e.from+t.columnNumber);c.has(o)||l(e.from,t.columnNumber,null)}};await Promise.all(a);for(const[e,t]of r)if(t.length>1)for(const{column:o,breakpoint:n}of t){const t=new uo(n,this);i.push(s.Decoration.widget({widget:t,side:-1}).range(e+o))}return{content:s.Decoration.set(i,!0),gutter:s.RangeSet.of(o,!0)}}async restoreBreakpointsAfterEditing(){const{breakpoints:e}=this,t=this.editor;this.breakpoints=[],await Promise.all(e.map((async e=>{const{breakpoint:i,position:o}=e,n=i.condition(),r=i.enabled(),s=i.isLogpoint();await i.remove(!1);const a=t.toLineColumn(o),c=this.transformer.editorLocationToUILocation(a.lineNumber,a.columnNumber);await this.setBreakpoint(c.lineNumber,c.columnNumber,n,r,s)})))}async refreshBreakpoints(){if(this.editor){this.breakpoints=this.fetchBreakpoints();const e=this.breakpoints,t=await this.computeBreakpointDecoration(this.editor.state,e);this.editor&&this.breakpoints===e&&(t.gutter.size||this.editor.state.field(lo,!1)?.gutter.size)&&this.editor.dispatch({effects:so.of(t)})}}breakpointChange(e){const{uiLocation:t}=e.data;if(t.uiSourceCode===this.uiSourceCode&&!this.muted){for(const e of this.scriptFileForDebuggerModel.values())if(e.isDivergingFromVM()||e.isMergingToVM())return;window.clearTimeout(this.refreshBreakpointsTimeout),this.refreshBreakpointsTimeout=window.setTimeout((()=>this.refreshBreakpoints()),50)}}onInlineBreakpointMarkerClick(e,t){if(e.consume(!0),t)e.shiftKey?t.setEnabled(!t.enabled()):t.remove(!1);else if(this.editor){const t=this.editor.editor.posAtDOM(e.target),i=this.editor.state.doc.lineAt(t),o=this.transformer.editorLocationToUILocation(i.number-1,t-i.from);this.setBreakpoint(o.lineNumber,o.columnNumber,Zi,!0,!1)}}onInlineBreakpointMarkerContextMenu(e,i){e.consume(!0);const n=this.editor,r=n.editor.posAtDOM(e.target),s=n.state.doc.lineAt(r);if(!o.SourceFrame.isBreakableLine(n.state,s)||!p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().supportsConditionalBreakpoints(this.uiSourceCode))return;const a=new t.ContextMenu.ContextMenu(e);if(i)a.debugSection().appendItem(oo(to.editBreakpoint),(()=>{this.editBreakpointCondition({line:s,breakpoint:i,location:null})}),{jslogContext:"edit-breakpoint"});else{const e=this.transformer.editorLocationToUILocation(s.number-1,r-s.from);a.debugSection().appendItem(oo(to.addConditionalBreakpoint),(()=>{this.editBreakpointCondition({line:s,breakpoint:null,location:e,isLogpoint:!1})}),{jslogContext:"add-cnd-breakpoint"}),a.debugSection().appendItem(oo(to.addLogpoint),(()=>{this.editBreakpointCondition({line:s,breakpoint:null,location:e,isLogpoint:!0})}),{jslogContext:"add-logpoint"}),a.debugSection().appendItem(oo(to.neverPauseHere),(()=>this.setBreakpoint(e.lineNumber,e.columnNumber,eo,!0,!1)),{jslogContext:"never-pause-here"})}a.show()}updateScriptFiles(){for(const e of r.TargetManager.TargetManager.instance().models(r.DebuggerModel.DebuggerModel)){p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().scriptFile(this.uiSourceCode,e)&&this.updateScriptFile(e)}this.showSourceMapInfobarIfNeeded()}updateScriptFile(e){const t=this.scriptFileForDebuggerModel.get(e),i=p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().scriptFile(this.uiSourceCode,e);this.scriptFileForDebuggerModel.delete(e),t&&(t.removeEventListener("DidMergeToVM",this.didMergeToVM,this),t.removeEventListener("DidDivergeFromVM",this.didDivergeFromVM,this),this.muted&&!this.uiSourceCode.isDirty()&&this.consistentScripts()&&this.setMuted(!1)),i&&(this.scriptFileForDebuggerModel.set(e,i),i.addEventListener("DidMergeToVM",this.didMergeToVM,this),i.addEventListener("DidDivergeFromVM",this.didDivergeFromVM,this),i.checkMapping(),i.missingSymbolFiles().then((e=>{if(e){const t=oo(to.debugInfoNotFound,{PH1:i.uiSourceCode.url()});this.updateMissingDebugInfoInfobar({resources:e,details:t})}else this.updateMissingDebugInfoInfobar(null)})))}updateMissingDebugInfoInfobar(e){if(!this.missingDebugInfoBar){if(null===e)return this.removeInfobar(this.missingDebugInfoBar),void(this.missingDebugInfoBar=null);if(this.missingDebugInfoBar=t.Infobar.Infobar.create("error",e.details,[],void 0,"missing-debug-info"),this.missingDebugInfoBar){for(const i of e.resources){const e=this.missingDebugInfoBar?.createDetailsRowMessage(oo(to.debugFileNotFound,{PH1:n.ParsedURL.ParsedURL.extractName(i.resourceUrl)}));if(e){const o=r.PageResourceLoader.PageResourceLoader.makeExtensionKey(i.resourceUrl,i.initiator);if(r.PageResourceLoader.PageResourceLoader.instance().getResourcesLoaded().get(o)){const i=t.UIUtils.createTextButton(oo(to.showRequest),(()=>{n.Revealer.reveal(new r.PageResourceLoader.ResourceKey(o))}),{jslogContext:"show-request",variant:"text"});i.style.setProperty("margin-left","10px"),i.title=oo(to.openDeveloperResources),e.appendChild(i)}e.classList.add("infobar-selectable")}}this.missingDebugInfoBar.setCloseCallback((()=>{this.removeInfobar(this.missingDebugInfoBar),this.missingDebugInfoBar=null})),this.attachInfobar(this.missingDebugInfoBar)}}}scriptHasSourceMap(){for(const e of r.TargetManager.TargetManager.instance().models(r.DebuggerModel.DebuggerModel)){const t=p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().scriptFile(this.uiSourceCode,e);if(t?.hasSourceMapURL())return!0}return!1}getSourceMapResource(){const e=this.loader.getResourcesLoaded();for(const[t,i]of this.scriptFileForDebuggerModel.entries()){const o=i.script?.sourceMapURL;if(o){const s=r.SourceMapManager.SourceMapManager.resolveRelativeSourceURL(t.target(),i.script.sourceURL),a=n.ParsedURL.ParsedURL.completeURL(s,o);if(a){const t=e.get(r.PageResourceLoader.PageResourceLoader.makeKey(a,i.script.createPageResourceLoadInitiator()));if(t)return t}}}return null}showSourceMapInfobarIfNeeded(){if(this.sourceMapInfobar)return;if(!n.Settings.Settings.instance().moduleSetting("js-source-maps-enabled").get())return;if(!this.scriptHasSourceMap())return;const e=this.getSourceMapResource();if(!e||null!==e.success){if(e)if(e.success){if(this.sourceMapInfobar=t.Infobar.Infobar.create("info",oo(to.sourceMapLoaded),[],n.Settings.Settings.instance().createSetting("source-map-infobar-disabled",!1),"source-map-loaded"),!this.sourceMapInfobar)return;this.sourceMapInfobar.createDetailsRowMessage(oo(to.associatedFilesShouldBeAdded)),this.sourceMapInfobar.createDetailsRowMessage(oo(to.associatedFilesAreAvailable,{PH1:String(t.ShortcutRegistry.ShortcutRegistry.instance().shortcutTitleForAction("quick-open.show"))}))}else{if(this.sourceMapInfobar=t.Infobar.Infobar.create("warning",oo(to.sourceMapFailed),[],void 0,"source-map-failed"),!this.sourceMapInfobar)return;this.sourceMapInfobar.createDetailsRowMessage(oo(to.debuggingPowerReduced)),e.errorMessage&&this.sourceMapInfobar.createDetailsRowMessage(oo(to.errorLoading,{PH1:u.StringUtilities.trimMiddle(e.url,t.UIUtils.MaxLengthForDisplayedURLs),PH2:e.errorMessage}))}else{if(this.sourceMapInfobar=t.Infobar.Infobar.create("info",oo(to.sourceMapSkipped),[],n.Settings.Settings.instance().createSetting("source-map-skipped-infobar-disabled",!1),"source-map-skipped"),!this.sourceMapInfobar)return;this.sourceMapInfobar.createDetailsRowMessage(oo(to.debuggingPowerReduced)),this.sourceMapInfobar.createDetailsRowMessage(oo(to.reloadForSourceMap))}this.sourceMapInfobar.setCloseCallback((()=>{this.removeInfobar(this.sourceMapInfobar),this.sourceMapInfobar=null})),this.attachInfobar(this.sourceMapInfobar)}}handleGutterClick(e,t){return!this.muted&&0===t.button&&!t.altKey&&(t.metaKey||t.ctrlKey?(this.#D(e,t.shiftKey),!0):(this.toggleBreakpoint(e,t.shiftKey),!0))}async toggleBreakpoint(e,t){if(this.muted)return;this.activeBreakpointDialog&&this.activeBreakpointDialog.finishEditing(!1,"");const i=this.lineBreakpoints(e);if(!i.length)return void await this.createNewBreakpoint(e,Zi,!0,!1);const o=i.some((e=>!e.enabled()));for(const e of i)t?e.setEnabled(o):(d.userMetrics.actionTaken(d.UserMetrics.Action.BreakpointRemovedFromGutterToggle),e.remove(!1))}async defaultBreakpointLocation(e){if(this.executionLocation){if(this.transformer.uiLocationToEditorLocation(this.executionLocation.lineNumber,this.executionLocation.columnNumber).lineNumber===e.number-1){const t=await this.linePossibleBreakpoints(e);for(const e of t)if(0===e.compareTo(this.executionLocation))return this.executionLocation}}return this.transformer.editorLocationToUILocation(e.number-1)}async createNewBreakpoint(e,t,i,n){if(!this.editor||!o.SourceFrame.isBreakableLine(this.editor.state,e))return;d.userMetrics.actionTaken(d.UserMetrics.Action.ScriptsBreakpointSet),this.#N();const r=await this.defaultBreakpointLocation(e);await this.setBreakpoint(r.lineNumber,r.columnNumber,t,i,n)}async setBreakpoint(e,t,i,o,r){n.Settings.Settings.instance().moduleSetting("breakpoints-active").set(!0);const s=await this.breakpointManager.setBreakpoint(this.uiSourceCode,e,t,i,o,r,"USER_ACTION");return this.breakpointWasSetForTest(e,t,i,o),s}breakpointWasSetForTest(e,t,i,o){}async callFrameChanged(){this.liveLocationPool.disposeAll();const e=t.Context.Context.instance().flavor(r.DebuggerModel.CallFrame);e?await p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().createCallFrameLiveLocation(e.location(),(async t=>{const i=await t.uiLocation();i&&i.uiSourceCode.canonicalScriptId()===this.uiSourceCode.canonicalScriptId()?(this.setExecutionLocation(i),this.updateMissingDebugInfoInfobar(e.missingDebugInfoDetails),this.#N()):this.setExecutionLocation(null)}),this.liveLocationPool):this.setExecutionLocation(null)}setExecutionLocation(e){if(this.executionLocation!==e&&this.editor)if(this.executionLocation=e,e){const t=this.transformer.uiLocationToEditorLocation(e.lineNumber,e.columnNumber),i=c.Position.toOffset(this.editor.state.doc,t);this.editor.dispatch({effects:[c.ExecutionPositionHighlighter.setHighlightedPosition.of(i)]}),this.updateValueDecorations(),this.controlDown&&this.showContinueToLocations()}else this.editor.dispatch({effects:[fo.update.of(s.Decoration.none),Io.update.of(s.Decoration.none),c.ExecutionPositionHighlighter.clearHighlightedPosition.of()]})}dispose(){this.hideIgnoreListInfobar(),this.sourceMapInfobar&&this.sourceMapInfobar.dispose();for(const e of this.scriptFileForDebuggerModel.values())e.removeEventListener("DidMergeToVM",this.didMergeToVM,this),e.removeEventListener("DidDivergeFromVM",this.didDivergeFromVM,this);this.scriptFileForDebuggerModel.clear(),this.popoverHelper?.hidePopover(),this.popoverHelper?.dispose(),this.setExecutionLocation(null),this.breakpointManager.removeEventListener(C.BreakpointManager.Events.BreakpointAdded,this.breakpointChange,this),this.breakpointManager.removeEventListener(C.BreakpointManager.Events.BreakpointRemoved,this.breakpointChange,this),this.uiSourceCode.removeEventListener(i.UISourceCode.Events.WorkingCopyChanged,this.workingCopyChanged,this),this.uiSourceCode.removeEventListener(i.UISourceCode.Events.WorkingCopyCommitted,this.workingCopyCommitted,this),p.IgnoreListManager.IgnoreListManager.instance().removeChangeListener(this.ignoreListCallback),no.delete(this.uiSourceCode),super.dispose(),window.clearTimeout(this.refreshBreakpointsTimeout),this.editor=void 0,t.Context.Context.instance().removeFlavorChangeListener(r.DebuggerModel.CallFrame,this.callFrameChanged,this),this.liveLocationPool.disposeAll()}#N(){if(this.#F)return;this.#F=!0;const e=n.ResourceType.ResourceType.mimeFromURL(this.uiSourceCode.url()),t=n.ResourceType.ResourceType.mediaTypeForMetrics(e??"",this.uiSourceCode.contentType().isFromSourceMap(),b.TextUtils.isMinified(this.uiSourceCode.content()),this.uiSourceCode.url().startsWith("snippet://"),this.uiSourceCode.url().startsWith("debugger://"));d.userMetrics.sourcesPanelFileDebugged(t)}}const so=s.StateEffect.define(),ao=s.StateEffect.define();function co(e,t){const i=[];return e.between(0,t.length,((e,t,o)=>{let n=o.elementClass;/cm-breakpoint-disabled/.test(n)||(n+=" cm-breakpoint-disabled"),i.push(new ho(n,e).range(e))})),s.RangeSet.of(i,!1)}const lo=s.StateField.define({create:()=>({content:s.RangeSet.empty,gutter:s.RangeSet.empty}),update(e,t){t.changes.empty||(e={content:e.content.map(t.changes),gutter:e.gutter.map(t.changes)});for(const i of t.effects)i.is(so)?e=i.value:i.is(ao)&&(e={content:s.RangeSet.empty,gutter:co(e.gutter,t.state.doc)});return e},provide:e=>[s.EditorView.decorations.from(e,(e=>e.content)),s.lineNumberMarkers.from(e,(e=>e.gutter))]});class uo extends s.WidgetType{breakpoint;parent;class;constructor(e,t){super(),this.breakpoint=e,this.parent=t,this.class="cm-inlineBreakpoint",e?.isLogpoint()?this.class+=" cm-inlineBreakpoint-logpoint":e?.condition()&&(this.class+=" cm-inlineBreakpoint-conditional"),e?.enabled()||(this.class+=" cm-inlineBreakpoint-disabled")}eq(e){return e.class===this.class&&e.breakpoint===this.breakpoint}toDOM(){const e=document.createElement("span");return e.className=this.class,e.setAttribute("jslog",`${l.breakpointMarker().track({click:!0})}`),e.addEventListener("click",(e=>{this.parent.onInlineBreakpointMarkerClick(e,this.breakpoint),e.consume()})),e.addEventListener("contextmenu",(e=>{this.parent.onInlineBreakpointMarkerContextMenu(e,this.breakpoint),e.consume()})),e}ignoreEvent(){return!0}}class ho extends s.GutterMarker{elementClass;#U;constructor(e,t){super(),this.elementClass=e,this.#U=t}eq(e){return e.elementClass===this.elementClass}toDOM(e){const t=document.createElement("div");t.setAttribute("jslog",`${l.breakpointMarker().track({click:!0})}`);const i=e.state.doc.lineAt(this.#U).number,n=e.state.facet(o.SourceFrame.LINE_NUMBER_FORMATTER);return t.textContent=n(i,e.state),t}}function po(e,t){return e.enabled()!==t.enabled()?e.enabled()?-1:1:e.bound()!==t.bound()?e.bound()?-1:1:Boolean(e.condition())!==Boolean(t.condition())?Boolean(e.condition())?-1:1:0}function go(){const e=s.StateEffect.define(),t=s.StateField.define({create:()=>s.Decoration.none,update:(t,i)=>i.effects.reduce(((t,i)=>i.is(e)?i.value:t),t.map(i.changes)),provide:e=>s.EditorView.decorations.from(e)});return{update:e,field:t}}const mo=s.Decoration.mark({class:"cm-continueToLocation"}),bo=s.Decoration.mark({class:"cm-continueToLocation cm-continueToLocation-async"}),fo=go(),vo={},So={class:"cm-hasContinueMarkers"},Co=s.EditorView.contentAttributes.compute([fo.field],(e=>e.field(fo.field).size?So:vo));class wo extends s.WidgetType{pairs;constructor(e){super(),this.pairs=e}eq(e){return this.pairs.length===e.pairs.length&&this.pairs.every(((t,i)=>t[0]===e.pairs[i][0]&&t[1]===e.pairs[i][1]))}toDOM(){const e=new y.RemoteObjectPreviewFormatter.RemoteObjectPreviewFormatter,i=document.createElement("div");i.classList.add("cm-variableValues");let o=!0;for(const[n,r]of this.pairs){o?o=!1:t.UIUtils.createTextChild(i,", ");const s=i.createChild("span");t.UIUtils.createTextChild(s,n+" = ");const a=r.preview?r.preview.properties.length:0,c=r.preview?.entries?r.preview.entries.length:0;if(r.preview&&a+c<10)e.appendObjectPreview(s,r.preview,!1);else{const e=y.ObjectPropertiesSection.ObjectPropertiesSection.createPropertyValue(r,!1,!1);s.appendChild(e.element)}}return i}}const Io=go();class yo{blockList=new Set;variables=[]}function xo(e,t,i,o){const n=e.doc.lineAt(t);t=Math.min(n.to,t),i=e.doc.lineAt(i).from;const r=s.syntaxTree(e);function a(e){return("Block"===(t=e.name)||"ForSpec"===t)&&(e.to{if(i.from0?d[d.length-1].blockList.add(n):(i.from>l.to&&(l=e.doc.lineAt(i.from)),h().push({line:l.number-1,from:i.from,id:n})))},leave:e=>{if(u===e.node)u=null;else if(a(e)){const e=d.pop(),t=h();for(const i of e?.variables??[])e?.blockList.has(i.id)||t.push(i)}}}),c}async function ko(e,t){const i=[];for(const o of e.scopeChain()){const e=await t(o.range()?.start??null);if(!e)break;const n=await t(o.range()?.end??null);if(!n)break;const{properties:r}=await m.NamesResolver.resolveScopeInObject(o).getAllProperties(!1,!1);if(!r||r.length>500)break;const s=new Map(r.map((e=>[e.name,e.value])));if(i.push({scopeStart:e,scopeEnd:n,variableMap:s}),"local"===o.type())break}return i}function To(e,t){const i=new Map;for(const{line:n,from:r,id:s}of t){const t=o(s,r,e);if(!t)continue;let a=i.get(n);a||(a=new Map,i.set(n,a)),a.set(s,t)}return i;function o(e,t,i){for(const o of i){if(t=o.scopeEnd)continue;const i=o.variableMap.get(e);if(i)return i}return null}}function Eo(e,t,i){const{main:o}=e.selection;if(!o.empty)return i50||/[^\w_\-$]/.test(e.sliceDoc(r.from,r.to))?null:{from:r.from,to:r.to,containsSideEffects:!1}}}function Lo(e,t){let i=!1;return t.toTree().iterate({enter(o){switch(o.name){case"AssignmentExpression":case"CallExpression":return i=!0,!1;case"ArithOp":{const n=e.sliceString(t.from+o.from,t.from+o.to);if("++"===n||"--"===n)return i=!0,!1;break}}return!0}}),i}const Mo=s.Decoration.mark({class:"cm-evaluatedExpression"}),Po=go(),Fo=s.EditorView.baseTheme({".cm-line::selection":{backgroundColor:"transparent",color:"currentColor"},".cm-gutters .cm-gutter.cm-lineNumbers .cm-gutterElement":{"&:hover, &.cm-breakpoint":{borderStyle:"solid",borderWidth:"1px 4px 1px 1px",marginRight:"-4px",paddingLeft:"8px",lineHeight:"calc(1.2em - 2px)",position:"relative"},"&:hover":{WebkitBorderImage:Do("#ebeced","#ebeced")},"&.cm-breakpoint":{color:"#fff",WebkitBorderImage:Do("#4285f4","#1a73e8")},"&.cm-breakpoint-conditional":{WebkitBorderImage:Do("#f29900","#e37400"),"&::before":{content:'"?"',position:"absolute",top:0,left:"1px"}},"&.cm-breakpoint-logpoint":{WebkitBorderImage:Do("#f439a0","#d01884"),"&::before":{content:'"‥"',position:"absolute",top:"-3px",left:"1px"}}},"&dark .cm-gutters .cm-gutter.cm-lineNumbers .cm-gutterElement":{"&:hover":{WebkitBorderImage:Do("#3c4043","#3c4043")},"&.cm-breakpoint":{WebkitBorderImage:Do("#5186EC","#1a73e8")},"&.cm-breakpoint-conditional":{WebkitBorderImage:Do("#e9a33a","#e37400")},"&.cm-breakpoint-logpoint":{WebkitBorderImage:Do("#E54D9B","#d01884")}},":host-context(.breakpoints-deactivated) & .cm-gutters .cm-gutter.cm-lineNumbers .cm-gutterElement.cm-breakpoint, .cm-gutters .cm-gutter.cm-lineNumbers .cm-gutterElement.cm-breakpoint-disabled":{color:"#1a73e8",WebkitBorderImage:Do("#d9e7fd","#1a73e8"),"&.cm-breakpoint-conditional":{color:"#e37400",WebkitBorderImage:Do("#fcebcc","#e37400")},"&.cm-breakpoint-logpoint":{color:"#d01884",WebkitBorderImage:Do("#fdd7ec","#f439a0")}},":host-context(.breakpoints-deactivated) &dark .cm-gutters .cm-gutter.cm-lineNumbers .cm-gutterElement.cm-breakpoint, &dark .cm-gutters .cm-gutter.cm-lineNumbers .cm-gutterElement.cm-breakpoint-disabled":{WebkitBorderImage:Do("#2a384e","#1a73e8"),"&.cm-breakpoint-conditional":{WebkitBorderImage:Do("#4d3c1d","#e37400")},"&.cm-breakpoint-logpoint":{WebkitBorderImage:Do("#4e283d","#f439a0")}},".cm-inlineBreakpoint":{cursor:"pointer",position:"relative",top:"1px",content:Ao("#4285F4","#1A73E8"),height:"10px","&.cm-inlineBreakpoint-conditional":{content:No("#F29900","#E37400")},"&.cm-inlineBreakpoint-logpoint":{content:Uo("#F439A0","#D01884")}},"&dark .cm-inlineBreakpoint":{content:Ao("#5186EC","#1A73E8"),"&.cm-inlineBreakpoint-conditional":{content:No("#e9a33a","#E37400")},"&.cm-inlineBreakpoint-logpoint":{content:Uo("#E54D9B","#D01884")}},":host-context(.breakpoints-deactivated) & .cm-inlineBreakpoint, .cm-inlineBreakpoint-disabled":{content:Ao("#4285F4","#1A73E8","0.2"),"&.cm-inlineBreakpoint-conditional":{content:No("#F9AB00","#E37400","0.2")},"&.cm-inlineBreakpoint-logpoint":{content:Uo("#F439A0","#D01884","0.2")}},".cm-executionLine":{backgroundColor:"var(--sys-color-yellow-container)",outline:"1px solid var(--sys-color-yellow-outline)",".cm-hasContinueMarkers &":{backgroundColor:"transparent"},"&.cm-highlightedLine":{animation:"cm-fading-highlight-execution 2s 0s"},"&.cm-line::selection, &.cm-line ::selection":{backgroundColor:"var(--sys-color-tonal-container) !important"}},".cm-executionToken":{backgroundColor:"var(--sys-color-state-focus-select)"},"@keyframes cm-fading-highlight-execution":{from:{backgroundColor:"var(--sys-color-tonal-container)"},to:{backgroundColor:"var(--sys-color-yellow-container)"}},".cm-continueToLocation":{cursor:"pointer",backgroundColor:"var(--color-continue-to-location)","&:hover":{backgroundColor:"var(--color-continue-to-location-hover)",border:"1px solid var(--color-continue-to-location-hover-border)",margin:"0 -1px"},"&.cm-continueToLocation-async":{backgroundColor:"var(--color-continue-to-location-async)","&:hover":{backgroundColor:"var(--color-continue-to-location-async-hover)",border:"1px solid var(--color-continue-to-location-async-hover-border)",margin:"0 -1px"}}},".cm-evaluatedExpression":{backgroundColor:"var(--color-evaluated-expression)",border:"1px solid var(--color-evaluated-expression-border)",margin:"0 -1px"},".cm-variableValues":{display:"inline",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"1000px",opacity:"80%",backgroundColor:"var(--color-variable-values)",marginLeft:"10px",padding:"0 5px",userSelect:"text",".cm-executionLine &":{backgroundColor:"transparent",opacity:"50%"}}});function Do(e,t){return`url('data:image/svg+xml,') 1 3 1 1`}function Ao(e,t,i="1"){return`url('data:image/svg+xml,')`}function No(e,t,i="1"){return`url('data:image/svg+xml,')`}function Uo(e,t,i="1"){return`url('data:image/svg+xml,')`}var Bo=Object.freeze({__proto__:null,BreakpointLocationRevealer:class{async reveal(e,t){const{uiLocation:i}=e;Gi.instance().showUILocation(i,t);const o=no.get(i.uiSourceCode);o?o.editBreakpointLocation(e):x.BreakpointsView.BreakpointsSidebarController.instance().breakpointEditFinished(e.breakpoint,!1)}},DebuggerPlugin:ro,computePopoverHighlightRange:Eo,computeScopeMappings:ko,getVariableNamesByLine:xo,getVariableValuesByLine:To});class Ro{query;queryUpperCase;score;sequence;dataUpperCase;fileNameIndex;constructor(e){this.query=e,this.queryUpperCase=e.toUpperCase(),this.score=new Int32Array(2e3),this.sequence=new Int32Array(2e3),this.dataUpperCase="",this.fileNameIndex=0}calculateScore(e,t){if(!e||!this.query)return 0;const i=this.query.length,o=e.length;(!this.score||this.score.length=a?(r[s]=l+1,n[s]=c+d):(r[s]=0,n[s]=a)}t&&this.restoreMatchIndexes(r,i,o,t);return 256*n[i*o-1]+(256-e.length)}testWordStart(e,t){if(0===t)return!0;const i=e.charAt(t-1);return"_"===i||"-"===i||"/"===i||"."===i||" "===i||e[t-1]!==this.dataUpperCase[t-1]&&e[t]===this.dataUpperCase[t]}restoreMatchIndexes(e,t,i,o){let n=t-1,r=i-1;for(;n>=0&&r>=0;)if(0===e[n*i+r])--r;else o.push(r),--n,--r;o.reverse()}singleCharScore(e,t,i,o){const n=this.testWordStart(t,o),r=o>this.fileNameIndex;let s=10;return(0===o||"/"===t[o-1])&&(s+=4),n&&(s+=2),e[i]===t[o]&&e[i]===this.queryUpperCase[i]&&(s+=6),r&&(s+=4),o===this.fileNameIndex+1&&0===i&&(s+=5),r&&n&&(s+=3),s}sequenceCharScore(e,t,i,o,n){let r=10;return o>this.fileNameIndex&&(r+=4),(0===o||"/"===t[o-1])&&(r+=5),r+=4*n,r}match(e,t,i,o,n){return this.queryUpperCase[i]!==this.dataUpperCase[o]?0:n?this.sequenceCharScore(e,t,i,o-n,n):this.singleCharScore(e,t,i,o)}}var jo=Object.freeze({__proto__:null,FilePathScoreFunction:Ro});const Wo={noFilesFound:"No files found",sIgnoreListed:"{PH1} (ignore listed)"},Vo=e.i18n.registerUIStrings("panels/sources/FilteredUISourceCodeListProvider.ts",Wo),Oo=e.i18n.getLocalizedString.bind(void 0,Vo);class Ho extends F.FilteredListWidget.Provider{queryLineNumberAndColumnNumber;defaultScores;scorer;uiSourceCodes;uiSourceCodeIds;query;constructor(e){super(e),this.queryLineNumberAndColumnNumber="",this.defaultScores=null,this.scorer=new Ro(""),this.uiSourceCodes=[],this.uiSourceCodeIds=new Set}projectRemoved(e){const t=e.data;this.populate(t),this.refresh()}populate(e){this.uiSourceCodes=[],this.uiSourceCodeIds.clear();for(const t of i.Workspace.WorkspaceImpl.instance().projects())if(t!==e&&this.filterProject(t))for(const e of t.uiSourceCodes())this.filterUISourceCode(e)&&(this.uiSourceCodes.push(e),this.uiSourceCodeIds.add(e.canonicalScriptId()))}filterUISourceCode(e){if(this.uiSourceCodeIds.has(e.canonicalScriptId()))return!1;if(k.Runtime.experiments.isEnabled("just-my-code")&&p.IgnoreListManager.IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(e))return!1;if(e.isFetchXHR())return!1;const t=g.Persistence.PersistenceImpl.instance().binding(e);return!t||t.fileSystem===e}uiSourceCodeSelected(e,t,i){}filterProject(e){return!0}itemCount(){return this.uiSourceCodes.length}itemContentTypeAt(e){return this.uiSourceCodes[e].contentType()}itemKeyAt(e){return this.uiSourceCodes[e].url()}setDefaultScores(e){this.defaultScores=e}itemScoreAt(e,t){const o=this.uiSourceCodes[e],n=this.defaultScores&&this.defaultScores.get(o)||0;if(!t||t.length<2)return n;this.query!==t&&(this.query=t,this.scorer=new Ro(t));let r=10;o.project().type()!==i.Workspace.projectTypes.FileSystem||g.Persistence.PersistenceImpl.instance().binding(o)||(r=5);let s=0;o.contentType().isFromSourceMap()&&!o.isKnownThirdParty()&&(s=100),o.contentType().isScript()&&(p.IgnoreListManager.IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(o)||(s+=50));const a=o.fullDisplayName();return n+r*(s+this.scorer.calculateScore(a,null))}renderItem(e,i,o,n){o.parentElement?.parentElement?.classList.toggle("search-mode",Boolean(i)),i=this.rewriteQuery(i);const r=this.uiSourceCodes[e],s=r.fullDisplayName(),a=[];new Ro(i).calculateScore(s,a);const c=s.lastIndexOf("/");let l=s;p.IgnoreListManager.IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(r)&&(o.parentElement?.classList.add("is-ignore-listed"),l=Oo(Wo.sIgnoreListed,{PH1:l})),o.textContent=r.displayName()+(this.queryLineNumberAndColumnNumber||""),this.renderSubtitleElement(n,s.substring(0,c+1)),t.Tooltip.Tooltip.install(n,l);const d=[];for(let e=0;ec){for(let e=0;e43&&(o=i.length-43);e.createChild("div","first-part").textContent=i.substring(0,o);e.createChild("div","second-part").textContent=i.substring(o),t.Tooltip.Tooltip.install(e,i)}selectItem(e,t){const i=t.trim().match(/^([^:]*)(:\d+)?(:\d+)?$/);if(!i)return;let o,n;i[2]&&(o=parseInt(i[2].substr(1),10)-1),i[3]&&(n=parseInt(i[3].substr(1),10)-1);const r=null!==e?this.uiSourceCodes[e]:null;this.uiSourceCodeSelected(r,o,n)}rewriteQuery(e){if(!(e=e?e.trim():"")||":"===e)return"";const t=e.match(/^([^:]+)((?::[^:]*){0,2})$/);return this.queryLineNumberAndColumnNumber=t?t[2]:"",t?t[1]:e}uiSourceCodeAdded(e){const t=e.data;this.filterUISourceCode(t)&&this.filterProject(t.project())&&(this.uiSourceCodes.push(t),this.uiSourceCodeIds.add(t.canonicalScriptId()),this.refresh())}notFoundText(){return Oo(Wo.noFilesFound)}attach(){i.Workspace.WorkspaceImpl.instance().addEventListener(i.Workspace.Events.UISourceCodeAdded,this.uiSourceCodeAdded,this),i.Workspace.WorkspaceImpl.instance().addEventListener(i.Workspace.Events.ProjectRemoved,this.projectRemoved,this),this.populate()}detach(){i.Workspace.WorkspaceImpl.instance().removeEventListener(i.Workspace.Events.UISourceCodeAdded,this.uiSourceCodeAdded,this),i.Workspace.WorkspaceImpl.instance().removeEventListener(i.Workspace.Events.ProjectRemoved,this.projectRemoved,this),this.queryLineNumberAndColumnNumber="",this.defaultScores=null}}var _o=Object.freeze({__proto__:null,FilteredUISourceCodeListProvider:Ho});const zo={noFileSelected:"No file selected",noResultsFound:"No results found",typeANumberToGoToThatLine:"Type a number to go to that line",currentPositionXsTypeAnOffset:"Type an offset between 0x{PH1} and 0x{PH2} to navigate to",currentLineSTypeALineNumber:"Type a line number between 1 and {PH1} to navigate to",goToOffsetXs:"Go to offset 0x{PH1}",goToLineSAndColumnS:"Go to line {PH1} and column {PH2}",goToLineS:"Go to line {PH1}"},qo=e.i18n.registerUIStrings("panels/sources/GoToLineQuickOpen.ts",zo),$o=e.i18n.getLocalizedString.bind(void 0,qo);class Go extends F.FilteredListWidget.Provider{#B=[];constructor(){super("source-line")}selectItem(e,t){const i=this.currentSourceFrame();if(!i)return;const o=this.parsePosition(t);o&&i.revealPosition({lineNumber:o.line-1,columnNumber:o.column-1})}itemCount(){return this.#B.length}renderItem(e,i,o,n){const r=a.Icon.create("colon");o.parentElement?.parentElement?.insertBefore(r,o.parentElement),t.UIUtils.createTextChild(o,this.#B[e])}rewriteQuery(e){return""}queryChanged(e){this.#B=[];const t=this.parsePosition(e),i=this.currentSourceFrame();if(t)i?.wasmDisassembly?this.#B.push($o(zo.goToOffsetXs,{PH1:(t.column-1).toString(16)})):t.column&&t.column>1?this.#B.push($o(zo.goToLineSAndColumnS,{PH1:t.line,PH2:t.column})):i&&t.line>i.textEditor.state.doc.lines||this.#B.push($o(zo.goToLineS,{PH1:t.line}));else{if(!i)return void this.#B.push($o(zo.typeANumberToGoToThatLine));const e=i.textEditor.state,t=i.wasmDisassembly;if(t){const e=t.lineNumberToBytecodeOffset(t.lineNumbers-1),i=e.toString(16).length;return void this.#B.push($o(zo.currentPositionXsTypeAnOffset,{PH1:"0".padStart(i,"0"),PH2:e.toString(16)}))}const o=i.editorLocationToUILocation(e.doc.lines-1).lineNumber+1;this.#B.push($o(zo.currentLineSTypeALineNumber,{PH1:o}))}}notFoundText(e){return this.currentSourceFrame()?$o(zo.noResultsFound):$o(zo.noFileSelected)}parsePosition(e){const t=this.currentSourceFrame();if(t?.wasmDisassembly){const t=e.match(/0x([0-9a-fA-F]+)/);if(!t?.[0]||t[0].length!==e.length)return null;return{line:0,column:parseInt(t[0],16)+1}}const i=e.match(/([0-9]+)(\:[0-9]*)?/);if(!i?.[0]||i[0].length!==e.length)return null;const o=parseInt(i[1],10);let n=0;return i[2]&&(n=parseInt(i[2].substring(1),10)),{line:Math.max(0|o,1),column:Math.max(0|n,1)}}currentSourceFrame(){const e=t.Context.Context.instance().flavor(Mi);return e?e.currentSourceFrame():null}}var Ko=Object.freeze({__proto__:null,GoToLineQuickOpen:Go});const Jo={formatS:"Format {PH1}",format:"Format"},Qo=e.i18n.registerUIStrings("panels/sources/InplaceFormatterEditorAction.ts",Jo),Xo=e.i18n.getLocalizedString.bind(void 0,Qo);let Yo;class Zo{button;sourcesView;uiSourceCodeTitleChangedEvent=null;constructor(){}static instance(e={forceNew:null}){const{forceNew:t}=e;return Yo&&!t||(Yo=new Zo),Yo}editorSelected(e){const t=e.data;this.updateButton(t)}editorClosed(e){const{wasSelected:t}=e.data;t&&this.updateButton(null)}updateButton(e){this.uiSourceCodeTitleChangedEvent&&n.EventTarget.removeEventListeners([this.uiSourceCodeTitleChangedEvent]),this.uiSourceCodeTitleChangedEvent=e?e.addEventListener(i.UISourceCode.Events.TitleChanged,(e=>this.updateButton(e.data)),this):null;const t=this.isFormattable(e);this.button.element.classList.toggle("hidden",!t),e&&t&&this.button.setTitle(Xo(Jo.formatS,{PH1:e.name()}))}getOrCreateButton(e){return this.button||(this.sourcesView=e,this.sourcesView.addEventListener("EditorSelected",this.editorSelected.bind(this)),this.sourcesView.addEventListener("EditorClosed",this.editorClosed.bind(this)),this.button=new t.Toolbar.ToolbarButton(Xo(Jo.format),"brackets"),this.button.addEventListener("Click",this.formatSourceInPlace,this),this.updateButton(e.currentUISourceCode())),this.button}isFormattable(e){return!!e&&(!!e.project().canSetFileContent()||null!==g.Persistence.PersistenceImpl.instance().binding(e))}formatSourceInPlace(){const e=this.sourcesView.currentSourceFrame();if(!e)return;const t=e.uiSourceCode();this.isFormattable(t)&&(t.isDirty()?this.contentLoaded(t,e,t.workingCopy()):t.requestContent().then((i=>{this.contentLoaded(t,e,i.content||"")})))}async contentLoaded(e,t,i){const{formattedContent:o,formattedMapping:n}=await w.ScriptFormatter.format(e.contentType(),t.contentType,i);if(e.workingCopy()===o)return;const r=t.textEditor.toLineColumn(t.textEditor.state.selection.main.head),[s,a]=n.originalToFormatted(r.lineNumber,r.columnNumber);e.setWorkingCopy(o),this.sourcesView.showSourceLocation(e,{lineNumber:s,columnNumber:a})}}Fi(Zo.instance);var en=Object.freeze({__proto__:null,InplaceFormatterEditorAction:Zo});var tn=Object.freeze({__proto__:null,OpenFileQuickOpen:class extends Ho{constructor(){super("source-file")}attach(){this.setDefaultScores(Mi.defaultUISourceCodeScores()),super.attach()}uiSourceCodeSelected(e,t,i){d.userMetrics.actionTaken(d.UserMetrics.Action.SelectFileFromFilePicker),e&&("number"==typeof t?n.Revealer.reveal(e.uiLocation(t,i)):n.Revealer.reveal(e))}filterProject(e){return!e.isServiceProject()}renderItem(e,t,i,o){super.renderItem(e,t,i,o);const n=new a.Icon.Icon,r=M.iconDataForResourceType(this.itemContentTypeAt(e));n.data={...r,width:"18px",height:"18px"},i.parentElement?.parentElement?.insertBefore(n,i.parentElement)}renderAsTwoRows(){return!0}}});const on={noFileSelected:"No file selected.",openAJavascriptOrCssFileToSee:"Open a JavaScript or CSS file to see symbols",noResultsFound:"No results found"},nn=e.i18n.registerUIStrings("panels/sources/OutlineQuickOpen.ts",on),rn=e.i18n.getLocalizedString.bind(void 0,nn);function sn(e){function t(t){t=Math.max(0,Math.min(t,e.doc.length));const i=e.doc.lineAt(t);return{lineNumber:i.number-1,columnNumber:t-i.from}}function i(){for(;"ParamList"!==n.name;)n.nextSibling();let t="";if("ParamList"===n.name&&n.firstChild())do{switch(n.name){case"ArrayPattern":t+="[‥]";break;case"ObjectPattern":t+="{‥}";break;case"VariableDefinition":t+=e.sliceDoc(n.from,n.to);break;case"Spread":t+="...";break;case",":t+=", "}}while(n.nextSibling());return`(${t})`}const o=[],n=s.syntaxTree(e).cursor();do{switch(n.name){case"RuleSet":for(n.firstChild();;n.nextSibling()){const i=e.sliceDoc(n.from,n.to),{lineNumber:r,columnNumber:s}=t(n.from);if(o.push({title:i,lineNumber:r,columnNumber:s}),n.nextSibling(),","!==n.name)break}break;case"FunctionDeclaration":case"MethodDeclaration":{let r="";n.firstChild();do{switch(n.name){case"abstract":case"async":case"get":case"set":case"static":r=`${r}${n.name} `;break;case"Star":r+="*";break;case"PropertyDefinition":case"PrivatePropertyDefinition":case"VariableDefinition":{const s=r+e.sliceDoc(n.from,n.to),{lineNumber:a,columnNumber:c}=t(n.from),l=i();o.push({title:s,subtitle:l,lineNumber:a,columnNumber:c});break}}}while(n.nextSibling());break}case"Property":{let r="";n.firstChild();do{if("async"===n.name||"get"===n.name||"set"===n.name)r=`${r}${n.name} `;else{if("Star"!==n.name){if("PropertyDefinition"===n.name){let s=e.sliceDoc(n.from,n.to);const{lineNumber:a,columnNumber:c}=t(n.from);for(;n.nextSibling();){if("ClassExpression"===n.name){s=`class ${s}`,o.push({title:s,lineNumber:a,columnNumber:c});break}if("ArrowFunction"!==n.name&&"FunctionExpression"!==n.name||n.firstChild(),"async"===n.name)r=`async ${r}`;else if("Star"===n.name)r+="*";else if("ParamList"===n.name){s=r+s;const e=i();o.push({title:s,subtitle:e,lineNumber:a,columnNumber:c});break}}break}break}r+="*"}}while(n.nextSibling());break}case"PropertyName":case"VariableDefinition":if(n.matchContext(["ClassDeclaration"])){const i="class "+e.sliceDoc(n.from,n.to),{lineNumber:r,columnNumber:s}=t(n.from);o.push({title:i,lineNumber:r,columnNumber:s})}else if(n.matchContext(["AssignmentExpression","MemberExpression"])||n.matchContext(["VariableDeclaration"])){let r=e.sliceDoc(n.from,n.to);const{lineNumber:s,columnNumber:a}=t(n.from);for(;"Equals"!==n.name;)if(!n.next())return o;if(!n.nextSibling())break;if("ArrowFunction"===n.name||"FunctionExpression"===n.name){n.firstChild();let e="";for(;"ParamList"!==n.name&&("async"===n.name?e=`async ${e}`:"Star"===n.name&&(e+="*"),n.nextSibling()););r=e+r;const t=i();o.push({title:r,subtitle:t,lineNumber:s,columnNumber:a})}else"ClassExpression"===n.name&&(r=`class ${r}`,o.push({title:r,lineNumber:s,columnNumber:a}))}break;case"App":if(n.firstChild()&&n.nextSibling()&&"module"===e.sliceDoc(n.from,n.to)){if(n.nextSibling()&&"Identifier"===n.name){const i=e.sliceDoc(n.from,n.to),{lineNumber:r,columnNumber:s}=t(n.from);o.push({title:i,lineNumber:r,columnNumber:s})}do{if("App"===n.name&&n.firstChild()){if(n.nextSibling()&&"func"===e.sliceDoc(n.from,n.to)&&n.nextSibling()&&"Identifier"===n.name){const i=e.sliceDoc(n.from,n.to),{lineNumber:r,columnNumber:s}=t(n.from),a=[];for(;n.nextSibling();)"App"===n.name&&n.firstChild()&&(n.nextSibling()&&"param"===e.sliceDoc(n.from,n.to)&&(n.nextSibling()&&"Identifier"===n.name?a.push(e.sliceDoc(n.from,n.to)):a.push(`$${a.length}`)),n.parent());const c=`(${a.join(", ")})`;o.push({title:i,subtitle:c,lineNumber:r,columnNumber:s})}n.parent()}}while(n.nextSibling())}break;case"FieldIdentifier":case"Identifier":if(n.matchContext(["FunctionDeclarator"])){const i=e.sliceDoc(n.from,n.to),{lineNumber:r,columnNumber:s}=t(n.from);o.push({title:i,lineNumber:r,columnNumber:s})}break;case"TypeIdentifier":if(n.matchContext(["ClassSpecifier"])){const i=`class ${e.sliceDoc(n.from,n.to)}`,{lineNumber:r,columnNumber:s}=t(n.from);o.push({title:i,lineNumber:r,columnNumber:s})}else if(n.matchContext(["StructSpecifier"])){const i=`struct ${e.sliceDoc(n.from,n.to)}`,{lineNumber:r,columnNumber:s}=t(n.from);o.push({title:i,lineNumber:r,columnNumber:s})}}}while(n.next());return o}class an extends F.FilteredListWidget.Provider{items=[];active=!1;constructor(){super("source-symbol")}attach(){const e=this.currentSourceFrame();e?(this.active=!0,this.items=sn(e.textEditor.state).map((({title:t,subtitle:i,lineNumber:o,columnNumber:n})=>(({lineNumber:o,columnNumber:n}=e.editorLocationToUILocation(o,n)),{title:t,subtitle:i,lineNumber:o,columnNumber:n})))):(this.active=!1,this.items=[])}detach(){this.active=!1,this.items=[]}itemCount(){return this.items.length}itemKeyAt(e){const t=this.items[e];return t.title+(t.subtitle?t.subtitle:"")}itemScoreAt(e,t){const i=this.items[e];return t.split("(")[0].toLowerCase()===i.title.toLowerCase()?1/(1+i.lineNumber):-i.lineNumber-1}renderItem(e,t,i,o){const n=this.items[e],r=a.Icon.create("deployed");i.parentElement?.parentElement?.insertBefore(r,i.parentElement),i.textContent=n.title+(n.subtitle?n.subtitle:""),F.FilteredListWidget.FilteredListWidget.highlightRanges(i,t);const s=this.currentSourceFrame();if(!s)return;const c=i.parentElement?.parentElement?.createChild("span","tag");if(!c)return;const l=s.wasmDisassembly;if(l){const e=l.lineNumberToBytecodeOffset(l.lineNumbers-1).toString(16).length;c.textContent=`:0x${n.columnNumber.toString(16).padStart(e,"0")}`}else c.textContent=`:${n.lineNumber+1}`}selectItem(e,t){if(null===e)return;const i=this.currentSourceFrame();if(!i)return;const o=this.items[e];i.revealPosition({lineNumber:o.lineNumber,columnNumber:o.columnNumber},!0)}currentSourceFrame(){const e=t.Context.Context.instance().flavor(Mi);return e?.currentSourceFrame()??null}notFoundText(){return this.currentSourceFrame()?this.active?rn(on.noResultsFound):rn(on.openAJavascriptOrCssFileToSee):rn(on.noFileSelected)}}var cn=Object.freeze({__proto__:null,OutlineQuickOpen:an,outline:sn}),ln={cssText:`.scope-chain-sidebar-pane-section-header{flex:auto}.scope-chain-sidebar-pane-section-icon{float:left;margin-right:5px}.scope-chain-sidebar-pane-section-subtitle{float:right;margin-left:5px;max-width:55%;text-overflow:ellipsis;overflow:hidden}.scope-chain-sidebar-pane-section-title{font-weight:normal;word-wrap:break-word;white-space:normal}.scope-chain-sidebar-pane-section{padding:2px 4px;flex:none}\n/*# sourceURL=${import.meta.resolve("./scopeChainSidebarPane.css")} */\n`};const dn={loading:"Loading...",notPaused:"Not paused",noVariables:"No variables",closureS:"Closure ({PH1})",closure:"Closure"},un=e.i18n.registerUIStrings("panels/sources/ScopeChainSidebarPane.ts",dn),hn=e.i18n.getLocalizedString.bind(void 0,un);let pn;class gn extends t.Widget.VBox{treeOutline;expandController;linkifier;infoElement;#R=null;constructor(){super(!0),this.registerRequiredCSS(ln),this.contentElement.setAttribute("jslog",`${l.section("sources.scope-chain")}`),this.treeOutline=new y.ObjectPropertiesSection.ObjectPropertiesSectionsTreeOutline,this.treeOutline.registerRequiredCSS(ln),this.treeOutline.hideOverflow(),this.treeOutline.setShowSelectionOnKeyboardFocus(!0),this.expandController=new y.ObjectPropertiesSection.ObjectPropertiesSectionsTreeExpandController(this.treeOutline),this.linkifier=new U.Linkifier.Linkifier,this.infoElement=document.createElement("div"),this.infoElement.className="gray-info-message",this.infoElement.tabIndex=-1,this.flavorChanged(t.Context.Context.instance().flavor(r.DebuggerModel.CallFrame))}static instance(){return pn||(pn=new gn),pn}flavorChanged(e){this.#R?.dispose(),this.#R=null,this.linkifier.reset(),this.contentElement.removeChildren(),this.contentElement.appendChild(this.infoElement),e?(this.infoElement.textContent=hn(dn.loading),this.#R=new m.ScopeChainModel.ScopeChainModel(e),this.#R.addEventListener("ScopeChainUpdated",(e=>this.buildScopeTreeOutline(e.data)),this)):this.infoElement.textContent=hn(dn.notPaused)}focus(){this.hasFocus()||t.Context.Context.instance().flavor(r.DebuggerModel.DebuggerPausedDetails)&&this.treeOutline.forceSelect()}buildScopeTreeOutline(e){const{scopeChain:t}=e;this.treeOutline.removeChildren(),this.contentElement.removeChildren(),this.contentElement.appendChild(this.treeOutline.element);let i=!1;for(const[e,o]of t.entries()){"local"===o.type()&&(i=!0);const t=this.createScopeSectionTreeElement(o);"global"===o.type()?t.collapse():i&&"local"!==o.type()||t.expand(),this.treeOutline.appendChild(t),0===e&&t.select(!0)}this.sidebarPaneUpdatedForTest()}createScopeSectionTreeElement(e){let i=null;"local"!==e.type()&&"closure"!==e.type()||(i=hn(dn.noVariables));let o=e.typeName();if("closure"===e.type()){const i=e.name();o=i?hn(dn.closureS,{PH1:t.UIUtils.beautifyFunctionName(i)}):hn(dn.closure)}let n=e.description();o&&o!==n||(n=null);const r=e.icon(),s=document.createElement("div");if(s.classList.add("scope-chain-sidebar-pane-section-header"),s.classList.add("tree-element-title"),r){const e=document.createElement("img");e.classList.add("scope-chain-sidebar-pane-section-icon"),e.src=r,s.appendChild(e)}s.createChild("div","scope-chain-sidebar-pane-section-subtitle").textContent=n,s.createChild("div","scope-chain-sidebar-pane-section-title").textContent=o;const a=new y.ObjectPropertiesSection.RootElement(e.object(),this.linkifier,i,0,e.extraProperties());return a.title=s,a.listItemElement.classList.add("scope-chain-sidebar-pane-section"),a.listItemElement.setAttribute("aria-label",o),this.expandController.watchSection(o+(n?":"+n:""),a),a}sidebarPaneUpdatedForTest(){}}var mn=Object.freeze({__proto__:null,ScopeChainSidebarPane:gn}),bn={cssText:`.border-container{border-bottom:1px solid var(--sys-color-divider);flex-shrink:0}.automatic-workspace-infobar{border-top:var(--sys-size-1) solid var(--sys-color-divider)}\n/*# sourceURL=${import.meta.resolve("./sourcesNavigator.css")} */\n`};const fn={noWorkspace:"No workspaces set up",explainWorkspace:"Set up workspaces to sync edits directly to the sources you develop.",noLocalOverrides:"No local overrides set up",explainLocalOverrides:"Override network requests and web content locally to mock remote resources.",clearConfiguration:"Clear configuration",selectFolderForOverrides:"Select folder for overrides",noContentScripts:"No content scripts detected",explainContentScripts:"View content scripts served by extensions.",noSnippets:"No snippets saved",explainSnippets:"Save the JavaScript code you run often in a snippet to run it again anytime.",newSnippet:"New snippet",createNewSnippet:"Create new snippet",run:"Run",rename:"Rename…",remove:"Remove",saveAs:"Save as...",automaticWorkspaceFolderDetected:"Workspace folder {PH1} detected",automaticWorkspaceFolderConnect:"Connect"},vn=e.i18n.registerUIStrings("panels/sources/SourcesNavigator.ts",fn),Sn=e.i18n.getLocalizedString.bind(void 0,vn);let Cn,wn;class In extends ft{constructor(){super("navigator-network",!0),this.registerRequiredCSS(bn),r.TargetManager.TargetManager.instance().addEventListener("InspectedURLChanged",this.inspectedURLChanged,this),d.userMetrics.panelLoaded("sources","DevTools.Launch.Sources"),r.TargetManager.TargetManager.instance().addScopeChangeListener(this.onScopeChange.bind(this))}static instance(e={forceNew:null}){const{forceNew:t}=e;return Cn&&!t||(Cn=new In),Cn}acceptProject(e){return e.type()===i.Workspace.projectTypes.Network&&r.TargetManager.TargetManager.instance().isInScope(p.NetworkProject.NetworkProject.getTargetForProject(e))}onScopeChange(){for(const e of i.Workspace.WorkspaceImpl.instance().projects())this.acceptProject(e)?this.tryAddProject(e):this.removeProject(e)}inspectedURLChanged(e){const t=r.TargetManager.TargetManager.instance().scopeTarget();if(e.data!==t)return;const i=t&&t.inspectedURL();if(i)for(const e of this.workspace().uiSourceCodes())this.acceptProject(e.project())&&e.url()===i&&this.revealUISourceCode(e,!0)}uiSourceCodeAdded(e){const t=r.TargetManager.TargetManager.instance().scopeTarget(),i=t&&t.inspectedURL();i&&e.url()===i&&this.revealUISourceCode(e,!0)}}class yn extends ft{toolbar;constructor(){super("navigator-overrides");const e=new t.EmptyWidget.EmptyWidget(Sn(fn.noLocalOverrides),Sn(fn.explainLocalOverrides));this.setPlaceholder(e),e.appendLink("https://developer.chrome.com/docs/devtools/overrides/"),this.toolbar=document.createElement("devtools-toolbar"),this.toolbar.classList.add("navigator-toolbar"),this.contentElement.insertBefore(this.toolbar,this.contentElement.firstChild),g.NetworkPersistenceManager.NetworkPersistenceManager.instance().addEventListener("ProjectChanged",this.updateProjectAndUI,this),this.workspace().addEventListener(i.Workspace.Events.ProjectAdded,this.onProjectAddOrRemoved,this),this.workspace().addEventListener(i.Workspace.Events.ProjectRemoved,this.onProjectAddOrRemoved,this),this.updateProjectAndUI()}static instance(e={forceNew:null}){const{forceNew:t}=e;return wn&&!t||(wn=new yn),wn}onProjectAddOrRemoved(e){const t=e.data;t&&t.type()===i.Workspace.projectTypes.FileSystem&&"overrides"!==g.FileSystemWorkspaceBinding.FileSystemWorkspaceBinding.fileSystemType(t)||this.updateUI()}updateProjectAndUI(){this.reset();const e=g.NetworkPersistenceManager.NetworkPersistenceManager.instance().project();e&&this.tryAddProject(e),this.updateUI()}updateUI(){this.toolbar.removeToolbarItems();const e=g.NetworkPersistenceManager.NetworkPersistenceManager.instance().project();if(e){const i=new t.Toolbar.ToolbarSettingCheckbox(n.Settings.Settings.instance().moduleSetting("persistence-network-overrides-enabled"));this.toolbar.appendToolbarItem(i),this.toolbar.appendToolbarItem(new t.Toolbar.ToolbarSeparator(!0));const o=new t.Toolbar.ToolbarButton(Sn(fn.clearConfiguration),"clear");return o.addEventListener("Click",(()=>{n.Settings.Settings.instance().moduleSetting("persistence-network-overrides-enabled").set(!1),e.remove()})),void this.toolbar.appendToolbarItem(o)}const i=Sn(fn.selectFolderForOverrides),o=new t.Toolbar.ToolbarButton(i,"plus",i);o.addEventListener("Click",(e=>{this.setupNewWorkspace()}),this),this.toolbar.appendToolbarItem(o)}async setupNewWorkspace(){await g.IsolatedFileSystemManager.IsolatedFileSystemManager.instance().addFileSystem("overrides")&&n.Settings.Settings.instance().moduleSetting("persistence-network-overrides-enabled").set(!0)}sourceSelected(e,t){d.userMetrics.actionTaken(d.UserMetrics.Action.OverridesSourceSelected),super.sourceSelected(e,t)}acceptProject(e){return e===g.NetworkPersistenceManager.NetworkPersistenceManager.instance().project()}}var xn=Object.freeze({__proto__:null,ActionDelegate:class{handleAction(e,t){switch(t){case"sources.create-snippet":return E.ScriptSnippetFileSystem.findSnippetsProject().createFile(u.DevToolsPath.EmptyEncodedPathString,null,"").then((e=>n.Revealer.reveal(e))),!0;case"sources.add-folder-to-workspace":return g.IsolatedFileSystemManager.IsolatedFileSystemManager.instance().addFileSystem(),!0}return!1}},ContentScriptsNavigatorView:class extends ft{constructor(){super("navigator-content-scripts");const e=new t.EmptyWidget.EmptyWidget(Sn(fn.noContentScripts),Sn(fn.explainContentScripts));this.setPlaceholder(e),e.appendLink("https://developer.chrome.com/extensions/content_scripts")}acceptProject(e){return e.type()===i.Workspace.projectTypes.ContentScripts}},FilesNavigatorView:class extends ft{#j=g.AutomaticFileSystemManager.AutomaticFileSystemManager.instance();#W=null;#V=[];constructor(){super("navigator-files"),this.registerRequiredCSS(bn);const e=new t.EmptyWidget.EmptyWidget(Sn(fn.noWorkspace),Sn(fn.explainWorkspace));this.setPlaceholder(e),e.appendLink("https://developer.chrome.com/docs/devtools/workspaces/");const i=document.createElement("devtools-toolbar");i.classList.add("navigator-toolbar"),i.appendItemsAtLocation("files-navigator-toolbar").then((()=>{i.empty()||this.contentElement.insertBefore(i,this.contentElement.firstChild)}))}wasShown(){super.wasShown(),this.#V=[this.#j.addEventListener("AutomaticFileSystemChanged",this.#O,this)],this.#O({data:this.#j.automaticFileSystem})}willHide(){n.EventTarget.removeEventListeners(this.#V),this.#O({data:null}),super.willHide()}sourceSelected(e,t){d.userMetrics.actionTaken(d.UserMetrics.Action.WorkspaceSourceSelected),super.sourceSelected(e,t)}acceptProject(e){return e.type()===i.Workspace.projectTypes.FileSystem&&"overrides"!==g.FileSystemWorkspaceBinding.FileSystemWorkspaceBinding.fileSystemType(e)&&!E.ScriptSnippetFileSystem.isSnippetsProject(e)}handleContextMenu(e){const i=new t.ContextMenu.ContextMenu(e);i.defaultSection().appendAction("sources.add-folder-to-workspace",void 0,!0),i.show()}#O(e){const i=e.data;null===i||"disconnected"!==i.state?(this.#W?.dispose(),this.#W=null):(this.#W=t.Infobar.Infobar.create("info",Sn(fn.automaticWorkspaceFolderDetected,{PH1:i.root}),[{text:Sn(fn.automaticWorkspaceFolderConnect),delegate:()=>this.#j.connectAutomaticFileSystem(!0),dismiss:!0,jslogContext:"automatic-workspace-folders.connect"}],n.Settings.Settings.instance().moduleSetting("persistence-automatic-workspace-folders"),"automatic-workspace-folders"),this.#W&&(this.#W.element.classList.add("automatic-workspace-infobar"),this.contentElement.append(this.#W.element)))}},NetworkNavigatorView:In,OverridesNavigatorView:yn,SnippetsNavigatorView:class extends ft{constructor(){super("navigator-snippets");const e=new t.EmptyWidget.EmptyWidget(Sn(fn.noSnippets),Sn(fn.explainSnippets));this.setPlaceholder(e),e.appendLink("https://developer.chrome.com/docs/devtools/javascript/snippets/");const i=document.createElement("devtools-toolbar");i.classList.add("navigator-toolbar");const o=new t.Toolbar.ToolbarButton(Sn(fn.newSnippet),"plus",Sn(fn.newSnippet),"sources.new-snippet");o.addEventListener("Click",(e=>{this.create(E.ScriptSnippetFileSystem.findSnippetsProject(),"")})),i.appendToolbarItem(o),this.contentElement.insertBefore(i,this.contentElement.firstChild)}acceptProject(e){return E.ScriptSnippetFileSystem.isSnippetsProject(e)}handleContextMenu(e){const i=new t.ContextMenu.ContextMenu(e);i.headerSection().appendItem(Sn(fn.createNewSnippet),(()=>this.create(E.ScriptSnippetFileSystem.findSnippetsProject(),"")),{jslogContext:"create-new-snippet"}),i.show()}handleFileContextMenu(e,i){const o=i.uiSourceCode(),n=new t.ContextMenu.ContextMenu(e);n.headerSection().appendItem(Sn(fn.run),(()=>E.ScriptSnippetFileSystem.evaluateScriptSnippet(o)),{jslogContext:"run"}),n.editSection().appendItem(Sn(fn.rename),(()=>this.rename(i,!1)),{jslogContext:"rename"}),n.editSection().appendItem(Sn(fn.remove),(()=>o.project().deleteFile(o)),{jslogContext:"remove"}),n.saveSection().appendItem(Sn(fn.saveAs),this.handleSaveAs.bind(this,o),{jslogContext:"save-as"}),n.show()}async handleSaveAs(e){e.commitWorkingCopy();const{content:t}=await e.requestContent();await i.FileManager.FileManager.instance().save(this.addJSExtension(e.url()),t||"",!0,!1),i.FileManager.FileManager.instance().close(e.url())}addJSExtension(e){return n.ParsedURL.ParsedURL.concatenate(e,".js")}}}),kn={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`},Tn={cssText:`.watch-expression-delete-button{position:absolute;opacity:0%;right:0;.watch-expression-title:hover &{opacity:100%}.watch-expression-title:focus-within &{opacity:100%}}:host-context(.theme-with-dark-background) .watch-expression-delete-button{filter:brightness(1.5)}.watch-expressions{min-height:26px}.watch-expression-title{white-space:nowrap;line-height:20px;display:flex}.watch-expression-title:hover,\n.watch-expression-title:focus-within{padding-right:26px}.watch-expression-object-header .watch-expression-title{margin-left:1px}.watch-expression{position:relative;flex:auto;min-height:20px}.watch-expression .name{color:var(--sys-color-purple);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex-shrink:1000000;min-width:2em}.watch-expression-error{color:var(--sys-color-error)}.watch-expressions-separator{flex-shrink:0;flex-grow:0}.watch-expression .value{white-space:nowrap;display:inline;overflow:hidden;padding-left:4px;text-overflow:ellipsis;flex-shrink:1}.watch-expression .text-prompt{text-overflow:clip;overflow:hidden;white-space:nowrap;padding-left:4px;min-height:18px;line-height:18px;user-select:text}.watch-expression-text-prompt-proxy{margin:2px 12px 2px -4px;padding-bottom:3px}.watch-expression-header{flex:auto;margin-left:-16px;padding-left:15px}li.watch-expression-tree-item{padding-left:4px}li.watch-expression-tree-item.selected{background:var(--sys-color-neutral-container)}li.watch-expression-tree-item.selected:focus{background:var(--sys-color-tonal-container)}li.watch-expression-tree-item.selected:focus-within:focus-visible{background:var(--sys-color-tonal-container)}.watch-expression-header:focus-visible{background:var(--sys-color-tonal-container)}li.watch-expression-editing::before{background-color:transparent}@media (forced-colors: active){.watch-expression-title:hover .watch-expression-delete-button,\n .watch-expressions .dimmed{opacity:100%}li.watch-expression-tree-item *{forced-color-adjust:none;color:ButtonText}li.watch-expression-tree-item:hover{forced-color-adjust:none;background-color:Highlight}li.watch-expression-tree-item:hover *{color:HighlightText}li.watch-expression-tree-item:hover .watch-expression-delete-button{background-color:HighlightText}}\n/*# sourceURL=${import.meta.resolve("./watchExpressionsSidebarPane.css")} */\n`};const En={addWatchExpression:"Add watch expression",refreshWatchExpressions:"Refresh watch expressions",noWatchExpressions:"No watch expressions",deleteAllWatchExpressions:"Delete all watch expressions",addPropertyPathToWatch:"Add property path to watch",deleteWatchExpression:"Delete watch expression",notAvailable:"",copyValue:"Copy value"},Ln=e.i18n.registerUIStrings("panels/sources/WatchExpressionsSidebarPane.ts",En),Mn=e.i18n.getLocalizedString.bind(void 0,Ln);let Pn;class Fn extends t.ThrottledWidget.ThrottledWidget{watchExpressions;emptyElement;watchExpressionsSetting;addButton;refreshButton;treeOutline;expandController;linkifier;constructor(){super(!0),this.registerRequiredCSS(Tn,kn),this.watchExpressions=[],this.watchExpressionsSetting=n.Settings.Settings.instance().createLocalSetting("watch-expressions",[]),this.addButton=new t.Toolbar.ToolbarButton(Mn(En.addWatchExpression),"plus",void 0,"add-watch-expression"),this.addButton.setSize("SMALL"),this.addButton.addEventListener("Click",(e=>{this.addButtonClicked()})),this.refreshButton=new t.Toolbar.ToolbarButton(Mn(En.refreshWatchExpressions),"refresh",void 0,"refresh-watch-expressions"),this.refreshButton.setSize("SMALL"),this.refreshButton.addEventListener("Click",this.update,this),this.contentElement.classList.add("watch-expressions"),this.contentElement.setAttribute("jslog",`${l.section("sources.watch")}`),this.contentElement.addEventListener("contextmenu",this.contextMenu.bind(this),!1),this.treeOutline=new y.ObjectPropertiesSection.ObjectPropertiesSectionsTreeOutline,this.treeOutline.registerRequiredCSS(Tn),this.treeOutline.hideOverflow(),this.treeOutline.setShowSelectionOnKeyboardFocus(!0),this.expandController=new y.ObjectPropertiesSection.ObjectPropertiesSectionsTreeExpandController(this.treeOutline),t.Context.Context.instance().addFlavorChangeListener(r.RuntimeModel.ExecutionContext,this.update,this),t.Context.Context.instance().addFlavorChangeListener(r.DebuggerModel.CallFrame,this.update,this),this.linkifier=new U.Linkifier.Linkifier,this.update()}static instance(){return Pn||(Pn=new Fn),Pn}toolbarItems(){return[this.addButton,this.refreshButton]}focus(){this.hasFocus()||this.watchExpressions.length>0&&this.treeOutline.forceSelect()}saveExpressions(){const e=[];for(let t=0;t1&&e.debugSection().appendItem(Mn(En.deleteAllWatchExpressions),this.deleteAllButtonClicked.bind(this),{jslogContext:"delete-all-watch-expressions"});const o=this.treeOutline.treeElementFromEvent(t);if(!o)return;const n=this.watchExpressions.find((e=>o.hasAncestorOrSelf(e.treeElement())));n&&n.populateContextMenu(e,t)}deleteAllButtonClicked(){this.watchExpressions=[],this.saveExpressions(),this.update()}async focusAndAddExpressionToWatch(e){await t.ViewManager.ViewManager.instance().showView("sources.watch"),this.createWatchExpression(e),this.saveExpressions(),this.update()}handleAction(e,i){const o=t.Context.Context.instance().flavor(ei);if(!o)return!1;const{state:n}=o.textEditor,r=n.sliceDoc(n.selection.main.from,n.selection.main.to);return this.focusAndAddExpressionToWatch(r),!0}appendApplicableItems(e,t,i){i instanceof y.ObjectPropertiesSection.ObjectPropertyTreeElement?i.property.synthetic||t.debugSection().appendItem(Mn(En.addPropertyPathToWatch),(()=>this.focusAndAddExpressionToWatch(i.path())),{jslogContext:"add-property-path-to-watch"}):i.textEditor.state.selection.main.empty||t.debugSection().appendAction("sources.add-to-watch")}}class Dn extends n.ObjectWrapper.ObjectWrapper{treeElementInternal;nameElement;valueElement;expressionInternal;expandController;element;editing;linkifier;textPrompt;result;preventClickTimeout;constructor(e,t,i){super(),this.expressionInternal=e,this.expandController=t,this.element=document.createElement("div"),this.element.classList.add("watch-expression"),this.element.classList.add("monospace"),this.editing=!1,this.linkifier=i,this.createWatchExpression(),this.update()}treeElement(){return this.treeElementInternal}expression(){return this.expressionInternal}async#H(e,t){const i=e.debuggerModel.selectedCallFrame();if(i?.script.isJavaScript()){const e=await m.NamesResolver.allVariablesInCallFrame(i);try{t=await w.FormatterWorkerPool.formatterWorkerPool().javaScriptSubstitute(t,e)}catch{}}return await e.evaluate({expression:t,objectGroup:Dn.watchObjectGroupId,includeCommandLineAPI:!1,silent:!0,returnByValue:!1,generatePreview:!1},!1,!1)}update(){const e=t.Context.Context.instance().flavor(r.RuntimeModel.ExecutionContext);e&&this.expressionInternal?this.#H(e,this.expressionInternal).then((e=>{"object"in e?this.createWatchExpression(e.object,e.exceptionDetails):this.createWatchExpression()})):this.createWatchExpression()}startEditing(){this.editing=!0,this.treeElementInternal.setDisableSelectFocus(!0),this.element.removeChildren();const e=this.element.createChild("div");e.textContent=this.nameElement.textContent,this.textPrompt=new y.ObjectPropertiesSection.ObjectPropertyPrompt,this.textPrompt.renderAsBlock();const t=this.textPrompt.attachAndStartEditing(e,this.finishEditing.bind(this));this.treeElementInternal.listItemElement.classList.add("watch-expression-editing"),this.treeElementInternal.collapse(),t.classList.add("watch-expression-text-prompt-proxy"),t.addEventListener("keydown",this.promptKeyDown.bind(this),!1);const i=this.element.getComponentSelection();i&&i.selectAllChildren(e)}isEditing(){return Boolean(this.editing)}finishEditing(e,t){if(e&&e.consume(t),this.editing=!1,this.treeElementInternal.setDisableSelectFocus(!1),this.treeElementInternal.listItemElement.classList.remove("watch-expression-editing"),this.textPrompt){this.textPrompt.detach();const e=t?this.expressionInternal:this.textPrompt.text();this.textPrompt=void 0,this.element.removeChildren(),this.updateExpression(e)}}dblClickOnWatchExpression(e){e.consume(),this.isEditing()||this.startEditing()}updateExpression(e){this.expressionInternal&&this.expandController.stopWatchSectionsWithId(this.expressionInternal),this.expressionInternal=e,this.update(),this.dispatchEventToListeners("ExpressionUpdated",this)}deleteWatchExpression(e){e.consume(!0),this.updateExpression(null)}createWatchExpression(e,t){this.result=e||null,this.element.removeChildren();const i=this.treeElementInternal;if(this.createWatchExpressionTreeElement(e,t),i?.parent){const e=i.parent,t=e.indexOfChild(i);e.removeChild(i),e.insertChild(this.treeElementInternal,t)}this.treeElementInternal.select()}createWatchExpressionHeader(e,i){const o=this.element.createChild("div","watch-expression-header"),n=new I.Button.Button;n.data={variant:"icon",iconName:"bin",size:"SMALL",jslogContext:"delete-watch-expression"},n.className="watch-expression-delete-button",t.Tooltip.Tooltip.install(n,Mn(En.deleteWatchExpression)),n.addEventListener("click",this.deleteWatchExpression.bind(this),!1),n.addEventListener("keydown",(e=>{"Enter"===e.key&&this.deleteWatchExpression(e)}));const r=o.createChild("div","watch-expression-title tree-element-title");if(r.appendChild(n),this.nameElement=y.ObjectPropertiesSection.ObjectPropertiesSection.createNameElement(this.expressionInternal),t.Tooltip.Tooltip.install(this.nameElement,this.expressionInternal),Boolean(i)||!e)this.valueElement=document.createElement("span"),this.valueElement.classList.add("watch-expression-error"),this.valueElement.classList.add("value"),r.classList.add("dimmed"),this.valueElement.textContent=Mn(En.notAvailable),void 0!==i?.exception?.description&&t.Tooltip.Tooltip.install(this.valueElement,i.exception.description);else{const t=y.ObjectPropertiesSection.ObjectPropertiesSection.createPropertyValueWithCustomSupport(e,Boolean(i),!1,r,this.linkifier);this.valueElement=t.element}const s=document.createElement("span");return s.classList.add("watch-expressions-separator"),s.textContent=": ",r.append(this.nameElement,s,this.valueElement),o}createWatchExpressionTreeElement(e,i){const o=this.createWatchExpressionHeader(e,i);!i&&e&&e.hasChildren&&!e.customPreview()?(o.classList.add("watch-expression-object-header"),this.treeElementInternal=new y.ObjectPropertiesSection.RootElement(e,this.linkifier),this.expandController.watchSection(this.expressionInternal,this.treeElementInternal),this.treeElementInternal.toggleOnClick=!1,this.treeElementInternal.listItemElement.addEventListener("click",this.onSectionClick.bind(this),!1),this.treeElementInternal.listItemElement.addEventListener("dblclick",this.dblClickOnWatchExpression.bind(this))):(o.addEventListener("dblclick",this.dblClickOnWatchExpression.bind(this)),this.treeElementInternal=new t.TreeOutline.TreeElement),this.treeElementInternal.title=this.element,this.treeElementInternal.listItemElement.classList.add("watch-expression-tree-item"),this.treeElementInternal.listItemElement.addEventListener("keydown",(e=>{"Enter"!==e.key||this.isEditing()?"Delete"!==e.key||this.isEditing()||this.deleteWatchExpression(e):(this.startEditing(),e.consume(!0))}))}onSectionClick(e){e.consume(!0);1===e.detail?this.preventClickTimeout=window.setTimeout(function(){if(!this.treeElementInternal)return;this.treeElementInternal.expanded?this.treeElementInternal.collapse():this.editing||this.treeElementInternal.expand()}.bind(this),333):void 0!==this.preventClickTimeout&&(window.clearTimeout(this.preventClickTimeout),this.preventClickTimeout=void 0)}promptKeyDown(e){const t=u.KeyboardUtilities.isEscKey(e);("Enter"===e.key||t)&&this.finishEditing(e,t)}populateContextMenu(e,i){this.isEditing()||e.editSection().appendItem(Mn(En.deleteWatchExpression),this.updateExpression.bind(this,null),{jslogContext:"delete-watch-expression"}),this.isEditing()||!this.result||"number"!==this.result.type&&"string"!==this.result.type||e.clipboardSection().appendItem(Mn(En.copyValue),this.copyValueButtonClicked.bind(this),{jslogContext:"copy-watch-expression-value"});const o=t.UIUtils.deepElementFromEvent(i);o&&this.valueElement.isSelfOrAncestor(o)&&this.result&&e.appendApplicableItems(this.result)}copyValueButtonClicked(){d.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(this.valueElement.textContent)}static watchObjectGroupId="watch-group"}var An=Object.freeze({__proto__:null,WatchExpression:Dn,WatchExpressionsSidebarPane:Fn});export{O as AddSourceMapURLDialog,K as AiWarningInfobarPlugin,te as BreakpointEditDialog,Je as CSSPlugin,ue as CallStackSidebarPane,Se as CategorizedBreakpointL10n,Fe as CoveragePlugin,ot as DebuggerPausedMessage,Bo as DebuggerPlugin,Pt as EditingLocationHistoryManager,jo as FilePathScoreFunction,_o as FilteredUISourceCodeListProvider,Ko as GoToLineQuickOpen,en as InplaceFormatterEditorAction,Tt as NavigatorView,tn as OpenFileQuickOpen,cn as OutlineQuickOpen,_ as Plugin,Kt as ResourceOriginPlugin,mn as ScopeChainSidebarPane,ut as SearchSourcesView,Zt as SnippetsPlugin,xn as SourcesNavigator,Yi as SourcesPanel,ct as SourcesSearchScope,Ui as SourcesView,ki as TabbedEditorContainer,Oi as ThreadsSidebarPane,gi as UISourceCodeFrame,An as WatchExpressionsSidebarPane}; + jslog="${l.link("learn-more")}">${Z(X.learnMoreOnBreakpointTypes)}`,I=a.Icon.create("open-externally","link-icon");w.prepend(I),C.appendChild(w),this.updateTooltip()}saveAndFinish(){this.finishEditing(!0,this.editor.state.doc.toString())}focusEditor(){this.editor.editor.focus()}onTypeChanged(){"REGULAR_BREAKPOINT"!==this.breakpointType?(this.focusEditor(),this.editor.dispatch({effects:this.placeholderCompartment.reconfigure(this.getPlaceholder())}),this.updateTooltip()):this.finishEditing(!0,"")}get breakpointType(){const e=this.typeSelector.selectedOption();return e?e.value:null}getPlaceholder(){const e=this.breakpointType;return"CONDITIONAL_BREAKPOINT"===e?s.placeholder(Z(X.expressionToCheckBeforePausingEg)):"LOGPOINT"===e?s.placeholder(Z(X.logMessageEgXIsX)):[]}updateTooltip(){const e=this.breakpointType;"CONDITIONAL_BREAKPOINT"===e?t.Tooltip.Tooltip.install(this.typeSelector.element,Z(X.pauseOnlyWhenTheConditionIsTrue)):"LOGPOINT"===e&&t.Tooltip.Tooltip.install(this.typeSelector.element,Z(X.logAMessageToConsoleDoNotBreak))}finishEditing(e,t){if(this.finished)return;this.finished=!0,this.editor.remove(),this.#n.pushHistoryItem(t);const i="LOGPOINT"===this.breakpointType;this.onFinish({committed:e,condition:t,isLogpoint:i})}get editorForTest(){return this.editor}}var te=Object.freeze({__proto__:null,BreakpointEditDialog:ee}),ie={cssText:`.call-frame-warnings-message{text-align:center;font-style:italic;padding:4px;color:var(--sys-color-on-surface-yellow);background-color:var(--sys-color-surface-yellow)}.ignore-listed-message{padding:1px}.ignore-listed-message-label{color:var(--sys-color-token-subtle);align-items:center;display:flex}.show-more-message > .link{margin-left:5px}.show-more-message{text-align:center;font-style:italic;padding:4px;border-top:1px solid var(--sys-color-divider)}.call-frame-item{padding:3px 8px 3px 20px;position:relative;min-height:18px;line-height:15px;display:flex;flex-wrap:wrap}.call-frame-title-text{text-overflow:ellipsis;overflow:hidden}.async-header + .call-frame-item{border-top:0}.call-frame-item:not(.async-header){border-top:1px solid var(--sys-color-divider)}.call-frame-item-title,\n.call-frame-location{display:flex;white-space:nowrap}.async-header .call-frame-item-title{font-weight:bold;color:var(--sys-color-on-surface);background-color:var(--sys-color-cdt-base-container);margin-left:-5px;padding:0 5px;z-index:1}.call-frame-item:focus-visible,\n.call-frame-item.async-header:focus-visible .call-frame-item-title{background-color:var(--sys-color-tonal-container)}.ignore-listed-checkbox:focus-visible{outline-width:unset}.call-frame-item:not(.async-header):hover{background-color:var(--sys-color-state-hover-on-subtle)}.call-frame-location{color:var(--sys-color-token-subtle);margin-left:auto;padding:0 10px}.async-header::before{content:" ";width:100%;border-top:1px solid var(--sys-color-divider);margin-top:8px;position:absolute;left:0}.ignore-listed-call-frame{opacity:60%;font-style:italic}.selected-call-frame-icon{display:none;position:absolute;top:3px;left:4px}.call-frame-item.selected .selected-call-frame-icon{display:block}.call-frame-warning-icon{display:block;position:absolute;top:3px;right:4px}@media (forced-colors: active){.call-frame-item:focus-visible,\n .call-frame-item:not(.async-header):hover{forced-color-adjust:none;background-color:Highlight}.call-frame-item:focus-visible *,\n .call-frame-item:not(.async-header):hover *{color:HighlightText}}\n/*# sourceURL=${import.meta.resolve("./callStackSidebarPane.css")} */\n`};const oe={callStack:"Call Stack",notPaused:"Not paused",onIgnoreList:"on ignore list",showIgnorelistedFrames:"Show ignore-listed frames",showMore:"Show more",copyStackTrace:"Copy stack trace",callFrameWarnings:"Some call frames have warnings",debugFileNotFound:'Failed to load debug file "{PH1}".',restartFrame:"Restart frame"},ne=e.i18n.registerUIStrings("panels/sources/CallStackSidebarPane.ts",oe),re=e.i18n.getLocalizedString.bind(void 0,ne);let se;class ae extends t.View.SimpleView{ignoreListMessageElement;ignoreListCheckboxElement;notPausedMessageElement;callFrameWarningsElement;items;list;showMoreMessageElement;showIgnoreListed;locationPool;updateThrottler;maxAsyncStackChainDepth;updateItemThrottler;scheduledForUpdateItems;muteActivateItem;lastDebuggerModel=null;constructor(){super(re(oe.callStack),!0,"sources.callstack"),this.registerRequiredCSS(ie),this.contentElement.setAttribute("jslog",`${l.section("sources.callstack")}`),({element:this.ignoreListMessageElement,checkbox:this.ignoreListCheckboxElement}=this.createIgnoreListMessageElementAndCheckbox()),this.contentElement.appendChild(this.ignoreListMessageElement),this.notPausedMessageElement=this.contentElement.createChild("div","gray-info-message"),this.notPausedMessageElement.textContent=re(oe.notPaused),this.notPausedMessageElement.tabIndex=-1,this.callFrameWarningsElement=this.contentElement.createChild("div","call-frame-warnings-message");const e=new a.Icon.Icon;e.data={iconName:"warning-filled",color:"var(--icon-warning)",width:"14px",height:"14px"},e.classList.add("call-frame-warning-icon"),this.callFrameWarningsElement.appendChild(e),this.callFrameWarningsElement.appendChild(document.createTextNode(re(oe.callFrameWarnings))),this.callFrameWarningsElement.tabIndex=-1,this.items=new t.ListModel.ListModel,this.list=new t.ListControl.ListControl(this.items,this,t.ListControl.ListMode.NonViewport),this.contentElement.appendChild(this.list.element),this.list.element.addEventListener("contextmenu",this.onContextMenu.bind(this),!1),self.onInvokeElement(this.list.element,(e=>{const t=this.list.itemForNode(e.target);t&&(this.activateItem(t),e.consume(!0))})),this.showMoreMessageElement=this.createShowMoreMessageElement(),this.showMoreMessageElement.classList.add("hidden"),this.contentElement.appendChild(this.showMoreMessageElement),this.showIgnoreListed=!1,this.locationPool=new p.LiveLocation.LiveLocationPool,this.updateThrottler=new n.Throttler.Throttler(100),this.maxAsyncStackChainDepth=le,this.update(),this.updateItemThrottler=new n.Throttler.Throttler(100),this.scheduledForUpdateItems=new Set,r.TargetManager.TargetManager.instance().addModelListener(r.DebuggerModel.DebuggerModel,r.DebuggerModel.Events.DebugInfoAttached,this.debugInfoAttached,this)}static instance(e={forceNew:null}){const{forceNew:t}=e;return se&&!t||(se=new ae),se}flavorChanged(e){this.showIgnoreListed=!1,this.ignoreListCheckboxElement.checked=!1,this.maxAsyncStackChainDepth=le,this.update()}debugInfoAttached(){this.update()}setSourceMapSubscription(e){this.lastDebuggerModel!==e&&(this.lastDebuggerModel&&this.lastDebuggerModel.sourceMapManager().removeEventListener(r.SourceMapManager.Events.SourceMapAttached,this.debugInfoAttached,this),this.lastDebuggerModel=e,this.lastDebuggerModel&&this.lastDebuggerModel.sourceMapManager().addEventListener(r.SourceMapManager.Events.SourceMapAttached,this.debugInfoAttached,this))}update(){this.updateThrottler.schedule((()=>this.doUpdate()))}async doUpdate(){this.locationPool.disposeAll(),this.callFrameWarningsElement.classList.add("hidden");const e=t.Context.Context.instance().flavor(r.DebuggerModel.DebuggerPausedDetails);if(this.setSourceMapSubscription(e?.debuggerModel??null),!e)return this.notPausedMessageElement.classList.remove("hidden"),this.ignoreListMessageElement.classList.add("hidden"),this.showMoreMessageElement.classList.add("hidden"),this.items.replaceAll([]),void t.Context.Context.instance().setFlavor(r.DebuggerModel.CallFrame,null);this.notPausedMessageElement.classList.add("hidden");const i=[],o=new Set;for(const t of e.callFrames){const e=de.createForDebuggerCallFrame(t,this.locationPool,this.refreshItem.bind(this));i.push(e),t.missingDebugInfoDetails&&o.add(t.missingDebugInfoDetails.details)}const n=await Promise.all(i);o.size&&(this.callFrameWarningsElement.classList.remove("hidden"),t.Tooltip.Tooltip.install(this.callFrameWarningsElement,Array.from(o).join("\n")));let s=e.debuggerModel,a=e.asyncStackTraceId,c=e.asyncStackTrace,l=e.callFrames;for(let{maxAsyncStackChainDepth:e}=this;e>0;--e){if(!c){if(!a)break;if(a.debuggerId){const e=await r.DebuggerModel.DebuggerModel.modelForDebuggerId(a.debuggerId);if(!e)break;s=e}if(c=await s.fetchAsyncStackTrace(a),!c)break}const e=t.UIUtils.asyncStackTraceLabel(c.description,l);n.push(...await de.createItemsForAsyncStack(e,s,c.callFrames,this.locationPool,this.refreshItem.bind(this))),l=c.callFrames,a=c.parentId,c=c.parent}this.showMoreMessageElement.classList.toggle("hidden",!c),this.items.replaceAll(n);for(const e of this.items)this.refreshItem(e);if(this.maxAsyncStackChainDepth===le){this.list.selectNextItem(!0,!1);const e=this.list.selectedItem();e&&this.activateItem(e)}this.updatedForTest()}updatedForTest(){}refreshItem(e){this.scheduledForUpdateItems.add(e),this.updateItemThrottler.schedule((async()=>{const e=Array.from(this.scheduledForUpdateItems);if(this.scheduledForUpdateItems.clear(),this.muteActivateItem=!0,!this.showIgnoreListed&&this.items.every((e=>e.isIgnoreListed))){this.showIgnoreListed=!0;for(let e=0;ere(oe.debugFileNotFound,{PH1:n.ParsedURL.ParsedURL.extractName(e.resourceUrl)})));t.Tooltip.Tooltip.install(e,[s.missingDebugInfoDetails.details,...o].join("\n")),i.appendChild(e)}return i}heightForItem(e){return console.assert(!1),0}isItemSelectable(e){return!0}selectedItemChanged(e,t,i,o){i&&(i.tabIndex=-1),o&&(this.setDefaultFocusedElement(o),o.tabIndex=0,this.hasFocus()&&o.focus())}updateSelectedItemARIA(e,t){return!0}createIgnoreListMessageElementAndCheckbox(){const e=document.createElement("div");e.classList.add("ignore-listed-message");const t=e.createChild("label");t.classList.add("ignore-listed-message-label");const i=t.createChild("input");i.tabIndex=0,i.type="checkbox",i.classList.add("ignore-listed-checkbox"),t.append(re(oe.showIgnorelistedFrames));return i.addEventListener("click",(()=>{this.showIgnoreListed=i.checked;for(const e of this.items)this.refreshItem(e)})),{element:e,checkbox:i}}createShowMoreMessageElement(){const e=document.createElement("div");e.classList.add("show-more-message"),e.createChild("span");const t=e.createChild("span","link");return t.textContent=re(oe.showMore),t.addEventListener("click",(()=>{this.maxAsyncStackChainDepth+=le,this.update()}),!1),e}onContextMenu(e){const i=this.list.itemForNode(e.target);if(!i)return;const o=new t.ContextMenu.ContextMenu(e),n=i.frame;n&&o.defaultSection().appendItem(re(oe.restartFrame),(()=>{d.userMetrics.actionTaken(d.UserMetrics.Action.StackFrameRestarted),n.restart()}),{disabled:!n.canBeRestarted,jslogContext:"restart-frame"}),o.defaultSection().appendItem(re(oe.copyStackTrace),this.copyStackTrace.bind(this),{jslogContext:"copy-stack-trace"}),i.uiLocation&&this.appendIgnoreListURLContextMenuItems(o,i.uiLocation.uiSourceCode),o.show()}onClick(e){const t=this.list.itemForNode(e.target);t&&this.activateItem(t)}activateItem(e){const i=e.uiLocation;if(this.muteActivateItem||!i)return;this.list.selectItem(e);const o=e.frame,s=this.activeCallFrameItem();o&&s!==e?(o.debuggerModel.setSelectedCallFrame(o),t.Context.Context.instance().setFlavor(r.DebuggerModel.CallFrame,o),s&&this.refreshItem(s),this.refreshItem(e)):n.Revealer.reveal(i)}activeCallFrameItem(){const e=t.Context.Context.instance().flavor(r.DebuggerModel.CallFrame);return e&&this.items.find((t=>t.frame===e))||null}appendIgnoreListURLContextMenuItems(e,t){const i=g.Persistence.PersistenceImpl.instance().binding(t);i&&(t=i.network);const o=e.section("ignoreList");if(!(o.items.length>0))for(const{text:e,callback:i,jslogContext:n}of p.IgnoreListManager.IgnoreListManager.instance().getIgnoreListURLContextMenuItems(t))o.appendItem(e,i,{jslogContext:n})}selectNextCallFrameOnStack(){const e=this.activeCallFrameItem();for(let t=e?this.items.indexOf(e)+1:0;t=0;t--){const e=this.items.at(t);if(e.frame){this.activateItem(e);break}}}copyStackTrace(){const e=[];for(const t of this.items){let i=t.title;t.uiLocation&&(i+=" ("+t.uiLocation.linkText(!0)+")"),e.push(i)}d.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(e.join("\n"))}}const ce=Symbol("element"),le=32;class de{isIgnoreListed;title;linkText;uiLocation;isAsyncHeader;updateDelegate;frame;static async createForDebuggerCallFrame(e,i,o){const n=e.functionName,r=new de(t.UIUtils.beautifyFunctionName(n),o,e);return await p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().createCallFrameLiveLocation(e.location(),r.update.bind(r),i),m.NamesResolver.resolveDebuggerFrameFunctionName(e).then((e=>{e&&e!==n&&(r.title=e,r.updateDelegate(r))})),r}static async createItemsForAsyncStack(e,i,o,n,r){const s=new WeakMap,a=new de(e,r);s.set(a,new Set),a.isAsyncHeader=!0;const c=[],l=[];for(const e of o){const o=new de(t.UIUtils.beautifyFunctionName(e.functionName),d),r=i.createRawLocationByScriptId(e.scriptId,e.lineNumber,e.columnNumber);l.push(p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().createCallFrameLiveLocation(r,o.update.bind(o),n)),c.push(o)}return await Promise.all(l),r(a),[a,...c];function d(e){r(e);let t=!1;const i=s.get(a);i&&(e.isIgnoreListed?(i.delete(e),t=0===i.size):(t=0===i.size,i.add(e)),a.isIgnoreListed=0===i.size),t&&r(a)}}constructor(e,t,i){this.isIgnoreListed=!1,this.title=e,this.linkText="",this.uiLocation=null,this.isAsyncHeader=!1,this.updateDelegate=t,this.frame=i}async update(e){const t=await e.uiLocation();this.isIgnoreListed=await e.isIgnoreListed(),this.linkText=t?t.linkText():"",this.uiLocation=t,this.updateDelegate(this)}}var ue=Object.freeze({__proto__:null,ActionDelegate:class{handleAction(e,t){switch(t){case"debugger.next-call-frame":return ae.instance().selectNextCallFrameOnStack(),!0;case"debugger.previous-call-frame":return ae.instance().selectPreviousCallFrameOnStack(),!0}return!1}},CallStackSidebarPane:ae,Item:de,defaultMaxAsyncStackChainDepth:le,elementSymbol:ce});const he={beforeBidderWorkletBiddingStart:"Bidder Bidding Phase Start",beforeBidderWorkletReportingStart:"Bidder Reporting Phase Start",beforeSellerWorkletScoringStart:"Seller Scoring Phase Start",beforeSellerWorkletReportingStart:"Seller Reporting Phase Start",setTimeoutOrIntervalFired:"{PH1} fired",scriptFirstStatement:"Script First Statement",scriptBlockedByContentSecurity:"Script Blocked by Content Security Policy",requestAnimationFrame:"Request Animation Frame",cancelAnimationFrame:"Cancel Animation Frame",animationFrameFired:"Animation Frame Fired",webglErrorFired:"WebGL Error Fired",webglWarningFired:"WebGL Warning Fired",setInnerhtml:"Set `innerHTML`",createCanvasContext:"Create canvas context",createAudiocontext:"Create `AudioContext`",closeAudiocontext:"Close `AudioContext`",resumeAudiocontext:"Resume `AudioContext`",suspendAudiocontext:"Suspend `AudioContext`",sinkViolations:"Sink Violations",policyViolations:"Policy Violations"},pe=e.i18n.registerUIStrings("panels/sources/CategorizedBreakpointL10n.ts",he),ge=e.i18n.getLazilyComputedLocalizedString.bind(void 0,pe);function me(t){return(ve.get(t)??e.i18n.lockedLazyString(t))()}const be={beforeBidderWorkletBiddingStart:ge(he.beforeBidderWorkletBiddingStart),beforeBidderWorkletReportingStart:ge(he.beforeBidderWorkletReportingStart),beforeSellerWorkletScoringStart:ge(he.beforeSellerWorkletScoringStart),beforeSellerWorkletReportingStart:ge(he.beforeSellerWorkletReportingStart),setTimeout:e.i18n.lockedLazyString("setTimeout"),clearTimeout:e.i18n.lockedLazyString("clearTimeout"),"setTimeout.callback":ge(he.setTimeoutOrIntervalFired,{PH1:"setTimeout"}),setInterval:e.i18n.lockedLazyString("setInterval"),clearInterval:e.i18n.lockedLazyString("clearInterval"),"setInterval.callback":ge(he.setTimeoutOrIntervalFired,{PH1:"setInterval"}),scriptFirstStatement:ge(he.scriptFirstStatement),scriptBlockedByCSP:ge(he.scriptBlockedByContentSecurity),sharedStorageWorkletScriptFirstStatement:ge(he.scriptFirstStatement),requestAnimationFrame:ge(he.requestAnimationFrame),cancelAnimationFrame:ge(he.cancelAnimationFrame),"requestAnimationFrame.callback":ge(he.animationFrameFired),webglErrorFired:ge(he.webglErrorFired),webglWarningFired:ge(he.webglWarningFired),"Element.setInnerHTML":ge(he.setInnerhtml),canvasContextCreated:ge(he.createCanvasContext),"Geolocation.getCurrentPosition":e.i18n.lockedLazyString("getCurrentPosition"),"Geolocation.watchPosition":e.i18n.lockedLazyString("watchPosition"),"Notification.requestPermission":e.i18n.lockedLazyString("requestPermission"),"DOMWindow.close":e.i18n.lockedLazyString("window.close"),"Document.write":e.i18n.lockedLazyString("document.write"),audioContextCreated:ge(he.createAudiocontext),audioContextClosed:ge(he.closeAudiocontext),audioContextResumed:ge(he.resumeAudiocontext),audioContextSuspended:ge(he.suspendAudiocontext)},fe={"trustedtype-policy-violation":ge(he.policyViolations),"trustedtype-sink-violation":ge(he.sinkViolations)},ve=new Map([...Object.entries(be),...Object.entries(fe)]);var Se=Object.freeze({__proto__:null,getLocalizedBreakpointName:me});const Ce={clickToShowCoveragePanel:"Click to show Coverage Panel",showDetails:"Show Details",coverageS:"Coverage: {PH1}",coverageNa:"Coverage: n/a"},we=e.i18n.registerUIStrings("panels/sources/CoveragePlugin.ts",Ce),Ie=e.i18n.getLocalizedString.bind(void 0,we);class ye extends H{originalSourceCode;infoInToolbar;model;coverage;#s;constructor(e,i){super(e),this.originalSourceCode=this.uiSourceCode,this.#s=i,this.infoInToolbar=new t.Toolbar.ToolbarButton(Ie(Ce.clickToShowCoveragePanel),void 0,void 0,"debugger.show-coverage"),this.infoInToolbar.setSecondary(),this.infoInToolbar.addEventListener("Click",(()=>{t.ViewManager.ViewManager.instance().showView("coverage")}));const o=r.TargetManager.TargetManager.instance().primaryPageTarget();o&&(this.model=o.model(f.CoverageModel.CoverageModel),this.model&&(this.model.addEventListener(f.CoverageModel.Events.CoverageReset,this.handleReset,this),this.coverage=this.model.getCoverageForUrl(this.originalSourceCode.url()),this.coverage&&this.coverage.addEventListener(f.CoverageModel.URLCoverageInfo.Events.SizesChanged,this.handleCoverageSizesChanged,this))),this.updateStats()}dispose(){this.coverage&&this.coverage.removeEventListener(f.CoverageModel.URLCoverageInfo.Events.SizesChanged,this.handleCoverageSizesChanged,this),this.model&&this.model.removeEventListener(f.CoverageModel.Events.CoverageReset,this.handleReset,this)}static accepts(e){return e.contentType().isDocumentOrScriptOrStyleSheet()}handleReset(){this.coverage=null,this.updateStats()}handleCoverageSizesChanged(){this.updateStats()}updateStats(){if(this.coverage){this.infoInToolbar.setTitle(Ie(Ce.showDetails));const t=new Intl.NumberFormat(e.DevToolsLocale.DevToolsLocale.instance().locale,{style:"percent",maximumFractionDigits:1});this.infoInToolbar.setText(Ie(Ce.coverageS,{PH1:t.format(this.coverage.usedPercentage())}))}else this.infoInToolbar.setTitle(Ie(Ce.clickToShowCoveragePanel)),this.infoInToolbar.setText(Ie(Ce.coverageNa))}rightToolbarItems(){return[this.infoInToolbar]}editorExtension(){return Me.of([])}getCoverageManager(){return this.uiSourceCode.getDecorationData("coverage")}editorInitialized(e){this.getCoverageManager()&&this.startDecoUpdate(e)}decorationChanged(e,t){"coverage"===e&&this.startDecoUpdate(t)}startDecoUpdate(e){const i=this.getCoverageManager();(i?i.usageByLine(this.uiSourceCode,this.#a(e)):Promise.resolve([])).then((i=>{const o=Boolean(e.state.field(Le,!1));var n;i.length?o?e.dispatch({effects:Ee.of(i)}):e.dispatch({effects:Me.reconfigure([Le.init((e=>Te(i,e))),(n=this.uiSourceCode.url(),s.gutter({markers:e=>e.state.field(Le),domEventHandlers:{click:()=>(t.ViewManager.ViewManager.instance().showView("coverage").then((()=>{const e=t.ViewManager.ViewManager.instance().view("coverage");return e?.widget()})).then((e=>{const t=n.match(/(.*):formatted$/),i=t?.[1]||n;e.selectCoverageItemByUrl(i)})),!0)},class:"cm-coverageGutter"})),Pe])}):o&&e.dispatch({effects:Me.reconfigure([])})}))}#a(e){const t=[];for(let i=1;i<=e.state.doc.lines;++i){const o=e.state.doc.line(i),{lineNumber:n,columnNumber:r}=this.#s.editorLocationToUILocation(i-1,0),{lineNumber:s,columnNumber:a}=this.#s.editorLocationToUILocation(i-1,o.length);t.push(new b.TextRange.TextRange(n,r,s,a))}return t}}const xe=new class extends s.GutterMarker{elementClass="cm-coverageUsed"},ke=new class extends s.GutterMarker{elementClass="cm-coverageUnused"};function Te(e,t){const i=new s.RangeSetBuilder;for(let o=0;os.RangeSet.empty,update:(e,t)=>t.effects.reduce(((e,i)=>i.is(Ee)?Te(i.value,t.state):e),e.map(t.changes))});const Me=new s.Compartment,Pe=s.EditorView.baseTheme({".cm-line::selection":{backgroundColor:"transparent",color:"currentColor"},".cm-coverageGutter":{width:"5px",marginLeft:"3px"},".cm-coverageUnused":{backgroundColor:"var(--app-color-coverage-unused)"},".cm-coverageUsed":{backgroundColor:"var(--app-color-coverage-used)"}});var Fe=Object.freeze({__proto__:null,CoveragePlugin:ye});const De={openColorPicker:"Open color picker.",openCubicBezierEditor:"Open cubic bezier editor.",addSourceMap:"Add source map…"},Ae=e.i18n.registerUIStrings("panels/sources/CSSPlugin.ts",De),Ne=e.i18n.getLocalizedString.bind(void 0,Ae),Ue=new Set(["ColorLiteral","NumberLiteral","StringLiteral","Comment","Important"]);async function Be(e,t,i){const o=s.syntaxTree(e.state).resolveInner(e.pos,-1);if("ClassName"===o.name){h(i);const e=function(e,t){const i=t.getStyleSheetIdsForURL(e);if(0===i.length)throw new Error("Can't find style sheet ID for current URL");return i[0]}(t.url(),i),n=await i.getClassNames(e);return{from:o.from,options:n.map((e=>({type:"constant",label:e})))}}const n=function(e,t){if(Ue.has(e.name))return null;for(let i=e;i&&"StyleSheet"!==i.name&&"Styles"!==i.name&&"CallExpression"!==i.name;i=i.parent)if("Declaration"===i.name){const e=i.getChild("PropertyName"),o=i.getChild(":");return e&&o&&o.to<=t?e:null}return null}(o,e.pos);if(n){const t=r.CSSMetadata.cssMetadata().getPropertyValues(e.state.sliceDoc(n.from,n.to));return{from:"ValueName"===o.name?o.from:e.pos,options:t.map((e=>({type:"constant",label:e}))),validFor:/^[\w\P{ASCII}\-]+$/u}}return null}class Re extends s.WidgetType{#c;#l;#d;constructor(e,t,i){super(),this.#l=e,this.#c=t,this.#d=i}eq(e){return this.#l.equal(e.#l)&&this.#c===e.#c&&this.#d===e.#d}toDOM(e){const t=new S.ColorSwatch.ColorSwatch(Ne(De.openColorPicker));t.renderColor(this.#l);const i=t.createChild("span");return i.textContent=this.#c,i.setAttribute("hidden","true"),t.addEventListener(S.ColorSwatch.ColorChangedEvent.eventName,(i=>{const o=i.data.color.getAuthoredText()??i.data.color.asString();e.dispatch({changes:{from:this.#d,to:this.#d+this.#c.length,insert:o}}),this.#c=o,this.#l=t.getColor()})),t.addEventListener(S.ColorSwatch.ClickEvent.eventName,(i=>{i.consume(!0),e.dispatch({effects:We.of({type:0,pos:e.posAtDOM(t),text:this.#c,swatch:t,color:this.#l})})})),t}ignoreEvent(){return!0}}class je extends s.WidgetType{curve;text;constructor(e,t){super(),this.curve=e,this.text=t}eq(e){return this.curve.asCSSText()===e.curve.asCSSText()&&this.text===e.text}toDOM(e){const i=S.Swatches.BezierSwatch.create();return i.setBezierText(this.text),t.Tooltip.Tooltip.install(i.iconElement(),Ne(De.openCubicBezierEditor)),i.iconElement().addEventListener("click",(t=>{t.consume(!0),e.dispatch({effects:We.of({type:1,pos:e.posAtDOM(i),text:this.text,swatch:i,curve:this.curve})})}),!1),i.hideText(!0),i}ignoreEvent(){return!0}}const We=s.StateEffect.define(),Ve=s.Annotation.define(),Oe=s.StateField.define({create:()=>null,update(e,t){!t.docChanged&&!t.selection||t.annotation(Ve)||(e=null);for(const i of t.effects)i.is(We)&&(e=i.value);return e},provide:e=>s.showTooltip.from(e,(e=>e&&function(e){return{pos:e.pos,arrow:!1,create(t){let i,o,n=e.text;if(0===e.type){const n=new v.Spectrum.Spectrum;o=e=>{n.addEventListener("ColorChanged",e)},n.addEventListener("SizeChanged",(()=>t.requestMeasure())),n.setColor(e.color),i=n}else{const t=new S.BezierEditor.BezierEditor(e.curve);i=t,o=e=>{t.addEventListener("BezierChanged",e)}}const r=document.createElement("div");return r.className="cm-tooltip-swatchEdit",i.markAsRoot(),i.show(r),i.showWidget(),i.element.addEventListener("keydown",(o=>{"Escape"===o.key&&(o.consume(),t.dispatch({effects:We.of(null),changes:n===e.text?void 0:{from:e.pos,to:e.pos+n.length,insert:e.text}}),i.hideWidget(),t.focus())})),i.element.addEventListener("focusout",(e=>{e.relatedTarget&&!i.element.contains(e.relatedTarget)&&(t.dispatch({effects:We.of(null)}),i.hideWidget())}),!1),i.element.addEventListener("mousedown",(e=>e.consume())),{dom:r,resize:!1,offset:{x:-8,y:0},mount:()=>{i.focus(),i.wasShown(),o((i=>{t.dispatch({changes:{from:e.pos,to:e.pos+n.length,insert:i.data},annotations:Ve.of(!0)}),n=i.data}))}}}}}(e)))});function He(e,i,o){const r=new s.RangeSetBuilder;return function(e,i,o,r,a){let c=e.doc.lineAt(i);function l(t,i){return t>=c.to&&(c=e.doc.lineAt(t)),c.text.slice(t-c.from,i-c.from)}const d=s.ensureSyntaxTree(e,o,100);d&&d.iterate({from:i,to:o,enter:i=>{let o;if("ValueName"===i.name||"ColorLiteral"===i.name?o=l(i.from,i.to):"Callee"===i.name&&/^(?:(?:rgba?|hsla?|hwba?|lch|oklch|lab|oklab|color)|cubic-bezier)$/.test(l(i.from,i.to))&&(o=e.sliceDoc(i.from,i.node.parent.to)),o){const e=n.Color.parse(o);if(e)r(i.from,e,o);else{const e=t.Geometry.CubicBezier.parse(o);e&&a(i.from,e,o)}}}})}(e,i,o,((e,t,i)=>{r.add(e,e,s.Decoration.widget({widget:new Re(t,i,e)}))}),((e,t,i)=>{r.add(e,e,s.Decoration.widget({widget:new je(t,i)}))})),r.finish()}const _e=s.ViewPlugin.fromClass(class{decorations;constructor(e){this.decorations=He(e.state,e.viewport.from,e.viewport.to)}update(e){(e.viewportChanged||e.docChanged)&&(this.decorations=He(e.state,e.view.viewport.from,e.view.viewport.to))}},{decorations:e=>e.decorations});function ze(e){if("Unit"===e.name&&(e=e.parent),"NumberLiteral"===e.name){const t=e.lastChild;return{from:e.from,to:t&&"Unit"===t.name?t.from:e.to}}return null}function qe(e,t){const{head:i}=e.state.selection.main,o=s.syntaxTree(e.state).resolveInner(i,-1),n=ze(o)||ze(o.resolve(i,1));if(!n)return!1;const r=Number(e.state.sliceDoc(n.from,n.to));return!isNaN(r)&&(e.dispatch({changes:{from:n.from,to:n.to,insert:String(r+t)},scrollIntoView:!0,userEvent:"insert.modifyUnit"}),!0)}function $e(){let e=null;const i=t.ShortcutRegistry.ShortcutRegistry.instance().getShortcutListener({"sources.increment-css":()=>Promise.resolve(qe(e,1)),"sources.increment-css-by-ten":()=>Promise.resolve(qe(e,10)),"sources.decrement-css":()=>Promise.resolve(qe(e,-1)),"sources.decrement-css-by-ten":()=>Promise.resolve(qe(e,-10))});return s.EditorView.domEventHandlers({keydown:(t,o)=>{const n=e;return e=o,i(t),e=n,t.defaultPrevented}})}class Ge extends H{#u;constructor(e,t){super(e,t),r.TargetManager.TargetManager.instance().observeModels(r.CSSModel.CSSModel,this)}static accepts(e){return e.contentType().hasStyleSheets()}modelAdded(e){e.target()===r.TargetManager.TargetManager.instance().primaryPageTarget()&&(this.#u=e)}modelRemoved(e){this.#u===e&&(this.#u=void 0)}editorExtension(){return[$e(),this.#h(),[_e,Oe,Ke]]}#h(){const{cssCompletionSource:e}=s.css,t=this.uiSourceCode,i=this.#u;return s.autocompletion({override:[async o=>await(await Be(o,t,i)||e(o))]})}populateTextAreaContextMenu(e){const t=this.#u,o=this.uiSourceCode.url();if(this.uiSourceCode.project().type()===i.Workspace.projectTypes.Network&&t&&!p.IgnoreListManager.IgnoreListManager.instance().isUserIgnoreListedURL(o)){const i=Ne(De.addSourceMap);e.debugSection().appendItem(i,(()=>function(e,t){V.createAddSourceMapURLDialog((i=>{p.CSSWorkspaceBinding.CSSWorkspaceBinding.instance().modelToInfo.get(e)?.addSourceMap(t,i)})).show()}(t,o)),{jslogContext:"add-source-map"})}}}const Ke=s.EditorView.baseTheme({".cm-tooltip.cm-tooltip-swatchEdit":{"box-shadow":"var(--sys-elevation-level2)","background-color":"var(--sys-color-base-container-elevated)","border-radius":"var(--sys-shape-corner-extra-small)"}});var Je=Object.freeze({__proto__:null,CSSPlugin:Ge,cssBindings:$e}),Qe={cssText:`.paused-status{margin:6px;padding:4px 10px;border-radius:10px;background-color:var(--sys-color-yellow-container);color:var(--sys-color-on-yellow-container)}.paused-status.error-reason{background-color:var(--sys-color-surface-error);color:var(--sys-color-on-surface-error)}.status-main{padding-left:18px;position:relative}.status-sub:not(:empty){padding-left:15px;padding-top:5px;overflow:hidden;text-overflow:ellipsis}.paused-status.error-reason .status-sub{color:var(--sys-color-error);line-height:11px;max-height:27px;user-select:text}devtools-icon{position:absolute;left:-1px;top:-1px}\n/*# sourceURL=${import.meta.resolve("./debuggerPausedMessage.css")} */\n`};const Xe={pausedOnS:"Paused on {PH1}",childSAdded:"Child {PH1} added",descendantSAdded:"Descendant {PH1} added",descendantSRemoved:"Descendant {PH1} removed",pausedOnEventListener:"Paused on event listener",pausedOnXhrOrFetch:"Paused on XHR or fetch",pausedOnException:"Paused on exception",pausedOnPromiseRejection:"Paused on `promise` rejection",pausedOnAssertion:"Paused on assertion",pausedOnDebuggedFunction:"Paused on debugged function",pausedBeforePotentialOutofmemory:"Paused before potential out-of-memory crash",pausedOnCspViolation:"Paused on CSP violation",trustedTypeSinkViolation:"`Trusted Type` Sink Violation",trustedTypePolicyViolation:"`Trusted Type` Policy Violation",pausedOnBreakpoint:"Paused on breakpoint",debuggerPaused:"Debugger paused",subtreeModifications:"subtree modifications",attributeModifications:"attribute modifications",nodeRemoval:"node removal",webglErrorFiredS:"WebGL Error Fired ({PH1})",scriptBlockedDueToContent:"Script blocked due to Content Security Policy directive: {PH1}"},Ye=e.i18n.registerUIStrings("panels/sources/DebuggerPausedMessage.ts",Xe),Ze=e.i18n.getLocalizedString.bind(void 0,Ye),et=e.i18n.getLazilyComputedLocalizedString.bind(void 0,Ye);class tt{elementInternal;contentElement;constructor(){this.elementInternal=document.createElement("div"),this.elementInternal.classList.add("paused-message"),this.elementInternal.classList.add("flex-none"),this.elementInternal.setAttribute("jslog",`${l.dialog("debugger-paused")}`);const e=t.UIUtils.createShadowRootWithCoreStyles(this.elementInternal,{cssFile:Qe});this.contentElement=e.createChild("div"),t.ARIAUtils.markAsPoliteLiveRegion(this.elementInternal,!1)}element(){return this.elementInternal}static descriptionWithoutStack(e){const t=/^\s+at\s/m.exec(e);return t?e.substring(0,t.index-1):e.substring(0,e.lastIndexOf("\n"))}static async createDOMBreakpointHitMessage(t){const i=document.createElement("span"),o=t.debuggerModel.target().model(r.DOMDebuggerModel.DOMDebuggerModel);if(!t.auxData||!o)return i;const s=o.resolveDOMBreakpointData(t.auxData);if(!s)return i;const c=i.createChild("div","status-main"),l=new a.Icon.Icon;l.data={iconName:"info",color:"var(--sys-color-on-yellow-container)",width:"16px",height:"16px"},c.appendChild(l);const d=it.get(s.type);c.appendChild(document.createTextNode(Ze(Xe.pausedOnS,{PH1:d?d():String(null)})));const u=i.createChild("div","status-sub monospace"),h=await n.Linkifier.Linkifier.linkify(s.node);if(u.appendChild(h),s.targetNode){const t=await n.Linkifier.Linkifier.linkify(s.targetNode);let i;i=s.insertion?s.targetNode===s.node?e.i18n.getFormatLocalizedString(Ye,Xe.childSAdded,{PH1:t}):e.i18n.getFormatLocalizedString(Ye,Xe.descendantSAdded,{PH1:t}):e.i18n.getFormatLocalizedString(Ye,Xe.descendantSRemoved,{PH1:t}),u.appendChild(document.createElement("br")),u.appendChild(i)}return i}static#p(e){if(!e)return"";const{eventName:t,webglErrorName:i,directiveText:o,targetName:n}=e;if("instrumentation:webglErrorFired"===t&&i){const e=i.replace(/^.*(0x[0-9a-f]+).*$/i,"$1");return Ze(Xe.webglErrorFiredS,{PH1:e})}if("instrumentation:scriptBlockedByCSP"===t&&o)return Ze(Xe.scriptBlockedDueToContent,{PH1:o});let s=r.EventBreakpointsModel.EventBreakpointsManager.instance().resolveEventListenerBreakpoint(e);return s?me(s.name):(s=r.DOMDebuggerModel.DOMDebuggerManager.instance().resolveEventListenerBreakpoint(e),s&&n?n+"."+s.name:s?.name??"")}async render(e,i,o){if(this.contentElement.removeChildren(),this.contentElement.hidden=!e,!e)return;const n=this.contentElement.createChild("div","paused-status"),r="exception"===e.reason||"promiseRejection"===e.reason||"assert"===e.reason||"OOM"===e.reason;let s;if("DOM"===e.reason)s=await tt.createDOMBreakpointHitMessage(e);else if("EventListener"===e.reason){const t=tt.#p(e.auxData);s=c(Ze(Xe.pausedOnEventListener),t)}else if("XHR"===e.reason){const t=e.auxData;s=c(Ze(Xe.pausedOnXhrOrFetch),t.url||"")}else if("exception"===e.reason){const t=e.auxData,i=t.description||t.value||"",o=tt.descriptionWithoutStack(i);s=c(Ze(Xe.pausedOnException),o,i)}else if("promiseRejection"===e.reason){const t=e.auxData,i=t.description||t.value||"",o=tt.descriptionWithoutStack(i);s=c(Ze(Xe.pausedOnPromiseRejection),o,i)}else if("assert"===e.reason)s=c(Ze(Xe.pausedOnAssertion));else if("debugCommand"===e.reason)s=c(Ze(Xe.pausedOnDebuggedFunction));else if("OOM"===e.reason)s=c(Ze(Xe.pausedBeforePotentialOutofmemory));else if("CSPViolation"===e.reason&&e.auxData?.violationType){const t=e.auxData.violationType;"trustedtype-sink-violation"===t?s=c(Ze(Xe.pausedOnCspViolation),Ze(Xe.trustedTypeSinkViolation)):"trustedtype-policy-violation"===t&&(s=c(Ze(Xe.pausedOnCspViolation),Ze(Xe.trustedTypePolicyViolation)))}else if(e.callFrames.length){const t=await i.rawLocationToUILocation(e.callFrames[0].location()),n=t?o.findBreakpoint(t):null;s=c(Ze(n?Xe.pausedOnBreakpoint:Xe.debuggerPaused))}else console.warn("ScriptsPanel paused, but callFrames.length is zero.");function c(e,i,o){const n=document.createElement("span"),s=n.createChild("div","status-main"),c=new a.Icon.Icon;if(c.data={iconName:r?"cross-circle-filled":"info",color:r?"var(--icon-error)":"var(--sys-color-on-yellow-container)",width:"16px",height:"16px"},s.appendChild(c),s.appendChild(document.createTextNode(e)),i){const e=n.createChild("div","status-sub monospace");e.textContent=i,t.Tooltip.Tooltip.install(e,o||i)}return n}n.classList.toggle("error-reason",r),s&&n.appendChild(s)}}const it=new Map([["subtree-modified",et(Xe.subtreeModifications)],["attribute-modified",et(Xe.attributeModifications)],["node-removed",et(Xe.nodeRemoval)]]);var ot=Object.freeze({__proto__:null,BreakpointTypeNouns:it,DebuggerPausedMessage:tt}),nt={cssText:`.is-ignore-listed{.tree-element-title,\n .leading-icons{opacity:40%}}.tree-outline li{min-height:20px}.tree-outline li:hover:not(.selected) .selection{display:block;background-color:var(--sys-color-state-hover-on-subtle)}.navigator-fs-folder-tree-item devtools-icon{color:var(--icon-folder-workspace)}.navigator-fs-tree-item devtools-icon{color:var(--icon-file-authored)}.navigator-nw-folder-tree-item devtools-icon{color:var(--icon-folder-deployed)}.navigator-sm-script-tree-item devtools-icon,\n.navigator-script-tree-item devtools-icon,\n.navigator-snippet-tree-item devtools-icon{color:var(--icon-file-script)}.navigator-file-tree-item .ai-button-container{display:none;position:absolute;z-index:999;right:var(--sys-size-3)}.navigator-file-tree-item:hover .ai-button-container{display:inline-flex}.navigator-file-tree-item devtools-icon.dot::before{width:7px;height:7px;top:12px;left:11px}.navigator-file-tree-item:hover:not(.force-white-icons) devtools-icon.dot::before{outline-color:var(--icon-gap-hover)}.navigator-file-tree-item.selected:not(.force-white-icons) devtools-icon.dot::before{outline-color:var(--icon-gap-inactive)}.navigator-file-tree-item.selected.force-white-icons devtools-icon.dot::before{outline-color:var(--icon-gap-focus-selected)}.navigator-sm-stylesheet-tree-item devtools-icon,\n.navigator-stylesheet-tree-item devtools-icon{color:var(--icon-file-styles)}.navigator-image-tree-item devtools-icon,\n.navigator-font-tree-item devtools-icon{color:var(--icon-file-image)}.navigator-nw-folder-tree-item.is-from-source-map devtools-icon{color:var(--icon-folder-authored)}.navigator-fs-tree-item:not(.has-mapped-files, .selected) > :not(.selection),\n.navigator-fs-folder-tree-item:not(.has-mapped-files, .selected) > :not(.selection){color:var(--sys-color-on-surface-subtle);opacity:40%;& devtools-icon{color:var(--sys-color-on-surface-subtle)}}.tree-outline:not(:has(.navigator-deployed-tree-item)) .navigator-sm-folder-tree-item .tree-element-title,\n.tree-outline:not(:has(.navigator-deployed-tree-item)) .navigator-sm-script-tree-item .tree-element-title,\n.tree-outline:not(:has(.navigator-deployed-tree-item)) .navigator-sm-stylesheet-tree-item .tree-element-title{font-style:italic}@media (forced-colors: active){.tree-outline li .leading-icons devtools-icon{color:ButtonText}.tree-outline li:hover:not(.selected) .selection,\n .tree-outline li:hover:not(:has(dt-checkbox)) .selection{forced-color-adjust:none;background-color:Highlight}.tree-outline:not(.hide-selection-when-blurred) li.parent:hover:not(.selected)::before{background-color:HighlightText}.tree-outline:not(.hide-selection-when-blurred) li:hover:not(.selected) devtools-icon,\n .tree-outline li:not(.selected):hover .tree-element-title{forced-color-adjust:none;color:HighlightText}.navigator-fs-tree-item:not(.has-mapped-files, .selected) > :not(.selection),\n .navigator-fs-folder-tree-item:not(.has-mapped-files, .selected) > :not(.selection),\n .is-ignore-listed{filter:none;opacity:100%}}\n/*# sourceURL=${import.meta.resolve("./navigatorTree.css")} */\n`},rt={cssText:`.navigator-toolbar{border-bottom:1px solid var(--sys-color-divider);padding-left:8px}\n/*# sourceURL=${import.meta.resolve("./navigatorView.css")} */\n`};class st{searchId;searchResultCandidates;searchResultCallback;searchFinishedCallback;searchConfig;constructor(){this.searchId=0,this.searchResultCandidates=[],this.searchResultCallback=null,this.searchFinishedCallback=null,this.searchConfig=null}static filesComparator(e,t){if(e.isDirty()&&!t.isDirty())return-1;if(!e.isDirty()&&t.isDirty())return 1;const o=e.project().type()===i.Workspace.projectTypes.FileSystem&&!g.Persistence.PersistenceImpl.instance().binding(e);if(o!==(t.project().type()===i.Workspace.projectTypes.FileSystem&&!g.Persistence.PersistenceImpl.instance().binding(t)))return o?1:-1;const n=e.url(),r=t.url();return n&&!r?-1:!n&&r?1:u.StringUtilities.naturalOrderComparator(e.fullDisplayName(),t.fullDisplayName())}static urlComparator(e,t){return u.StringUtilities.naturalOrderComparator(e.url(),t.url())}performIndexing(e){this.stopSearch();const t=this.projects(),i=new n.Progress.CompositeProgress(e);for(let e=0;et.type()!==i.Workspace.projectTypes.Service&&(!(!e&&t.isServiceProject()&&t.type()!==i.Workspace.projectTypes.Formatter)&&!(!e&&t.type()===i.Workspace.projectTypes.ContentScripts))))}performSearch(e,t,i,o){this.stopSearch(),this.searchResultCandidates=[],this.searchResultCallback=i,this.searchFinishedCallback=o,this.searchConfig=e;const r=[],s=new n.Progress.CompositeProgress(t),a=s.createSubProgress(),c=new n.Progress.CompositeProgress(s.createSubProgress());for(const t of this.projects()){const i=[...t.uiSourceCodes()].length,o=c.createSubProgress(i),n=this.projectFilesMatchingFileQuery(t,e),s=t.findFilesMatchingSearchRequest(e,n,o).then(this.processMatchingFilesForProject.bind(this,this.searchId,t,e,n));r.push(s)}Promise.all(r).then(this.processMatchingFiles.bind(this,this.searchId,a,this.searchFinishedCallback.bind(this,!0)))}projectFilesMatchingFileQuery(e,t,i){const o=[];for(const n of e.uiSourceCodes()){if(!n.contentType().isTextType())continue;if(p.IgnoreListManager.IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(n))continue;const e=g.Persistence.PersistenceImpl.instance().binding(n);e&&e.network===n||(i&&!n.isDirty()||t.filePathMatchesFileQuery(n.fullDisplayName())&&o.push(n))}return o.sort(st.urlComparator),o}processMatchingFilesForProject(e,t,i,o,n){if(e!==this.searchId&&this.searchFinishedCallback)return void this.searchFinishedCallback(!1);let r=[...n.keys()];r.sort(st.urlComparator),r=u.ArrayUtilities.intersectOrdered(r,o,st.urlComparator);const s=this.projectFilesMatchingFileQuery(t,i,!0);r=u.ArrayUtilities.mergeOrdered(r,s,st.urlComparator);const a=[];for(const e of r){const t=p.DefaultScriptMapping.DefaultScriptMapping.scriptForUISourceCode(e);t&&!t.isAnonymousScript()||a.push(e)}a.sort(st.filesComparator),this.searchResultCandidates=u.ArrayUtilities.mergeOrdered(this.searchResultCandidates,a,st.filesComparator)}processMatchingFiles(e,t,i){if(e!==this.searchId&&this.searchFinishedCallback)return void this.searchFinishedCallback(!1);const o=this.searchResultCandidates;if(!o.length)return t.done(),void i();t.setTotalWork(o.length);let n=0;let r=0;for(let e=0;e<20&&e{c.call(this,e,b.ContentData.ContentData.contentDataOrEmpty(t).textObj)}))}function a(){if(n>=o.length)return r?void 0:(t.done(),void i());++r;const e=o[n++];window.setTimeout(s.bind(this,e),0)}function c(e,i){t.incrementWorked(1);let o=[];const n=this.searchConfig,s=n.queries();if(null!==i){for(let e=0;en.Revealer.reveal(o)),{jslogContext:t?"search-in-folder":"search-in-all-files"})}static treeElementsCompare(e,t){const i=ft.treeElementOrder(e),o=ft.treeElementOrder(t);return i>o?1:ie.frame()===i));o&&this.removeUISourceCodeNode(o)}acceptsUISourceCode(e){return this.acceptProject(e.project())}addUISourceCode(e){if(k.Runtime.experiments.isEnabled("just-my-code")&&p.IgnoreListManager.IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(e))return;if(!this.acceptsUISourceCode(e))return;if(e.isFetchXHR())return;const t=p.NetworkProject.NetworkProject.framesForUISourceCode(e);if(t.length)for(const i of t)this.addUISourceCodeNode(e,i);else this.addUISourceCodeNode(e,null);this.uiSourceCodeAdded(e)}addUISourceCodeNode(e,t){const o=e.contentType().isFromSourceMap();let r;r=e.project().type()===i.Workspace.projectTypes.FileSystem?g.FileSystemWorkspaceBinding.FileSystemWorkspaceBinding.relativePath(e).slice(0,-1):n.ParsedURL.ParsedURL.extractPath(e.url()).split("/").slice(1,-1);const s=e.project(),a=p.NetworkProject.NetworkProject.targetForUISourceCode(e),c=this.folderNode(e,s,a,t,e.origin(),r,o),l=new yt(this,e,t),d=c.child(l.id);d&&d instanceof yt?this.uiSourceCodeNodes.set(e,d):(c.appendChild(l),this.uiSourceCodeNodes.set(e,l),l.updateTitleBubbleUp()),this.selectDefaultTreeNode()}uiSourceCodeAdded(e){}uiSourceCodeAddedCallback(e){const t=e.data;this.addUISourceCode(t)}uiSourceCodeRemovedCallback(e){this.removeUISourceCodes([e.data])}tryAddProject(e){this.projectAdded(e);for(const t of e.uiSourceCodes())this.addUISourceCode(t)}projectAdded(e){const t=this.rootOrDeployedNode();!this.acceptProject(e)||e.type()!==i.Workspace.projectTypes.FileSystem||E.ScriptSnippetFileSystem.isSnippetsProject(e)||t.child(e.id())||(t.appendChild(new kt(this,e,e.id(),mt.FileSystem,e.displayName())),this.selectDefaultTreeNode())}selectDefaultTreeNode(){const e=this.rootNode.children();e.length&&!this.scriptsTree.selectedTreeElement&&e[0].treeNode().select(!0,!1)}computeUniqueFileSystemProjectNames(){const e=this.workspaceInternal.projectsForType(i.Workspace.projectTypes.FileSystem);if(!e.length)return;const t=n.Trie.Trie.newArrayTrie(),o=[];for(const i of e){const e=i.fileSystemPath().split("/").reverse();o.push(e),t.add(e)}const r=this.rootOrDeployedNode();for(let i=0;i{await this.removeUISourceCodeFromProject(e)})),e instanceof yt&&e.uiSourceCode().project().removeUISourceCode(e.uiSourceCode().url())}async deleteDirectoryRecursively(e){e instanceof xt&&await(g.NetworkPersistenceManager.NetworkPersistenceManager.instance().project()?.deleteDirectoryRecursively(e.folderPath))}findTopNonMergedNode(e){return e.isMerged&&e.parent instanceof xt?this.findTopNonMergedNode(e.parent):e}handleFolderContextMenu(e,o){const r=o.folderPath||u.DevToolsPath.EmptyEncodedPathString,s=o.project||null,a=new t.ContextMenu.ContextMenu(e);if(ft.appendSearchItem(a,r),s){if(s.type()===i.Workspace.projectTypes.FileSystem){const e=n.ParsedURL.ParsedURL.urlToRawPathString(g.FileSystemWorkspaceBinding.FileSystemWorkspaceBinding.completeURL(s,r),d.Platform.isWin());a.revealSection().appendItem(gt(ht.openFolder),(()=>d.InspectorFrontendHost.InspectorFrontendHostInstance.showItemInFolder(e)),{jslogContext:"open-folder"}),s.canCreateFile()&&a.defaultSection().appendItem(gt(ht.newFile),(()=>{this.handleContextMenuCreate(s,r,void 0)}),{jslogContext:"new-file"})}else if(o.origin&&o.folderPath){const e=n.ParsedURL.ParsedURL.concatenate(o.origin,"/",o.folderPath),t={isContentScript:o.recursiveProperties.exclusivelyContentScripts||!1,isKnownThirdParty:o.recursiveProperties.exclusivelyThirdParty||!1,isCurrentlyIgnoreListed:o.recursiveProperties.exclusivelyIgnored||!1};for(const{text:i,callback:o,jslogContext:n}of p.IgnoreListManager.IgnoreListManager.instance().getIgnoreListFolderContextMenuItems(e,t))a.defaultSection().appendItem(i,o,{jslogContext:n})}s.canExcludeFolder(r)&&a.defaultSection().appendItem(gt(ht.excludeFolder),this.handleContextMenuExclude.bind(this,s,r),{jslogContext:"exclude-folder"}),s.type()===i.Workspace.projectTypes.FileSystem&&(g.FileSystemWorkspaceBinding.FileSystemWorkspaceBinding.fileSystemType(s)!==g.PlatformFileSystem.PlatformFileSystemType.OVERRIDES?o instanceof kt&&a.defaultSection().appendItem(gt(ht.removeFolderFromWorkspace),(async()=>{const e=gt(ht.areYouSureYouWantToRemoveThis,{PH1:o.title});await t.UIUtils.ConfirmDialog.show(gt(ht.workspaceStopSyncing),e,void 0,{okButtonLabel:gt(ht.remove),jslogContext:"remove-folder-from-workspace-confirmation"})&&s.remove()}),{jslogContext:"remove-folder-from-workspace"}):o instanceof kt||a.defaultSection().appendItem(gt(ht.delete),this.handleDeleteFolder.bind(this,o),{jslogContext:"delete"})),a.show()}}rename(e,t){const i=e.uiSourceCode();e.rename(function(o){if(!t)return;o?e.treeElement?.listItemElement.hasFocus()&&this.sourceSelected(i,!0):i.remove()}.bind(this))}async create(e,t,i){let o="";i&&(o=(await i.requestContent()).content||"");const n=await e.createFile(t,null,o);if(!n)return;this.sourceSelected(n,!1);const r=this.revealUISourceCode(n,!0);r&&this.rename(r,!0)}groupingChanged(){this.reset(!0),this.initGrouping(),this.resetWorkspace(i.Workspace.WorkspaceImpl.instance()),this.workspaceInternal.uiSourceCodes().forEach(this.addUISourceCode.bind(this))}ignoreListChanged(){k.Runtime.experiments.isEnabled("just-my-code")?this.groupingChanged():this.rootNode.updateTitleRecursive()}initGrouping(){this.groupByFrame=!0,this.groupByDomain=this.navigatorGroupByFolderSetting.get(),this.groupByFolder=this.groupByDomain,this.navigatorGroupByAuthoredExperiment?this.groupByAuthored=k.Runtime.experiments.isEnabled(this.navigatorGroupByAuthoredExperiment):this.groupByAuthored=!1}resetForTest(){this.reset(),this.workspaceInternal.uiSourceCodes().forEach(this.addUISourceCode.bind(this))}discardFrame(e,t){if(t)return;const i=this.frameNodes.get(e);if(i){i.parent&&i.parent.removeChild(i),this.frameNodes.delete(e);for(const i of e.childFrames)this.discardFrame(i,t)}}targetAdded(e){}targetRemoved(e){const t=this.rootOrDeployedNode(),i=t.child("target:"+e.id());i&&t.removeChild(i)}targetNameChanged(e){const t=e.data,i=this.rootOrDeployedNode().child("target:"+t.id());i&&i.setTitle(t.name())}}const vt=new WeakSet;class St extends t.TreeOutline.TreeElement{nodeType;navigatorView;hoverCallback;node;hovered;isIgnoreListed;isFromSourceMap;constructor(e,i,o,n){super("",!0,St.#b(i)),this.listItemElement.classList.add("navigator-"+i+"-tree-item","navigator-folder-tree-item"),t.ARIAUtils.setLabel(this.listItemElement,`${o}, ${i}`),this.nodeType=i,this.title=o,this.tooltip=o,this.navigatorView=e,this.hoverCallback=n,this.isFromSourceMap=!1;let r="folder";i===mt.Domain?r="cloud":i===mt.Frame?r="frame":i===mt.Worker?r="gears":i===mt.Authored?r="code":i===mt.Deployed&&(r="deployed");const s=a.Icon.create(r);this.setLeadingIcons([s])}async onpopulate(){this.node.populate()}onattach(){this.collapse(),this.node.onattach(),this.listItemElement.addEventListener("contextmenu",this.handleContextMenuEvent.bind(this),!1),this.listItemElement.addEventListener("mousemove",this.mouseMove.bind(this),!1),this.listItemElement.addEventListener("mouseleave",this.mouseLeave.bind(this),!1)}setIgnoreListed(e){this.isIgnoreListed!==e&&(this.isIgnoreListed=e,this.listItemElement.classList.toggle("is-ignore-listed",e),this.updateTooltip())}setFromSourceMap(e){this.isFromSourceMap=e,this.listItemElement.classList.toggle("is-from-source-map",e)}setNode(e){this.node=e,this.updateTooltip(),t.ARIAUtils.setLabel(this.listItemElement,`${this.title}, ${this.nodeType}`)}updateTooltip(){if(this.node.tooltip)this.tooltip=this.node.tooltip;else{const e=[];let t=this.node;for(;t&&!t.isRoot()&&t.type===this.node.type;)e.push(t.title),t=t.parent;e.reverse();let i=e.join("/");this.isIgnoreListed&&(i=gt(ht.sIgnoreListed,{PH1:i})),this.tooltip=i}}handleContextMenuEvent(e){this.node&&(this.select(),this.navigatorView.handleFolderContextMenu(e,this.node))}mouseMove(e){!this.hovered&&this.hoverCallback&&(this.hovered=!0,this.hoverCallback(!0))}mouseLeave(e){this.hoverCallback&&(this.hovered=!1,this.hoverCallback(!1))}static#b(e){switch(e){case mt.Domain:return"domain";case mt.Frame:return"frame";case mt.Worker:return"worker";case mt.Authored:return"authored";case mt.Deployed:return"deployed"}return"folder"}}class Ct extends t.TreeOutline.TreeElement{nodeType;node;navigatorView;uiSourceCodeInternal;aiButtonContainer;constructor(e,i,o,r){super("",!1,i.contentType().name()),this.nodeType=mt.File,this.node=r,this.title=o,this.listItemElement.classList.add("navigator-"+i.contentType().name()+"-tree-item","navigator-file-tree-item"),this.tooltip=i.url(),t.ARIAUtils.setLabel(this.listItemElement,`${i.name()}, ${this.nodeType}`),n.EventTarget.fireEvent("source-tree-file-added",i.fullDisplayName()),this.navigatorView=e,this.uiSourceCodeInternal=i,this.updateIcon(),this.titleElement.setAttribute("jslog",`${l.value("title").track({change:!0})}`)}updateIcon(){const e=M.getIconForSourceFile(this.uiSourceCodeInternal);this.setLeadingIcons([e])}updateAccessibleName(){t.ARIAUtils.setLabel(this.listItemElement,`${this.uiSourceCodeInternal.name()}, ${this.nodeType}`)}createAiButton(){if(!t.ActionRegistry.ActionRegistry.instance().hasAction("drjones.sources-floating-button"))return;if(!this.uiSourceCode.contentType().isTextType()||E.ScriptSnippetFileSystem.isSnippetsUISourceCode(this.uiSourceCode))return;const e=t.ActionRegistry.ActionRegistry.instance().getAction("drjones.sources-floating-button");if(!this.aiButtonContainer){this.aiButtonContainer=this.listItemElement.createChild("span","ai-button-container");const t=new L.FloatingButton.FloatingButton({title:e.title(),iconName:"smart-assistant"});t.addEventListener("click",(t=>{t.stopPropagation(),this.navigatorView.sourceSelected(this.uiSourceCode,!1),e.execute()}),{capture:!0}),t.addEventListener("mousedown",(e=>{e.stopPropagation()}),{capture:!0}),this.aiButtonContainer.appendChild(t)}}get uiSourceCode(){return this.uiSourceCodeInternal}onattach(){this.listItemElement.draggable=!0,this.listItemElement.addEventListener("click",this.onclick.bind(this),!1),this.listItemElement.addEventListener("contextmenu",this.handleContextMenuEvent.bind(this),!1),this.listItemElement.addEventListener("dragstart",this.ondragstart.bind(this),!1),this.createAiButton()}shouldRenameOnMouseDown(){if(!this.uiSourceCodeInternal.canRename())return!1;if(!this.treeOutline)return!1;return this===this.treeOutline.selectedTreeElement&&this.treeOutline.element.hasFocus()&&!t.UIUtils.isBeingEdited(this.treeOutline.element)}selectOnMouseDown(e){1===e.which&&this.shouldRenameOnMouseDown()?window.setTimeout(function(){this.shouldRenameOnMouseDown()&&this.navigatorView.rename(this.node,!1)}.bind(this),300):super.selectOnMouseDown(e)}ondragstart(e){e.dataTransfer&&(e.dataTransfer.setData("text/plain",this.uiSourceCodeInternal.url()),e.dataTransfer.effectAllowed="copy")}onspace(){return this.navigatorView.sourceSelected(this.uiSourceCode,!0),!0}onclick(e){this.navigatorView.sourceSelected(this.uiSourceCode,!1)}ondblclick(e){const t=1===e.button;return this.navigatorView.sourceSelected(this.uiSourceCode,!t),!1}onenter(){return this.navigatorView.sourceSelected(this.uiSourceCode,!0),!0}ondelete(){return!0}handleContextMenuEvent(e){this.select(),this.navigatorView.handleFileContextMenu(e,this.node)}}class wt{id;navigatorView;type;populated;isMerged;parent;title;tooltip;recursiveProperties;#f=[];#v=new Map;constructor(e,t,i,o){this.id=t,this.navigatorView=e,this.type=i,this.tooltip=o,this.populated=!1,this.isMerged=!1,this.recursiveProperties={exclusivelySourceMapped:null,exclusivelyIgnored:null,exclusivelyContentScripts:null,exclusivelyThirdParty:null}}treeNode(){throw new Error("Not implemented")}dispose(){}updateTitle(){}updateTitleRecursive(){for(const e of this.children())e.updateTitleRecursive();this.updateTitle()}updateTitleBubbleUp(){this.updateTitle(),this.parent&&this.parent.updateTitleBubbleUp()}isRoot(){return!1}hasChildren(){return!0}onattach(){}setTitle(e){throw new Error("Not implemented")}populate(){this.isPopulated()||(this.parent&&this.parent.populate(),this.populated=!0,this.wasPopulated())}wasPopulated(){const e=this.children();for(let t=0;tt.id===e.id));t>=0&&this.#f.splice(t,1),this.#v.delete(e.id),e.parent=null,e.dispose()}reset(){this.#f=[],this.#v.clear()}updateId(e){this.parent&&(this.parent.#v.delete(this.id),this.parent.#v.set(e,this)),this.id=e}}class It extends wt{constructor(e){super(e,"",mt.Root)}isRoot(){return!0}treeNode(){return this.navigatorView.scriptsTree.rootElement()}}class yt extends wt{uiSourceCodeInternal;treeElement;eventListeners;frameInternal;constructor(e,t,o){super(e,"UISourceCode:"+t.canonicalScriptId(),mt.File),this.uiSourceCodeInternal=t,this.treeElement=null,this.eventListeners=[],this.frameInternal=o,this.recursiveProperties.exclusivelySourceMapped=t.contentType().isFromSourceMap(),t.contentType().isScript()&&(this.recursiveProperties.exclusivelyThirdParty=t.isKnownThirdParty(),this.recursiveProperties.exclusivelyContentScripts=t.project().type()===i.Workspace.projectTypes.ContentScripts)}frame(){return this.frameInternal}uiSourceCode(){return this.uiSourceCodeInternal}treeNode(){if(this.treeElement)return this.treeElement;this.treeElement=new Ct(this.navigatorView,this.uiSourceCodeInternal,"",this),this.updateTitle();const e=this.updateTitle.bind(this,void 0);return this.eventListeners=[this.uiSourceCodeInternal.addEventListener(i.UISourceCode.Events.TitleChanged,e),this.uiSourceCodeInternal.addEventListener(i.UISourceCode.Events.WorkingCopyChanged,e),this.uiSourceCodeInternal.addEventListener(i.UISourceCode.Events.WorkingCopyCommitted,e)],this.treeElement}updateTitle(e){const t=p.IgnoreListManager.IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(this.uiSourceCodeInternal);if((this.uiSourceCodeInternal.contentType().isScript()||t)&&(this.recursiveProperties.exclusivelyIgnored=t),!this.treeElement)return;let i=this.uiSourceCodeInternal.displayName();!e&&this.uiSourceCodeInternal.isDirty()&&(i="*"+i),this.treeElement.title=i,this.treeElement.updateIcon(),this.treeElement.listItemElement.classList.toggle("is-ignore-listed",t);let o=this.uiSourceCodeInternal.url();this.uiSourceCodeInternal.contentType().isFromSourceMap()&&(o=gt(ht.sFromSourceMap,{PH1:this.uiSourceCodeInternal.displayName()})),t&&(o=gt(ht.sIgnoreListed,{PH1:o})),this.treeElement.tooltip=o,this.treeElement.updateAccessibleName(),this.updateId("UISourceCode:"+this.uiSourceCodeInternal.canonicalScriptId())}hasChildren(){return!1}dispose(){n.EventTarget.removeEventListeners(this.eventListeners)}reveal(e){this.parent&&(this.parent.populate(),this.parent.treeNode().expand()),this.treeElement&&(this.treeElement.reveal(!0),e&&this.treeElement.select(!0))}rename(e){if(!this.treeElement)return;if(this.treeElement.listItemElement.focus(),!this.treeElement.treeOutline)return;const i=this.treeElement.treeOutline.element;t.UIUtils.markBeingEdited(i,!0);const o=o=>{if(!o)return t.UIUtils.markBeingEdited(i,!1),this.updateTitle(),void this.rename(e);if(this.treeElement){const{parent:e}=this.treeElement;e&&(e.removeChild(this.treeElement),e.appendChild(this.treeElement),this.treeElement.select())}n(!0)},n=o=>{t.UIUtils.markBeingEdited(i,!1),this.updateTitle(),e&&e(o)};this.updateTitle(!0),this.treeElement.startEditingTitle(new t.InplaceEditor.Config(((e,t,i)=>{if(t!==i)return this.treeElement&&(this.treeElement.title=t),void this.uiSourceCodeInternal.rename(t).then(o);n(!0)}),(()=>n(!1)),void 0))}}class xt extends wt{project;folderPath;origin;title;treeElement;constructor(e,t,i,o,n,r,s){super(e,i,o),this.project=t,this.folderPath=n,this.title=r,this.origin=s}treeNode(){return this.treeElement||(this.treeElement=this.createTreeElement(this.title,this),this.updateTitle()),this.treeElement}updateTitle(){let e;for(e in this.recursiveProperties){let t=null;for(const i of this.children()){if(!1===i.recursiveProperties[e]){t=!1;break}i.recursiveProperties[e]&&(t=!0)}this.recursiveProperties[e]=t}if(!this.treeElement)return;if(this.treeElement.setFromSourceMap(this.recursiveProperties.exclusivelySourceMapped||!1),this.treeElement.setIgnoreListed(this.recursiveProperties.exclusivelyIgnored||!1),!this.project||this.project.type()!==i.Workspace.projectTypes.FileSystem)return;const t=n.ParsedURL.ParsedURL.concatenate(g.FileSystemWorkspaceBinding.FileSystemWorkspaceBinding.fileSystemPath(this.project.id()),"/",this.folderPath),o=g.Persistence.PersistenceImpl.instance().filePathHasBindings(t);this.treeElement.listItemElement.classList.toggle("has-mapped-files",o)}createTreeElement(e,t){const i=new St(this.navigatorView,this.type,e);return i.setNode(t),i}wasPopulated(){this.treeElement&&this.treeElement.node===this&&this.addChildrenRecursive()}addChildrenRecursive(){const e=this.children();for(let t=0;te.title)).join("/"),r=[];o=t;do{r.push(o),i=o.children(),o=1===i.length?i[0]:null}while(o?.isMerged);if(!this.isPopulated()){this.treeElement.title=n,this.treeElement.setNode(this);for(let e=0;ee.title)).join("/"),s.parent&&this.navigatorView.removeChild(s.parent,s),this.navigatorView.appendChild(this.treeElement,s),s.expanded&&a.expand(),this.updateTitle()}this.isPopulated()&&this.navigatorView.appendChild(this.treeElement,e.treeNode())}willRemoveChild(e){const t=e;!t.isMerged&&this.isPopulated()&&this.treeElement&&t.treeElement&&this.navigatorView.removeChild(this.treeElement,t.treeElement)}}class kt extends wt{project;title;hoverCallback;treeElement;constructor(e,t,i,o,n,r){super(e,i,o,r),this.project=t,this.title=n,this.populate()}setHoverCallback(e){this.hoverCallback=e}treeNode(){return this.treeElement||(this.treeElement=new St(this.navigatorView,this.type,this.title,this.hoverCallback),this.treeElement.setNode(this)),this.treeElement}onattach(){this.updateTitle()}updateTitle(){if(!this.treeElement||!this.project||this.project.type()!==i.Workspace.projectTypes.FileSystem)return;const e=g.FileSystemWorkspaceBinding.FileSystemWorkspaceBinding.fileSystemPath(this.project.id()),t=this.treeElement.listItemElement.classList.contains("has-mapped-files"),o=g.Persistence.PersistenceImpl.instance().filePathHasBindings(e);t!==o&&(this.treeElement.listItemElement.classList.toggle("has-mapped-files",o),this.treeElement.childrenListElement.hasFocus()||(o?this.treeElement.expand():this.treeElement.collapse()))}setTitle(e){this.title=e,this.treeElement&&(this.treeElement.title=this.title)}}var Tt=Object.freeze({__proto__:null,NavigatorFolderTreeElement:St,NavigatorFolderTreeNode:xt,NavigatorGroupTreeNode:kt,NavigatorRootTreeNode:It,NavigatorSourceTreeElement:Ct,NavigatorTreeNode:wt,NavigatorUISourceCodeTreeNode:yt,NavigatorView:ft,Types:mt}),Et={cssText:`.paused-message{align-self:center;width:fit-content}.scripts-debug-toolbar{position:absolute;top:0;width:100%;background-color:var(--app-color-toolbar-background);border-bottom:1px solid var(--sys-color-divider);overflow:hidden;z-index:1}.scripts-debug-toolbar-drawer{flex:0 0 52px;transition:margin-top 0.1s ease-in-out;margin-top:-26px;padding-top:25px;background-color:var(--sys-color-cdt-base-container);overflow:hidden;white-space:nowrap}.scripts-debug-toolbar-drawer.expanded{margin-top:0}.scripts-debug-toolbar-drawer > dt-checkbox{display:none;padding-left:3px;height:28px}.scripts-debug-toolbar-drawer.expanded > dt-checkbox{display:flex}.y-overflow-only{overflow:hidden auto;background-color:var(--sys-color-cdt-base-container)}.cursor-auto{cursor:auto}.navigator-tabbed-pane{background-color:var(--sys-color-cdt-base-container)}\n/*# sourceURL=${import.meta.resolve("./sourcesPanel.css")} */\n`};class Lt{sourcesView;entries=[];current=-1;revealing=!1;constructor(e){this.sourcesView=e}trackSourceFrameCursorJumps(e){e.addEventListener("EditorUpdate",(t=>this.onEditorUpdate(t.data,e)))}onEditorUpdate(e,t){e.docChanged&&this.mapEntriesFor(t.uiSourceCode(),e.changes);const i=e.startState.selection.main,o=e.state.selection.main;!this.revealing&&i.anchor!==o.anchor&&e.transactions.some((e=>Boolean(e.isUserEvent("select.pointer")||e.isUserEvent("select.reveal")||e.isUserEvent("select.search"))))&&(this.updateCurrentState(t.uiSourceCode(),i.head),this.entries.length>this.current+1&&(this.entries.length=this.current+1),this.entries.push(new Mt(t.uiSourceCode(),o.head)),this.current++,this.entries.length>20&&(this.entries.shift(),this.current--))}updateCurrentState(e,t){if(!this.revealing){const i=this.current>=0?this.entries[this.current]:null;i?.matches(e)&&(i.position=t)}}mapEntriesFor(e,t){for(const i of this.entries)i.matches(e)&&(i.position=t.mapPos(i.position))}reveal(e){const t=i.Workspace.WorkspaceImpl.instance().uiSourceCode(e.projectId,e.url);t&&(this.revealing=!0,this.sourcesView.showSourceLocation(t,e.position,!1,!0),this.revealing=!1)}rollback(){this.current>0&&(this.current--,this.reveal(this.entries[this.current]))}rollover(){this.current=0;t--)this.entries[t].matches(e)&&(this.entries.splice(t,1),this.current>=t&&this.current--)}}class Mt{projectId;url;position;constructor(e,t){this.projectId=e.project().id(),this.url=e.url(),this.position=t}matches(e){return this.url===e.url()&&this.projectId===e.project().id()}}var Pt=Object.freeze({__proto__:null,EditingLocationHistoryManager:Lt,HistoryDepth:20}),Ft={cssText:`#sources-panel-sources-view{--override-highlight-animation-10pc-background-color:rgb(158 54 153);--override-highlight-animation-10pc-foreground-color:rgb(255 255 255);flex:auto;position:relative}#sources-panel-sources-view .sources-toolbar{display:flex;flex:0 0 27px;background-color:var(--sys-color-cdt-base-container);border-top:1px solid var(--sys-color-divider);overflow:hidden;z-index:0}.source-frame-debugger-script{--override-debugger-background-tint:rgb(255 255 194/50%);background-color:var(--override-debugger-background-tint)}.theme-with-dark-background .source-frame-debugger-script{--override-debugger-background-tint:rgb(61 61 0/50%)}\n/*# sourceURL=${import.meta.resolve("./sourcesView.css")} */\n`};const Dt=["application/javascript","application/json","application/manifest+json","text/css","text/html","text/javascript"],At={ms:"ms",mb:"MB",kb:"kB"},Nt=e.i18n.registerUIStrings("panels/sources/ProfilePlugin.ts",At),Ut=e.i18n.getLocalizedString.bind(void 0,Nt);class Bt extends s.GutterMarker{value;constructor(e){super(),this.value=e}eq(e){return this.value===e.value}toDOM(){const e=document.createElement("div");e.className="cm-profileMarker";let t=this.value;const i=u.NumberUtilities.clamp(Math.log10(1+.002*t)/5,.02,1);let o,n;e.style.backgroundColor=`hsla(217, 100%, 70%, ${i.toFixed(3)})`,t/=1e3,t>=1e3?(o=Ut(At.mb),t/=1e3,n=t>=20?0:1):(o=Ut(At.kb),n=0),e.textContent=t.toFixed(n);const r=e.appendChild(document.createElement("span"));return r.className="cm-units",r.textContent=o,e}}class Rt extends s.GutterMarker{value;constructor(e){super(),this.value=e}eq(e){return this.value===e.value}toDOM(){const e=document.createElement("div");e.className="cm-profileMarker";const t=u.NumberUtilities.clamp(Math.log10(1+10*this.value)/5,.02,1);e.textContent=this.value.toFixed(1),e.style.backgroundColor=`hsla(44, 100%, 50%, ${t.toFixed(3)})`;const i=document.createElement("span");return i.className="cm-units",i.textContent=Ut(At.ms),e.appendChild(i),e}}function jt(e,t,i){const o="performance"===i?Rt:Bt,n=[];for(const[i,r]of e)if(i<=t.doc.lines){const{from:e}=t.doc.line(i);n.push(new o(r).range(e))}return s.RangeSet.of(n,!0)}const Wt=e=>class extends H{updateEffect=s.StateEffect.define();field;gutter;compartment=new s.Compartment;constructor(t){super(t),this.field=s.StateField.define({create:()=>s.RangeSet.empty,update:(t,i)=>i.effects.reduce(((t,o)=>o.is(this.updateEffect)?jt(o.value,i.state,e):t),t.map(i.changes))}),this.gutter=s.gutter({markers:e=>e.state.field(this.field),class:`cm-${e}Gutter`})}static accepts(e){return e.contentType().hasScripts()}getLineMap(){return this.uiSourceCode.getDecorationData(e)}editorExtension(){const t=this.getLineMap();return this.compartment.of(t?[this.field.init((i=>jt(t,i,e))),this.gutter,Vt]:[])}decorationChanged(e,t){const i=Boolean(t.state.field(this.field,!1)),o=this.getLineMap();o?i?t.dispatch({effects:this.updateEffect.of(o)}):t.dispatch({effects:this.compartment.reconfigure([this.field.init((t=>jt(o,t,e))),this.gutter,Vt])}):i&&t.dispatch({effects:this.compartment.reconfigure([])})}},Vt=s.EditorView.baseTheme({".cm-line::selection":{backgroundColor:"transparent",color:"currentColor"},".cm-performanceGutter":{width:"60px",backgroundColor:"var(--sys-color-cdt-base-container)",marginLeft:"3px"},".cm-memoryGutter":{width:"48px",backgroundColor:"var(--sys-color-cdt-base-container)",marginLeft:"3px"},".cm-profileMarker":{textAlign:"right",paddingRight:"3px"},".cm-profileMarker .cm-units":{color:"var(--sys-color-token-subtle)",fontSize:"75%",marginLeft:"3px"}}),Ot=Wt("memory"),Ht=Wt("performance"),_t={fromS:"(From {PH1})",sourceMappedFromS:"(Source mapped from {PH1})"},zt=e.i18n.registerUIStrings("panels/sources/ResourceOriginPlugin.ts",_t),qt=e.i18n.getLocalizedString.bind(void 0,zt);class $t extends H{static accepts(e){const t=e.contentType();return t.hasScripts()||t.isFromSourceMap()}rightToolbarItems(){const i=p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance();if(this.uiSourceCode.contentType().isFromSourceMap()){const o=[];for(const e of i.scriptsForUISourceCode(this.uiSourceCode)){const t=i.uiSourceCodeForScript(e);if(!t)continue;const n=t.url(),r=p.ResourceUtils.displayNameForURL(n),s=qt(_t.sourceMappedFromS,{PH1:r});o.push(U.Linkifier.Linkifier.linkifyRevealable(t,r,n,s,void 0,"original-script-location"))}for(const e of p.SASSSourceMapping.SASSSourceMapping.uiSourceOrigin(this.uiSourceCode))o.push(U.Linkifier.Linkifier.linkifyURL(e));if(0===o.length)return[];const n=document.createElement("span");return o.forEach(((e,t)=>{t>0&&n.append(", "),n.append(e)})),[new t.Toolbar.ToolbarItem(e.i18n.getFormatLocalizedString(zt,_t.fromS,{PH1:n}))]}for(const o of i.scriptsForUISourceCode(this.uiSourceCode))if(o.originStackTrace){const i=Gt.linkifyStackTraceTopFrame(o.debuggerModel.target(),o.originStackTrace);return[new t.Toolbar.ToolbarItem(e.i18n.getFormatLocalizedString(zt,_t.fromS,{PH1:i}))]}return[]}}const Gt=new U.Linkifier.Linkifier;var Kt=Object.freeze({__proto__:null,ResourceOriginPlugin:$t,linkifier:Gt});const Jt={enter:"⌘+Enter",ctrlenter:"Ctrl+Enter"},Qt=e.i18n.registerUIStrings("panels/sources/SnippetsPlugin.ts",Jt),Xt=e.i18n.getLocalizedString.bind(void 0,Qt);class Yt extends H{static accepts(e){return E.ScriptSnippetFileSystem.isSnippetsUISourceCode(e)}rightToolbarItems(){const e=t.Toolbar.Toolbar.createActionButton("debugger.run-snippet");return e.setText(d.Platform.isMac()?Xt(Jt.enter):Xt(Jt.ctrlenter)),e.setReducedFocusRing(),[e]}editorExtension(){return c.JavaScript.completion()}}var Zt=Object.freeze({__proto__:null,SnippetsPlugin:Yt});class ei extends(n.ObjectWrapper.eventMixin(o.SourceFrame.SourceFrameImpl)){uiSourceCodeInternal;muteSourceCodeEvents;persistenceBinding;uiSourceCodeEventListeners;messageAndDecorationListeners;boundOnBindingChanged;plugins=[];errorPopoverHelper;openInExternalEditorToolbarButton;#S=!1;constructor(e){if(super((()=>this.workingCopy())),this.uiSourceCodeInternal=e,this.muteSourceCodeEvents=!1,this.persistenceBinding=g.Persistence.PersistenceImpl.instance().binding(e),this.uiSourceCodeEventListeners=[],this.messageAndDecorationListeners=[],this.canOpenInExternalEditor()){this.openInExternalEditorToolbarButton=new t.Toolbar.ToolbarButton("Open in editor",void 0,"Open in editor");const e=globalThis.reactNativeOpenInEditorButtonImage;if("string"==typeof e&&""!==e){const t=new A.Adorner.Adorner;t.classList.add("open-in-external-editor-adorner"),t.style.setProperty("background-image",e),this.openInExternalEditorToolbarButton.element.classList.add("toolbar-has-glyph","open-in-external-editor-button"),this.openInExternalEditorToolbarButton.setAdorner(t)}else this.openInExternalEditorToolbarButton.setGlyph("open-externally");this.openInExternalEditorToolbarButton.addEventListener("Click",(()=>{const e={url:this.uiSourceCode().url()},t=this.textEditor.state,i=t.doc.lineAt(t.selection.main.head),{lineNumber:o}=this.editorLocationToUILocation(i.number);e.lineNumber=o,fetch("/open-stack-frame",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).catch((e=>console.error(e)))}))}this.boundOnBindingChanged=this.onBindingChanged.bind(this),n.Settings.Settings.instance().moduleSetting("persistence-network-overrides-enabled").addChangeListener(this.onNetworkPersistenceChanged,this),this.errorPopoverHelper=new t.PopoverHelper.PopoverHelper(this.textEditor.editor.contentDOM,this.getErrorPopoverContent.bind(this),"sources.error"),this.errorPopoverHelper.setTimeout(100,100),this.initializeUISourceCode()}canOpenInExternalEditor(){return!!globalThis.enableReactNativeOpenInExternalEditor&&(this.uiSourceCode().url().startsWith("http")??!1)}async workingCopy(){return this.uiSourceCodeInternal.isDirty()?this.uiSourceCodeInternal.workingCopyContentData():await this.uiSourceCodeInternal.requestContentData()}editorConfiguration(e){return[super.editorConfiguration(e),(t=this.allMessages(),[ui.init((e=>di.create(si.create(t),e.doc))),pi]),oi.of(this.plugins.map((e=>e.editorExtension())))];var t}onFocus(){super.onFocus(),t.Context.Context.instance().setFlavor(ei,this)}onBlur(){super.onBlur(),t.Context.Context.instance().setFlavor(ei,null)}installMessageAndDecorationListeners(){if(this.persistenceBinding){const e=this.persistenceBinding.network,t=this.persistenceBinding.fileSystem;this.messageAndDecorationListeners=[e.addEventListener(i.UISourceCode.Events.MessageAdded,this.onMessageAdded,this),e.addEventListener(i.UISourceCode.Events.MessageRemoved,this.onMessageRemoved,this),e.addEventListener(i.UISourceCode.Events.DecorationChanged,this.onDecorationChanged,this),t.addEventListener(i.UISourceCode.Events.MessageAdded,this.onMessageAdded,this),t.addEventListener(i.UISourceCode.Events.MessageRemoved,this.onMessageRemoved,this)]}else this.messageAndDecorationListeners=[this.uiSourceCodeInternal.addEventListener(i.UISourceCode.Events.MessageAdded,this.onMessageAdded,this),this.uiSourceCodeInternal.addEventListener(i.UISourceCode.Events.MessageRemoved,this.onMessageRemoved,this),this.uiSourceCodeInternal.addEventListener(i.UISourceCode.Events.DecorationChanged,this.onDecorationChanged,this)]}uiSourceCode(){return this.uiSourceCodeInternal}setUISourceCode(e){const t=e.contentLoaded()?Promise.resolve():e.requestContent(),i=this.uiSourceCodeInternal;t.then((async()=>{this.uiSourceCodeInternal===i&&(this.unloadUISourceCode(),this.uiSourceCodeInternal=e,e.workingCopy()!==this.textEditor.state.doc.toString()?await this.setContentDataOrError(Promise.resolve(e.workingCopyContentData())):this.reloadPlugins(),this.initializeUISourceCode())}),console.error)}unloadUISourceCode(){n.EventTarget.removeEventListeners(this.messageAndDecorationListeners),n.EventTarget.removeEventListeners(this.uiSourceCodeEventListeners),this.uiSourceCodeInternal.removeWorkingCopyGetter(),g.Persistence.PersistenceImpl.instance().unsubscribeFromBindingEvent(this.uiSourceCodeInternal,this.boundOnBindingChanged)}initializeUISourceCode(){this.uiSourceCodeEventListeners=[this.uiSourceCodeInternal.addEventListener(i.UISourceCode.Events.WorkingCopyChanged,this.onWorkingCopyChanged,this),this.uiSourceCodeInternal.addEventListener(i.UISourceCode.Events.WorkingCopyCommitted,this.onWorkingCopyCommitted,this),this.uiSourceCodeInternal.addEventListener(i.UISourceCode.Events.TitleChanged,this.onTitleChanged,this)],g.Persistence.PersistenceImpl.instance().subscribeForBindingEvent(this.uiSourceCodeInternal,this.boundOnBindingChanged),this.installMessageAndDecorationListeners(),this.updateStyle();const e=Dt.includes(this.contentType)&&!this.uiSourceCodeInternal.project().canSetFileContent()&&null===g.Persistence.PersistenceImpl.instance().binding(this.uiSourceCodeInternal),t=!this.uiSourceCodeInternal.contentType().isFromSourceMap();this.setCanPrettyPrint(e,t)}wasShown(){super.wasShown(),this.setEditable(this.canEditSourceInternal())}willHide(){for(const e of this.plugins)e.willHide();super.willHide(),t.Context.Context.instance().setFlavor(ei,null),this.uiSourceCodeInternal.removeWorkingCopyGetter()}getContentType(){const e=g.Persistence.PersistenceImpl.instance().binding(this.uiSourceCodeInternal),t=e?e.network.mimeType():this.uiSourceCodeInternal.mimeType();return n.ResourceType.ResourceType.simplifyContentType(t)}canEditSourceInternal(){return!this.hasLoadError()&&(!this.uiSourceCodeInternal.editDisabled()&&("application/wasm"!==this.uiSourceCodeInternal.mimeType()&&(!!g.Persistence.PersistenceImpl.instance().binding(this.uiSourceCodeInternal)||(!!this.uiSourceCodeInternal.project().canSetFileContent()||!this.uiSourceCodeInternal.project().isServiceProject()&&(!(this.uiSourceCodeInternal.project().type()!==i.Workspace.projectTypes.Network||!g.NetworkPersistenceManager.NetworkPersistenceManager.instance().active())||(!this.pretty||!this.uiSourceCodeInternal.contentType().hasScripts())&&this.uiSourceCodeInternal.contentType()!==n.ResourceType.resourceTypes.Document)))))}onNetworkPersistenceChanged(){this.setEditable(this.canEditSourceInternal())}commitEditing(){this.uiSourceCodeInternal.isDirty()&&(this.muteSourceCodeEvents=!0,this.uiSourceCodeInternal.commitWorkingCopy(),this.muteSourceCodeEvents=!1)}async setContent(e){this.disposePlugins(),this.loadPlugins(),await super.setContent(e);for(const e of this.plugins)e.editorInitialized(this.textEditor);this.#C(),n.EventTarget.fireEvent("source-file-loaded",this.uiSourceCodeInternal.displayName(!0))}createMessage(e){const{lineNumber:t,columnNumber:i}=this.uiLocationToEditorLocation(e.lineNumber(),e.columnNumber());return new ni(e,t,i)}allMessages(){return(null!==this.persistenceBinding?[...this.persistenceBinding.network.messages(),...this.persistenceBinding.fileSystem.messages()]:[...this.uiSourceCodeInternal.messages()]).map((e=>this.createMessage(e)))}onTextChanged(){const e=this.pretty;super.onTextChanged(),this.errorPopoverHelper.hidePopover(),Gi.instance().updateLastModificationTime(),this.muteSourceCodeEvents=!0,this.uiSourceCodeInternal.setWorkingCopyGetter((()=>this.textEditor.state.sliceDoc())),this.muteSourceCodeEvents=!1,e!==this.pretty&&(this.updateStyle(),this.reloadPlugins())}onWorkingCopyChanged(){this.muteSourceCodeEvents||this.maybeSetContent(this.uiSourceCodeInternal.workingCopyContentData())}onWorkingCopyCommitted(){this.muteSourceCodeEvents||this.maybeSetContent(this.uiSourceCode().workingCopyContentData()),this.contentCommitted(),this.updateStyle()}reloadPlugins(){this.disposePlugins(),this.loadPlugins();const e=this.textEditor;e.dispatch({effects:oi.reconfigure(this.plugins.map((e=>e.editorExtension())))});for(const t of this.plugins)t.editorInitialized(e)}onTitleChanged(){this.updateLanguageMode("").then((()=>this.reloadPlugins()),console.error)}static sourceFramePlugins(){return[Ge,ro,Yt,$t,ye,Ot,Ht,G]}loadPlugins(){const e=g.Persistence.PersistenceImpl.instance().binding(this.uiSourceCodeInternal),t=e?e.network:this.uiSourceCodeInternal;for(const e of ei.sourceFramePlugins())e.accepts(t)&&this.plugins.push(new e(t,this));this.dispatchEventToListeners("ToolbarItemsChanged")}disposePlugins(){for(const e of this.plugins)e.dispose();this.plugins=[]}onBindingChanged(){const e=g.Persistence.PersistenceImpl.instance().binding(this.uiSourceCodeInternal);e!==this.persistenceBinding&&(this.unloadUISourceCode(),this.persistenceBinding=e,this.initializeUISourceCode(),this.reloadMessages(),this.reloadPlugins())}reloadMessages(){const e=this.allMessages(),{editor:t}=this.textEditor;t.dispatch({effects:ai.of(si.create(e))})}updateStyle(){this.setEditable(this.canEditSourceInternal())}maybeSetContent(e){this.textEditor.state.doc.toString()!==e.text&&this.setContentDataOrError(Promise.resolve(e))}populateTextAreaContextMenu(e,t,o){super.populateTextAreaContextMenu(e,t,o),e.appendApplicableItems(this.uiSourceCodeInternal);const n=this.editorLocationToUILocation(t,o);e.appendApplicableItems(new i.UISourceCode.UILocation(this.uiSourceCodeInternal,n.lineNumber,n.columnNumber));for(const i of this.plugins)i.populateTextAreaContextMenu(e,t,o)}populateLineGutterContextMenu(e,t){super.populateLineGutterContextMenu(e,t);for(const i of this.plugins)i.populateLineGutterContextMenu(e,t)}dispose(){this.errorPopoverHelper.dispose(),this.disposePlugins(),this.unloadUISourceCode(),this.textEditor.editor.destroy(),this.detach(),n.Settings.Settings.instance().moduleSetting("persistence-network-overrides-enabled").removeChangeListener(this.onNetworkPersistenceChanged,this)}onMessageAdded(e){const{editor:t}=this.textEditor,i=t.state.field(ui,!1);if(i){const o=this.createMessage(e.data);t.dispatch({effects:ai.of(i.messages.add(o))})}}onMessageRemoved(e){const{editor:t}=this.textEditor,i=t.state.field(ui,!1);if(i){const o=this.createMessage(e.data);t.dispatch({effects:ai.of(i.messages.remove(o))})}}onDecorationChanged(e){for(const t of this.plugins)t.decorationChanged(e.data,this.textEditor)}async toolbarItems(){const e=await super.toolbarItems(),i=[];for(const t of this.plugins)e.push(...t.leftToolbarItems()),i.push(...t.rightToolbarItems());return i.length?(this.openInExternalEditorToolbarButton&&e.push(this.openInExternalEditorToolbarButton),[...e,new t.Toolbar.ToolbarSeparator(!0),...i]):e}getErrorPopoverContent(e){const t=e,i=e.target,o=i.enclosingNodeOrSelfWithClass("cm-messageIcon-error")||i.enclosingNodeOrSelfWithClass("cm-messageIcon-issue");if(!o)return null;const n=this.textEditor.state.field(ui,!1);if(!n||0===n.messages.rows.length)return null;const{editor:r}=this.textEditor,s=r.posAtCoords(t);if(null===s)return null;const a=r.state.doc.lineAt(s);if(s!==a.to)return null;const c=n.messages.rows.find((e=>e[0].lineNumber()===a.number-1));if(!c)return null;const l=o.classList.contains("cm-messageIcon-issue"),d=c.filter((e=>"Issue"===e.level()===l));if(!d.length)return null;const u=o?o.boxInWindow():new AnchorBox(t.clientX,t.clientY,1,1),h=function(e){const t=[];for(let i=0;i(e.contentElement.append(p),!0)}}#C(){if(this.#S)return;this.#S=!0;const e=n.ResourceType.ResourceType.mimeFromURL(this.uiSourceCodeInternal.url()),t=n.ResourceType.ResourceType.mediaTypeForMetrics(e??"",this.uiSourceCodeInternal.contentType().isFromSourceMap(),b.TextUtils.isMinified(this.uiSourceCodeInternal.content()),this.uiSourceCodeInternal.url().startsWith("snippet://"),this.uiSourceCodeInternal.url().startsWith("debugger://"));d.userMetrics.sourcesPanelFileOpened(t)}}function ti(e){return"Error"===e?{color:"var(--icon-error)",width:"16px",height:"14px",iconName:"cross-circle-filled"}:"Warning"===e?{color:"var(--icon-warning)",width:"18px",height:"14px",iconName:"warning-filled"}:"Issue"===e?{color:"var(--icon-warning)",width:"17px",height:"14px",iconName:"issue-exclamation-filled"}:{color:"var(--icon-error)",width:"16px",height:"14px",iconName:"cross-circle-filled"}}function ii(e,t){const i={Issue:2,Warning:3,Error:4};return i[e.level()]-i[t.level()]}const oi=new s.Compartment;class ni{origin;#w;#I;constructor(e,t,i){this.origin=e,this.#w=t,this.#I=i}level(){return this.origin.level()}text(){return this.origin.text()}clickHandler(){return this.origin.clickHandler()}lineNumber(){return this.#w}columnNumber(){return this.#I}isEqual(e){return this.origin.isEqual(e.origin)}}function ri(e,t){const i=t.lineNumber();let o=0;for(;o0)break}return e.splice(o,0,[t]),e}class si{rows;constructor(e){this.rows=e}static create(e){const t=[];for(const i of e)ri(t,i);return new si(t)}remove(e){const t=this.rows.slice();return function(e,t){for(let i=0;i!e.isEqual(t)));o.length?e[i]=o:e.splice(i,1);break}}(t,e),new si(t)}add(e){return new si(ri(this.rows.slice(),e))}}const ai=s.StateEffect.define(),ci=s.Decoration.mark({class:"cm-waveUnderline"});class li extends s.WidgetType{messages;constructor(e){super(),this.messages=e}eq(e){return e.messages===this.messages}toDOM(){const e=document.createElement("span");e.classList.add("cm-messageIcon");const t=this.messages.filter((e=>"Issue"!==e.level()));if(t.length){const i=t.sort(ii)[t.length-1],o=e.appendChild(new a.Icon.Icon);o.data=ti(i.level()),o.classList.add("cm-messageIcon-error")}const i=this.messages.find((e=>"Issue"===e.level()));if(i){const t=e.appendChild(new a.Icon.Icon);t.data=ti("Issue"),t.classList.add("cm-messageIcon-issue"),t.addEventListener("click",(()=>(i.clickHandler()||Math.min)()))}return e}}class di{messages;decorations;constructor(e,t){this.messages=e,this.decorations=t}static create(e,t){const i=new s.RangeSetBuilder;for(const o of e.rows){const e=t.line(Math.min(t.lines,o[0].lineNumber()+1)),n=o.reduce(((e,t)=>Math.min(e,t.columnNumber()||0)),e.length);ndi.create(new si([]),e.doc),update:(e,t)=>e.apply(t),provide:e=>s.Prec.lowest(s.EditorView.decorations.from(e,(e=>e.decorations)))});function hi(e,t){const i=document.createElement("div");if(i.classList.add("text-editor-row-message"),i.style.display="flex",i.style.alignItems="center",i.style.gap="4px",1===t){const t=i.appendChild(new a.Icon.Icon);t.data=function(e){return e.origin instanceof D.SourceFrameIssuesManager.IssueMessage?{...N.IssueCounter.getIssueKindIconData(e.origin.getIssueKind()),width:"12px",height:"12px"}:ti(e.level())}(e),t.classList.add("text-editor-row-message-icon"),t.addEventListener("click",(()=>(e.clickHandler()||Math.min)()))}else{const o=i.createChild("dt-small-bubble","text-editor-row-message-repeat-count");o.textContent=String(t),o.style.flexShrink="0",o.type=function(e){switch(e){case"Error":return"error";case"Warning":case"Issue":return"warning"}}(e.level())}const o=i.createChild("div");for(const t of e.text().split("\n"))o.createChild("div").textContent=t;return i}const pi=s.EditorView.baseTheme({".cm-line::selection":{backgroundColor:"transparent",color:"currentColor"},".cm-tooltip-message":{padding:"4px"},".cm-waveUnderline":{backgroundImage:"var(--image-file-errorWave)",backgroundRepeat:"repeat-x",backgroundPosition:"bottom",paddingBottom:"1px"},".cm-messageIcon":{cursor:"pointer","& > *":{verticalAlign:"text-bottom",marginLeft:"2px"}},".cm-messageIcon-issue, .cm-messageIcon-error":{marginTop:"-1px",marginBottom:"-1px"}});var gi=Object.freeze({__proto__:null,UISourceCodeFrame:ei});const mi={areYouSureYouWantToCloseUnsaved:"Are you sure you want to close unsaved file: {PH1}?",unableToLoadThisContent:"Unable to load this content.",changesToThisFileWereNotSavedTo:"Changes to this file were not saved to file system."},bi=e.i18n.registerUIStrings("panels/sources/TabbedEditorContainer.ts",mi),fi=e.i18n.getLocalizedString.bind(void 0,bi);let vi=0;class Si extends n.ObjectWrapper.ObjectWrapper{delegate;tabbedPane;tabIds;files;previouslyViewedFilesSetting;history;uriToUISourceCode;idToUISourceCode;currentFileInternal;currentView;scrollTimer;reentrantShow;constructor(e,i,o,n){super(),this.delegate=e,this.tabbedPane=new t.TabbedPane.TabbedPane,this.tabbedPane.setPlaceholderElement(o,n),this.tabbedPane.setTabDelegate(new xi(this)),this.tabbedPane.setCloseableTabs(!0),this.tabbedPane.setAllowTabReorder(!0,!0),this.tabbedPane.addEventListener(t.TabbedPane.Events.TabClosed,this.tabClosed,this),this.tabbedPane.addEventListener(t.TabbedPane.Events.TabSelected,this.tabSelected,this),this.tabbedPane.headerElement().setAttribute("jslog",`${l.toolbar("top").track({keydown:"ArrowUp|ArrowLeft|ArrowDown|ArrowRight|Enter|Space"})}`),g.Persistence.PersistenceImpl.instance().addEventListener(g.Persistence.Events.BindingCreated,this.onBindingCreated,this),g.Persistence.PersistenceImpl.instance().addEventListener(g.Persistence.Events.BindingRemoved,this.onBindingRemoved,this),g.NetworkPersistenceManager.NetworkPersistenceManager.instance().addEventListener("RequestsForHeaderOverridesFileChanged",this.#g,this),this.tabIds=new Map,this.files=new Map,this.previouslyViewedFilesSetting=i,this.history=yi.fromObject(this.previouslyViewedFilesSetting.get()),this.uriToUISourceCode=new Map,this.idToUISourceCode=new Map,this.reentrantShow=!1}onBindingCreated(e){const t=e.data;this.updateFileTitle(t.fileSystem);const i=this.tabIds.get(t.network);let o=this.tabIds.get(t.fileSystem);const n=this.currentFileInternal===t.network,r=wi(t.network),s=this.history.selectionRange(r),a=this.history.scrollLineNumber(r);if(this.history.remove(r),i){if(!o){const e=this.tabbedPane.tabView(i),n=this.tabbedPane.tabIndex(i);if(e instanceof ei)this.delegate.recycleUISourceCodeFrame(e,t.fileSystem),o=this.appendFileTab(t.fileSystem,!1,n,e);else{o=this.appendFileTab(t.fileSystem,!1,n);const e=this.tabbedPane.tabView(o);this.restoreEditorProperties(e,s,a)}}this.closeTabs([i],!0),n&&this.tabbedPane.selectTab(o,!1),this.updateHistory()}}#g(e){this.updateFileTitle(e.data)}onBindingRemoved(e){const t=e.data;this.updateFileTitle(t.fileSystem)}get view(){return this.tabbedPane}get visibleView(){return this.tabbedPane.visibleView}fileViews(){return this.tabbedPane.tabViews()}leftToolbar(){return this.tabbedPane.leftToolbar()}rightToolbar(){return this.tabbedPane.rightToolbar()}show(e){this.tabbedPane.show(e)}showFile(e){const i=g.Persistence.PersistenceImpl.instance().binding(e);e=i?i.fileSystem:e;const o=t.Context.Context.instance().flavor(Mi);o?.currentSourceFrame()?.contentSet&&this.currentFileInternal===e&&o?.currentUISourceCode()===e?n.EventTarget.fireEvent("source-file-loaded",e.displayName(!0)):this.innerShowFile(e,!0)}closeFile(e){const t=this.tabIds.get(e);t&&this.closeTabs([t])}closeAllFiles(){this.closeTabs(this.tabbedPane.tabIds())}historyUISourceCodes(){const e=[];for(const{url:t,resourceType:i}of this.history.keys()){const o=this.uriToUISourceCode.get(t);void 0!==o&&o.contentType()===i&&e.push(o)}return e}selectNextTab(){this.tabbedPane.selectNextTab()}selectPrevTab(){this.tabbedPane.selectPrevTab()}addViewListeners(){this.currentView&&this.currentView instanceof o.SourceFrame.SourceFrameImpl&&(this.currentView.addEventListener("EditorUpdate",this.onEditorUpdate,this),this.currentView.addEventListener("EditorScroll",this.onScrollChanged,this))}removeViewListeners(){this.currentView&&this.currentView instanceof o.SourceFrame.SourceFrameImpl&&(this.currentView.removeEventListener("EditorUpdate",this.onEditorUpdate,this),this.currentView.removeEventListener("EditorScroll",this.onScrollChanged,this))}onScrollChanged(){if(this.currentView instanceof o.SourceFrame.SourceFrameImpl&&(this.scrollTimer&&clearTimeout(this.scrollTimer),this.scrollTimer=window.setTimeout((()=>this.previouslyViewedFilesSetting.set(this.history.toObject())),100),this.currentFileInternal)){const{editor:e}=this.currentView.textEditor,t=e.lineBlockAtHeight(e.scrollDOM.getBoundingClientRect().top-e.documentTop),i=e.state.doc.lineAt(t.from).number-1;this.history.updateScrollLineNumber(wi(this.currentFileInternal),i)}}onEditorUpdate({data:e}){if(e.docChanged||e.selectionSet){const{main:t}=e.state.selection,i=e.state.doc.lineAt(t.from),o=e.state.doc.lineAt(t.to),n=new b.TextRange.TextRange(i.number-1,t.from-i.from,o.number-1,t.to-o.from);this.currentFileInternal&&this.history.updateSelectionRange(wi(this.currentFileInternal),n),this.previouslyViewedFilesSetting.set(this.history.toObject()),this.currentFileInternal&&T.ExtensionServer.ExtensionServer.instance().sourceSelectionChanged(this.currentFileInternal.url(),n)}}innerShowFile(e,t){if(this.reentrantShow)return;const o=this.canonicalUISourceCode(e),n=g.Persistence.PersistenceImpl.instance().binding(e);if(e=n?n.fileSystem:e,this.currentFileInternal===e)return;this.removeViewListeners(),this.currentFileInternal=e;try{this.reentrantShow=!0;const e=this.tabIds.get(o)||this.appendFileTab(o,t);this.tabbedPane.selectTab(e,t)}finally{this.reentrantShow=!1}t&&this.editorSelectedByUserAction();const r=this.currentView;this.currentView=this.visibleView,this.addViewListeners(),this.currentView instanceof ei&&this.currentView.uiSourceCode()!==e&&(this.delegate.recycleUISourceCodeFrame(this.currentView,e),e.project().type()!==i.Workspace.projectTypes.FileSystem&&e.disableEdit());const s={currentFile:this.currentFileInternal,currentView:this.currentView,previousView:r,userGesture:t};this.dispatchEventToListeners("EditorSelected",s)}titleForFile(e){let t=u.StringUtilities.trimMiddle(e.displayName(!0),30);return e.isDirty()&&(t+="*"),t}maybeCloseTab(e,t){const i=this.files.get(e);if(!i)return!1;return!(i.isDirty()&&i.project().canSetFileContent()&&!confirm(fi(mi.areYouSureYouWantToCloseUnsaved,{PH1:i.name()})))&&(i.resetWorkingCopy(),t&&this.tabbedPane.selectTab(t,!0),this.tabbedPane.closeTab(e,!0),!0)}closeTabs(e,t){const i=[],o=[];for(let n=0;n{e.loadError()&&this.addLoadErrorIcon(a)})),a}addLoadErrorIcon(e){const i=new a.Icon.Icon;i.data={iconName:"cross-circle-filled",color:"var(--icon-error)",width:"14px",height:"14px"},t.Tooltip.Tooltip.install(i,fi(mi.unableToLoadThisContent)),this.tabbedPane.tabView(e)&&this.tabbedPane.setTrailingTabIcon(e,i)}restoreEditorProperties(e,t,i){const n=e instanceof o.SourceFrame.SourceFrameImpl?e:null;n&&(t&&n.setSelection(t),"number"==typeof i&&n.scrollToLine(i))}tabClosed(e){const{tabId:t,isUserGesture:i}=e.data,o=this.files.get(t);this.currentFileInternal&&this.currentFileInternal.canonicalScriptId()===o?.canonicalScriptId()&&(this.removeViewListeners(),this.currentView=null,this.currentFileInternal=null),o&&this.tabIds.delete(o),this.files.delete(t),o&&(this.removeUISourceCodeListeners(o),this.dispatchEventToListeners("EditorClosed",o),i&&this.editorClosedByUserAction(o))}tabSelected(e){const{tabId:t,isUserGesture:i}=e.data,o=this.files.get(t);o&&this.innerShowFile(o,i)}addUISourceCodeListeners(e){e.addEventListener(i.UISourceCode.Events.TitleChanged,this.uiSourceCodeTitleChanged,this),e.addEventListener(i.UISourceCode.Events.WorkingCopyChanged,this.uiSourceCodeWorkingCopyChanged,this),e.addEventListener(i.UISourceCode.Events.WorkingCopyCommitted,this.uiSourceCodeWorkingCopyCommitted,this)}removeUISourceCodeListeners(e){e.removeEventListener(i.UISourceCode.Events.TitleChanged,this.uiSourceCodeTitleChanged,this),e.removeEventListener(i.UISourceCode.Events.WorkingCopyChanged,this.uiSourceCodeWorkingCopyChanged,this),e.removeEventListener(i.UISourceCode.Events.WorkingCopyCommitted,this.uiSourceCodeWorkingCopyCommitted,this)}updateFileTitle(e){const i=this.tabIds.get(e);if(i){const o=this.titleForFile(e),n=this.tooltipForFile(e);this.tabbedPane.changeTabTitle(i,o,n);let r=null;e.loadError()?(r=new a.Icon.Icon,r.data={iconName:"cross-circle-filled",color:"var(--icon-error)",width:"14px",height:"14px"},t.Tooltip.Tooltip.install(r,fi(mi.unableToLoadThisContent))):g.Persistence.PersistenceImpl.instance().hasUnsavedCommittedChanges(e)?(r=new a.Icon.Icon,r.data={iconName:"warning-filled",color:"var(--icon-warning)",width:"14px",height:"14px"},t.Tooltip.Tooltip.install(r,fi(mi.changesToThisFileWereNotSavedTo))):r=g.PersistenceUtils.PersistenceUtils.iconForUISourceCode(e),this.tabbedPane.setTrailingTabIcon(i,r)}}uiSourceCodeTitleChanged(e){const t=e.data;this.updateFileTitle(t),this.updateHistory();for(const[e,i]of this.uriToUISourceCode)i===t&&e!==i.url()&&this.uriToUISourceCode.delete(e);for(const[e,i]of this.idToUISourceCode)i===t&&e!==i.canonicalScriptId()&&this.idToUISourceCode.delete(e);this.canonicalUISourceCode(t)}uiSourceCodeWorkingCopyChanged(e){const t=e.data;this.updateFileTitle(t)}uiSourceCodeWorkingCopyCommitted(e){const t=e.data.uiSourceCode;this.updateFileTitle(t)}generateTabId(){return"tab-"+vi++}currentFile(){return this.currentFileInternal||null}}const Ci=30;function wi(e){return{url:e.url(),resourceType:e.contentType()}}class Ii{url;resourceType;selectionRange;scrollLineNumber;constructor(e,t,i,o){this.url=e,this.resourceType=t,this.selectionRange=i,this.scrollLineNumber=o}static fromObject(e){const t=n.ResourceType.ResourceType.fromName(e.resourceTypeName);if(null===t)throw new TypeError(`Invalid resource type name "${e.resourceTypeName}"`);const i=e.selectionRange?b.TextRange.TextRange.fromObject(e.selectionRange):void 0;return new Ii(e.url,t,i,e.scrollLineNumber)}toObject(){return this.url.length>=4096?null:{url:this.url,resourceTypeName:this.resourceType.name(),selectionRange:this.selectionRange,scrollLineNumber:this.scrollLineNumber}}}class yi{items;constructor(e){this.items=e}static fromObject(e){const t=[];for(const i of e)try{t.push(Ii.fromObject(i))}catch{}return new yi(t)}index({url:e,resourceType:t}){return this.items.findIndex((i=>i.url===e&&i.resourceType===t))}selectionRange(e){const t=this.index(e);if(-1!==t)return this.items[t].selectionRange}updateSelectionRange(e,t){if(!t)return;const i=this.index(e);-1!==i&&(this.items[i].selectionRange=t)}scrollLineNumber(e){const t=this.index(e);if(-1!==t)return this.items[t].scrollLineNumber}updateScrollLineNumber(e,t){const i=this.index(e);-1!==i&&(this.items[i].scrollLineNumber=t)}update(e){for(let t=e.length-1;t>=0;--t){const i=this.index(e[t]);let o;-1!==i?(o=this.items[i],this.items.splice(i,1)):o=new Ii(e[t].url,e[t].resourceType),this.items.unshift(o)}}remove(e){const t=this.index(e);-1!==t&&this.items.splice(t,1)}toObject(){const e=[];for(const t of this.items){const i=t.toObject();if(i&&e.push(i),e.length===Ci)break}return e}keys(){return this.items}}class xi{editorContainer;constructor(e){this.editorContainer=e}closeTabs(e,t){this.editorContainer.closeTabs(t)}onContextMenu(e,t){this.editorContainer.onContextMenu(e,t)}}var ki=Object.freeze({__proto__:null,EditorContainerTabDelegate:xi,History:yi,HistoryItem:Ii,TabbedEditorContainer:Si});const Ti={openFile:"Open file",runCommand:"Run command",workspaceDropInAFolderToSyncSources:"To sync edits to the workspace, drop a folder with your sources here or",selectFolder:"Select folder",sourceViewActions:"Source View Actions"},Ei=e.i18n.registerUIStrings("panels/sources/SourcesView.ts",Ti),Li=e.i18n.getLocalizedString.bind(void 0,Ei);class Mi extends(n.ObjectWrapper.eventMixin(t.Widget.VBox)){selectedIndex;searchableViewInternal;sourceViewByUISourceCode;editorContainer;historyManager;toolbarContainerElementInternal;scriptViewToolbar;bottomToolbarInternal;toolbarChangedListener;focusedPlaceholderElement;searchView;searchConfig;constructor(){super(),this.registerRequiredCSS(Ft),this.element.id="sources-panel-sources-view",this.element.setAttribute("jslog",`${l.pane("editor").track({keydown:"Escape"})}`),this.setMinimumAndPreferredSizes(88,52,150,100),this.selectedIndex=0;const e=i.Workspace.WorkspaceImpl.instance();this.searchableViewInternal=new t.SearchableView.SearchableView(this,this,"sources-view-search-config"),this.searchableViewInternal.setMinimalSearchQuerySize(0),this.searchableViewInternal.show(this.element),this.sourceViewByUISourceCode=new Map,this.editorContainer=new Si(this,n.Settings.Settings.instance().createLocalSetting("previously-viewed-files",[]),this.placeholderElement(),this.focusedPlaceholderElement),this.editorContainer.show(this.searchableViewInternal.element),this.editorContainer.addEventListener("EditorSelected",this.editorSelected,this),this.editorContainer.addEventListener("EditorClosed",this.editorClosed,this),this.historyManager=new Lt(this),this.toolbarContainerElementInternal=this.element.createChild("div","sources-toolbar"),this.toolbarContainerElementInternal.setAttribute("jslog",`${l.toolbar("bottom")}`),this.scriptViewToolbar=this.toolbarContainerElementInternal.createChild("devtools-toolbar"),this.scriptViewToolbar.style.flex="auto",this.bottomToolbarInternal=this.toolbarContainerElementInternal.createChild("devtools-toolbar"),this.toolbarChangedListener=null,t.UIUtils.startBatchUpdate(),e.uiSourceCodes().forEach(this.addUISourceCode.bind(this)),t.UIUtils.endBatchUpdate(),e.addEventListener(i.Workspace.Events.UISourceCodeAdded,this.uiSourceCodeAdded,this),e.addEventListener(i.Workspace.Events.UISourceCodeRemoved,this.uiSourceCodeRemoved,this),e.addEventListener(i.Workspace.Events.ProjectRemoved,this.projectRemoved.bind(this),this),r.TargetManager.TargetManager.instance().addScopeChangeListener(this.#y.bind(this)),window.opener||window.addEventListener("beforeunload",(function(e){if(e.returnValue)return;const o=[],r=i.Workspace.WorkspaceImpl.instance().projectsForType(i.Workspace.projectTypes.FileSystem);for(const e of r)for(const t of e.uiSourceCodes())t.isDirty()&&o.push(t);if(o.length){e.returnValue=!0,t.ViewManager.ViewManager.instance().showView("sources");for(const e of o)n.Revealer.reveal(e)}}),!0)}placeholderElement(){const e=document.createElement("div");if(e.classList.add("sources-placeholder"),k.Runtime.Runtime.isDescriptorEnabled({experiment:void 0,condition:k.Runtime.conditions.notSourcesHideAddFolder})){const t=e.createChild("div","tabbed-pane-placeholder-row");t.classList.add("workspace");const i=a.Icon.create("sync","sync-icon");t.createChild("span","icon-container").appendChild(i);const o=t.createChild("span");o.textContent=Ti.workspaceDropInAFolderToSyncSources;const n=o.createChild("button");n.textContent=Li(Ti.selectFolder),n.addEventListener("click",this.addFileSystemClicked.bind(this))}const i=[{actionId:"quick-open.show",description:Li(Ti.openFile)},{actionId:"quick-open.show-command-menu",description:Li(Ti.runCommand)}],o=e.createChild("div","shortcuts-list");o.classList.add("tabbed-pane-placeholder-row"),t.ARIAUtils.markAsList(o),t.ARIAUtils.setLabel(o,Li(Ti.sourceViewActions));for(const e of i){const i=t.ShortcutRegistry.ShortcutRegistry.instance().shortcutsForAction(e.actionId),n=o.createChild("div");if(n.classList.add("shortcut-line"),t.ARIAUtils.markAsListitem(n),i?.[0]){const o=n.createChild("button");o.textContent=e.description;const r=t.ActionRegistry.ActionRegistry.instance().getAction(e.actionId);o.addEventListener("click",(()=>r.execute()));const s=n.createChild("span","shortcuts"),a=d.Platform.isMac()?" ":" + ";i[0].descriptors.flatMap((e=>e.name.split(a))).forEach((e=>{s.createChild("span","keybinds-key").createChild("span").textContent=e}))}}return e}async addFileSystemClicked(){await g.IsolatedFileSystemManager.IsolatedFileSystemManager.instance().addFileSystem()&&(d.userMetrics.actionTaken(d.UserMetrics.Action.WorkspaceSelectFolder),t.ViewManager.ViewManager.instance().showView("navigator-files"))}static defaultUISourceCodeScores(){const e=new Map,i=t.Context.Context.instance().flavor(Mi);if(i){const t=i.editorContainer.historyUISourceCodes();for(let i=1;i{this.scriptViewToolbar.removeToolbarItems();for(const e of Di())this.scriptViewToolbar.appendToolbarItem(e.getOrCreateButton(this));e.map((e=>this.scriptViewToolbar.appendToolbarItem(e)))}))}showSourceLocation(e,t,i,o){const n=this.currentSourceFrame();n&&this.historyManager.updateCurrentState(n.uiSourceCode(),n.textEditor.state.selection.main.head),this.editorContainer.showFile(e);const r=this.currentSourceFrame();r&&t&&r.revealPosition(t,!o);const s=this.visibleView();!i&&s&&s.focus()}createSourceView(e){let t;const r=e.contentType();return r===n.ResourceType.resourceTypes.Image||e.mimeType().startsWith("image/")?t=new o.ImageView.ImageView(e.mimeType(),e):r===n.ResourceType.resourceTypes.Font||e.mimeType().includes("font")?t=new o.FontView.FontView(e.mimeType(),e):e.name()===Ni?t=new x.HeadersView.HeadersView(e):(t=new ei(e),this.historyManager.trackSourceFrameCursorJumps(t)),e.addEventListener(i.UISourceCode.Events.TitleChanged,this.#x,this),this.sourceViewByUISourceCode.set(e,t),t}#k(e){return e instanceof o.ImageView.ImageView?"ImageView":e instanceof o.FontView.FontView?"FontView":e instanceof x.HeadersView.HeadersView?"HeadersView":"SourceView"}#T(e){if(e.name()===Ni)return"HeadersView";switch(e.contentType()){case n.ResourceType.resourceTypes.Image:return"ImageView";case n.ResourceType.resourceTypes.Font:return"FontView";default:return"SourceView"}}#x(e){const t=e.data,i=this.sourceViewByUISourceCode.get(t);i&&this.#k(i)!==this.#T(t)&&(this.removeUISourceCodes([t]),this.showSourceLocation(t))}getSourceView(e){return this.sourceViewByUISourceCode.get(e)}getOrCreateSourceView(e){return this.sourceViewByUISourceCode.get(e)||this.createSourceView(e)}recycleUISourceCodeFrame(e,t){e.uiSourceCode().removeEventListener(i.UISourceCode.Events.TitleChanged,this.#x,this),this.sourceViewByUISourceCode.delete(e.uiSourceCode()),e.setUISourceCode(t),this.sourceViewByUISourceCode.set(t,e),t.addEventListener(i.UISourceCode.Events.TitleChanged,this.#x,this)}viewForFile(e){return this.getOrCreateSourceView(e)}removeSourceFrame(e){const t=this.sourceViewByUISourceCode.get(e);this.sourceViewByUISourceCode.delete(e),t&&t instanceof ei&&t.dispose(),e.removeEventListener(i.UISourceCode.Events.TitleChanged,this.#x,this)}editorClosed(e){const t=e.data;this.historyManager.removeHistoryForSourceCode(t);let i=!1;this.editorContainer.currentFile()||(i=!0),this.removeToolbarChangedListener(),this.updateScriptViewToolbarItems(),this.searchableViewInternal.resetSearch();const o={uiSourceCode:t,wasSelected:i};this.dispatchEventToListeners("EditorClosed",o)}editorSelected(e){const t=e.data.previousView instanceof ei?e.data.previousView:null;t&&t.setSearchableView(null);const i=e.data.currentView instanceof ei?e.data.currentView:null;i&&i.setSearchableView(this.searchableViewInternal),this.searchableViewInternal.setReplaceable(Boolean(i?.canEditSource())),this.searchableViewInternal.refreshSearch(),this.updateToolbarChangedListener(),this.updateScriptViewToolbarItems();const o=this.editorContainer.currentFile();o&&this.dispatchEventToListeners("EditorSelected",o)}removeToolbarChangedListener(){this.toolbarChangedListener&&n.EventTarget.removeEventListeners([this.toolbarChangedListener]),this.toolbarChangedListener=null}updateToolbarChangedListener(){this.removeToolbarChangedListener();const e=this.currentSourceFrame();e&&(this.toolbarChangedListener=e.addEventListener("ToolbarItemsChanged",this.updateScriptViewToolbarItems,this))}onSearchCanceled(){this.searchView&&this.searchView.onSearchCanceled(),delete this.searchView,delete this.searchConfig}performSearch(e,t,i){const o=this.currentSourceFrame();o&&(this.searchView=o,this.searchConfig=e,this.searchView.performSearch(this.searchConfig,t,i))}jumpToNextSearchResult(){this.searchView&&(this.searchConfig&&this.searchView!==this.currentSourceFrame()?this.performSearch(this.searchConfig,!0):this.searchView.jumpToNextSearchResult())}jumpToPreviousSearchResult(){if(this.searchView)return this.searchConfig&&this.searchView!==this.currentSourceFrame()?(this.performSearch(this.searchConfig,!0),void(this.searchView&&this.searchView.jumpToLastSearchResult())):void this.searchView.jumpToPreviousSearchResult()}supportsCaseSensitiveSearch(){return!0}supportsRegexSearch(){return!0}replaceSelectionWith(e,t){const i=this.currentSourceFrame();i?i.replaceSelectionWith(e,t):console.assert(Boolean(i))}replaceAllWith(e,t){const i=this.currentSourceFrame();i?i.replaceAllWith(e,t):console.assert(Boolean(i))}showOutlineQuickOpen(){F.QuickOpen.QuickOpenImpl.show("@")}showGoToLineQuickOpen(){this.editorContainer.currentFile()&&F.QuickOpen.QuickOpenImpl.show(":")}save(){this.saveSourceFrame(this.currentSourceFrame())}saveAll(){this.editorContainer.fileViews().forEach(this.saveSourceFrame.bind(this))}saveSourceFrame(e){if(!(e instanceof ei))return;e.commitEditing()}toggleBreakpointsActiveState(e){this.editorContainer.view.element.classList.toggle("breakpoints-deactivated",!e)}}const Pi=[];function Fi(e){Pi.push(e)}function Di(){return Pi.map((e=>e()))}class Ai{static nextFile(e){function t(e){const t=e.lastIndexOf(".");return e.substr(0,-1!==t?t:e.length).toLowerCase()}const i=[],o=e.parentURL(),r=e.name(),s=t(r);for(const n of e.project().uiSourceCodes())o===n.parentURL()&&t(n.name())===s&&i.push(n.name());i.sort(u.StringUtilities.naturalOrderComparator);const a=u.NumberUtilities.mod(i.indexOf(r)+1,i.length),c=n.ParsedURL.ParsedURL.concatenate(o?n.ParsedURL.ParsedURL.concatenate(o,"/"):"",i[a]),l=e.project().uiSourceCodeForURL(c);return l!==e?l:null}handleAction(e,t){const i=e.flavor(Mi);if(!i)return!1;const o=i.currentUISourceCode();if(!o)return!1;const n=Ai.nextFile(o);return!!n&&(i.showSourceLocation(n),!0)}}const Ni=".headers";var Ui=Object.freeze({__proto__:null,ActionDelegate:class{handleAction(e,t){const i=e.flavor(Mi);if(!i)return!1;switch(t){case"sources.close-all":return i.editorContainer.closeAllFiles(),!0;case"sources.jump-to-previous-location":return i.onJumpToPreviousLocation(),!0;case"sources.jump-to-next-location":return i.onJumpToNextLocation(),!0;case"sources.next-editor-tab":return i.editorContainer.selectNextTab(),!0;case"sources.previous-editor-tab":return i.editorContainer.selectPrevTab(),!0;case"sources.close-editor-tab":return i.onCloseEditorTab();case"sources.go-to-line":return i.showGoToLineQuickOpen(),!0;case"sources.go-to-member":return i.showOutlineQuickOpen(),!0;case"sources.save":return i.save(),!0;case"sources.save-all":return i.saveAll(),!0}return!1}},SourcesView:Mi,SwitchFileActionDelegate:Ai,getRegisteredEditorActions:Di,registerEditorAction:Fi}),Bi={cssText:`.thread-item{padding:3px 8px 3px 20px;position:relative;min-height:18px;line-height:15px;display:flex;flex-wrap:wrap}.thread-item + .thread-item{border-top:1px solid var(--sys-color-divider)}.thread-item:hover{background-color:var(--sys-color-state-hover-on-subtle)}.thread-item:focus-visible{background-color:var(--sys-color-tonal-container)}.thread-item-title,\n.thread-item-paused-state{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.thread-item-paused-state{color:var(--sys-color-state-disabled);margin-left:auto;padding:0 10px}.selected-thread-icon{display:none;position:absolute;top:3px;left:4px}.thread-item.selected .selected-thread-icon{display:block}@media (forced-colors: active){.thread-item:hover,\n .thread-item:focus-visible{forced-color-adjust:none;background-color:Highlight}.thread-item:hover > div,\n .thread-item:focus-visible > div{color:HighlightText}}\n/*# sourceURL=${import.meta.resolve("./threadsSidebarPane.css")} */\n`};const Ri={paused:"paused"},ji=e.i18n.registerUIStrings("panels/sources/ThreadsSidebarPane.ts",Ri),Wi=e.i18n.getLocalizedString.bind(void 0,ji);class Vi extends t.Widget.VBox{items;list;selectedModel;constructor(){super(!0),this.registerRequiredCSS(Bi),this.contentElement.setAttribute("jslog",`${l.section("sources.threads")}`),this.items=new t.ListModel.ListModel,this.list=new t.ListControl.ListControl(this.items,this,t.ListControl.ListMode.NonViewport);const e=t.Context.Context.instance().flavor(r.Target.Target);this.selectedModel=null!==e?e.model(r.DebuggerModel.DebuggerModel):null,this.contentElement.appendChild(this.list.element),t.Context.Context.instance().addFlavorChangeListener(r.Target.Target,this.targetFlavorChanged,this),r.TargetManager.TargetManager.instance().observeModels(r.DebuggerModel.DebuggerModel,this)}static shouldBeShown(){return r.TargetManager.TargetManager.instance().models(r.DebuggerModel.DebuggerModel).length>=2}createElementForItem(e){const i=document.createElement("div");i.classList.add("thread-item");const o=i.createChild("div","thread-item-title"),n=i.createChild("div","thread-item-paused-state"),s=new a.Icon.Icon;s.data={iconName:"large-arrow-right-filled",color:"var(--icon-arrow-main-thread)",width:"14px",height:"14px"},s.classList.add("selected-thread-icon"),i.appendChild(s),i.tabIndex=-1,self.onInvokeElement(i,(i=>{t.Context.Context.instance().setFlavor(r.Target.Target,e.target()),i.consume(!0)}));const c=t.Context.Context.instance().flavor(r.Target.Target)===e.target();function l(){const t=e.runtimeModel().defaultExecutionContext();o.textContent=t?.label()?t.label():e.target().name()}function d(){n.textContent=e.isPaused()?Wi(Ri.paused):""}return i.classList.toggle("selected",c),t.ARIAUtils.setSelected(i,c),e.addEventListener(r.DebuggerModel.Events.DebuggerPaused,d),e.addEventListener(r.DebuggerModel.Events.DebuggerResumed,d),e.runtimeModel().addEventListener(r.RuntimeModel.Events.ExecutionContextChanged,l),r.TargetManager.TargetManager.instance().addEventListener("NameChanged",(function(t){t.data===e.target()&&l()})),d(),l(),i}heightForItem(e){return console.assert(!1),0}isItemSelectable(e){return!0}selectedItemChanged(e,t,i,o){i&&(i.tabIndex=-1);const n=o;n&&(this.setDefaultFocusedElement(n),n.tabIndex=0,this.hasFocus()&&n.focus())}updateSelectedItemARIA(e,t){return!1}modelAdded(e){this.items.insert(this.items.length,e);t.Context.Context.instance().flavor(r.Target.Target)===e.target()&&this.list.selectItem(e)}modelRemoved(e){this.items.remove(this.items.indexOf(e))}targetFlavorChanged({data:e}){const t=this.hasFocus(),i=e.model(r.DebuggerModel.DebuggerModel);this.list.selectItem(i),i&&this.list.refreshItem(i),null!==this.selectedModel&&this.list.refreshItem(this.selectedModel),this.selectedModel=i,t&&this.focus()}}var Oi=Object.freeze({__proto__:null,ThreadsSidebarPane:Vi});const Hi={dropWorkspaceFolderHere:"Drop workspace folder here",moreOptions:"More options",showNavigator:"Show navigator",hideNavigator:"Hide navigator",navigatorShown:"Navigator sidebar shown",navigatorHidden:"Navigator sidebar hidden",debuggerShown:"Debugger sidebar shown",debuggerHidden:"Debugger sidebar hidden",showDebugger:"Show debugger",hideDebugger:"Hide debugger",groupByFolder:"Group by folder",groupByAuthored:"Group by Authored/Deployed",hideIgnoreListed:"Hide ignore-listed sources",resumeWithAllPausesBlockedForMs:"Resume with all pauses blocked for 500 ms",terminateCurrentJavascriptCall:"Terminate current JavaScript call",pauseOnCaughtExceptions:"Pause on caught exceptions",revealInSidebar:"Reveal in navigator sidebar",continueToHere:"Continue to here",storeAsGlobalVariable:"Store as global variable",copyS:"Copy {PH1}",copyStringContents:"Copy string contents",copyStringAsJSLiteral:"Copy string as JavaScript literal",copyStringAsJSONLiteral:"Copy string as JSON literal",showFunctionDefinition:"Show function definition",openInSourcesPanel:"Open in Sources panel"},_i=e.i18n.registerUIStrings("panels/sources/SourcesPanel.ts",Hi),zi=e.i18n.getLocalizedString.bind(void 0,_i),qi=new Set(["number","boolean","bigint","undefined"]);let $i;class Gi extends t.Panel.Panel{workspace;togglePauseAction;stepOverAction;stepIntoAction;stepOutAction;stepAction;toggleBreakpointsActiveAction;debugToolbar;debugToolbarDrawer;debuggerPausedMessage;overlayLoggables;splitWidget;editorView;navigatorTabbedLocation;sourcesViewInternal;toggleNavigatorSidebarButton;toggleDebuggerSidebarButton;threadsSidebarPane;watchSidebarPane;callstackPane;liveLocationPool;lastModificationTime;pausedInternal;switchToPausedTargetTimeout;ignoreExecutionLineEvents;executionLineLocation;pauseOnExceptionButton;sidebarPaneStack;tabbedLocationHeader;extensionSidebarPanesContainer;sidebarPaneView;#E=null;constructor(){super("sources"),this.registerRequiredCSS(Et),k.Runtime.Runtime.isDescriptorEnabled({experiment:void 0,condition:k.Runtime.conditions.notSourcesHideAddFolder})&&new t.DropTarget.DropTarget(this.element,[t.DropTarget.Type.Folder],zi(Hi.dropWorkspaceFolderHere),this.handleDrop.bind(this)),this.workspace=i.Workspace.WorkspaceImpl.instance(),this.togglePauseAction=t.ActionRegistry.ActionRegistry.instance().getAction("debugger.toggle-pause"),this.stepOverAction=t.ActionRegistry.ActionRegistry.instance().getAction("debugger.step-over"),this.stepIntoAction=t.ActionRegistry.ActionRegistry.instance().getAction("debugger.step-into"),this.stepOutAction=t.ActionRegistry.ActionRegistry.instance().getAction("debugger.step-out"),this.stepAction=t.ActionRegistry.ActionRegistry.instance().getAction("debugger.step"),this.toggleBreakpointsActiveAction=t.ActionRegistry.ActionRegistry.instance().getAction("debugger.toggle-breakpoints-active"),this.debugToolbar=this.createDebugToolbar(),this.debugToolbarDrawer=this.createDebugToolbarDrawer(),this.debuggerPausedMessage=new tt;this.splitWidget=new t.SplitWidget.SplitWidget(!0,!0,"sources-panel-split-view-state",225),this.splitWidget.enableShowModeSaving(),this.splitWidget.show(this.element);this.editorView=new t.SplitWidget.SplitWidget(!0,!1,"sources-panel-navigator-split-view-state",225),this.editorView.enableShowModeSaving(),this.splitWidget.setMainWidget(this.editorView),this.navigatorTabbedLocation=t.ViewManager.ViewManager.instance().createTabbedLocation(this.revealNavigatorSidebar.bind(this),"navigator-view",!0,!0);const e=this.navigatorTabbedLocation.tabbedPane();e.setMinimumSize(100,25),e.element.classList.add("navigator-tabbed-pane"),e.headerElement().setAttribute("jslog",`${l.toolbar("navigator").track({keydown:"ArrowUp|ArrowLeft|ArrowDown|ArrowRight|Enter|Space"})}`);const o=new t.Toolbar.ToolbarMenuButton(this.populateNavigatorMenu.bind(this),!0,!0,"more-options","dots-vertical");if(o.setTitle(zi(Hi.moreOptions)),e.rightToolbar().appendToolbarItem(o),t.ViewManager.ViewManager.instance().hasViewsForLocation("run-view-sidebar")){const i=new t.SplitWidget.SplitWidget(!1,!0,"source-panel-navigator-sidebar-split-view-state");i.setMainWidget(e);const o=t.ViewManager.ViewManager.instance().createTabbedLocation(this.revealNavigatorSidebar.bind(this),"run-view-sidebar").tabbedPane();i.setSidebarWidget(o),i.installResizer(o.headerElement()),this.editorView.setSidebarWidget(i)}else this.editorView.setSidebarWidget(e);this.sourcesViewInternal=new Mi,this.sourcesViewInternal.addEventListener("EditorSelected",this.editorSelected.bind(this)),this.toggleNavigatorSidebarButton=this.editorView.createShowHideSidebarButton(zi(Hi.showNavigator),zi(Hi.hideNavigator),zi(Hi.navigatorShown),zi(Hi.navigatorHidden),"navigator"),this.toggleDebuggerSidebarButton=this.splitWidget.createShowHideSidebarButton(zi(Hi.showDebugger),zi(Hi.hideDebugger),zi(Hi.debuggerShown),zi(Hi.debuggerHidden),"debugger"),this.editorView.setMainWidget(this.sourcesViewInternal),this.threadsSidebarPane=null,this.watchSidebarPane=t.ViewManager.ViewManager.instance().view("sources.watch"),this.callstackPane=ae.instance(),n.Settings.Settings.instance().moduleSetting("sidebar-position").addChangeListener(this.updateSidebarPosition.bind(this)),this.updateSidebarPosition(),this.updateDebuggerButtonsAndStatus(),this.liveLocationPool=new p.LiveLocation.LiveLocationPool,this.setTarget(t.Context.Context.instance().flavor(r.Target.Target)),n.Settings.Settings.instance().moduleSetting("breakpoints-active").addChangeListener(this.breakpointsActiveStateChanged,this),t.Context.Context.instance().addFlavorChangeListener(r.Target.Target,this.onCurrentTargetChanged,this),t.Context.Context.instance().addFlavorChangeListener(r.DebuggerModel.CallFrame,this.callFrameChanged,this),r.TargetManager.TargetManager.instance().addModelListener(r.DebuggerModel.DebuggerModel,r.DebuggerModel.Events.DebuggerWasEnabled,this.debuggerWasEnabled,this),r.TargetManager.TargetManager.instance().addModelListener(r.DebuggerModel.DebuggerModel,r.DebuggerModel.Events.DebuggerPaused,this.debuggerPaused,this),r.TargetManager.TargetManager.instance().addModelListener(r.DebuggerModel.DebuggerModel,r.DebuggerModel.Events.DebugInfoAttached,this.debugInfoAttached,this),r.TargetManager.TargetManager.instance().addModelListener(r.DebuggerModel.DebuggerModel,r.DebuggerModel.Events.DebuggerResumed,(e=>this.debuggerResumed(e.data))),r.TargetManager.TargetManager.instance().addModelListener(r.DebuggerModel.DebuggerModel,r.DebuggerModel.Events.GlobalObjectCleared,(e=>this.debuggerResumed(e.data))),T.ExtensionServer.ExtensionServer.instance().addEventListener("SidebarPaneAdded",this.extensionSidebarPaneAdded,this),r.TargetManager.TargetManager.instance().observeTargets(this),this.lastModificationTime=-1/0}static instance(e={forceNew:null}){const{forceNew:t}=e;return $i&&!t||($i=new Gi),$i}static updateResizerAndSidebarButtons(e){e.sourcesViewInternal.leftToolbar().removeToolbarItems(),e.sourcesViewInternal.rightToolbar().removeToolbarItems(),e.sourcesViewInternal.bottomToolbar().removeToolbarItems();const i=t.Context.Context.instance().flavor(Xi)&&!t.InspectorView.InspectorView.instance().isDrawerMinimized();e.splitWidget.isVertical()||i?e.splitWidget.uninstallResizer(e.sourcesViewInternal.toolbarContainerElement()):e.splitWidget.installResizer(e.sourcesViewInternal.toolbarContainerElement()),i||(e.sourcesViewInternal.leftToolbar().appendToolbarItem(e.toggleNavigatorSidebarButton),e.splitWidget.isVertical()?e.sourcesViewInternal.rightToolbar().appendToolbarItem(e.toggleDebuggerSidebarButton):e.sourcesViewInternal.bottomToolbar().appendToolbarItem(e.toggleDebuggerSidebarButton))}targetAdded(e){this.showThreadsIfNeeded()}targetRemoved(e){}showThreadsIfNeeded(){Vi.shouldBeShown()&&!this.threadsSidebarPane&&(this.threadsSidebarPane=t.ViewManager.ViewManager.instance().view("sources.threads"),this.sidebarPaneStack&&this.threadsSidebarPane&&this.sidebarPaneStack.appendView(this.threadsSidebarPane,this.splitWidget.isVertical()?this.watchSidebarPane:this.callstackPane))}setTarget(e){if(!e)return;const t=e.model(r.DebuggerModel.DebuggerModel);t&&(t.isPaused()?this.showDebuggerPausedDetails(t.debuggerPausedDetails()):(this.pausedInternal=!1,this.clearInterface(),this.toggleDebuggerSidebarButton.setEnabled(!0)))}onCurrentTargetChanged({data:e}){this.setTarget(e)}paused(){return this.pausedInternal||!1}wasShown(){t.Context.Context.instance().setFlavor(Gi,this),super.wasShown(),t.Context.Context.instance().flavor(Xi)&&(t.InspectorView.InspectorView.instance().setDrawerMinimized(!0),Gi.updateResizerAndSidebarButtons(this)),this.editorView.setMainWidget(this.sourcesViewInternal)}willHide(){super.willHide(),t.Context.Context.instance().setFlavor(Gi,null);const e=t.Context.Context.instance().flavor(Xi);e&&(e.showViewInWrapper(),t.InspectorView.InspectorView.instance().setDrawerMinimized(!1),Gi.updateResizerAndSidebarButtons(this))}resolveLocation(e){return"sources.sidebar-top"===e||"sources.sidebar-bottom"===e||"sources.sidebar-tabs"===e?this.sidebarPaneStack||null:this.navigatorTabbedLocation}ensureSourcesViewVisible(){return!!t.Context.Context.instance().flavor(Xi)||!!t.InspectorView.InspectorView.instance().canSelectPanel("sources")&&(t.ViewManager.ViewManager.instance().showView("sources"),!0)}onResize(){"auto"===n.Settings.Settings.instance().moduleSetting("sidebar-position").get()&&this.element.window().requestAnimationFrame(this.updateSidebarPosition.bind(this))}searchableView(){return this.sourcesViewInternal.searchableView()}toggleNavigatorSidebar(){this.editorView.toggleSidebar()}toggleDebuggerSidebar(){this.splitWidget.toggleSidebar()}debuggerPaused(e){const i=e.data,o=i.debuggerPausedDetails();!this.pausedInternal&&n.Settings.Settings.instance().moduleSetting("auto-focus-on-debugger-paused-enabled").get()&&this.setAsCurrentPanel(),t.Context.Context.instance().flavor(r.Target.Target)===i.target()?this.showDebuggerPausedDetails(o):this.pausedInternal||t.Context.Context.instance().setFlavor(r.Target.Target,i.target())}debugInfoAttached(e){const{debuggerModel:i}=e.data;if(!i.isPaused())return;const o=i.debuggerPausedDetails();o&&t.Context.Context.instance().flavor(r.Target.Target)===i.target()&&this.showDebuggerPausedDetails(o)}showDebuggerPausedDetails(e){this.pausedInternal=!0,this.updateDebuggerButtonsAndStatus(),t.Context.Context.instance().setFlavor(r.DebuggerModel.DebuggerPausedDetails,e),this.toggleDebuggerSidebarButton.setEnabled(!1),this.revealDebuggerSidebar();const i=e.debuggerModel.target();this.threadsSidebarPane&&this.#E?.deref()!==i&&i!==r.TargetManager.TargetManager.instance().primaryPageTarget()&&this.sidebarPaneStack?.showView(this.threadsSidebarPane),window.focus(),d.InspectorFrontendHost.InspectorFrontendHostInstance.bringToFront();t.Context.Context.instance().flavor(r.Target.Target)?.model(r.OverlayModel.OverlayModel)&&!n.Settings.Settings.instance().moduleSetting("disable-paused-state-overlay").get()&&!this.overlayLoggables&&(this.overlayLoggables={debuggerPausedMessage:{},resumeButton:{},stepOverButton:{}},l.registerLoggable(this.overlayLoggables.debuggerPausedMessage,`${l.dialog("debugger-paused")}`,null),l.registerLoggable(this.overlayLoggables.resumeButton,`${l.action("debugger.toggle-pause")}`,this.overlayLoggables.debuggerPausedMessage),l.registerLoggable(this.overlayLoggables.stepOverButton,`${l.action("debugger.step-over")}`,this.overlayLoggables.debuggerPausedMessage)),this.#E=new WeakRef(e.debuggerModel.target())}maybeLogOverlayAction(){if(!this.overlayLoggables)return;const e=!document.hasFocus();window.setTimeout((()=>{if(this.overlayLoggables){if(e){const e=t.Context.Context.instance().flavor(r.DebuggerModel.DebuggerPausedDetails);l.logClick(this.pausedInternal&&"step"===e?.reason?this.overlayLoggables.stepOverButton:this.overlayLoggables.resumeButton,new MouseEvent("click"))}this.pausedInternal||(l.logResize(this.overlayLoggables.debuggerPausedMessage,new DOMRect(0,0,0,0)),this.overlayLoggables=void 0)}}),500)}debuggerResumed(e){this.maybeLogOverlayAction();const i=e.target();t.Context.Context.instance().flavor(r.Target.Target)===i&&(this.pausedInternal=!1,this.clearInterface(),this.toggleDebuggerSidebarButton.setEnabled(!0),this.switchToPausedTargetTimeout=window.setTimeout(this.switchToPausedTarget.bind(this,e),500))}debuggerWasEnabled(e){const i=e.data;t.Context.Context.instance().flavor(r.Target.Target)===i.target()&&this.updateDebuggerButtonsAndStatus()}get visibleView(){return this.sourcesViewInternal.visibleView()}showUISourceCode(e,i,o){if(o){if(!this.isShowing()&&!t.Context.Context.instance().flavor(Xi))return}else this.showEditor();this.sourcesViewInternal.showSourceLocation(e,i,o)}showEditor(){t.Context.Context.instance().flavor(Xi)||this.setAsCurrentPanel()}showUILocation(e,t){const{uiSourceCode:i,lineNumber:o,columnNumber:n}=e;this.showUISourceCode(i,{lineNumber:o,columnNumber:n},t)}async revealInNavigator(e,i){const o=t.ViewManager.ViewManager.instance();for(const t of o.viewsForLocation("navigator-view")){const o=await t.widget();if(o instanceof ft&&o.acceptProject(e.project())){o.revealUISourceCode(e,!0),this.navigatorTabbedLocation.tabbedPane().selectTab(t.viewId(),!0),i||(this.editorView.showBoth(!0),o.focus());break}}}addExperimentMenuItem(e,t,i){e.appendCheckboxItem(i,(function(){const e=k.Runtime.experiments.isEnabled(t);k.Runtime.experiments.setEnabled(t,!e),d.userMetrics.experimentChanged(t,e);const i=n.Settings.Settings.instance().moduleSetting("navigator-group-by-folder");i.set(i.get())}),{checked:k.Runtime.experiments.isEnabled(t),additionalElement:a.Icon.create("experiment"),jslogContext:u.StringUtilities.toKebabCase(t)})}populateNavigatorMenu(e){const t=n.Settings.Settings.instance().moduleSetting("navigator-group-by-folder");e.appendItemsAtLocation("navigatorMenu"),e.viewSection().appendCheckboxItem(zi(Hi.groupByFolder),(()=>t.set(!t.get())),{checked:t.get(),jslogContext:t.name}),this.addExperimentMenuItem(e.viewSection(),"authored-deployed-grouping",zi(Hi.groupByAuthored)),this.addExperimentMenuItem(e.viewSection(),"just-my-code",zi(Hi.hideIgnoreListed))}updateLastModificationTime(){this.lastModificationTime=window.performance.now()}async executionLineChanged(e){const t=await e.uiLocation();e.isDisposed()||t&&(window.performance.now()-this.lastModificationTimee.debuggerModel===i.debuggerModel));o&&this.prepareToResume()&&o.continueToLocation()}toggleBreakpointsActive(){n.Settings.Settings.instance().moduleSetting("breakpoints-active").set(!n.Settings.Settings.instance().moduleSetting("breakpoints-active").get())}breakpointsActiveStateChanged(){const e=n.Settings.Settings.instance().moduleSetting("breakpoints-active").get();this.toggleBreakpointsActiveAction.setToggled(!e),this.sourcesViewInternal.toggleBreakpointsActiveState(e)}createDebugToolbar(){const e=document.createElement("devtools-toolbar");e.classList.add("scripts-debug-toolbar"),e.setAttribute("jslog",`${l.toolbar("debug").track({keydown:"ArrowUp|ArrowLeft|ArrowDown|ArrowRight|Enter|Space"})}`);const i=new t.Toolbar.ToolbarButton(zi(Hi.resumeWithAllPausesBlockedForMs),"play");i.addEventListener("Click",this.longResume,this);const o=new t.Toolbar.ToolbarButton(zi(Hi.terminateCurrentJavascriptCall),"stop");o.addEventListener("Click",this.terminateExecution,this);const n=t.Toolbar.Toolbar.createLongPressActionButton(this.togglePauseAction,[o,i],[]);return n.toggleOnClick(!1),e.appendToolbarItem(n),e.appendToolbarItem(t.Toolbar.Toolbar.createActionButton(this.stepOverAction)),e.appendToolbarItem(t.Toolbar.Toolbar.createActionButton(this.stepIntoAction)),e.appendToolbarItem(t.Toolbar.Toolbar.createActionButton(this.stepOutAction)),e.appendToolbarItem(t.Toolbar.Toolbar.createActionButton(this.stepAction)),e.appendSeparator(),e.appendToolbarItem(t.Toolbar.Toolbar.createActionButton(this.toggleBreakpointsActiveAction)),e}createDebugToolbarDrawer(){const e=document.createElement("div");e.classList.add("scripts-debug-toolbar-drawer");const i=zi(Hi.pauseOnCaughtExceptions),o=n.Settings.Settings.instance().moduleSetting("pause-on-caught-exception");return e.appendChild(t.SettingsUI.createSettingCheckbox(i,o)),e}appendApplicableItems(e,t,o){o instanceof i.UISourceCode.UISourceCode?this.appendUISourceCodeItems(e,t,o):o instanceof ei?this.appendUISourceCodeFrameItems(t,o):o instanceof i.UISourceCode.UILocation?this.appendUILocationItems(t,o):o instanceof r.RemoteObject.RemoteObject?this.appendRemoteObjectItems(t,o):this.appendNetworkRequestItems(t,o)}appendUISourceCodeItems(e,o,n){if(!e.target)return;const r=e.target;if(n.project().isServiceProject()||r.isSelfOrDescendant(this.navigatorTabbedLocation.widget().element)||k.Runtime.experiments.isEnabled("just-my-code")&&p.IgnoreListManager.IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(n)||o.revealSection().appendItem(zi(Hi.revealInSidebar),this.revealInNavigator.bind(this,n),{jslogContext:"sources.reveal-in-navigator-sidebar"}),t.ActionRegistry.ActionRegistry.instance().hasAction("drjones.sources-panel-context")){const e=this.element.querySelector("devtools-text-editor");!r.isSelfOrDescendant(e)&&n.contentType().isTextType()&&(t.Context.Context.instance().setFlavor(i.UISourceCode.UISourceCode,n),o.footerSection().appendAction("drjones.sources-panel-context"))}n.contentType().hasScripts()&&p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().scriptsForUISourceCode(n).every((e=>e.isJavaScript()))&&this.callstackPane.appendIgnoreListURLContextMenuItems(o,n)}appendUISourceCodeFrameItems(e,t){t.uiSourceCode().contentType().isFromSourceMap()||t.textEditor.state.selection.main.empty||e.debugSection().appendAction("debugger.evaluate-selection")}appendUILocationItems(e,i){const o=i.uiSourceCode;if(!p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().scriptsForUISourceCode(o).every((e=>e.isJavaScript())))return;if(o.contentType().hasScripts()){const n=t.Context.Context.instance().flavor(r.Target.Target),s=n?n.model(r.DebuggerModel.DebuggerModel):null;s?.isPaused()&&e.debugSection().appendItem(zi(Hi.continueToHere),this.continueToLocation.bind(this,i),{jslogContext:"continue-to-here"}),this.callstackPane.appendIgnoreListURLContextMenuItems(e,o)}}appendRemoteObjectItems(e,i){const o=n.Settings.Settings.instance().moduleSetting("text-editor-indent").get(),s=t.Context.Context.instance().flavor(r.RuntimeModel.ExecutionContext);const a="wasm"===i.type?i.subtype:"node"===i.subtype?"outerHTML":i.type;e.debugSection().appendItem(zi(Hi.storeAsGlobalVariable),(()=>s?.target().model(r.ConsoleModel.ConsoleModel)?.saveToTempVariable(s,i)),{jslogContext:"store-as-global-variable"});const c=e.clipboardSection(),l=d.InspectorFrontendHost.InspectorFrontendHostInstance;if("string"===i.type)c.appendItem(zi(Hi.copyStringContents),(()=>{l.copyText(i.value)}),{jslogContext:"copy-string-contents"}),c.appendItem(zi(Hi.copyStringAsJSLiteral),(()=>{l.copyText(u.StringUtilities.formatAsJSLiteral(i.value))}),{jslogContext:"copy-string-as-js-literal"}),c.appendItem(zi(Hi.copyStringAsJSONLiteral),(()=>{l.copyText(JSON.stringify(i.value))}),{jslogContext:"copy-string-as-json-literal"});else if(qi.has(i.type))c.appendItem(zi(Hi.copyS,{PH1:String(a)}),(()=>{l.copyText(i.description)}),{jslogContext:"copy-primitive"});else if("object"===i.type){const e=async()=>{const e=await i.callFunctionJSON(h,[{value:{subtype:i.subtype,indent:o}}]);l.copyText(e)};c.appendItem(zi(Hi.copyS,{PH1:String(a)}),e,{jslogContext:"copy-object"})}else"function"===i.type&&e.debugSection().appendItem(zi(Hi.showFunctionDefinition),this.showFunctionDefinition.bind(this,i),{jslogContext:"show-function-definition"});function h(e){const t=e.subtype,i=e.indent;if("map"!==t){if("set"!==t){if("node"===t)return this instanceof Element?this.outerHTML:void 0;if(t&&void 0===this)return String(t);try{return JSON.stringify(this,null,i)}catch{return String(this)}}else if(this instanceof Set){const e=Array.from(this.values());return`new Set(${0===e.length?"":JSON.stringify(e,null,i)})`}}else if(this instanceof Map){const e=Array.from(this.entries());return`new Map(${0===e.length?"":JSON.stringify(e,null,i)})`}}}appendNetworkRequestItems(e,t){const i=this.workspace.uiSourceCodeForURL(t.url());if(!i)return;const o=zi(Hi.openInSourcesPanel),n=this.showUILocation.bind(this,i.uiLocation(0,0));e.revealSection().appendItem(o,n,{jslogContext:"reveal-in-sources"})}showFunctionDefinition(e){r.RemoteObject.RemoteFunction.objectAsFunction(e).targetFunction().then((e=>e.debuggerModel().functionDetailsPromise(e).then(this.didGetFunctionDetails.bind(this))))}async didGetFunctionDetails(e){if(!e?.location)return;const t=await p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().rawLocationToUILocation(e.location);t&&this.showUILocation(t)}revealNavigatorSidebar(){this.setAsCurrentPanel(),this.editorView.showBoth(!0)}revealDebuggerSidebar(){n.Settings.Settings.instance().moduleSetting("auto-focus-on-debugger-paused-enabled").get()&&(this.setAsCurrentPanel(),this.splitWidget.showBoth(!0))}updateSidebarPosition(){let e;const i=n.Settings.Settings.instance().moduleSetting("sidebar-position").get();if(e="right"!==i&&("bottom"===i||t.InspectorView.InspectorView.instance().element.offsetWidth<680),this.sidebarPaneView&&e===!this.splitWidget.isVertical())return;if(this.sidebarPaneView?.shouldHideOnDetach())return;this.sidebarPaneView&&this.sidebarPaneView.detach(),this.splitWidget.setVertical(!e),this.splitWidget.element.classList.toggle("sources-split-view-vertical",e),Gi.updateResizerAndSidebarButtons(this);const o=new t.Widget.VBox;o.element.appendChild(this.debugToolbar),o.element.appendChild(this.debugToolbarDrawer),o.setMinimumAndPreferredSizes(Ji,25,Ji,100),this.sidebarPaneStack=t.ViewManager.ViewManager.instance().createStackLocation(this.revealDebuggerSidebar.bind(this),void 0,"debug"),this.sidebarPaneStack.widget().element.classList.add("y-overflow-only"),this.sidebarPaneStack.widget().show(o.element),this.sidebarPaneStack.widget().element.appendChild(this.debuggerPausedMessage.element()),this.sidebarPaneStack.appendApplicableItems("sources.sidebar-top"),this.threadsSidebarPane&&this.sidebarPaneStack.appendView(this.threadsSidebarPane);const r=t.ViewManager.ViewManager.instance().view("sources.js-breakpoints"),s=t.ViewManager.ViewManager.instance().view("sources.scope-chain");if(this.tabbedLocationHeader&&(this.splitWidget.uninstallResizer(this.tabbedLocationHeader),this.tabbedLocationHeader=null),e){const e=new t.SplitWidget.SplitWidget(!0,!0,"sources-panel-debugger-sidebar-split-view-state",.5);e.setMainWidget(o),this.sidebarPaneStack.showView(r),this.sidebarPaneStack.showView(this.callstackPane);const i=t.ViewManager.ViewManager.instance().createTabbedLocation(this.revealDebuggerSidebar.bind(this));e.setSidebarWidget(i.tabbedPane()),this.tabbedLocationHeader=i.tabbedPane().headerElement(),this.splitWidget.installResizer(this.tabbedLocationHeader),this.splitWidget.installResizer(this.debugToolbar),i.appendView(s),i.appendView(this.watchSidebarPane),i.appendApplicableItems("sources.sidebar-tabs"),this.extensionSidebarPanesContainer=i,this.sidebarPaneView=e}else this.sidebarPaneStack.appendView(this.watchSidebarPane),this.sidebarPaneStack.showView(r),this.sidebarPaneStack.showView(s),this.sidebarPaneStack.showView(this.callstackPane),this.extensionSidebarPanesContainer=this.sidebarPaneStack,this.sidebarPaneView=o,this.splitWidget.uninstallResizer(this.debugToolbar);this.sidebarPaneStack.appendApplicableItems("sources.sidebar-bottom");const a=T.ExtensionServer.ExtensionServer.instance().sidebarPanes();for(let e=0;e{Gi.updateResizerAndSidebarButtons(Gi.instance())})),super.willHide(),t.Context.Context.instance().setFlavor(Xi,null)}showViewInWrapper(){this.view.show(this.element)}}var Yi=Object.freeze({__proto__:null,ActionDelegate:class{handleAction(e,t){const i=Gi.instance();switch(t){case"debugger.step-over":return i.stepOver(),!0;case"debugger.step-into":return i.stepIntoAsync(),!0;case"debugger.step":return i.stepInto(),!0;case"debugger.step-out":return i.stepOut(),!0;case"debugger.run-snippet":return i.runSnippet(),!0;case"debugger.toggle-breakpoints-active":return i.toggleBreakpointsActive(),!0;case"debugger.evaluate-selection":{const t=e.flavor(ei);if(t){const{state:i}=t.textEditor;let o=i.sliceDoc(i.selection.main.from,i.selection.main.to);const n=e.flavor(r.RuntimeModel.ExecutionContext),s=n?.target().model(r.ConsoleModel.ConsoleModel);if(n&&s){const e=s.addCommandMessage(n,o);o=y.JavaScriptREPL.JavaScriptREPL.wrapObjectLiteral(o),s.evaluateCommandInConsole(n,e,o,!0)}}return!0}case"sources.reveal-in-navigator-sidebar":{const e=i.sourcesView().currentUISourceCode();return null!==e&&(i.revealInNavigator(e),!0)}case"sources.toggle-navigator-sidebar":return i.toggleNavigatorSidebar(),!0;case"sources.toggle-debugger-sidebar":return i.toggleDebuggerSidebar(),!0}return!1}},DebuggerLocationRevealer:class{async reveal(e,t){const i=await p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().rawLocationToUILocation(e);i&&Gi.instance().showUILocation(i,t)}},DebuggerPausedDetailsRevealer:class{async reveal(e){if(n.Settings.Settings.instance().moduleSetting("auto-focus-on-debugger-paused-enabled").get())return await Gi.instance().setAsCurrentPanel()}},QuickSourceView:Xi,RevealingActionDelegate:class{handleAction(e,i){const o=Gi.instance();if(!o.ensureSourcesViewVisible())return!1;if("debugger.toggle-pause"===i){return e.flavor(t.ShortcutRegistry.ForwardedShortcut)&&!n.Settings.Settings.instance().moduleSetting("disable-paused-state-overlay").get()||o.togglePause(),!0}return!1}},SourcesPanel:Gi,UILocationRangeRevealer:Qi,UILocationRevealer:class{async reveal(e,t){Gi.instance().showUILocation(e,t)}},UISourceCodeRevealer:class{async reveal(e,t){Gi.instance().showUISourceCode(e,void 0,t)}},lastModificationTimeout:Ki,minToolbarWidth:Ji});const{EMPTY_BREAKPOINT_CONDITION:Zi,NEVER_PAUSE_HERE_CONDITION:eo}=C.BreakpointManager,to={thisScriptIsOnTheDebuggersIgnore:"This script is on the debugger's ignore list",removeFromIgnoreList:"Remove from ignore list",configure:"Configure",addBreakpoint:"Add breakpoint",addConditionalBreakpoint:"Add conditional breakpoint…",addLogpoint:"Add logpoint…",neverPauseHere:"Never pause here",removeBreakpoint:"{n, plural, =1 {Remove breakpoint} other {Remove all breakpoints in line}}",editBreakpoint:"Edit breakpoint…",disableBreakpoint:"{n, plural, =1 {Disable breakpoint} other {Disable all breakpoints in line}}",enableBreakpoint:"{n, plural, =1 {Enable breakpoint} other {Enable all breakpoints in line}}",addSourceMap:"Add source map…",addWasmDebugInfo:"Add DWARF debug info…",sourceMapLoaded:"Source map loaded",associatedFilesAreAvailable:"Associated files are available via file tree or {PH1}.",associatedFilesShouldBeAdded:"Associated files should be added to the file tree. You can debug these resolved source files as regular JavaScript files.",theDebuggerWillSkipStepping:"The debugger will skip stepping through this script, and will not stop on exceptions.",sourceMapSkipped:"Source map skipped for this file",sourceMapFailed:"Source map failed to load",debuggingPowerReduced:"DevTools can't show authored sources, but you can debug the deployed code.",reloadForSourceMap:"To enable again, make sure the file isn't on the ignore list and reload.",errorLoading:"Error loading url {PH1}: {PH2}",debugFileNotFound:'Failed to load debug file "{PH1}".',debugInfoNotFound:"Failed to load any debug info for {PH1}",showRequest:"Show request",openDeveloperResources:"Opens the request in the Developer resource panel"},io=e.i18n.registerUIStrings("panels/sources/DebuggerPlugin.ts",to),oo=e.i18n.getLocalizedString.bind(void 0,io),no=new Map;class ro extends H{transformer;editor=void 0;executionLocation=null;controlDown=!1;controlTimeout=void 0;sourceMapInfobar=null;scriptsPanel;breakpointManager;popoverHelper=null;scriptFileForDebuggerModel;breakpoints=[];continueToLocations=null;liveLocationPool;muted;initializedMuted;ignoreListInfobar;refreshBreakpointsTimeout=void 0;activeBreakpointDialog=null;#M=void 0;#P=!1;missingDebugInfoBar=null;#F=!1;loader;ignoreListCallback;constructor(e,o){super(e),this.transformer=o,no.set(e,this),this.scriptsPanel=Gi.instance(),this.breakpointManager=C.BreakpointManager.BreakpointManager.instance(),this.breakpointManager.addEventListener(C.BreakpointManager.Events.BreakpointAdded,this.breakpointChange,this),this.breakpointManager.addEventListener(C.BreakpointManager.Events.BreakpointRemoved,this.breakpointChange,this),this.uiSourceCode.addEventListener(i.UISourceCode.Events.WorkingCopyChanged,this.workingCopyChanged,this),this.uiSourceCode.addEventListener(i.UISourceCode.Events.WorkingCopyCommitted,this.workingCopyCommitted,this),this.scriptFileForDebuggerModel=new Map,this.loader=r.PageResourceLoader.PageResourceLoader.instance(),this.loader.addEventListener("Update",this.showSourceMapInfobarIfNeeded.bind(this),this),this.ignoreListCallback=this.showIgnoreListInfobarIfNeeded.bind(this),p.IgnoreListManager.IgnoreListManager.instance().addChangeListener(this.ignoreListCallback),t.Context.Context.instance().addFlavorChangeListener(r.DebuggerModel.CallFrame,this.callFrameChanged,this),this.liveLocationPool=new p.LiveLocation.LiveLocationPool,this.updateScriptFiles(),this.muted=this.uiSourceCode.isDirty(),this.initializedMuted=this.muted,this.ignoreListInfobar=null,this.showIgnoreListInfobarIfNeeded();for(const e of this.scriptFileForDebuggerModel.values())e.checkMapping()}editorExtension(){const e=this.shortcutHandlers();return[s.EditorView.updateListener.of((e=>this.onEditorUpdate(e))),s.EditorView.domEventHandlers({keydown:t=>!!this.onKeyDown(t)||(e(t),t.defaultPrevented),keyup:e=>this.onKeyUp(e),mousemove:e=>this.onMouseMove(e),mousedown:e=>this.onMouseDown(e),focusout:e=>this.onBlur(e),wheel:e=>this.onWheel(e)}),s.lineNumbers({domEventHandlers:{click:(e,t,i)=>{if(d.rnPerfMetrics.isEnabled()){const e=i.target;if(e.classList&&e.classList.contains("cm-gutterElement")&&!e.classList.contains("cm-breakpoint")){const t=Date.now(),i=new MutationObserver((o=>{o.forEach((o=>{"attributes"===o.type&&"class"===o.attributeName&&e.classList.contains("cm-breakpoint")&&(d.rnPerfMetrics.manualBreakpointSetSucceeded(Date.now()-t),i.disconnect())}))}));i.observe(e,{attributes:!0}),setTimeout((()=>i.disconnect()),3e3)}}return this.handleGutterClick(e.state.doc.lineAt(t.from),i)}}}),lo,c.ExecutionPositionHighlighter.positionHighlighter("cm-executionLine","cm-executionToken"),s.Prec.lowest(fo.field),Co,Io.field,s.Prec.lowest(Po.field),Fo,this.uiSourceCode.project().type()===i.Workspace.projectTypes.Debugger?s.EditorView.editorAttributes.of({class:"source-frame-debugger-script"}):[]]}shortcutHandlers(){const e=e=>e.state.doc.lineAt(e.state.selection.main.head);return t.ShortcutRegistry.ShortcutRegistry.instance().getShortcutListener({"debugger.toggle-breakpoint":async()=>!(this.muted||!this.editor)&&(await this.toggleBreakpoint(e(this.editor),!1),!0),"debugger.toggle-breakpoint-enabled":async()=>!(this.muted||!this.editor)&&(await this.toggleBreakpoint(e(this.editor),!0),!0),"debugger.breakpoint-input-window":async()=>{if(this.muted||!this.editor)return!1;const t=e(this.editor);return this.#D(t),!0}})}#D(e,t){if(this.muted)return;this.activeBreakpointDialog&&this.activeBreakpointDialog.finishEditing(!1,"");const i=this.breakpoints.find((t=>t.position>=e.from&&t.position<=e.to))?.breakpoint||null;void 0===t&&null!==i&&(t=i.isLogpoint()),this.editBreakpointCondition({line:e,breakpoint:i,location:null,isLogpoint:t})}editorInitialized(e){this.editor=e,async function(e,t,i){const o=p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance(),n=await o.getMappedLines(i);if(!n)return[];const r=[];for(let i=0;i{t.length&&e.dispatch({effects:o.SourceFrame.addNonBreakableLines.of(t)})}),console.error),this.ignoreListInfobar&&this.attachInfobar(this.ignoreListInfobar),this.missingDebugInfoBar&&this.attachInfobar(this.missingDebugInfoBar),this.sourceMapInfobar&&this.attachInfobar(this.sourceMapInfobar),this.muted||this.refreshBreakpoints(),this.callFrameChanged(),this.popoverHelper?.dispose(),this.popoverHelper=new t.PopoverHelper.PopoverHelper(e,this.getPopoverRequest.bind(this),"sources.object-properties"),this.popoverHelper.setDisableOnClick(!0),this.popoverHelper.setTimeout(250,250)}static accepts(e){return e.contentType().hasScripts()}showIgnoreListInfobarIfNeeded(){const e=this.uiSourceCode;if(!e.contentType().hasScripts())return;if(!p.IgnoreListManager.IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(e))return void this.hideIgnoreListInfobar();this.ignoreListInfobar&&this.ignoreListInfobar.dispose();const i=new t.Infobar.Infobar("warning",oo(to.thisScriptIsOnTheDebuggersIgnore),[{text:oo(to.configure),delegate:t.ViewManager.ViewManager.instance().showView.bind(t.ViewManager.ViewManager.instance(),"blackbox"),dismiss:!1,jslogContext:"configure"},{text:oo(to.removeFromIgnoreList),delegate:function(){p.IgnoreListManager.IgnoreListManager.instance().unIgnoreListUISourceCode(e)},buttonVariant:"tonal",dismiss:!0,jslogContext:"remove-from-ignore-list"}],void 0,"script-on-ignore-list");this.ignoreListInfobar=i,i.setCloseCallback((()=>this.removeInfobar(this.ignoreListInfobar))),i.createDetailsRowMessage(oo(to.theDebuggerWillSkipStepping)),this.attachInfobar(this.ignoreListInfobar)}attachInfobar(e){this.editor&&this.editor.dispatch({effects:o.SourceFrame.addInfobar.of(e)})}removeInfobar(e){this.editor&&e&&this.editor.dispatch({effects:o.SourceFrame.removeInfobar.of(e)})}hideIgnoreListInfobar(){this.ignoreListInfobar&&(this.ignoreListInfobar.dispose(),this.ignoreListInfobar=null)}willHide(){this.popoverHelper?.hidePopover()}editBreakpointLocation({breakpoint:e,uiLocation:t}){const{lineNumber:i}=this.transformer.uiLocationToEditorLocation(t.lineNumber,t.columnNumber),o=this.editor?.state.doc.line(i+1);o&&this.editBreakpointCondition({line:o,breakpoint:e,location:null,isLogpoint:e.isLogpoint()})}populateLineGutterContextMenu(e,t){const n=new i.UISourceCode.UILocation(this.uiSourceCode,t,0);if(this.scriptsPanel.appendUILocationItems(e,n),this.muted||!this.editor)return;const r=this.editor.state.doc.line(t+1),s=this.lineBreakpoints(r),a=p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().supportsConditionalBreakpoints(this.uiSourceCode);if(s.length){const t=oo(to.removeBreakpoint,{n:s.length});e.debugSection().appendItem(t,(()=>s.forEach((e=>{d.userMetrics.actionTaken(d.UserMetrics.Action.BreakpointRemovedFromGutterContextMenu),e.remove(!1)}))),{jslogContext:"remove-breakpoint"}),1===s.length&&a&&e.debugSection().appendItem(oo(to.editBreakpoint),(()=>{this.editBreakpointCondition({line:r,breakpoint:s[0],location:null})}),{jslogContext:"edit-breakpoint"});if(s.some((e=>e.enabled()))){const t=oo(to.disableBreakpoint,{n:s.length});e.debugSection().appendItem(t,(()=>s.forEach((e=>e.setEnabled(!1)))),{jslogContext:"enable-breakpoint"})}if(s.some((e=>!e.enabled()))){const t=oo(to.enableBreakpoint,{n:s.length});e.debugSection().appendItem(t,(()=>s.forEach((e=>e.setEnabled(!0)))),{jslogContext:"disable-breakpoint"})}}else this.editor&&o.SourceFrame.isBreakableLine(this.editor.state,r)&&(e.debugSection().appendItem(oo(to.addBreakpoint),this.createNewBreakpoint.bind(this,r,Zi,!0,!1),{jslogContext:"add-breakpoint"}),a&&(e.debugSection().appendItem(oo(to.addConditionalBreakpoint),(()=>{this.editBreakpointCondition({line:r,breakpoint:null,location:null,isLogpoint:!1})}),{jslogContext:"add-cnd-breakpoint"}),e.debugSection().appendItem(oo(to.addLogpoint),(()=>{this.editBreakpointCondition({line:r,breakpoint:null,location:null,isLogpoint:!0})}),{jslogContext:"add-logpoint"}),e.debugSection().appendItem(oo(to.neverPauseHere),this.createNewBreakpoint.bind(this,r,eo,!0,!1),{jslogContext:"never-pause-here"})))}populateTextAreaContextMenu(e){function t(e,t){t&&e.addSourceMapURL(t)}function o(e,t){t&&(e.addDebugInfoURL(t),e.script?.debuggerModel&&this.updateScriptFile(e.script?.debuggerModel))}if(this.uiSourceCode.project().type()===i.Workspace.projectTypes.Network&&n.Settings.Settings.instance().moduleSetting("js-source-maps-enabled").get()&&!p.IgnoreListManager.IgnoreListManager.instance().isUserIgnoreListedURL(this.uiSourceCode.url())&&this.scriptFileForDebuggerModel.size){const i=this.scriptFileForDebuggerModel.values().next().value,n=oo(to.addSourceMap);e.debugSection().appendItem(n,function(e){V.createAddSourceMapURLDialog(t.bind(null,e)).show()}.bind(null,i),{jslogContext:"add-source-map"}),i.script?.isWasm()&&!p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().pluginManager.hasPluginForScript(i.script)&&e.debugSection().appendItem(oo(to.addWasmDebugInfo),function(e){V.createAddDWARFSymbolsURLDialog(o.bind(this,e)).show()}.bind(this,i),{jslogContext:"add-wasm-debug-info"})}}workingCopyChanged(){this.scriptFileForDebuggerModel.size||this.setMuted(this.uiSourceCode.isDirty())}workingCopyCommitted(){this.scriptsPanel.updateLastModificationTime(),this.scriptFileForDebuggerModel.size||this.setMuted(!1)}didMergeToVM(){this.consistentScripts()&&this.setMuted(!1)}didDivergeFromVM(){this.setMuted(!0)}setMuted(e){this.initializedMuted||e!==this.muted&&(this.muted=e,e?this.editor&&this.editor.dispatch({effects:ao.of(null)}):this.restoreBreakpointsAfterEditing())}consistentScripts(){for(const e of this.scriptFileForDebuggerModel.values())if(e.hasDivergedFromVM()||e.isMergingToVM())return!1;return!0}isVariableIdentifier(e){return"VariableName"===e||"VariableDefinition"===e}isIdentifier(e){return"VariableName"===e||"VariableDefinition"===e||"PropertyName"===e||"PropertyDefinition"===e}getPopoverRequest(e){if(e instanceof KeyboardEvent)return null;if(t.KeyboardShortcut.KeyboardShortcut.eventHasCtrlEquivalentKey(e))return null;const i=t.Context.Context.instance().flavor(r.Target.Target),o=i?i.model(r.DebuggerModel.DebuggerModel):null,{editor:n}=this;if(!o||!o.isPaused()||!n)return null;const a=t.Context.Context.instance().flavor(r.DebuggerModel.CallFrame);if(!a)return null;let c=n.editor.posAtCoords(e);if(!c)return null;const l=n.editor.coordsAtPos(c);if(!l||e.clientYl.bottom||e.clientXl.right+30)return null;e.clientXn.state.doc.lineAt(c).from&&(c-=1);const d=Eo(n.state,this.uiSourceCode.mimeType(),c);if(!d)return null;const u=n.state.doc.lineAt(d.from);if(d.to>u.to)return null;const h=n.editor.coordsAtPos(d.from),p=n.editor.coordsAtPos(d.to);if(!h||!p)return null;const g=new AnchorBox(h.left,h.top-2,p.right-h.left,p.bottom-h.top),b=n.state.sliceDoc(d.from,d.to);let f=null;return{box:g,show:async e=>{let i="";if(a.script.isJavaScript()){const e=await m.NamesResolver.allVariablesInCallFrame(a);try{i=await w.FormatterWorkerPool.formatterWorkerPool().javaScriptSubstitute(b,e)}catch{}}const c=d.containsSideEffects,l=await a.evaluate({expression:i||b,objectGroup:"popover",includeCommandLineAPI:!1,silent:!0,returnByValue:!1,generatePreview:!1,throwOnSideEffect:c,timeout:void 0,disableBreaks:void 0,replMode:void 0,allowUnsafeEvalBlockedByCSP:void 0});if(!l||"error"in l||!l.object||"object"===l.object.type&&"error"===l.object.subtype)return!1;f=await y.ObjectPopoverHelper.ObjectPopoverHelper.buildObjectPopover(l.object,e);const u=t.Context.Context.instance().flavor(r.DebuggerModel.CallFrame);if(!f||a!==u)return o.runtimeModel().releaseObjectGroup("popover"),f&&f.dispose(),!1;const h=s.Decoration.set(Mo.range(d.from,d.to));return n.dispatch({effects:Po.update.of(h)}),!0},hide:()=>{f&&f.dispose(),o.runtimeModel().releaseObjectGroup("popover"),n.dispatch({effects:Po.update.of(s.Decoration.none)})}}}onEditorUpdate(e){if(!e.changes.empty)for(const t of this.breakpoints)t.position=e.changes.mapPos(t.position)}onWheel(e){this.executionLocation&&t.KeyboardShortcut.KeyboardShortcut.eventHasCtrlEquivalentKey(e)&&e.preventDefault()}onKeyDown(e){const i=t.KeyboardShortcut.KeyboardShortcut.eventHasCtrlEquivalentKey(e);return i||this.setControlDown(!1),e.key===u.KeyboardUtilities.ESCAPE_KEY&&this.popoverHelper?.isPopoverVisible()?(this.popoverHelper.hidePopover(),e.consume(),!0):(i&&this.executionLocation&&this.setControlDown(!0),!1)}onMouseMove(e){this.executionLocation&&this.controlDown&&t.KeyboardShortcut.KeyboardShortcut.eventHasCtrlEquivalentKey(e)&&(this.continueToLocations||this.showContinueToLocations())}onMouseDown(e){if(!this.executionLocation||!t.KeyboardShortcut.KeyboardShortcut.eventHasCtrlEquivalentKey(e))return;if(!this.continueToLocations||!this.editor)return;e.consume();const i=this.editor.editor.posAtCoords(e);if(null!==i)for(const{from:e,to:t,click:o}of this.continueToLocations)if(e<=i&&t>=i){o();break}}onBlur(e){this.setControlDown(!1)}onKeyUp(e){this.setControlDown(!1)}setControlDown(e){e!==this.controlDown&&(this.controlDown=e,clearTimeout(this.controlTimeout),this.controlTimeout=void 0,e&&this.executionLocation?this.controlTimeout=window.setTimeout((()=>{this.executionLocation&&this.controlDown&&this.showContinueToLocations()}),150):this.clearContinueToLocations())}editBreakpointCondition(e){const{line:t,breakpoint:i,location:o,isLogpoint:n}=e;if(i?.isRemoved)return;this.#P=!1;if(this.#M&&function(e,t){if(e.line.number!==t.line.number)return!1;if(e.line.from!==t.line.from)return!1;if(e.line.text!==t.line.text)return!1;if(e.breakpoint!==t.breakpoint)return!1;if(e.location!==t.location)return!1;return e.isLogpoint===t.isLogpoint}(this.#M,e))return;this.activeBreakpointDialog&&this.activeBreakpointDialog.saveAndFinish();const r=this.editor,a=i?i.condition():"",c=i?.isLogpoint()??Boolean(n),l=document.createElement("div"),d=new s.Compartment,u=new ee(t.number-1,a,c,(async e=>{this.activeBreakpointDialog=null,this.#M=void 0,u.detach(),r.dispatch({effects:d.reconfigure([])}),e.committed?(x.BreakpointsView.BreakpointsSidebarController.instance().breakpointEditFinished(i,a!==e.condition),i?i.setCondition(e.condition,e.isLogpoint):o?await this.setBreakpoint(o.lineNumber,o.columnNumber,e.condition,!0,e.isLogpoint):await this.createNewBreakpoint(t,e.condition,!0,e.isLogpoint)):x.BreakpointsView.BreakpointsSidebarController.instance().breakpointEditFinished(i,!1)}));r.dispatch({effects:s.StateEffect.appendConfig.of(d.of(s.EditorView.decorations.of(s.Decoration.set([s.Decoration.widget({block:!0,widget:new class extends s.WidgetType{toDOM(){return l}},side:1}).range(t.to)]))))}),u.element.addEventListener("blur",(async e=>{(!e.relatedTarget||e.relatedTarget&&!e.relatedTarget.isSelfOrDescendant(u.element))&&(this.#P=!0,setTimeout((()=>{this.activeBreakpointDialog===u&&(this.#P?(u.saveAndFinish(),this.#P=!1):u.focusEditor())}),200))}),!0),u.markAsExternallyManaged(),u.show(l),u.focusEditor(),this.activeBreakpointDialog=u,this.#M=e}async updateValueDecorations(){if(!this.editor)return;const e=this.executionLocation?await this.computeValueDecorations():null;this.editor&&(e||this.editor.state.field(Io.field).size)&&this.editor.dispatch({effects:Io.update.of(e||s.Decoration.none)})}async#A(e,t){const i=e&&await p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().rawLocationToUILocation(e);if(!i||i.uiSourceCode.url()!==t)return null;const o=this.editor?.toOffset(this.transformer.uiLocationToEditorLocation(i.lineNumber,i.columnNumber));return o??null}async computeValueDecorations(){if(!this.editor)return null;if(!n.Settings.Settings.instance().moduleSetting("inline-variable-values").get())return null;if(!t.Context.Context.instance().flavor(r.RuntimeModel.ExecutionContext))return null;const e=t.Context.Context.instance().flavor(r.DebuggerModel.CallFrame);if(!e)return null;const i=this.uiSourceCode.url(),o=this.#A(e.functionLocation(),i),a=this.#A(e.location(),i),[c,l]=await Promise.all([o,a]);if(!c||!l||!this.editor)return null;if(c>=l||l-c>1e4)return null;for(;s.syntaxParserRunning(this.editor.editor);){if(await new Promise((e=>window.requestIdleCallback(e))),!this.editor)return null;s.ensureSyntaxTree(this.editor.state,l,16)}const d=xo(this.editor.state,c,l,l);if(0===d.length)return null;const u=await ko(e,(e=>this.#A(e,i)));if(!this.editor||0===u.length)return null;const h=To(u,d);if(!h||!this.editor)return null;const p=[];for(const[e,t]of h){const i=h.get(e-1);let o=i?Array.from(t).filter((e=>i.get(e[0])!==e[1])):Array.from(t);o.length&&(o.length>10&&(o=o.slice(0,10)),p.push(s.Decoration.widget({widget:new wo(o),side:1}).range(this.editor.state.doc.line(e+1).to)))}return s.Decoration.set(p,!0)}async showContinueToLocations(){this.popoverHelper?.hidePopover();if(!t.Context.Context.instance().flavor(r.RuntimeModel.ExecutionContext)||!this.editor)return;const e=t.Context.Context.instance().flavor(r.DebuggerModel.CallFrame);if(!e)return;const i=e.functionLocation()||e.location(),o=e.debuggerModel,{state:n}=this.editor,a=await o.getPossibleBreakpoints(i,null,!0);this.continueToLocations=[];let c=-1;for(const e of a.reverse()){const t=this.transformer.uiLocationToEditorLocation(e.lineNumber,e.columnNumber);if(c===t.lineNumber&&"call"!==e.type||t.lineNumber>=n.doc.lines)continue;const i=n.doc.line(t.lineNumber+1),o=Math.min(i.to,i.from+t.columnNumber);let r=s.syntaxTree(n).resolveInner(o,1);if(r.firstChild||r.fromi.to)continue;if("."===r.name){const e=r.resolve(r.to,1);if(e.firstChild||e.fromi.to)continue;r=e}const a=r.name,l="this"===a||"return"===a||"new"===a||"break"===a||"continue"===a;if(!l&&!this.isIdentifier(a))continue;this.continueToLocations.push({from:r.from,to:r.to,async:!1,click:()=>e.continueToLocation()}),"call"===e.type&&(c=t.lineNumber);const d=l?"":i.text.slice(r.from-i.from,r.to-i.from);let u=null;if("then"===d&&"MemberExpression"===r.parent?.name?u=r.parent.parent:"setTimeout"!==d&&"setInterval"!==d&&"postMessage"!==d||(u=r.parent),"new"===a){const e=r.parent?.getChild("Expression");e&&"VariableName"===e.name&&"Worker"===n.sliceDoc(e.from,e.to)&&(u=r.parent)}if(u&&("CallExpression"===u.name||"NewExpression"===u.name)&&"call"===e.type){const t=u.getChild("ArgList")?.firstChild?.nextSibling;let i;if("VariableName"===t?.name?i=t:"ArrowFunction"!==t?.name&&"FunctionExpression"!==t?.name||(i=t.firstChild,"async"===i?.name&&(i=i.nextSibling)),i){const t=this.executionLocation&&e.lineNumber===this.executionLocation.lineNumber&&e.columnNumber===this.executionLocation.columnNumber;this.continueToLocations.push({from:i.from,to:i.to,async:!0,click:()=>this.asyncStepIn(e,Boolean(t))})}}}const l=s.Decoration.set(this.continueToLocations.map((e=>(e.async?bo:mo).range(e.from,e.to))),!0);this.editor.dispatch({effects:fo.update.of(l)})}clearContinueToLocations(){this.editor?.state.field(fo.field).size&&this.editor.dispatch({effects:fo.update.of(s.Decoration.none)})}asyncStepIn(e,t){function i(){e.debuggerModel.scheduleStepIntoAsync()}t?i():e.continueToLocation(i)}fetchBreakpoints(){if(!this.editor)return[];const{editor:e}=this;return this.breakpointManager.breakpointLocationsForUISourceCode(this.uiSourceCode).map((({uiLocation:t,breakpoint:i})=>{const o=this.transformer.uiLocationToEditorLocation(t.lineNumber,t.columnNumber);return{position:e.toOffset(o),breakpoint:i}}))}lineBreakpoints(e){return this.breakpoints.filter((t=>t.position>=e.from&&t.position<=e.to)).map((e=>e.breakpoint))}async linePossibleBreakpoints(e){const t=this.transformer.editorLocationToUILocation(e.number-1,0),i=this.transformer.editorLocationToUILocation(e.number-1,Math.min(e.length,2500)),o=new b.TextRange.TextRange(t.lineNumber,t.columnNumber||0,i.lineNumber,i.columnNumber||0);return await this.breakpointManager.possibleBreakpoints(this.uiSourceCode,o)}async computeBreakpointDecoration(e,t){const i=[],o=[],n=new Map,r=new Map,a=[],c=new Set,l=(e,t,i)=>{let o=r.get(e);o||(o=[],r.set(e,o)),o.push({breakpoint:i,column:t})};for(const{position:i,breakpoint:o}of t){const t=e.doc.lineAt(i);let r=n.get(t.from);r||(r=[],n.set(t.from,r)),o.enabled()&&r.every((e=>!e.enabled()))&&a.push(this.linePossibleBreakpoints(t).then((e=>d(t,e)))),r.push(o),o.enabled()&&(c.add(i),l(t.from,i-t.from,o))}for(const[e,t]of n){const i=t.sort(po)[0];let n="cm-breakpoint";i.enabled()||(n+=" cm-breakpoint-disabled"),i.bound()||(n+=" cm-breakpoint-unbound"),i.isLogpoint()?n+=" cm-breakpoint-logpoint":i.condition()&&(n+=" cm-breakpoint-conditional"),o.push(new ho(n,e).range(e))}const d=(e,t)=>{for(const i of t){const t=this.transformer.uiLocationToEditorLocation(i.lineNumber,i.columnNumber);if(t.lineNumber!==e.number-1)continue;const o=Math.min(e.to,e.from+t.columnNumber);c.has(o)||l(e.from,t.columnNumber,null)}};await Promise.all(a);for(const[e,t]of r)if(t.length>1)for(const{column:o,breakpoint:n}of t){const t=new uo(n,this);i.push(s.Decoration.widget({widget:t,side:-1}).range(e+o))}return{content:s.Decoration.set(i,!0),gutter:s.RangeSet.of(o,!0)}}async restoreBreakpointsAfterEditing(){const{breakpoints:e}=this,t=this.editor;this.breakpoints=[],await Promise.all(e.map((async e=>{const{breakpoint:i,position:o}=e,n=i.condition(),r=i.enabled(),s=i.isLogpoint();await i.remove(!1);const a=t.toLineColumn(o),c=this.transformer.editorLocationToUILocation(a.lineNumber,a.columnNumber);await this.setBreakpoint(c.lineNumber,c.columnNumber,n,r,s)})))}async refreshBreakpoints(){if(this.editor){this.breakpoints=this.fetchBreakpoints();const e=this.breakpoints,t=await this.computeBreakpointDecoration(this.editor.state,e);this.editor&&this.breakpoints===e&&(t.gutter.size||this.editor.state.field(lo,!1)?.gutter.size)&&this.editor.dispatch({effects:so.of(t)})}}breakpointChange(e){const{uiLocation:t}=e.data;if(t.uiSourceCode===this.uiSourceCode&&!this.muted){for(const e of this.scriptFileForDebuggerModel.values())if(e.isDivergingFromVM()||e.isMergingToVM())return;window.clearTimeout(this.refreshBreakpointsTimeout),this.refreshBreakpointsTimeout=window.setTimeout((()=>this.refreshBreakpoints()),50)}}onInlineBreakpointMarkerClick(e,t){if(e.consume(!0),t)e.shiftKey?t.setEnabled(!t.enabled()):t.remove(!1);else if(this.editor){const t=this.editor.editor.posAtDOM(e.target),i=this.editor.state.doc.lineAt(t),o=this.transformer.editorLocationToUILocation(i.number-1,t-i.from);this.setBreakpoint(o.lineNumber,o.columnNumber,Zi,!0,!1)}}onInlineBreakpointMarkerContextMenu(e,i){e.consume(!0);const n=this.editor,r=n.editor.posAtDOM(e.target),s=n.state.doc.lineAt(r);if(!o.SourceFrame.isBreakableLine(n.state,s)||!p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().supportsConditionalBreakpoints(this.uiSourceCode))return;const a=new t.ContextMenu.ContextMenu(e);if(i)a.debugSection().appendItem(oo(to.editBreakpoint),(()=>{this.editBreakpointCondition({line:s,breakpoint:i,location:null})}),{jslogContext:"edit-breakpoint"});else{const e=this.transformer.editorLocationToUILocation(s.number-1,r-s.from);a.debugSection().appendItem(oo(to.addConditionalBreakpoint),(()=>{this.editBreakpointCondition({line:s,breakpoint:null,location:e,isLogpoint:!1})}),{jslogContext:"add-cnd-breakpoint"}),a.debugSection().appendItem(oo(to.addLogpoint),(()=>{this.editBreakpointCondition({line:s,breakpoint:null,location:e,isLogpoint:!0})}),{jslogContext:"add-logpoint"}),a.debugSection().appendItem(oo(to.neverPauseHere),(()=>this.setBreakpoint(e.lineNumber,e.columnNumber,eo,!0,!1)),{jslogContext:"never-pause-here"})}a.show()}updateScriptFiles(){for(const e of r.TargetManager.TargetManager.instance().models(r.DebuggerModel.DebuggerModel)){p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().scriptFile(this.uiSourceCode,e)&&this.updateScriptFile(e)}this.showSourceMapInfobarIfNeeded()}updateScriptFile(e){const t=this.scriptFileForDebuggerModel.get(e),i=p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().scriptFile(this.uiSourceCode,e);this.scriptFileForDebuggerModel.delete(e),t&&(t.removeEventListener("DidMergeToVM",this.didMergeToVM,this),t.removeEventListener("DidDivergeFromVM",this.didDivergeFromVM,this),this.muted&&!this.uiSourceCode.isDirty()&&this.consistentScripts()&&this.setMuted(!1)),i&&(this.scriptFileForDebuggerModel.set(e,i),i.addEventListener("DidMergeToVM",this.didMergeToVM,this),i.addEventListener("DidDivergeFromVM",this.didDivergeFromVM,this),i.checkMapping(),i.missingSymbolFiles().then((e=>{if(e){const t=oo(to.debugInfoNotFound,{PH1:i.uiSourceCode.url()});this.updateMissingDebugInfoInfobar({resources:e,details:t})}else this.updateMissingDebugInfoInfobar(null)})))}updateMissingDebugInfoInfobar(e){if(!this.missingDebugInfoBar){if(null===e)return this.removeInfobar(this.missingDebugInfoBar),void(this.missingDebugInfoBar=null);if(this.missingDebugInfoBar=t.Infobar.Infobar.create("error",e.details,[],void 0,"missing-debug-info"),this.missingDebugInfoBar){for(const i of e.resources){const e=this.missingDebugInfoBar?.createDetailsRowMessage(oo(to.debugFileNotFound,{PH1:n.ParsedURL.ParsedURL.extractName(i.resourceUrl)}));if(e){const o=r.PageResourceLoader.PageResourceLoader.makeExtensionKey(i.resourceUrl,i.initiator);if(r.PageResourceLoader.PageResourceLoader.instance().getResourcesLoaded().get(o)){const i=t.UIUtils.createTextButton(oo(to.showRequest),(()=>{n.Revealer.reveal(new r.PageResourceLoader.ResourceKey(o))}),{jslogContext:"show-request",variant:"text"});i.style.setProperty("margin-left","10px"),i.title=oo(to.openDeveloperResources),e.appendChild(i)}e.classList.add("infobar-selectable")}}this.missingDebugInfoBar.setCloseCallback((()=>{this.removeInfobar(this.missingDebugInfoBar),this.missingDebugInfoBar=null})),this.attachInfobar(this.missingDebugInfoBar)}}}scriptHasSourceMap(){for(const e of r.TargetManager.TargetManager.instance().models(r.DebuggerModel.DebuggerModel)){const t=p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().scriptFile(this.uiSourceCode,e);if(t?.hasSourceMapURL())return!0}return!1}getSourceMapResource(){const e=this.loader.getResourcesLoaded();for(const[t,i]of this.scriptFileForDebuggerModel.entries()){const o=i.script?.sourceMapURL;if(o){const s=r.SourceMapManager.SourceMapManager.resolveRelativeSourceURL(t.target(),i.script.sourceURL),a=n.ParsedURL.ParsedURL.completeURL(s,o);if(a){const t=e.get(r.PageResourceLoader.PageResourceLoader.makeKey(a,i.script.createPageResourceLoadInitiator()));if(t)return t}}}return null}showSourceMapInfobarIfNeeded(){if(this.sourceMapInfobar)return;if(!n.Settings.Settings.instance().moduleSetting("js-source-maps-enabled").get())return;if(!this.scriptHasSourceMap())return;const e=this.getSourceMapResource();if(!e||null!==e.success){if(e)if(e.success){if(this.sourceMapInfobar=t.Infobar.Infobar.create("info",oo(to.sourceMapLoaded),[],n.Settings.Settings.instance().createSetting("source-map-infobar-disabled",!1),"source-map-loaded"),!this.sourceMapInfobar)return;this.sourceMapInfobar.createDetailsRowMessage(oo(to.associatedFilesShouldBeAdded)),this.sourceMapInfobar.createDetailsRowMessage(oo(to.associatedFilesAreAvailable,{PH1:String(t.ShortcutRegistry.ShortcutRegistry.instance().shortcutTitleForAction("quick-open.show"))}))}else{if(this.sourceMapInfobar=t.Infobar.Infobar.create("warning",oo(to.sourceMapFailed),[],void 0,"source-map-failed"),!this.sourceMapInfobar)return;this.sourceMapInfobar.createDetailsRowMessage(oo(to.debuggingPowerReduced)),e.errorMessage&&this.sourceMapInfobar.createDetailsRowMessage(oo(to.errorLoading,{PH1:u.StringUtilities.trimMiddle(e.url,t.UIUtils.MaxLengthForDisplayedURLs),PH2:e.errorMessage}))}else{if(this.sourceMapInfobar=t.Infobar.Infobar.create("info",oo(to.sourceMapSkipped),[],n.Settings.Settings.instance().createSetting("source-map-skipped-infobar-disabled",!1),"source-map-skipped"),!this.sourceMapInfobar)return;this.sourceMapInfobar.createDetailsRowMessage(oo(to.debuggingPowerReduced)),this.sourceMapInfobar.createDetailsRowMessage(oo(to.reloadForSourceMap))}this.sourceMapInfobar.setCloseCallback((()=>{this.removeInfobar(this.sourceMapInfobar),this.sourceMapInfobar=null})),this.attachInfobar(this.sourceMapInfobar)}}handleGutterClick(e,t){return!this.muted&&0===t.button&&!t.altKey&&(t.metaKey||t.ctrlKey?(this.#D(e,t.shiftKey),!0):(this.toggleBreakpoint(e,t.shiftKey),!0))}async toggleBreakpoint(e,t){if(this.muted)return;this.activeBreakpointDialog&&this.activeBreakpointDialog.finishEditing(!1,"");const i=this.lineBreakpoints(e);if(!i.length)return void await this.createNewBreakpoint(e,Zi,!0,!1);const o=i.some((e=>!e.enabled()));for(const e of i)t?e.setEnabled(o):(d.userMetrics.actionTaken(d.UserMetrics.Action.BreakpointRemovedFromGutterToggle),e.remove(!1))}async defaultBreakpointLocation(e){if(this.executionLocation){if(this.transformer.uiLocationToEditorLocation(this.executionLocation.lineNumber,this.executionLocation.columnNumber).lineNumber===e.number-1){const t=await this.linePossibleBreakpoints(e);for(const e of t)if(0===e.compareTo(this.executionLocation))return this.executionLocation}}return this.transformer.editorLocationToUILocation(e.number-1)}async createNewBreakpoint(e,t,i,n){if(!this.editor||!o.SourceFrame.isBreakableLine(this.editor.state,e))return;d.userMetrics.actionTaken(d.UserMetrics.Action.ScriptsBreakpointSet),this.#N();const r=await this.defaultBreakpointLocation(e);await this.setBreakpoint(r.lineNumber,r.columnNumber,t,i,n)}async setBreakpoint(e,t,i,o,r){n.Settings.Settings.instance().moduleSetting("breakpoints-active").set(!0);const s=await this.breakpointManager.setBreakpoint(this.uiSourceCode,e,t,i,o,r,"USER_ACTION");return this.breakpointWasSetForTest(e,t,i,o),s}breakpointWasSetForTest(e,t,i,o){}async callFrameChanged(){this.liveLocationPool.disposeAll();const e=t.Context.Context.instance().flavor(r.DebuggerModel.CallFrame);e?await p.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().createCallFrameLiveLocation(e.location(),(async t=>{const i=await t.uiLocation();i&&i.uiSourceCode.canonicalScriptId()===this.uiSourceCode.canonicalScriptId()?(this.setExecutionLocation(i),this.updateMissingDebugInfoInfobar(e.missingDebugInfoDetails),this.#N()):this.setExecutionLocation(null)}),this.liveLocationPool):this.setExecutionLocation(null)}setExecutionLocation(e){if(this.executionLocation!==e&&this.editor)if(this.executionLocation=e,e){const t=this.transformer.uiLocationToEditorLocation(e.lineNumber,e.columnNumber),i=c.Position.toOffset(this.editor.state.doc,t);this.editor.dispatch({effects:[c.ExecutionPositionHighlighter.setHighlightedPosition.of(i)]}),this.updateValueDecorations(),this.controlDown&&this.showContinueToLocations()}else this.editor.dispatch({effects:[fo.update.of(s.Decoration.none),Io.update.of(s.Decoration.none),c.ExecutionPositionHighlighter.clearHighlightedPosition.of()]})}dispose(){this.hideIgnoreListInfobar(),this.sourceMapInfobar&&this.sourceMapInfobar.dispose();for(const e of this.scriptFileForDebuggerModel.values())e.removeEventListener("DidMergeToVM",this.didMergeToVM,this),e.removeEventListener("DidDivergeFromVM",this.didDivergeFromVM,this);this.scriptFileForDebuggerModel.clear(),this.popoverHelper?.hidePopover(),this.popoverHelper?.dispose(),this.setExecutionLocation(null),this.breakpointManager.removeEventListener(C.BreakpointManager.Events.BreakpointAdded,this.breakpointChange,this),this.breakpointManager.removeEventListener(C.BreakpointManager.Events.BreakpointRemoved,this.breakpointChange,this),this.uiSourceCode.removeEventListener(i.UISourceCode.Events.WorkingCopyChanged,this.workingCopyChanged,this),this.uiSourceCode.removeEventListener(i.UISourceCode.Events.WorkingCopyCommitted,this.workingCopyCommitted,this),p.IgnoreListManager.IgnoreListManager.instance().removeChangeListener(this.ignoreListCallback),no.delete(this.uiSourceCode),super.dispose(),window.clearTimeout(this.refreshBreakpointsTimeout),this.editor=void 0,t.Context.Context.instance().removeFlavorChangeListener(r.DebuggerModel.CallFrame,this.callFrameChanged,this),this.liveLocationPool.disposeAll()}#N(){if(this.#F)return;this.#F=!0;const e=n.ResourceType.ResourceType.mimeFromURL(this.uiSourceCode.url()),t=n.ResourceType.ResourceType.mediaTypeForMetrics(e??"",this.uiSourceCode.contentType().isFromSourceMap(),b.TextUtils.isMinified(this.uiSourceCode.content()),this.uiSourceCode.url().startsWith("snippet://"),this.uiSourceCode.url().startsWith("debugger://"));d.userMetrics.sourcesPanelFileDebugged(t)}}const so=s.StateEffect.define(),ao=s.StateEffect.define();function co(e,t){const i=[];return e.between(0,t.length,((e,t,o)=>{let n=o.elementClass;/cm-breakpoint-disabled/.test(n)||(n+=" cm-breakpoint-disabled"),i.push(new ho(n,e).range(e))})),s.RangeSet.of(i,!1)}const lo=s.StateField.define({create:()=>({content:s.RangeSet.empty,gutter:s.RangeSet.empty}),update(e,t){t.changes.empty||(e={content:e.content.map(t.changes),gutter:e.gutter.map(t.changes)});for(const i of t.effects)i.is(so)?e=i.value:i.is(ao)&&(e={content:s.RangeSet.empty,gutter:co(e.gutter,t.state.doc)});return e},provide:e=>[s.EditorView.decorations.from(e,(e=>e.content)),s.lineNumberMarkers.from(e,(e=>e.gutter))]});class uo extends s.WidgetType{breakpoint;parent;class;constructor(e,t){super(),this.breakpoint=e,this.parent=t,this.class="cm-inlineBreakpoint",e?.isLogpoint()?this.class+=" cm-inlineBreakpoint-logpoint":e?.condition()&&(this.class+=" cm-inlineBreakpoint-conditional"),e?.enabled()||(this.class+=" cm-inlineBreakpoint-disabled")}eq(e){return e.class===this.class&&e.breakpoint===this.breakpoint}toDOM(){const e=document.createElement("span");return e.className=this.class,e.setAttribute("jslog",`${l.breakpointMarker().track({click:!0})}`),e.addEventListener("click",(e=>{this.parent.onInlineBreakpointMarkerClick(e,this.breakpoint),e.consume()})),e.addEventListener("contextmenu",(e=>{this.parent.onInlineBreakpointMarkerContextMenu(e,this.breakpoint),e.consume()})),e}ignoreEvent(){return!0}}class ho extends s.GutterMarker{elementClass;#U;constructor(e,t){super(),this.elementClass=e,this.#U=t}eq(e){return e.elementClass===this.elementClass}toDOM(e){const t=document.createElement("div");t.setAttribute("jslog",`${l.breakpointMarker().track({click:!0})}`);const i=e.state.doc.lineAt(this.#U).number,n=e.state.facet(o.SourceFrame.LINE_NUMBER_FORMATTER);return t.textContent=n(i,e.state),t}}function po(e,t){return e.enabled()!==t.enabled()?e.enabled()?-1:1:e.bound()!==t.bound()?e.bound()?-1:1:Boolean(e.condition())!==Boolean(t.condition())?Boolean(e.condition())?-1:1:0}function go(){const e=s.StateEffect.define(),t=s.StateField.define({create:()=>s.Decoration.none,update:(t,i)=>i.effects.reduce(((t,i)=>i.is(e)?i.value:t),t.map(i.changes)),provide:e=>s.EditorView.decorations.from(e)});return{update:e,field:t}}const mo=s.Decoration.mark({class:"cm-continueToLocation"}),bo=s.Decoration.mark({class:"cm-continueToLocation cm-continueToLocation-async"}),fo=go(),vo={},So={class:"cm-hasContinueMarkers"},Co=s.EditorView.contentAttributes.compute([fo.field],(e=>e.field(fo.field).size?So:vo));class wo extends s.WidgetType{pairs;constructor(e){super(),this.pairs=e}eq(e){return this.pairs.length===e.pairs.length&&this.pairs.every(((t,i)=>t[0]===e.pairs[i][0]&&t[1]===e.pairs[i][1]))}toDOM(){const e=new y.RemoteObjectPreviewFormatter.RemoteObjectPreviewFormatter,i=document.createElement("div");i.classList.add("cm-variableValues");let o=!0;for(const[n,r]of this.pairs){o?o=!1:t.UIUtils.createTextChild(i,", ");const s=i.createChild("span");t.UIUtils.createTextChild(s,n+" = ");const a=r.preview?r.preview.properties.length:0,c=r.preview?.entries?r.preview.entries.length:0;if(r.preview&&a+c<10)e.appendObjectPreview(s,r.preview,!1);else{const e=y.ObjectPropertiesSection.ObjectPropertiesSection.createPropertyValue(r,!1,!1);s.appendChild(e.element)}}return i}}const Io=go();class yo{blockList=new Set;variables=[]}function xo(e,t,i,o){const n=e.doc.lineAt(t);t=Math.min(n.to,t),i=e.doc.lineAt(i).from;const r=s.syntaxTree(e);function a(e){return("Block"===(t=e.name)||"ForSpec"===t)&&(e.to{if(i.from0?d[d.length-1].blockList.add(n):(i.from>l.to&&(l=e.doc.lineAt(i.from)),h().push({line:l.number-1,from:i.from,id:n})))},leave:e=>{if(u===e.node)u=null;else if(a(e)){const e=d.pop(),t=h();for(const i of e?.variables??[])e?.blockList.has(i.id)||t.push(i)}}}),c}async function ko(e,t){const i=[];for(const o of e.scopeChain()){const e=await t(o.range()?.start??null);if(!e)break;const n=await t(o.range()?.end??null);if(!n)break;const{properties:r}=await m.NamesResolver.resolveScopeInObject(o).getAllProperties(!1,!1);if(!r||r.length>500)break;const s=new Map(r.map((e=>[e.name,e.value])));if(i.push({scopeStart:e,scopeEnd:n,variableMap:s}),"local"===o.type())break}return i}function To(e,t){const i=new Map;for(const{line:n,from:r,id:s}of t){const t=o(s,r,e);if(!t)continue;let a=i.get(n);a||(a=new Map,i.set(n,a)),a.set(s,t)}return i;function o(e,t,i){for(const o of i){if(t=o.scopeEnd)continue;const i=o.variableMap.get(e);if(i)return i}return null}}function Eo(e,t,i){const{main:o}=e.selection;if(!o.empty)return i50||/[^\w_\-$]/.test(e.sliceDoc(r.from,r.to))?null:{from:r.from,to:r.to,containsSideEffects:!1}}}function Lo(e,t){let i=!1;return t.toTree().iterate({enter(o){switch(o.name){case"AssignmentExpression":case"CallExpression":return i=!0,!1;case"ArithOp":{const n=e.sliceString(t.from+o.from,t.from+o.to);if("++"===n||"--"===n)return i=!0,!1;break}}return!0}}),i}const Mo=s.Decoration.mark({class:"cm-evaluatedExpression"}),Po=go(),Fo=s.EditorView.baseTheme({".cm-line::selection":{backgroundColor:"transparent",color:"currentColor"},".cm-gutters .cm-gutter.cm-lineNumbers .cm-gutterElement":{"&:hover, &.cm-breakpoint":{borderStyle:"solid",borderWidth:"1px 4px 1px 1px",marginRight:"-4px",paddingLeft:"8px",lineHeight:"calc(1.2em - 2px)",position:"relative"},"&:hover":{WebkitBorderImage:Do("#ebeced","#ebeced")},"&.cm-breakpoint":{color:"#fff",WebkitBorderImage:Do("#4285f4","#1a73e8")},"&.cm-breakpoint-conditional":{WebkitBorderImage:Do("#f29900","#e37400"),"&::before":{content:'"?"',position:"absolute",top:0,left:"1px"}},"&.cm-breakpoint-logpoint":{WebkitBorderImage:Do("#f439a0","#d01884"),"&::before":{content:'"‥"',position:"absolute",top:"-3px",left:"1px"}}},"&dark .cm-gutters .cm-gutter.cm-lineNumbers .cm-gutterElement":{"&:hover":{WebkitBorderImage:Do("#3c4043","#3c4043")},"&.cm-breakpoint":{WebkitBorderImage:Do("#5186EC","#1a73e8")},"&.cm-breakpoint-conditional":{WebkitBorderImage:Do("#e9a33a","#e37400")},"&.cm-breakpoint-logpoint":{WebkitBorderImage:Do("#E54D9B","#d01884")}},":host-context(.breakpoints-deactivated) & .cm-gutters .cm-gutter.cm-lineNumbers .cm-gutterElement.cm-breakpoint, .cm-gutters .cm-gutter.cm-lineNumbers .cm-gutterElement.cm-breakpoint-disabled":{color:"#1a73e8",WebkitBorderImage:Do("#d9e7fd","#1a73e8"),"&.cm-breakpoint-conditional":{color:"#e37400",WebkitBorderImage:Do("#fcebcc","#e37400")},"&.cm-breakpoint-logpoint":{color:"#d01884",WebkitBorderImage:Do("#fdd7ec","#f439a0")}},":host-context(.breakpoints-deactivated) &dark .cm-gutters .cm-gutter.cm-lineNumbers .cm-gutterElement.cm-breakpoint, &dark .cm-gutters .cm-gutter.cm-lineNumbers .cm-gutterElement.cm-breakpoint-disabled":{WebkitBorderImage:Do("#2a384e","#1a73e8"),"&.cm-breakpoint-conditional":{WebkitBorderImage:Do("#4d3c1d","#e37400")},"&.cm-breakpoint-logpoint":{WebkitBorderImage:Do("#4e283d","#f439a0")}},".cm-inlineBreakpoint":{cursor:"pointer",position:"relative",top:"1px",content:Ao("#4285F4","#1A73E8"),height:"10px","&.cm-inlineBreakpoint-conditional":{content:No("#F29900","#E37400")},"&.cm-inlineBreakpoint-logpoint":{content:Uo("#F439A0","#D01884")}},"&dark .cm-inlineBreakpoint":{content:Ao("#5186EC","#1A73E8"),"&.cm-inlineBreakpoint-conditional":{content:No("#e9a33a","#E37400")},"&.cm-inlineBreakpoint-logpoint":{content:Uo("#E54D9B","#D01884")}},":host-context(.breakpoints-deactivated) & .cm-inlineBreakpoint, .cm-inlineBreakpoint-disabled":{content:Ao("#4285F4","#1A73E8","0.2"),"&.cm-inlineBreakpoint-conditional":{content:No("#F9AB00","#E37400","0.2")},"&.cm-inlineBreakpoint-logpoint":{content:Uo("#F439A0","#D01884","0.2")}},".cm-executionLine":{backgroundColor:"var(--sys-color-yellow-container)",outline:"1px solid var(--sys-color-yellow-outline)",".cm-hasContinueMarkers &":{backgroundColor:"transparent"},"&.cm-highlightedLine":{animation:"cm-fading-highlight-execution 2s 0s"},"&.cm-line::selection, &.cm-line ::selection":{backgroundColor:"var(--sys-color-tonal-container) !important"}},".cm-executionToken":{backgroundColor:"var(--sys-color-state-focus-select)"},"@keyframes cm-fading-highlight-execution":{from:{backgroundColor:"var(--sys-color-tonal-container)"},to:{backgroundColor:"var(--sys-color-yellow-container)"}},".cm-continueToLocation":{cursor:"pointer",backgroundColor:"var(--color-continue-to-location)","&:hover":{backgroundColor:"var(--color-continue-to-location-hover)",border:"1px solid var(--color-continue-to-location-hover-border)",margin:"0 -1px"},"&.cm-continueToLocation-async":{backgroundColor:"var(--color-continue-to-location-async)","&:hover":{backgroundColor:"var(--color-continue-to-location-async-hover)",border:"1px solid var(--color-continue-to-location-async-hover-border)",margin:"0 -1px"}}},".cm-evaluatedExpression":{backgroundColor:"var(--color-evaluated-expression)",border:"1px solid var(--color-evaluated-expression-border)",margin:"0 -1px"},".cm-variableValues":{display:"inline",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"1000px",opacity:"80%",backgroundColor:"var(--color-variable-values)",marginLeft:"10px",padding:"0 5px",userSelect:"text",".cm-executionLine &":{backgroundColor:"transparent",opacity:"50%"}}});function Do(e,t){return`url('data:image/svg+xml,') 1 3 1 1`}function Ao(e,t,i="1"){return`url('data:image/svg+xml,')`}function No(e,t,i="1"){return`url('data:image/svg+xml,')`}function Uo(e,t,i="1"){return`url('data:image/svg+xml,')`}var Bo=Object.freeze({__proto__:null,BreakpointLocationRevealer:class{async reveal(e,t){const{uiLocation:i}=e;Gi.instance().showUILocation(i,t);const o=no.get(i.uiSourceCode);o?o.editBreakpointLocation(e):x.BreakpointsView.BreakpointsSidebarController.instance().breakpointEditFinished(e.breakpoint,!1)}},DebuggerPlugin:ro,computePopoverHighlightRange:Eo,computeScopeMappings:ko,getVariableNamesByLine:xo,getVariableValuesByLine:To});class Ro{query;queryUpperCase;score;sequence;dataUpperCase;fileNameIndex;constructor(e){this.query=e,this.queryUpperCase=e.toUpperCase(),this.score=new Int32Array(2e3),this.sequence=new Int32Array(2e3),this.dataUpperCase="",this.fileNameIndex=0}calculateScore(e,t){if(!e||!this.query)return 0;const i=this.query.length,o=e.length;(!this.score||this.score.length=a?(r[s]=l+1,n[s]=c+d):(r[s]=0,n[s]=a)}t&&this.restoreMatchIndexes(r,i,o,t);return 256*n[i*o-1]+(256-e.length)}testWordStart(e,t){if(0===t)return!0;const i=e.charAt(t-1);return"_"===i||"-"===i||"/"===i||"."===i||" "===i||e[t-1]!==this.dataUpperCase[t-1]&&e[t]===this.dataUpperCase[t]}restoreMatchIndexes(e,t,i,o){let n=t-1,r=i-1;for(;n>=0&&r>=0;)if(0===e[n*i+r])--r;else o.push(r),--n,--r;o.reverse()}singleCharScore(e,t,i,o){const n=this.testWordStart(t,o),r=o>this.fileNameIndex;let s=10;return(0===o||"/"===t[o-1])&&(s+=4),n&&(s+=2),e[i]===t[o]&&e[i]===this.queryUpperCase[i]&&(s+=6),r&&(s+=4),o===this.fileNameIndex+1&&0===i&&(s+=5),r&&n&&(s+=3),s}sequenceCharScore(e,t,i,o,n){let r=10;return o>this.fileNameIndex&&(r+=4),(0===o||"/"===t[o-1])&&(r+=5),r+=4*n,r}match(e,t,i,o,n){return this.queryUpperCase[i]!==this.dataUpperCase[o]?0:n?this.sequenceCharScore(e,t,i,o-n,n):this.singleCharScore(e,t,i,o)}}var jo=Object.freeze({__proto__:null,FilePathScoreFunction:Ro});const Wo={noFilesFound:"No files found",sIgnoreListed:"{PH1} (ignore listed)"},Vo=e.i18n.registerUIStrings("panels/sources/FilteredUISourceCodeListProvider.ts",Wo),Oo=e.i18n.getLocalizedString.bind(void 0,Vo);class Ho extends F.FilteredListWidget.Provider{queryLineNumberAndColumnNumber;defaultScores;scorer;uiSourceCodes;uiSourceCodeIds;query;constructor(e){super(e),this.queryLineNumberAndColumnNumber="",this.defaultScores=null,this.scorer=new Ro(""),this.uiSourceCodes=[],this.uiSourceCodeIds=new Set}projectRemoved(e){const t=e.data;this.populate(t),this.refresh()}populate(e){this.uiSourceCodes=[],this.uiSourceCodeIds.clear();for(const t of i.Workspace.WorkspaceImpl.instance().projects())if(t!==e&&this.filterProject(t))for(const e of t.uiSourceCodes())this.filterUISourceCode(e)&&(this.uiSourceCodes.push(e),this.uiSourceCodeIds.add(e.canonicalScriptId()))}filterUISourceCode(e){if(this.uiSourceCodeIds.has(e.canonicalScriptId()))return!1;if(k.Runtime.experiments.isEnabled("just-my-code")&&p.IgnoreListManager.IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(e))return!1;if(e.isFetchXHR())return!1;const t=g.Persistence.PersistenceImpl.instance().binding(e);return!t||t.fileSystem===e}uiSourceCodeSelected(e,t,i){}filterProject(e){return!0}itemCount(){return this.uiSourceCodes.length}itemContentTypeAt(e){return this.uiSourceCodes[e].contentType()}itemKeyAt(e){return this.uiSourceCodes[e].url()}setDefaultScores(e){this.defaultScores=e}itemScoreAt(e,t){const o=this.uiSourceCodes[e],n=this.defaultScores&&this.defaultScores.get(o)||0;if(!t||t.length<2)return n;this.query!==t&&(this.query=t,this.scorer=new Ro(t));let r=10;o.project().type()!==i.Workspace.projectTypes.FileSystem||g.Persistence.PersistenceImpl.instance().binding(o)||(r=5);let s=0;o.contentType().isFromSourceMap()&&!o.isKnownThirdParty()&&(s=100),o.contentType().isScript()&&(p.IgnoreListManager.IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(o)||(s+=50));const a=o.fullDisplayName();return n+r*(s+this.scorer.calculateScore(a,null))}renderItem(e,i,o,n){o.parentElement?.parentElement?.classList.toggle("search-mode",Boolean(i)),i=this.rewriteQuery(i);const r=this.uiSourceCodes[e],s=r.fullDisplayName(),a=[];new Ro(i).calculateScore(s,a);const c=s.lastIndexOf("/");let l=s;p.IgnoreListManager.IgnoreListManager.instance().isUserOrSourceMapIgnoreListedUISourceCode(r)&&(o.parentElement?.classList.add("is-ignore-listed"),l=Oo(Wo.sIgnoreListed,{PH1:l})),o.textContent=r.displayName()+(this.queryLineNumberAndColumnNumber||""),this.renderSubtitleElement(n,s.substring(0,c+1)),t.Tooltip.Tooltip.install(n,l);const d=[];for(let e=0;ec){for(let e=0;e43&&(o=i.length-43);e.createChild("div","first-part").textContent=i.substring(0,o);e.createChild("div","second-part").textContent=i.substring(o),t.Tooltip.Tooltip.install(e,i)}selectItem(e,t){const i=t.trim().match(/^([^:]*)(:\d+)?(:\d+)?$/);if(!i)return;let o,n;i[2]&&(o=parseInt(i[2].substr(1),10)-1),i[3]&&(n=parseInt(i[3].substr(1),10)-1);const r=null!==e?this.uiSourceCodes[e]:null;this.uiSourceCodeSelected(r,o,n)}rewriteQuery(e){if(!(e=e?e.trim():"")||":"===e)return"";const t=e.match(/^([^:]+)((?::[^:]*){0,2})$/);return this.queryLineNumberAndColumnNumber=t?t[2]:"",t?t[1]:e}uiSourceCodeAdded(e){const t=e.data;this.filterUISourceCode(t)&&this.filterProject(t.project())&&(this.uiSourceCodes.push(t),this.uiSourceCodeIds.add(t.canonicalScriptId()),this.refresh())}notFoundText(){return Oo(Wo.noFilesFound)}attach(){i.Workspace.WorkspaceImpl.instance().addEventListener(i.Workspace.Events.UISourceCodeAdded,this.uiSourceCodeAdded,this),i.Workspace.WorkspaceImpl.instance().addEventListener(i.Workspace.Events.ProjectRemoved,this.projectRemoved,this),this.populate()}detach(){i.Workspace.WorkspaceImpl.instance().removeEventListener(i.Workspace.Events.UISourceCodeAdded,this.uiSourceCodeAdded,this),i.Workspace.WorkspaceImpl.instance().removeEventListener(i.Workspace.Events.ProjectRemoved,this.projectRemoved,this),this.queryLineNumberAndColumnNumber="",this.defaultScores=null}}var _o=Object.freeze({__proto__:null,FilteredUISourceCodeListProvider:Ho});const zo={noFileSelected:"No file selected",noResultsFound:"No results found",typeANumberToGoToThatLine:"Type a number to go to that line",currentPositionXsTypeAnOffset:"Type an offset between 0x{PH1} and 0x{PH2} to navigate to",currentLineSTypeALineNumber:"Type a line number between 1 and {PH1} to navigate to",goToOffsetXs:"Go to offset 0x{PH1}",goToLineSAndColumnS:"Go to line {PH1} and column {PH2}",goToLineS:"Go to line {PH1}"},qo=e.i18n.registerUIStrings("panels/sources/GoToLineQuickOpen.ts",zo),$o=e.i18n.getLocalizedString.bind(void 0,qo);class Go extends F.FilteredListWidget.Provider{#B=[];constructor(){super("source-line")}selectItem(e,t){const i=this.currentSourceFrame();if(!i)return;const o=this.parsePosition(t);o&&i.revealPosition({lineNumber:o.line-1,columnNumber:o.column-1})}itemCount(){return this.#B.length}renderItem(e,i,o,n){const r=a.Icon.create("colon");o.parentElement?.parentElement?.insertBefore(r,o.parentElement),t.UIUtils.createTextChild(o,this.#B[e])}rewriteQuery(e){return""}queryChanged(e){this.#B=[];const t=this.parsePosition(e),i=this.currentSourceFrame();if(t)i?.wasmDisassembly?this.#B.push($o(zo.goToOffsetXs,{PH1:(t.column-1).toString(16)})):t.column&&t.column>1?this.#B.push($o(zo.goToLineSAndColumnS,{PH1:t.line,PH2:t.column})):i&&t.line>i.textEditor.state.doc.lines||this.#B.push($o(zo.goToLineS,{PH1:t.line}));else{if(!i)return void this.#B.push($o(zo.typeANumberToGoToThatLine));const e=i.textEditor.state,t=i.wasmDisassembly;if(t){const e=t.lineNumberToBytecodeOffset(t.lineNumbers-1),i=e.toString(16).length;return void this.#B.push($o(zo.currentPositionXsTypeAnOffset,{PH1:"0".padStart(i,"0"),PH2:e.toString(16)}))}const o=i.editorLocationToUILocation(e.doc.lines-1).lineNumber+1;this.#B.push($o(zo.currentLineSTypeALineNumber,{PH1:o}))}}notFoundText(e){return this.currentSourceFrame()?$o(zo.noResultsFound):$o(zo.noFileSelected)}parsePosition(e){const t=this.currentSourceFrame();if(t?.wasmDisassembly){const t=e.match(/0x([0-9a-fA-F]+)/);if(!t?.[0]||t[0].length!==e.length)return null;return{line:0,column:parseInt(t[0],16)+1}}const i=e.match(/([0-9]+)(\:[0-9]*)?/);if(!i?.[0]||i[0].length!==e.length)return null;const o=parseInt(i[1],10);let n=0;return i[2]&&(n=parseInt(i[2].substring(1),10)),{line:Math.max(0|o,1),column:Math.max(0|n,1)}}currentSourceFrame(){const e=t.Context.Context.instance().flavor(Mi);return e?e.currentSourceFrame():null}}var Ko=Object.freeze({__proto__:null,GoToLineQuickOpen:Go});const Jo={formatS:"Format {PH1}",format:"Format"},Qo=e.i18n.registerUIStrings("panels/sources/InplaceFormatterEditorAction.ts",Jo),Xo=e.i18n.getLocalizedString.bind(void 0,Qo);let Yo;class Zo{button;sourcesView;uiSourceCodeTitleChangedEvent=null;constructor(){}static instance(e={forceNew:null}){const{forceNew:t}=e;return Yo&&!t||(Yo=new Zo),Yo}editorSelected(e){const t=e.data;this.updateButton(t)}editorClosed(e){const{wasSelected:t}=e.data;t&&this.updateButton(null)}updateButton(e){this.uiSourceCodeTitleChangedEvent&&n.EventTarget.removeEventListeners([this.uiSourceCodeTitleChangedEvent]),this.uiSourceCodeTitleChangedEvent=e?e.addEventListener(i.UISourceCode.Events.TitleChanged,(e=>this.updateButton(e.data)),this):null;const t=this.isFormattable(e);this.button.element.classList.toggle("hidden",!t),e&&t&&this.button.setTitle(Xo(Jo.formatS,{PH1:e.name()}))}getOrCreateButton(e){return this.button||(this.sourcesView=e,this.sourcesView.addEventListener("EditorSelected",this.editorSelected.bind(this)),this.sourcesView.addEventListener("EditorClosed",this.editorClosed.bind(this)),this.button=new t.Toolbar.ToolbarButton(Xo(Jo.format),"brackets"),this.button.addEventListener("Click",this.formatSourceInPlace,this),this.updateButton(e.currentUISourceCode())),this.button}isFormattable(e){return!!e&&(!!e.project().canSetFileContent()||null!==g.Persistence.PersistenceImpl.instance().binding(e))}formatSourceInPlace(){const e=this.sourcesView.currentSourceFrame();if(!e)return;const t=e.uiSourceCode();this.isFormattable(t)&&(t.isDirty()?this.contentLoaded(t,e,t.workingCopy()):t.requestContent().then((i=>{this.contentLoaded(t,e,i.content||"")})))}async contentLoaded(e,t,i){const{formattedContent:o,formattedMapping:n}=await w.ScriptFormatter.format(e.contentType(),t.contentType,i);if(e.workingCopy()===o)return;const r=t.textEditor.toLineColumn(t.textEditor.state.selection.main.head),[s,a]=n.originalToFormatted(r.lineNumber,r.columnNumber);e.setWorkingCopy(o),this.sourcesView.showSourceLocation(e,{lineNumber:s,columnNumber:a})}}Fi(Zo.instance);var en=Object.freeze({__proto__:null,InplaceFormatterEditorAction:Zo});var tn=Object.freeze({__proto__:null,OpenFileQuickOpen:class extends Ho{constructor(){super("source-file")}attach(){this.setDefaultScores(Mi.defaultUISourceCodeScores()),super.attach()}uiSourceCodeSelected(e,t,i){d.userMetrics.actionTaken(d.UserMetrics.Action.SelectFileFromFilePicker),e&&("number"==typeof t?n.Revealer.reveal(e.uiLocation(t,i)):n.Revealer.reveal(e))}filterProject(e){return!e.isServiceProject()}renderItem(e,t,i,o){super.renderItem(e,t,i,o);const n=new a.Icon.Icon,r=M.iconDataForResourceType(this.itemContentTypeAt(e));n.data={...r,width:"18px",height:"18px"},i.parentElement?.parentElement?.insertBefore(n,i.parentElement)}renderAsTwoRows(){return!0}}});const on={noFileSelected:"No file selected.",openAJavascriptOrCssFileToSee:"Open a JavaScript or CSS file to see symbols",noResultsFound:"No results found"},nn=e.i18n.registerUIStrings("panels/sources/OutlineQuickOpen.ts",on),rn=e.i18n.getLocalizedString.bind(void 0,nn);function sn(e){function t(t){t=Math.max(0,Math.min(t,e.doc.length));const i=e.doc.lineAt(t);return{lineNumber:i.number-1,columnNumber:t-i.from}}function i(){for(;"ParamList"!==n.name;)n.nextSibling();let t="";if("ParamList"===n.name&&n.firstChild())do{switch(n.name){case"ArrayPattern":t+="[‥]";break;case"ObjectPattern":t+="{‥}";break;case"VariableDefinition":t+=e.sliceDoc(n.from,n.to);break;case"Spread":t+="...";break;case",":t+=", "}}while(n.nextSibling());return`(${t})`}const o=[],n=s.syntaxTree(e).cursor();do{switch(n.name){case"RuleSet":for(n.firstChild();;n.nextSibling()){const i=e.sliceDoc(n.from,n.to),{lineNumber:r,columnNumber:s}=t(n.from);if(o.push({title:i,lineNumber:r,columnNumber:s}),n.nextSibling(),","!==n.name)break}break;case"FunctionDeclaration":case"MethodDeclaration":{let r="";n.firstChild();do{switch(n.name){case"abstract":case"async":case"get":case"set":case"static":r=`${r}${n.name} `;break;case"Star":r+="*";break;case"PropertyDefinition":case"PrivatePropertyDefinition":case"VariableDefinition":{const s=r+e.sliceDoc(n.from,n.to),{lineNumber:a,columnNumber:c}=t(n.from),l=i();o.push({title:s,subtitle:l,lineNumber:a,columnNumber:c});break}}}while(n.nextSibling());break}case"Property":{let r="";n.firstChild();do{if("async"===n.name||"get"===n.name||"set"===n.name)r=`${r}${n.name} `;else{if("Star"!==n.name){if("PropertyDefinition"===n.name){let s=e.sliceDoc(n.from,n.to);const{lineNumber:a,columnNumber:c}=t(n.from);for(;n.nextSibling();){if("ClassExpression"===n.name){s=`class ${s}`,o.push({title:s,lineNumber:a,columnNumber:c});break}if("ArrowFunction"!==n.name&&"FunctionExpression"!==n.name||n.firstChild(),"async"===n.name)r=`async ${r}`;else if("Star"===n.name)r+="*";else if("ParamList"===n.name){s=r+s;const e=i();o.push({title:s,subtitle:e,lineNumber:a,columnNumber:c});break}}break}break}r+="*"}}while(n.nextSibling());break}case"PropertyName":case"VariableDefinition":if(n.matchContext(["ClassDeclaration"])){const i="class "+e.sliceDoc(n.from,n.to),{lineNumber:r,columnNumber:s}=t(n.from);o.push({title:i,lineNumber:r,columnNumber:s})}else if(n.matchContext(["AssignmentExpression","MemberExpression"])||n.matchContext(["VariableDeclaration"])){let r=e.sliceDoc(n.from,n.to);const{lineNumber:s,columnNumber:a}=t(n.from);for(;"Equals"!==n.name;)if(!n.next())return o;if(!n.nextSibling())break;if("ArrowFunction"===n.name||"FunctionExpression"===n.name){n.firstChild();let e="";for(;"ParamList"!==n.name&&("async"===n.name?e=`async ${e}`:"Star"===n.name&&(e+="*"),n.nextSibling()););r=e+r;const t=i();o.push({title:r,subtitle:t,lineNumber:s,columnNumber:a})}else"ClassExpression"===n.name&&(r=`class ${r}`,o.push({title:r,lineNumber:s,columnNumber:a}))}break;case"App":if(n.firstChild()&&n.nextSibling()&&"module"===e.sliceDoc(n.from,n.to)){if(n.nextSibling()&&"Identifier"===n.name){const i=e.sliceDoc(n.from,n.to),{lineNumber:r,columnNumber:s}=t(n.from);o.push({title:i,lineNumber:r,columnNumber:s})}do{if("App"===n.name&&n.firstChild()){if(n.nextSibling()&&"func"===e.sliceDoc(n.from,n.to)&&n.nextSibling()&&"Identifier"===n.name){const i=e.sliceDoc(n.from,n.to),{lineNumber:r,columnNumber:s}=t(n.from),a=[];for(;n.nextSibling();)"App"===n.name&&n.firstChild()&&(n.nextSibling()&&"param"===e.sliceDoc(n.from,n.to)&&(n.nextSibling()&&"Identifier"===n.name?a.push(e.sliceDoc(n.from,n.to)):a.push(`$${a.length}`)),n.parent());const c=`(${a.join(", ")})`;o.push({title:i,subtitle:c,lineNumber:r,columnNumber:s})}n.parent()}}while(n.nextSibling())}break;case"FieldIdentifier":case"Identifier":if(n.matchContext(["FunctionDeclarator"])){const i=e.sliceDoc(n.from,n.to),{lineNumber:r,columnNumber:s}=t(n.from);o.push({title:i,lineNumber:r,columnNumber:s})}break;case"TypeIdentifier":if(n.matchContext(["ClassSpecifier"])){const i=`class ${e.sliceDoc(n.from,n.to)}`,{lineNumber:r,columnNumber:s}=t(n.from);o.push({title:i,lineNumber:r,columnNumber:s})}else if(n.matchContext(["StructSpecifier"])){const i=`struct ${e.sliceDoc(n.from,n.to)}`,{lineNumber:r,columnNumber:s}=t(n.from);o.push({title:i,lineNumber:r,columnNumber:s})}}}while(n.next());return o}class an extends F.FilteredListWidget.Provider{items=[];active=!1;constructor(){super("source-symbol")}attach(){const e=this.currentSourceFrame();e?(this.active=!0,this.items=sn(e.textEditor.state).map((({title:t,subtitle:i,lineNumber:o,columnNumber:n})=>(({lineNumber:o,columnNumber:n}=e.editorLocationToUILocation(o,n)),{title:t,subtitle:i,lineNumber:o,columnNumber:n})))):(this.active=!1,this.items=[])}detach(){this.active=!1,this.items=[]}itemCount(){return this.items.length}itemKeyAt(e){const t=this.items[e];return t.title+(t.subtitle?t.subtitle:"")}itemScoreAt(e,t){const i=this.items[e];return t.split("(")[0].toLowerCase()===i.title.toLowerCase()?1/(1+i.lineNumber):-i.lineNumber-1}renderItem(e,t,i,o){const n=this.items[e],r=a.Icon.create("deployed");i.parentElement?.parentElement?.insertBefore(r,i.parentElement),i.textContent=n.title+(n.subtitle?n.subtitle:""),F.FilteredListWidget.FilteredListWidget.highlightRanges(i,t);const s=this.currentSourceFrame();if(!s)return;const c=i.parentElement?.parentElement?.createChild("span","tag");if(!c)return;const l=s.wasmDisassembly;if(l){const e=l.lineNumberToBytecodeOffset(l.lineNumbers-1).toString(16).length;c.textContent=`:0x${n.columnNumber.toString(16).padStart(e,"0")}`}else c.textContent=`:${n.lineNumber+1}`}selectItem(e,t){if(null===e)return;const i=this.currentSourceFrame();if(!i)return;const o=this.items[e];i.revealPosition({lineNumber:o.lineNumber,columnNumber:o.columnNumber},!0)}currentSourceFrame(){const e=t.Context.Context.instance().flavor(Mi);return e?.currentSourceFrame()??null}notFoundText(){return this.currentSourceFrame()?this.active?rn(on.noResultsFound):rn(on.openAJavascriptOrCssFileToSee):rn(on.noFileSelected)}}var cn=Object.freeze({__proto__:null,OutlineQuickOpen:an,outline:sn}),ln={cssText:`.scope-chain-sidebar-pane-section-header{flex:auto}.scope-chain-sidebar-pane-section-icon{float:left;margin-right:5px}.scope-chain-sidebar-pane-section-subtitle{float:right;margin-left:5px;max-width:55%;text-overflow:ellipsis;overflow:hidden}.scope-chain-sidebar-pane-section-title{font-weight:normal;word-wrap:break-word;white-space:normal}.scope-chain-sidebar-pane-section{padding:2px 4px;flex:none}\n/*# sourceURL=${import.meta.resolve("./scopeChainSidebarPane.css")} */\n`};const dn={loading:"Loading...",notPaused:"Not paused",noVariables:"No variables",closureS:"Closure ({PH1})",closure:"Closure"},un=e.i18n.registerUIStrings("panels/sources/ScopeChainSidebarPane.ts",dn),hn=e.i18n.getLocalizedString.bind(void 0,un);let pn;class gn extends t.Widget.VBox{treeOutline;expandController;linkifier;infoElement;#R=null;constructor(){super(!0),this.registerRequiredCSS(ln),this.contentElement.setAttribute("jslog",`${l.section("sources.scope-chain")}`),this.treeOutline=new y.ObjectPropertiesSection.ObjectPropertiesSectionsTreeOutline,this.treeOutline.registerRequiredCSS(ln),this.treeOutline.hideOverflow(),this.treeOutline.setShowSelectionOnKeyboardFocus(!0),this.expandController=new y.ObjectPropertiesSection.ObjectPropertiesSectionsTreeExpandController(this.treeOutline),this.linkifier=new U.Linkifier.Linkifier,this.infoElement=document.createElement("div"),this.infoElement.className="gray-info-message",this.infoElement.tabIndex=-1,this.flavorChanged(t.Context.Context.instance().flavor(r.DebuggerModel.CallFrame))}static instance(){return pn||(pn=new gn),pn}flavorChanged(e){this.#R?.dispose(),this.#R=null,this.linkifier.reset(),this.contentElement.removeChildren(),this.contentElement.appendChild(this.infoElement),e?(this.infoElement.textContent=hn(dn.loading),this.#R=new m.ScopeChainModel.ScopeChainModel(e),this.#R.addEventListener("ScopeChainUpdated",(e=>this.buildScopeTreeOutline(e.data)),this)):this.infoElement.textContent=hn(dn.notPaused)}focus(){this.hasFocus()||t.Context.Context.instance().flavor(r.DebuggerModel.DebuggerPausedDetails)&&this.treeOutline.forceSelect()}buildScopeTreeOutline(e){const{scopeChain:t}=e;this.treeOutline.removeChildren(),this.contentElement.removeChildren(),this.contentElement.appendChild(this.treeOutline.element);let i=!1;for(const[e,o]of t.entries()){"local"===o.type()&&(i=!0);const t=this.createScopeSectionTreeElement(o);"global"===o.type()?t.collapse():i&&"local"!==o.type()||t.expand(),this.treeOutline.appendChild(t),0===e&&t.select(!0)}this.sidebarPaneUpdatedForTest()}createScopeSectionTreeElement(e){let i=null;"local"!==e.type()&&"closure"!==e.type()||(i=hn(dn.noVariables));let o=e.typeName();if("closure"===e.type()){const i=e.name();o=i?hn(dn.closureS,{PH1:t.UIUtils.beautifyFunctionName(i)}):hn(dn.closure)}let n=e.description();o&&o!==n||(n=null);const r=e.icon(),s=document.createElement("div");if(s.classList.add("scope-chain-sidebar-pane-section-header"),s.classList.add("tree-element-title"),r){const e=document.createElement("img");e.classList.add("scope-chain-sidebar-pane-section-icon"),e.src=r,s.appendChild(e)}s.createChild("div","scope-chain-sidebar-pane-section-subtitle").textContent=n,s.createChild("div","scope-chain-sidebar-pane-section-title").textContent=o;const a=new y.ObjectPropertiesSection.RootElement(e.object(),this.linkifier,i,0,e.extraProperties());return a.title=s,a.listItemElement.classList.add("scope-chain-sidebar-pane-section"),a.listItemElement.setAttribute("aria-label",o),this.expandController.watchSection(o+(n?":"+n:""),a),a}sidebarPaneUpdatedForTest(){}}var mn=Object.freeze({__proto__:null,ScopeChainSidebarPane:gn}),bn={cssText:`.border-container{border-bottom:1px solid var(--sys-color-divider);flex-shrink:0}.automatic-workspace-infobar{border-top:var(--sys-size-1) solid var(--sys-color-divider)}\n/*# sourceURL=${import.meta.resolve("./sourcesNavigator.css")} */\n`};const fn={noWorkspace:"No workspaces set up",explainWorkspace:"Set up workspaces to sync edits directly to the sources you develop.",noLocalOverrides:"No local overrides set up",explainLocalOverrides:"Override network requests and web content locally to mock remote resources.",clearConfiguration:"Clear configuration",selectFolderForOverrides:"Select folder for overrides",noContentScripts:"No content scripts detected",explainContentScripts:"View content scripts served by extensions.",noSnippets:"No snippets saved",explainSnippets:"Save the JavaScript code you run often in a snippet to run it again anytime.",newSnippet:"New snippet",createNewSnippet:"Create new snippet",run:"Run",rename:"Rename…",remove:"Remove",saveAs:"Save as...",automaticWorkspaceFolderDetected:"Workspace folder {PH1} detected",automaticWorkspaceFolderConnect:"Connect"},vn=e.i18n.registerUIStrings("panels/sources/SourcesNavigator.ts",fn),Sn=e.i18n.getLocalizedString.bind(void 0,vn);let Cn,wn;class In extends ft{constructor(){super("navigator-network",!0),this.registerRequiredCSS(bn),r.TargetManager.TargetManager.instance().addEventListener("InspectedURLChanged",this.inspectedURLChanged,this),d.userMetrics.panelLoaded("sources","DevTools.Launch.Sources"),r.TargetManager.TargetManager.instance().addScopeChangeListener(this.onScopeChange.bind(this))}static instance(e={forceNew:null}){const{forceNew:t}=e;return Cn&&!t||(Cn=new In),Cn}acceptProject(e){return e.type()===i.Workspace.projectTypes.Network&&r.TargetManager.TargetManager.instance().isInScope(p.NetworkProject.NetworkProject.getTargetForProject(e))}onScopeChange(){for(const e of i.Workspace.WorkspaceImpl.instance().projects())this.acceptProject(e)?this.tryAddProject(e):this.removeProject(e)}inspectedURLChanged(e){const t=r.TargetManager.TargetManager.instance().scopeTarget();if(e.data!==t)return;const i=t&&t.inspectedURL();if(i)for(const e of this.workspace().uiSourceCodes())this.acceptProject(e.project())&&e.url()===i&&this.revealUISourceCode(e,!0)}uiSourceCodeAdded(e){const t=r.TargetManager.TargetManager.instance().scopeTarget(),i=t&&t.inspectedURL();i&&e.url()===i&&this.revealUISourceCode(e,!0)}}class yn extends ft{toolbar;constructor(){super("navigator-overrides");const e=new t.EmptyWidget.EmptyWidget(Sn(fn.noLocalOverrides),Sn(fn.explainLocalOverrides));this.setPlaceholder(e),e.appendLink("https://developer.chrome.com/docs/devtools/overrides/"),this.toolbar=document.createElement("devtools-toolbar"),this.toolbar.classList.add("navigator-toolbar"),this.contentElement.insertBefore(this.toolbar,this.contentElement.firstChild),g.NetworkPersistenceManager.NetworkPersistenceManager.instance().addEventListener("ProjectChanged",this.updateProjectAndUI,this),this.workspace().addEventListener(i.Workspace.Events.ProjectAdded,this.onProjectAddOrRemoved,this),this.workspace().addEventListener(i.Workspace.Events.ProjectRemoved,this.onProjectAddOrRemoved,this),this.updateProjectAndUI()}static instance(e={forceNew:null}){const{forceNew:t}=e;return wn&&!t||(wn=new yn),wn}onProjectAddOrRemoved(e){const t=e.data;t&&t.type()===i.Workspace.projectTypes.FileSystem&&"overrides"!==g.FileSystemWorkspaceBinding.FileSystemWorkspaceBinding.fileSystemType(t)||this.updateUI()}updateProjectAndUI(){this.reset();const e=g.NetworkPersistenceManager.NetworkPersistenceManager.instance().project();e&&this.tryAddProject(e),this.updateUI()}updateUI(){this.toolbar.removeToolbarItems();const e=g.NetworkPersistenceManager.NetworkPersistenceManager.instance().project();if(e){const i=new t.Toolbar.ToolbarSettingCheckbox(n.Settings.Settings.instance().moduleSetting("persistence-network-overrides-enabled"));this.toolbar.appendToolbarItem(i),this.toolbar.appendToolbarItem(new t.Toolbar.ToolbarSeparator(!0));const o=new t.Toolbar.ToolbarButton(Sn(fn.clearConfiguration),"clear");return o.addEventListener("Click",(()=>{n.Settings.Settings.instance().moduleSetting("persistence-network-overrides-enabled").set(!1),e.remove()})),void this.toolbar.appendToolbarItem(o)}const i=Sn(fn.selectFolderForOverrides),o=new t.Toolbar.ToolbarButton(i,"plus",i);o.addEventListener("Click",(e=>{this.setupNewWorkspace()}),this),this.toolbar.appendToolbarItem(o)}async setupNewWorkspace(){await g.IsolatedFileSystemManager.IsolatedFileSystemManager.instance().addFileSystem("overrides")&&n.Settings.Settings.instance().moduleSetting("persistence-network-overrides-enabled").set(!0)}sourceSelected(e,t){d.userMetrics.actionTaken(d.UserMetrics.Action.OverridesSourceSelected),super.sourceSelected(e,t)}acceptProject(e){return e===g.NetworkPersistenceManager.NetworkPersistenceManager.instance().project()}}var xn=Object.freeze({__proto__:null,ActionDelegate:class{handleAction(e,t){switch(t){case"sources.create-snippet":return E.ScriptSnippetFileSystem.findSnippetsProject().createFile(u.DevToolsPath.EmptyEncodedPathString,null,"").then((e=>n.Revealer.reveal(e))),!0;case"sources.add-folder-to-workspace":return g.IsolatedFileSystemManager.IsolatedFileSystemManager.instance().addFileSystem(),!0}return!1}},ContentScriptsNavigatorView:class extends ft{constructor(){super("navigator-content-scripts");const e=new t.EmptyWidget.EmptyWidget(Sn(fn.noContentScripts),Sn(fn.explainContentScripts));this.setPlaceholder(e),e.appendLink("https://developer.chrome.com/extensions/content_scripts")}acceptProject(e){return e.type()===i.Workspace.projectTypes.ContentScripts}},FilesNavigatorView:class extends ft{#j=g.AutomaticFileSystemManager.AutomaticFileSystemManager.instance();#W=null;#V=[];constructor(){super("navigator-files"),this.registerRequiredCSS(bn);const e=new t.EmptyWidget.EmptyWidget(Sn(fn.noWorkspace),Sn(fn.explainWorkspace));this.setPlaceholder(e),e.appendLink("https://developer.chrome.com/docs/devtools/workspaces/");const i=document.createElement("devtools-toolbar");i.classList.add("navigator-toolbar"),i.appendItemsAtLocation("files-navigator-toolbar").then((()=>{i.empty()||this.contentElement.insertBefore(i,this.contentElement.firstChild)}))}wasShown(){super.wasShown(),this.#V=[this.#j.addEventListener("AutomaticFileSystemChanged",this.#O,this)],this.#O({data:this.#j.automaticFileSystem})}willHide(){n.EventTarget.removeEventListeners(this.#V),this.#O({data:null}),super.willHide()}sourceSelected(e,t){d.userMetrics.actionTaken(d.UserMetrics.Action.WorkspaceSourceSelected),super.sourceSelected(e,t)}acceptProject(e){return e.type()===i.Workspace.projectTypes.FileSystem&&"overrides"!==g.FileSystemWorkspaceBinding.FileSystemWorkspaceBinding.fileSystemType(e)&&!E.ScriptSnippetFileSystem.isSnippetsProject(e)}handleContextMenu(e){const i=new t.ContextMenu.ContextMenu(e);i.defaultSection().appendAction("sources.add-folder-to-workspace",void 0,!0),i.show()}#O(e){const i=e.data;null===i||"disconnected"!==i.state?(this.#W?.dispose(),this.#W=null):(this.#W=t.Infobar.Infobar.create("info",Sn(fn.automaticWorkspaceFolderDetected,{PH1:i.root}),[{text:Sn(fn.automaticWorkspaceFolderConnect),delegate:()=>this.#j.connectAutomaticFileSystem(!0),dismiss:!0,jslogContext:"automatic-workspace-folders.connect"}],n.Settings.Settings.instance().moduleSetting("persistence-automatic-workspace-folders"),"automatic-workspace-folders"),this.#W&&(this.#W.element.classList.add("automatic-workspace-infobar"),this.contentElement.append(this.#W.element)))}},NetworkNavigatorView:In,OverridesNavigatorView:yn,SnippetsNavigatorView:class extends ft{constructor(){super("navigator-snippets");const e=new t.EmptyWidget.EmptyWidget(Sn(fn.noSnippets),Sn(fn.explainSnippets));this.setPlaceholder(e),e.appendLink("https://developer.chrome.com/docs/devtools/javascript/snippets/");const i=document.createElement("devtools-toolbar");i.classList.add("navigator-toolbar");const o=new t.Toolbar.ToolbarButton(Sn(fn.newSnippet),"plus",Sn(fn.newSnippet),"sources.new-snippet");o.addEventListener("Click",(e=>{this.create(E.ScriptSnippetFileSystem.findSnippetsProject(),"")})),i.appendToolbarItem(o),this.contentElement.insertBefore(i,this.contentElement.firstChild)}acceptProject(e){return E.ScriptSnippetFileSystem.isSnippetsProject(e)}handleContextMenu(e){const i=new t.ContextMenu.ContextMenu(e);i.headerSection().appendItem(Sn(fn.createNewSnippet),(()=>this.create(E.ScriptSnippetFileSystem.findSnippetsProject(),"")),{jslogContext:"create-new-snippet"}),i.show()}handleFileContextMenu(e,i){const o=i.uiSourceCode(),n=new t.ContextMenu.ContextMenu(e);n.headerSection().appendItem(Sn(fn.run),(()=>E.ScriptSnippetFileSystem.evaluateScriptSnippet(o)),{jslogContext:"run"}),n.editSection().appendItem(Sn(fn.rename),(()=>this.rename(i,!1)),{jslogContext:"rename"}),n.editSection().appendItem(Sn(fn.remove),(()=>o.project().deleteFile(o)),{jslogContext:"remove"}),n.saveSection().appendItem(Sn(fn.saveAs),this.handleSaveAs.bind(this,o),{jslogContext:"save-as"}),n.show()}async handleSaveAs(e){e.commitWorkingCopy();const{content:t}=await e.requestContent();await i.FileManager.FileManager.instance().save(this.addJSExtension(e.url()),t||"",!0,!1),i.FileManager.FileManager.instance().close(e.url())}addJSExtension(e){return n.ParsedURL.ParsedURL.concatenate(e,".js")}}}),kn={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`},Tn={cssText:`.watch-expression-delete-button{position:absolute;opacity:0%;right:0;.watch-expression-title:hover &{opacity:100%}.watch-expression-title:focus-within &{opacity:100%}}:host-context(.theme-with-dark-background) .watch-expression-delete-button{filter:brightness(1.5)}.watch-expressions{min-height:26px}.watch-expression-title{white-space:nowrap;line-height:20px;display:flex}.watch-expression-title:hover,\n.watch-expression-title:focus-within{padding-right:26px}.watch-expression-object-header .watch-expression-title{margin-left:1px}.watch-expression{position:relative;flex:auto;min-height:20px}.watch-expression .name{color:var(--sys-color-purple);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex-shrink:1000000;min-width:2em}.watch-expression-error{color:var(--sys-color-error)}.watch-expressions-separator{flex-shrink:0;flex-grow:0}.watch-expression .value{white-space:nowrap;display:inline;overflow:hidden;padding-left:4px;text-overflow:ellipsis;flex-shrink:1}.watch-expression .text-prompt{text-overflow:clip;overflow:hidden;white-space:nowrap;padding-left:4px;min-height:18px;line-height:18px;user-select:text}.watch-expression-text-prompt-proxy{margin:2px 12px 2px -4px;padding-bottom:3px}.watch-expression-header{flex:auto;margin-left:-16px;padding-left:15px}li.watch-expression-tree-item{padding-left:4px}li.watch-expression-tree-item.selected{background:var(--sys-color-neutral-container)}li.watch-expression-tree-item.selected:focus{background:var(--sys-color-tonal-container)}li.watch-expression-tree-item.selected:focus-within:focus-visible{background:var(--sys-color-tonal-container)}.watch-expression-header:focus-visible{background:var(--sys-color-tonal-container)}li.watch-expression-editing::before{background-color:transparent}@media (forced-colors: active){.watch-expression-title:hover .watch-expression-delete-button,\n .watch-expressions .dimmed{opacity:100%}li.watch-expression-tree-item *{forced-color-adjust:none;color:ButtonText}li.watch-expression-tree-item:hover{forced-color-adjust:none;background-color:Highlight}li.watch-expression-tree-item:hover *{color:HighlightText}li.watch-expression-tree-item:hover .watch-expression-delete-button{background-color:HighlightText}}\n/*# sourceURL=${import.meta.resolve("./watchExpressionsSidebarPane.css")} */\n`};const En={addWatchExpression:"Add watch expression",refreshWatchExpressions:"Refresh watch expressions",noWatchExpressions:"No watch expressions",deleteAllWatchExpressions:"Delete all watch expressions",addPropertyPathToWatch:"Add property path to watch",deleteWatchExpression:"Delete watch expression",notAvailable:"",copyValue:"Copy value"},Ln=e.i18n.registerUIStrings("panels/sources/WatchExpressionsSidebarPane.ts",En),Mn=e.i18n.getLocalizedString.bind(void 0,Ln);let Pn;class Fn extends t.ThrottledWidget.ThrottledWidget{watchExpressions;emptyElement;watchExpressionsSetting;addButton;refreshButton;treeOutline;expandController;linkifier;constructor(){super(!0),this.registerRequiredCSS(Tn,kn),this.watchExpressions=[],this.watchExpressionsSetting=n.Settings.Settings.instance().createLocalSetting("watch-expressions",[]),this.addButton=new t.Toolbar.ToolbarButton(Mn(En.addWatchExpression),"plus",void 0,"add-watch-expression"),this.addButton.setSize("SMALL"),this.addButton.addEventListener("Click",(e=>{this.addButtonClicked()})),this.refreshButton=new t.Toolbar.ToolbarButton(Mn(En.refreshWatchExpressions),"refresh",void 0,"refresh-watch-expressions"),this.refreshButton.setSize("SMALL"),this.refreshButton.addEventListener("Click",this.update,this),this.contentElement.classList.add("watch-expressions"),this.contentElement.setAttribute("jslog",`${l.section("sources.watch")}`),this.contentElement.addEventListener("contextmenu",this.contextMenu.bind(this),!1),this.treeOutline=new y.ObjectPropertiesSection.ObjectPropertiesSectionsTreeOutline,this.treeOutline.registerRequiredCSS(Tn),this.treeOutline.hideOverflow(),this.treeOutline.setShowSelectionOnKeyboardFocus(!0),this.expandController=new y.ObjectPropertiesSection.ObjectPropertiesSectionsTreeExpandController(this.treeOutline),t.Context.Context.instance().addFlavorChangeListener(r.RuntimeModel.ExecutionContext,this.update,this),t.Context.Context.instance().addFlavorChangeListener(r.DebuggerModel.CallFrame,this.update,this),this.linkifier=new U.Linkifier.Linkifier,this.update()}static instance(){return Pn||(Pn=new Fn),Pn}toolbarItems(){return[this.addButton,this.refreshButton]}focus(){this.hasFocus()||this.watchExpressions.length>0&&this.treeOutline.forceSelect()}saveExpressions(){const e=[];for(let t=0;t1&&e.debugSection().appendItem(Mn(En.deleteAllWatchExpressions),this.deleteAllButtonClicked.bind(this),{jslogContext:"delete-all-watch-expressions"});const o=this.treeOutline.treeElementFromEvent(t);if(!o)return;const n=this.watchExpressions.find((e=>o.hasAncestorOrSelf(e.treeElement())));n&&n.populateContextMenu(e,t)}deleteAllButtonClicked(){this.watchExpressions=[],this.saveExpressions(),this.update()}async focusAndAddExpressionToWatch(e){await t.ViewManager.ViewManager.instance().showView("sources.watch"),this.createWatchExpression(e),this.saveExpressions(),this.update()}handleAction(e,i){const o=t.Context.Context.instance().flavor(ei);if(!o)return!1;const{state:n}=o.textEditor,r=n.sliceDoc(n.selection.main.from,n.selection.main.to);return this.focusAndAddExpressionToWatch(r),!0}appendApplicableItems(e,t,i){i instanceof y.ObjectPropertiesSection.ObjectPropertyTreeElement?i.property.synthetic||t.debugSection().appendItem(Mn(En.addPropertyPathToWatch),(()=>this.focusAndAddExpressionToWatch(i.path())),{jslogContext:"add-property-path-to-watch"}):i.textEditor.state.selection.main.empty||t.debugSection().appendAction("sources.add-to-watch")}}class Dn extends n.ObjectWrapper.ObjectWrapper{treeElementInternal;nameElement;valueElement;expressionInternal;expandController;element;editing;linkifier;textPrompt;result;preventClickTimeout;constructor(e,t,i){super(),this.expressionInternal=e,this.expandController=t,this.element=document.createElement("div"),this.element.classList.add("watch-expression"),this.element.classList.add("monospace"),this.editing=!1,this.linkifier=i,this.createWatchExpression(),this.update()}treeElement(){return this.treeElementInternal}expression(){return this.expressionInternal}async#H(e,t){const i=e.debuggerModel.selectedCallFrame();if(i?.script.isJavaScript()){const e=await m.NamesResolver.allVariablesInCallFrame(i);try{t=await w.FormatterWorkerPool.formatterWorkerPool().javaScriptSubstitute(t,e)}catch{}}return await e.evaluate({expression:t,objectGroup:Dn.watchObjectGroupId,includeCommandLineAPI:!1,silent:!0,returnByValue:!1,generatePreview:!1},!1,!1)}update(){const e=t.Context.Context.instance().flavor(r.RuntimeModel.ExecutionContext);e&&this.expressionInternal?this.#H(e,this.expressionInternal).then((e=>{"object"in e?this.createWatchExpression(e.object,e.exceptionDetails):this.createWatchExpression()})):this.createWatchExpression()}startEditing(){this.editing=!0,this.treeElementInternal.setDisableSelectFocus(!0),this.element.removeChildren();const e=this.element.createChild("div");e.textContent=this.nameElement.textContent,this.textPrompt=new y.ObjectPropertiesSection.ObjectPropertyPrompt,this.textPrompt.renderAsBlock();const t=this.textPrompt.attachAndStartEditing(e,this.finishEditing.bind(this));this.treeElementInternal.listItemElement.classList.add("watch-expression-editing"),this.treeElementInternal.collapse(),t.classList.add("watch-expression-text-prompt-proxy"),t.addEventListener("keydown",this.promptKeyDown.bind(this),!1);const i=this.element.getComponentSelection();i&&i.selectAllChildren(e)}isEditing(){return Boolean(this.editing)}finishEditing(e,t){if(e&&e.consume(t),this.editing=!1,this.treeElementInternal.setDisableSelectFocus(!1),this.treeElementInternal.listItemElement.classList.remove("watch-expression-editing"),this.textPrompt){this.textPrompt.detach();const e=t?this.expressionInternal:this.textPrompt.text();this.textPrompt=void 0,this.element.removeChildren(),this.updateExpression(e)}}dblClickOnWatchExpression(e){e.consume(),this.isEditing()||this.startEditing()}updateExpression(e){this.expressionInternal&&this.expandController.stopWatchSectionsWithId(this.expressionInternal),this.expressionInternal=e,this.update(),this.dispatchEventToListeners("ExpressionUpdated",this)}deleteWatchExpression(e){e.consume(!0),this.updateExpression(null)}createWatchExpression(e,t){this.result=e||null,this.element.removeChildren();const i=this.treeElementInternal;if(this.createWatchExpressionTreeElement(e,t),i?.parent){const e=i.parent,t=e.indexOfChild(i);e.removeChild(i),e.insertChild(this.treeElementInternal,t)}this.treeElementInternal.select()}createWatchExpressionHeader(e,i){const o=this.element.createChild("div","watch-expression-header"),n=new I.Button.Button;n.data={variant:"icon",iconName:"bin",size:"SMALL",jslogContext:"delete-watch-expression"},n.className="watch-expression-delete-button",t.Tooltip.Tooltip.install(n,Mn(En.deleteWatchExpression)),n.addEventListener("click",this.deleteWatchExpression.bind(this),!1),n.addEventListener("keydown",(e=>{"Enter"===e.key&&this.deleteWatchExpression(e)}));const r=o.createChild("div","watch-expression-title tree-element-title");if(r.appendChild(n),this.nameElement=y.ObjectPropertiesSection.ObjectPropertiesSection.createNameElement(this.expressionInternal),t.Tooltip.Tooltip.install(this.nameElement,this.expressionInternal),Boolean(i)||!e)this.valueElement=document.createElement("span"),this.valueElement.classList.add("watch-expression-error"),this.valueElement.classList.add("value"),r.classList.add("dimmed"),this.valueElement.textContent=Mn(En.notAvailable),void 0!==i?.exception?.description&&t.Tooltip.Tooltip.install(this.valueElement,i.exception.description);else{const t=y.ObjectPropertiesSection.ObjectPropertiesSection.createPropertyValueWithCustomSupport(e,Boolean(i),!1,r,this.linkifier);this.valueElement=t.element}const s=document.createElement("span");return s.classList.add("watch-expressions-separator"),s.textContent=": ",r.append(this.nameElement,s,this.valueElement),o}createWatchExpressionTreeElement(e,i){const o=this.createWatchExpressionHeader(e,i);!i&&e&&e.hasChildren&&!e.customPreview()?(o.classList.add("watch-expression-object-header"),this.treeElementInternal=new y.ObjectPropertiesSection.RootElement(e,this.linkifier),this.expandController.watchSection(this.expressionInternal,this.treeElementInternal),this.treeElementInternal.toggleOnClick=!1,this.treeElementInternal.listItemElement.addEventListener("click",this.onSectionClick.bind(this),!1),this.treeElementInternal.listItemElement.addEventListener("dblclick",this.dblClickOnWatchExpression.bind(this))):(o.addEventListener("dblclick",this.dblClickOnWatchExpression.bind(this)),this.treeElementInternal=new t.TreeOutline.TreeElement),this.treeElementInternal.title=this.element,this.treeElementInternal.listItemElement.classList.add("watch-expression-tree-item"),this.treeElementInternal.listItemElement.addEventListener("keydown",(e=>{"Enter"!==e.key||this.isEditing()?"Delete"!==e.key||this.isEditing()||this.deleteWatchExpression(e):(this.startEditing(),e.consume(!0))}))}onSectionClick(e){e.consume(!0);1===e.detail?this.preventClickTimeout=window.setTimeout(function(){if(!this.treeElementInternal)return;this.treeElementInternal.expanded?this.treeElementInternal.collapse():this.editing||this.treeElementInternal.expand()}.bind(this),333):void 0!==this.preventClickTimeout&&(window.clearTimeout(this.preventClickTimeout),this.preventClickTimeout=void 0)}promptKeyDown(e){const t=u.KeyboardUtilities.isEscKey(e);("Enter"===e.key||t)&&this.finishEditing(e,t)}populateContextMenu(e,i){this.isEditing()||e.editSection().appendItem(Mn(En.deleteWatchExpression),this.updateExpression.bind(this,null),{jslogContext:"delete-watch-expression"}),this.isEditing()||!this.result||"number"!==this.result.type&&"string"!==this.result.type||e.clipboardSection().appendItem(Mn(En.copyValue),this.copyValueButtonClicked.bind(this),{jslogContext:"copy-watch-expression-value"});const o=t.UIUtils.deepElementFromEvent(i);o&&this.valueElement.isSelfOrAncestor(o)&&this.result&&e.appendApplicableItems(this.result)}copyValueButtonClicked(){d.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(this.valueElement.textContent)}static watchObjectGroupId="watch-group"}var An=Object.freeze({__proto__:null,WatchExpression:Dn,WatchExpressionsSidebarPane:Fn});export{O as AddSourceMapURLDialog,K as AiWarningInfobarPlugin,te as BreakpointEditDialog,Je as CSSPlugin,ue as CallStackSidebarPane,Se as CategorizedBreakpointL10n,Fe as CoveragePlugin,ot as DebuggerPausedMessage,Bo as DebuggerPlugin,Pt as EditingLocationHistoryManager,jo as FilePathScoreFunction,_o as FilteredUISourceCodeListProvider,Ko as GoToLineQuickOpen,en as InplaceFormatterEditorAction,Tt as NavigatorView,tn as OpenFileQuickOpen,cn as OutlineQuickOpen,_ as Plugin,Kt as ResourceOriginPlugin,mn as ScopeChainSidebarPane,ut as SearchSourcesView,Zt as SnippetsPlugin,xn as SourcesNavigator,Yi as SourcesPanel,ct as SourcesSearchScope,Ui as SourcesView,ki as TabbedEditorContainer,Oi as ThreadsSidebarPane,gi as UISourceCodeFrame,An as WatchExpressionsSidebarPane};