@react-native/debugger-frontend
Version:
Debugger frontend for React Native based on Chrome DevTools
2 lines (1 loc) • 28.5 kB
JavaScript
import*as e from"../../../../core/common/common.js";import*as t from"../../../../core/host/host.js";import*as n from"../../../../core/i18n/i18n.js";import*as o from"../../../../core/platform/platform.js";import*as i from"../../../../core/sdk/sdk.js";import*as r from"../../../../models/bindings/bindings.js";import*as s from"../../../visual_logging/visual_logging.js";import*as a from"../../legacy.js";import*as c from"../../../../models/breakpoints/breakpoints.js";import*as l from"../../../../models/text_utils/text_utils.js";import*as d from"../../../../models/workspace/workspace.js";var u={cssText:`.image-preview-container{background:transparent;text-align:center;border-spacing:0}.image-preview-container img{margin:6px 0;max-width:100px;max-height:100px;background-image:var(--image-file-checker);user-select:text;vertical-align:top;-webkit-user-drag:auto}.image-container{padding:0}.image-container > div{min-height:50px;display:flex;align-items:center;justify-content:center;cursor:pointer}.image-container > div.start{justify-content:start}.image-preview-container .row{line-height:1.2;vertical-align:baseline}.image-preview-container .title{padding-right:0.5em;color:var(--sys-color-token-subtle);white-space:nowrap;&.start{text-align:start}&.center{text-align:end}}.image-preview-container .description{white-space:nowrap;text-align:left;color:var(--sys-color-on-surface)}.image-preview-container .description-link{max-width:20em}.image-preview-container .source-link{white-space:normal;word-break:break-all;color:var(--sys-color-primary);cursor:pointer}\n/*# sourceURL=${import.meta.resolve("./imagePreview.css")} */\n`};const p={unknownSource:"unknown source",imageFromS:"Image from {PH1}",fileSize:"File size:",intrinsicSize:"Intrinsic size:",renderedSize:"Rendered size:",currentSource:"Current source:",renderedAspectRatio:"Rendered aspect ratio:",intrinsicAspectRatio:"Intrinsic aspect ratio:"},g=n.i18n.registerUIStrings("ui/legacy/components/utils/ImagePreview.ts",p),h=n.i18n.getLocalizedString.bind(void 0,g);function m(t){return null!==t&&t.resourceType()===e.ResourceType.resourceTypes.Image}var k=Object.freeze({__proto__:null,ImagePreview:class{static async build(e,r,s,a={precomputedFeatures:void 0,imageAltText:void 0,align:"center"}){const{precomputedFeatures:c,imageAltText:l,align:d}=a;let g=i.ResourceTreeModel.ResourceTreeModel.resourceForURL(r),k=r;if(!m(g)&&c&&c.currentSrc&&(k=c.currentSrc,g=i.ResourceTreeModel.ResourceTreeModel.resourceForURL(k)),!g||!m(g))return null;const C=g,b=g.displayName,f=g.content?g.content:g.url.split("base64,")[1],L=g.contentSize(),v=L||o.StringUtilities.base64ToSize(f),w=v>0?n.ByteUtilities.bytesToString(v):"";return await new Promise((e=>{const n=document.createElement("img");n.addEventListener("load",(function(){const i=document.createElement("div"),r=i.attachShadow({mode:"open"});r.createChild("style").textContent=u.cssText;const l=r.createChild("table");l.className="image-preview-container";const g=l.createChild("tr").createChild("td","image-container");g.colSpan=2;const m=g.createChild("div",` ${d}`);m.title=b,m.appendChild(n),m.addEventListener("click",(()=>{t.InspectorFrontendHost.InspectorFrontendHostInstance.openInNewTab(k)}));const C=n.naturalWidth,f=n.naturalHeight,L=c?c.renderedWidth:C,v=c?c.renderedHeight:f;if(s){const e=l.createChild("tr","row");e.createChild("td",`title ${d}`).textContent=h(p.renderedSize),e.createChild("td","description").textContent=`${L} × ${v} px`;const t=l.createChild("tr","row");if(t.createChild("td",`title ${d}`).textContent=h(p.renderedAspectRatio),t.createChild("td","description").textContent=o.NumberUtilities.aspectRatio(L,v),v!==f||L!==C){const e=l.createChild("tr","row");e.createChild("td",`title ${d}`).textContent=h(p.intrinsicSize),e.createChild("td","description").textContent=`${C} × ${f} px`;const t=l.createChild("tr","row");t.createChild("td",`title ${d}`).textContent=h(p.intrinsicAspectRatio),t.createChild("td","description").textContent=o.NumberUtilities.aspectRatio(C,f)}}if(!a.hideFileData){const e=l.createChild("tr","row");e.createChild("td",`title ${d}`).textContent=h(p.fileSize),e.createChild("td","description").textContent=w;const n=l.createChild("tr","row");n.createChild("td",`title ${d}`).textContent=h(p.currentSource);const i=o.StringUtilities.trimMiddle(k,100),r=n.createChild("td","description description-link").createChild("span","source-link");r.textContent=i,r.addEventListener("click",(()=>{t.InspectorFrontendHost.InspectorFrontendHostInstance.openInNewTab(k)}))}e(i)}),!1),n.addEventListener("error",(()=>e(null)),!1),l&&(n.alt=l),C.populateImageSource(n)}))}static async loadDimensionsForNode(e){if(!e.nodeName()||"img"!==e.nodeName().toLowerCase())return;const t=await e.resolveToObject("");if(!t)return;const n=await t.callFunctionJSON((function(){return{renderedWidth:this.width,renderedHeight:this.height,currentSrc:this.currentSrc}}),void 0);return t.release(),n}static defaultAltTextForImageURL(t){const n=new e.ParsedURL.ParsedURL(t),o=n.isValid?n.displayName:h(p.unknownSource);return h(p.imageFromS,{PH1:o})}}}),C={cssText:`:host{display:inline}:host(.width-constrained){display:inline-block;width:100%}.stack-preview-async-description{padding:3px 0 1px;font-weight:bold}.stack-preview-container{--display-ignored-row:none;--display-toggle-link:var(--override-display-stack-preview-toggle-link,none);& > tfoot > tr{font-style:italic;display:var(--display-toggle-link)}& > tbody{display:var(--override-display-stack-preview-tbody,table-row-group);& > tr{height:16px;line-height:16px;&:has(td.link > .ignore-list-link){opacity:60%;display:var(--display-ignored-row)}}&:has(tr > td.link > .ignore-list-link){&:not(:has(tr > td.link > .devtools-link:not(.ignore-list-link))){.stack-preview-async-row{display:var(--display-ignored-row)}}}}&:not(:has(tbody > tr > td.link > .devtools-link:not(.ignore-list-link))),\n &.show-hidden-rows{--display-ignored-row:table-row}&:has(tbody > tr > td.link > .ignore-list-link):has(tbody > tr > td.link > .devtools-link:not(.ignore-list-link)){--display-toggle-link:table-row}td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-inline:2px;&.link{overflow:visible;& > button.text-button.devtools-link{background-color:inherit}}}&.width-constrained{display:block;width:100%;td.link{width:100%;max-width:0}}.function-name{max-width:80em}&.show-hidden-rows > tfoot > tr.show-all-link{--display-toggle-link:none}&:not(.show-hidden-rows) > tfoot > tr.show-less-link{--display-toggle-link:none}}.css-inserted-text::before{content:attr(data-inserted-text)}\n/*# sourceURL=${import.meta.resolve("./jsUtils.css")} */\n`};const b={unknown:"(unknown)",auto:"auto",revealInS:"Reveal in {PH1}",reveal:"Reveal",openUsingS:"Open using {PH1}",linkHandling:"Link handling:"},f=n.i18n.registerUIStrings("ui/legacy/components/utils/Linkifier.ts",b),L=n.i18n.getLocalizedString.bind(void 0,f),v=new Set;let w=null;const y=new WeakMap,I=new WeakMap,x=new WeakMap,S=new Map;let T,U;class N extends e.ObjectWrapper.ObjectWrapper{maxLength;anchorsByTarget=new Map;locationPoolByTarget=new Map;useLinkDecorator;#e;constructor(e,t){super(),this.maxLength=e||a.UIUtils.MaxLengthForDisplayedURLs,this.useLinkDecorator=Boolean(t),this.#e=new WeakMap,v.add(this),i.TargetManager.TargetManager.instance().observeTargets(this),d.Workspace.WorkspaceImpl.instance().addEventListener(d.Workspace.Events.WorkingCopyChanged,this.#t,this),d.Workspace.WorkspaceImpl.instance().addEventListener(d.Workspace.Events.WorkingCopyCommitted,this.#t,this)}#t({data:{uiSourceCode:e}}){const t=y.get(e);if(t)for(const e of t){const t=this.#e.get(e);t&&t.call(this,e)}}static setLinkDecorator(e){console.assert(!w,"Cannot re-register link decorator."),w=e,e.addEventListener("LinkIconChanged",(function(e){const t=e.data,n=y.get(t)||[];for(const e of n)N.updateLinkDecorations(e)}));for(const e of v)e.updateAllAnchorDecorations()}updateAllAnchorDecorations(){for(const e of this.anchorsByTarget.values())for(const t of e)N.updateLinkDecorations(t)}static bindUILocation(e,t){const n=N.linkInfo(e);if(!n)return;if(n.uiLocation=t,!t)return;const o=t.uiSourceCode;let i=y.get(o);i||(i=new Set,y.set(o,i)),i.add(e)}static bindUILocationForTest(e,t){N.bindUILocation(e,t)}static unbindUILocation(e){const t=N.linkInfo(e);if(!t?.uiLocation)return;const n=t.uiLocation.uiSourceCode;t.uiLocation=null;const o=y.get(n);o&&o.delete(e)}static bindBreakpoint(e,t){const n=N.linkInfo(e);if(!n)return;const o=c.BreakpointManager.BreakpointManager.instance().findBreakpoint(t);o&&(n.revealable=o)}static unbindBreakpoint(e){const t=N.linkInfo(e);t?.revealable&&(t.revealable=null)}targetAdded(e){this.anchorsByTarget.set(e,[]),this.locationPoolByTarget.set(e,new r.LiveLocation.LiveLocationPool)}targetRemoved(e){const t=this.locationPoolByTarget.get(e);if(this.locationPoolByTarget.delete(e),!t)return;t.disposeAll();const n=this.anchorsByTarget.get(e);if(n){this.anchorsByTarget.delete(e);for(const e of n){const t=N.linkInfo(e);if(!t)continue;t.liveLocation=null,N.unbindUILocation(e);const n=t.fallback;n&&e.replaceWith(n)}}}maybeLinkifyScriptLocation(e,t,n,o,s){let a=null;const c={lineNumber:o,maxLength:this.maxLength,columnNumber:s?.columnNumber,showColumnNumber:Boolean(s?.showColumnNumber),className:s?.className,tabStop:s?.tabStop,inlineFrameIndex:s?.inlineFrameIndex??0,userMetric:s?.userMetric,jslogContext:s?.jslogContext||"script-location",omitOrigin:s?.omitOrigin},{columnNumber:l,className:d=""}=c;if(n&&(a=N.linkifyURL(n,c),a.dataset.fallbackAnchor="1"),!e||e.isDisposed())return a;const u=e.model(i.DebuggerModel.DebuggerModel);if(!u)return a;const p=t?u.createRawLocationByScriptId(t,o||0,l,c.inlineFrameIndex):u.createRawLocationByURL(n,o||0,l,c.inlineFrameIndex,!0);if(!p)return a;const g={tabStop:s?.tabStop,jslogContext:"script-location"},{link:h,linkInfo:m}=N.createLink(a?.textContent?a.textContent:"",d,g);m.enableDecorator=this.useLinkDecorator,m.fallback=a,m.userMetric=s?.userMetric;const k=this.locationPoolByTarget.get(p.debuggerModel.target());if(!k)return a;const C={showColumnNumber:c.showColumnNumber??!1,revealBreakpoint:s?.revealBreakpoint};r.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().createLiveLocation(p,(async e=>{await this.updateAnchor(h,C,e),this.dispatchEventToListeners("liveLocationUpdated",e)}).bind(this),k).then((e=>{e&&(m.liveLocation=e)}));return this.anchorsByTarget.get(p.debuggerModel.target()).push(h),h}linkifyScriptLocation(e,t,n,o,i){const r=this.maybeLinkifyScriptLocation(e,t,n,o,i),s={lineNumber:o,maxLength:this.maxLength,className:i?.className,columnNumber:i?.columnNumber,showColumnNumber:Boolean(i?.showColumnNumber),inlineFrameIndex:i?.inlineFrameIndex??0,tabStop:i?.tabStop,userMetric:i?.userMetric,jslogContext:i?.jslogContext||"script-source-url"};return r||N.linkifyURL(n,s)}linkifyRawLocation(e,t,n){return this.linkifyScriptLocation(e.debuggerModel.target(),e.scriptId,t,e.lineNumber,{columnNumber:e.columnNumber,className:n,inlineFrameIndex:e.inlineFrameIndex})}maybeLinkifyConsoleCallFrame(e,t,n){const o={...n,columnNumber:t.columnNumber,inlineFrameIndex:n?.inlineFrameIndex??0};return this.maybeLinkifyScriptLocation(e,String(t.scriptId),t.url,t.lineNumber,o)}linkifyStackTraceTopFrame(e,t){console.assert(t.callFrames.length>0);const{url:n,lineNumber:o,columnNumber:s}=t.callFrames[0],a=N.linkifyURL(n,{lineNumber:o,columnNumber:s,showColumnNumber:!1,inlineFrameIndex:0,maxLength:this.maxLength,preventClick:!0,jslogContext:"script-source-url"});if(!e)return a;const c=this.locationPoolByTarget.get(e);if(!c)return console.assert(e.isDisposed()),a;console.assert(!e.isDisposed());const l=e.model(i.DebuggerModel.DebuggerModel),{link:d,linkInfo:u}=N.createLink("","",{jslogContext:"script-location"});u.enableDecorator=this.useLinkDecorator,u.fallback=a;const p={showColumnNumber:!1};r.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().createStackTraceTopFrameLiveLocation(l.createRawLocationsByStackTrace(t),(async e=>{await this.updateAnchor(d,p,e),this.dispatchEventToListeners("liveLocationUpdated",e)}).bind(this),c).then((e=>{u.liveLocation=e}));return this.anchorsByTarget.get(e).push(d),d}linkifyCSSLocation(e,t){const{link:n,linkInfo:o}=N.createLink("",t||"",{tabStop:!0,jslogContext:"css-location"});o.enableDecorator=this.useLinkDecorator;const i=this.locationPoolByTarget.get(e.cssModel().target());if(!i)return n;const s={showColumnNumber:!1};r.CSSWorkspaceBinding.CSSWorkspaceBinding.instance().createLiveLocation(e,(async e=>{await this.updateAnchor(n,s,e),this.dispatchEventToListeners("liveLocationUpdated",e)}).bind(this),i).then((e=>{o.liveLocation=e}));return this.anchorsByTarget.get(e.cssModel().target()).push(n),n}reset(){for(const e of[...this.anchorsByTarget.keys()])this.targetRemoved(e),this.targetAdded(e);this.listeners?.clear()}dispose(){d.Workspace.WorkspaceImpl.instance().removeEventListener(d.Workspace.Events.WorkingCopyChanged,this.#t,this),d.Workspace.WorkspaceImpl.instance().removeEventListener(d.Workspace.Events.WorkingCopyCommitted,this.#t,this);for(const e of[...this.anchorsByTarget.keys()])this.targetRemoved(e);i.TargetManager.TargetManager.instance().unobserveTargets(this),v.delete(this)}async updateAnchor(t,n,o){N.unbindUILocation(t),n.revealBreakpoint&&N.unbindBreakpoint(t);const i=await o.uiLocation();if(!i){if(o instanceof r.CSSWorkspaceBinding.LiveLocation){const n=o.header();n?.ownerNode&&(t.addEventListener("click",(t=>{t.consume(!0),e.Revealer.reveal(n.ownerNode||null)}),!1),N.setTrimmedText(t,"<style>"))}return t.classList.add("invalid-link"),void t.removeAttribute("role")}N.bindUILocation(t,i),n.revealBreakpoint&&N.bindBreakpoint(t,i);const s=i.linkText(!0,n.showColumnNumber);N.setTrimmedText(t,s,this.maxLength),this.#e.set(t,(function(e){this.updateAnchor(e,n,o)}));let c=i.uiSourceCode.url();"application/wasm"===i.uiSourceCode.mimeType()?"number"==typeof i.columnNumber&&(c+=`:0x${i.columnNumber.toString(16)}`):(c+=":"+(i.lineNumber+1),n.showColumnNumber&&"number"==typeof i.columnNumber&&(c+=":"+(i.columnNumber+1))),a.Tooltip.Tooltip.install(t,c),t.classList.toggle("ignore-list-link",await o.isIgnoreListed()),N.updateLinkDecorations(t)}static updateLinkDecorations(e){const t=N.linkInfo(e);if(!t?.enableDecorator)return;if(!w||!t.uiLocation)return;t.icon?.parentElement&&e.removeChild(t.icon);const n=w.linkIcon(t.uiLocation.uiSourceCode);n&&(n.style.setProperty("margin-right","2px"),e.insertBefore(n,e.firstChild)),t.icon=n}static linkifyURL(t,n){const o=(n=n||{showColumnNumber:!1,inlineFrameIndex:0}).text,i=n.className||"",s=n.lineNumber,c=n.columnNumber,l=n.showColumnNumber,d=n.preventClick,u=n.maxLength||a.UIUtils.MaxLengthForDisplayedURLs,p=n.bypassURLTrimming,g=n.omitOrigin;if(!t||e.ParsedURL.schemeIs(t,"javascript:")){const e=document.createElement("span");return i&&(e.className=i),e.textContent=o||t||L(b.unknown),e}let h=o||r.ResourceUtils.displayNameForURL(t);if(g){const e=URL.parse(t);e&&(h=t.replace(e.origin,""))}"number"!=typeof s||o||(h+=":"+(s+1),l&&"number"==typeof c&&(h+=":"+(c+1)));const m={maxLength:u,title:h!==t?t:"",href:t,preventClick:d,tabStop:n.tabStop,bypassURLTrimming:p,jslogContext:n.jslogContext||"url"},{link:k,linkInfo:C}=N.createLink(h,i,m);return s&&(C.lineNumber=s),c&&(C.columnNumber=c),C.userMetric=n?.userMetric,k}static linkifyRevealable(e,t,n,o,i,r){const s={maxLength:a.UIUtils.MaxLengthForDisplayedURLs,href:n,title:o,jslogContext:r},{link:c,linkInfo:l}=N.createLink(t,i||"",s);return l.revealable=e,c}static createLink(e,n,o={}){const{maxLength:i,title:r,href:c,preventClick:l,tabStop:d,bypassURLTrimming:u,jslogContext:p}=o,g=document.createElement(o.preventClick?"span":"button");n&&(g.className=n),g.classList.add("devtools-link"),o.preventClick||g.classList.add("text-button","link-style"),r&&a.Tooltip.Tooltip.install(g,r),c&&(g.href=c),g.setAttribute("jslog",`${s.link(p).track({click:!0})}`),e instanceof HTMLElement?g.appendChild(e):u?(g.classList.add("devtools-link-styled-trim"),N.appendTextWithoutHashes(g,e)):N.setTrimmedText(g,e,i);const h={icon:null,enableDecorator:!1,uiLocation:null,liveLocation:null,url:c||null,lineNumber:null,columnNumber:null,inlineFrameIndex:0,revealable:null,fallback:null};return I.set(g,h),l?g.classList.add("devtools-link-prevent-click"):g.addEventListener("click",(e=>{t.rnPerfMetrics.stackTraceFrameClicked(null!==h.liveLocation),N.handleClick(e)&&e.consume(!0)}),!1),a.ARIAUtils.markAsLink(g),g.tabIndex=d?0:-1,{link:g,linkInfo:h}}static setTrimmedText(e,t,n){if(e.removeChildren(),n&&t.length>n){const o=function(e,t){let n=Math.floor(t/2),o=e.length-Math.ceil(t/2)+1;const i=e.codePointAt(o-1);void 0!==i&&i>=65536&&(o++,n++);const r=e.codePointAt(n-1);void 0!==r&&n>0&&r>=65536&&n--;return[e.substring(0,n),e.substring(n,o),e.substring(o)]}(t,n);N.appendTextWithoutHashes(e,o[0]),N.appendHiddenText(e,o[1]),N.appendTextWithoutHashes(e,o[2])}else N.appendTextWithoutHashes(e,t)}static appendTextWithoutHashes(e,t){const n=l.TextUtils.Utils.splitStringByRegexes(t,[/[a-f0-9]{20,}/g]);for(const t of n)-1===t.regexIndex?a.UIUtils.createTextChild(e,t.value):(a.UIUtils.createTextChild(e,t.value.substring(0,7)),N.appendHiddenText(e,t.value.substring(7)))}static appendHiddenText(e,t){const n=a.UIUtils.createTextChild(e.createChild("span","devtools-link-ellipsis"),"…");x.set(n,t)}static untruncatedNodeText(e){return x.get(e)||e.textContent||""}static linkInfo(e){return e&&I.get(e)||null}static handleClick(e){const t=e.currentTarget;if(a.UIUtils.isBeingEdited(e.target)||t.hasSelection())return!1;const n=N.linkInfo(t);return!!n&&N.invokeFirstAction(n)}static handleClickFromNewComponentLand(e){N.invokeFirstAction(e)}static invokeFirstAction(e){const n=N.linkActions(e);return!!n.length&&(n[0].handler.call(null),e.userMetric&&t.userMetrics.actionTaken(e.userMetric),!0)}static linkHandlerSetting(){return T||(T=e.Settings.Settings.instance().createSetting("open-link-handler",L(b.auto))),T}static registerLinkHandler(e,t){S.set(e,t),D.instance().update()}static unregisterLinkHandler(e){S.delete(e),D.instance().update()}static uiLocation(e){const t=N.linkInfo(e);return t?t.uiLocation:null}static linkActions(n){const i=[];if(!n)return i;let s=o.DevToolsPath.EmptyUrlString,c=null;if(n.uiLocation)c=n.uiLocation,s=c.uiSourceCode.contentURL();else if(n.url){s=n.url;const t=d.Workspace.WorkspaceImpl.instance().uiSourceCodeForURL(s)||d.Workspace.WorkspaceImpl.instance().uiSourceCodeForURL(e.ParsedURL.ParsedURL.urlWithoutHash(s));c=t?t.uiLocation(n.lineNumber||0,n.columnNumber||0):null}const l=s?r.ResourceUtils.resourceForURL(s):null,u=c?c.uiSourceCode:l,p=n.revealable||c||l;if(p){const t=e.Revealer.revealDestination(p);i.push({section:"reveal",title:t?L(b.revealInS,{PH1:t}):L(b.reveal),jslogContext:"reveal",handler:()=>e.Revealer.reveal(p)})}if(u){const e=c?c.lineNumber:n.lineNumber||0;for(const t of S.keys()){const n=S.get(t);if(!n)continue;const o={section:"reveal",title:L(b.openUsingS,{PH1:t}),jslogContext:"open-using",handler:n.bind(null,u,e)};t===N.linkHandlerSetting().get()?i.unshift(o):i.push(o)}}if((l||n.url)&&(i.push({section:"reveal",title:a.UIUtils.openLinkExternallyLabel(),jslogContext:"open-in-new-tab",handler:()=>a.UIUtils.openInNewTab(s)}),i.push({section:"clipboard",title:a.UIUtils.copyLinkAddressLabel(),jslogContext:"copy-link-address",handler:()=>t.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(s)})),c?.uiSourceCode){const e=c.uiSourceCode;i.push({section:"clipboard",title:a.UIUtils.copyFileNameLabel(),jslogContext:"copy-file-name",handler:()=>t.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(e.displayName())})}return i}}class D{element;constructor(){this.element=document.createElement("select"),this.element.addEventListener("change",this.onChange.bind(this),!1),this.update()}static instance(e={forceNew:null}){const{forceNew:t}=e;return U&&!t||(U=new D),U}update(){this.element.removeChildren();const e=[...S.keys()];e.unshift(L(b.auto));for(const t of e){const e=document.createElement("option");e.textContent=t,e.selected=t===N.linkHandlerSetting().get(),this.element.appendChild(e)}this.element.disabled=e.length<=1}onChange(e){if(!e.target)return;const t=e.target.value;N.linkHandlerSetting().set(t)}settingElement(){return a.SettingsUI.createCustomSetting(L(b.linkHandling),this.element)}}let R=!1;R||(R=!0,window.addEventListener("linkifieractivated",(function(e){const t=e;N.handleClickFromNewComponentLand(t.data)})));var F=Object.freeze({__proto__:null,ContentProviderContextMenuProvider:class{appendApplicableItems(n,o,r){const s=r.contentURL();if(s){e.ParsedURL.schemeIs(s,"file:")||o.revealSection().appendItem(a.UIUtils.openLinkExternallyLabel(),(()=>t.InspectorFrontendHost.InspectorFrontendHostInstance.openInNewTab(s.endsWith(":formatted")?e.ParsedURL.ParsedURL.slice(s,0,s.lastIndexOf(":")):s)),{jslogContext:"open-in-new-tab"});for(const e of S.keys()){const t=S.get(e);t&&o.revealSection().appendItem(L(b.openUsingS,{PH1:e}),t.bind(null,r,0),{jslogContext:"open-using"})}r instanceof i.NetworkRequest.NetworkRequest||(o.clipboardSection().appendItem(a.UIUtils.copyLinkAddressLabel(),(()=>t.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(s)),{jslogContext:"copy-link-address"}),r instanceof d.UISourceCode.UISourceCode?o.clipboardSection().appendItem(a.UIUtils.copyFileNameLabel(),(()=>t.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(r.displayName())),{jslogContext:"copy-file-name"}):o.clipboardSection().appendItem(a.UIUtils.copyFileNameLabel(),(()=>t.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(r.displayName)),{jslogContext:"copy-file-name"}))}}},LinkContextMenuProvider:class{appendApplicableItems(e,t,n){let o=n;for(;o&&!I.get(o);)o=o.parentNodeOrShadowHost();const i=o,r=N.linkInfo(i);if(!r)return;const s=N.linkActions(r);for(const e of s)t.section(e.section).appendItem(e.title,e.handler,{jslogContext:e.jslogContext})}},LinkHandlerSettingUI:D,Linkifier:N});const M={removeFromIgnore:"Remove from ignore list",addToIgnore:"Add script to ignore list",showMoreFrames:"Show ignore-listed frames",showLess:"Show less",unknownSource:"unknown"},E=n.i18n.registerUIStrings("ui/legacy/components/utils/JSPresentationUtils.ts",M),W=n.i18n.getLocalizedString.bind(void 0,E);function B(e,t){const n=new a.ContextMenu.ContextMenu(t);t.consume(!0);const o=N.uiLocation(e);o&&r.IgnoreListManager.IgnoreListManager.instance().canIgnoreListUISourceCode(o.uiSourceCode)&&(r.IgnoreListManager.IgnoreListManager.instance().isUserIgnoreListedURL(o.uiSourceCode.url())?n.debugSection().appendItem(W(M.removeFromIgnore),(()=>r.IgnoreListManager.IgnoreListManager.instance().unIgnoreListUISourceCode(o.uiSourceCode)),{jslogContext:"remove-from-ignore-list"}):n.debugSection().appendItem(W(M.addToIgnore),(()=>r.IgnoreListManager.IgnoreListManager.instance().ignoreListUISourceCode(o.uiSourceCode)),{jslogContext:"add-to-ignore-list"})),n.appendApplicableItems(t),n.show()}function j(t,n,o,r,c,l){const d=[];if(c){const t=new e.Throttler.Throttler(100);o.addEventListener("liveLocationUpdated",(()=>{t.schedule((async()=>c(d)))}))}function u(e,t=void 0){let c=null;t&&(c={asyncDescription:a.UIUtils.asyncStackTraceLabel(e.description,t)},d.push(c));let u=!1;for(const t of e.callFrames){const e=a.UIUtils.beautifyFunctionName(t.functionName),c=o.maybeLinkifyConsoleCallFrame(n,t,{showColumnNumber:l,tabStop:Boolean(r),inlineFrameIndex:0,revealBreakpoint:u});c&&(c.setAttribute("jslog",`${s.link("stack-trace").track({click:!0})}`),c.addEventListener("contextmenu",B.bind(null,c)),c.textContent||(c.textContent=W(M.unknownSource))),d.push({functionName:e,link:c}),u=[i.DebuggerModel.COND_BREAKPOINT_SOURCE_URL,i.DebuggerModel.LOGPOINT_SOURCE_URL].includes(t.url)}}u(t);let p=t.callFrames;for(let e=t.parent;e;e=e.parent)e.callFrames.length&&u(e,p),p=e.callFrames;return d}function H(e,t,n){e.removeChildren();const o=[];let i=null;for(const t of n){i&&!("asyncDescription"in t)||(i=e.createChild("tbody"));const n=i.createChild("tr");"asyncDescription"in t?(n.createChild("td").textContent="\n",n.createChild("td","stack-preview-async-description").textContent=t.asyncDescription,n.createChild("td"),n.createChild("td"),n.classList.add("stack-preview-async-row")):(n.createChild("td").textContent="\n",n.createChild("td","function-name").textContent=t.functionName,n.createChild("td").textContent=" @ ",t.link&&(n.createChild("td","link").appendChild(t.link),o.push(t.link)))}i=e.createChild("tfoot");const r=i.createChild("tr","show-all-link");r.createChild("td");const s=r.createChild("td");s.colSpan=4;const c=s.createChild("span","link");c.createChild("span","css-inserted-text").setAttribute("data-inserted-text",W(M.showMoreFrames)),c.addEventListener("click",(()=>{e.classList.add("show-hidden-rows"),t.classList.add("show-hidden-rows"),a.GlassPane.GlassPane.containerMoved(e)}),!1);const l=i.createChild("tr","show-less-link");l.createChild("td");const d=l.createChild("td");d.colSpan=4;const u=d.createChild("span","link");return u.createChild("span","css-inserted-text").setAttribute("data-inserted-text",W(M.showLess)),u.addEventListener("click",(()=>{e.classList.remove("show-hidden-rows"),t.classList.remove("show-hidden-rows"),a.GlassPane.GlassPane.containerMoved(e)}),!1),o}var A=Object.freeze({__proto__:null,buildStackTracePreviewContents:function(e,t,n={widthConstrained:!1,stackTrace:void 0,tabStops:void 0}){const{stackTrace:o,tabStops:i}=n,r=document.createElement("span");r.classList.add("monospace"),r.classList.add("stack-preview-container"),r.classList.toggle("width-constrained",n.widthConstrained),r.style.display="inline-block";const s=a.UIUtils.createShadowRootWithCoreStyles(r,{cssFile:C}).createChild("table","stack-preview-container");s.classList.toggle("width-constrained",n.widthConstrained);const c=H.bind(null,s,r);return{element:r,links:H(s,r,j(o??{callFrames:[]},e,t,i,c,n.showColumnNumber))}},buildStackTraceRows:j});var P=Object.freeze({__proto__:null,reload:function(){a.DockController.DockController.instance().canDock()&&"undocked"===a.DockController.DockController.instance().dockSide()&&t.InspectorFrontendHost.InspectorFrontendHostInstance.setIsDocked(!0,(function(){})),t.InspectorFrontendHost.InspectorFrontendHostInstance.reattach((()=>window.location.reload()))}});const _={websocketDisconnected:"WebSocket disconnected",websocketDisconnectedUnregisteredDevice:"The corresponding app for this DevTools session cannot be found. Please relaunch DevTools from the terminal.",websocketDisconnectedConnectionLost:"Connection lost to corresponding device.",websocketDisconnectedNewDebuggerOpened:"Disconnected due to opening a second DevTools window for the same app."},O=n.i18n.registerUIStrings("ui/legacy/components/utils/TargetDetachedDialog.ts",_),z=n.i18n.getLocalizedString.bind(void 0,O);class $ extends i.SDKModel.SDKModel{static hideCrashedDialog;constructor(e){super(e),e.registerInspectorDispatcher(this),e.inspectorAgent().invoke_enable(),e.parentTarget()?.type()===i.Target.Type.BROWSER&&$.hideCrashedDialog&&($.hideCrashedDialog.call(null),$.hideCrashedDialog=null)}detached({reason:e}){a.RemoteDebuggingTerminatedScreen.RemoteDebuggingTerminatedScreen.show(e)}static getCustomUiReason(e){return e?"1011"===e.code&&e.reason?.includes("[UNREGISTERED_DEVICE]")?z(_.websocketDisconnectedUnregisteredDevice):"1000"===e.code&&e.reason?.includes("[CONNECTION_LOST]")?z(_.websocketDisconnectedConnectionLost):"1000"===e.code&&e.reason?.includes("[NEW_DEBUGGER_OPENED]")?z(_.websocketDisconnectedNewDebuggerOpened):null:null}static connectionLost(e){const t=$.getCustomUiReason(e)||z(_.websocketDisconnected);a.RemoteDebuggingTerminatedScreen.RemoteDebuggingTerminatedScreen.show(t,e)}targetCrashed(){if($.hideCrashedDialog)return;const e=this.target().parentTarget();if(e&&e.type()!==i.Target.Type.BROWSER)return;const t=new a.Dialog.Dialog("target-crashed");t.setSizeBehavior("MeasureContent"),t.addCloseButton(),t.setDimmed(!0),$.hideCrashedDialog=t.hide.bind(t),new a.TargetCrashedScreen.TargetCrashedScreen((()=>{$.hideCrashedDialog=null})).show(t.contentElement),t.show()}targetReloadedAfterCrash(){this.target().runtimeAgent().invoke_runIfWaitingForDebugger(),$.hideCrashedDialog&&($.hideCrashedDialog.call(null),$.hideCrashedDialog=null)}}i.SDKModel.SDKModel.register($,{capabilities:2048,autostart:!0});var G=Object.freeze({__proto__:null,TargetDetachedDialog:$});export{k as ImagePreview,A as JSPresentationUtils,F as Linkifier,P as Reload,G as TargetDetachedDialog};