@react-native/debugger-frontend
Version:
Debugger frontend for React Native based on Chrome DevTools
176 lines (175 loc) • 121 kB
JavaScript
import*as e from"../../../ui/components/chrome_link/chrome_link.js";import"../../../ui/components/expandable_list/expandable_list.js";import"../../../ui/components/report_view/report_view.js";import"../../../ui/components/tree_outline/tree_outline.js";import*as t from"../../../core/common/common.js";import*as o from"../../../core/i18n/i18n.js";import*as r from"../../../core/sdk/sdk.js";import"../../../ui/components/buttons/buttons.js";import*as a from"../../../ui/components/legacy_wrapper/legacy_wrapper.js";import*as n from"../../../ui/components/render_coordinator/render_coordinator.js";import*as i from"../../../ui/legacy/components/utils/utils.js";import*as s from"../../../ui/lit/lit.js";import*as l from"../../../ui/visual_logging/visual_logging.js";import"../../../ui/legacy/components/data_grid/data_grid.js";import*as c from"../../../models/bindings/bindings.js";import*as d from"../../../core/platform/platform.js";import*as h from"../../../core/root/root.js";import*as u from"../../../models/workspace/workspace.js";import*as p from"../../network/forward/forward.js";import*as g from"../../../third_party/csp_evaluator/csp_evaluator.js";import"../../../ui/components/icon_button/icon_button.js";import*as m from"../../../ui/components/adorners/adorners.js";import*as v from"../../../core/host/host.js";import*as b from"../../../ui/components/input/input.js";import*as k from"../../../ui/legacy/legacy.js";const f={notMainFrame:"Navigation happened in a frame other than the main frame.",backForwardCacheDisabled:"Back/forward cache is disabled by flags. Visit chrome://flags/#back-forward-cache to enable it locally on this device.",relatedActiveContentsExist:"The page was opened using '`window.open()`' and another tab has a reference to it, or the page opened a window.",HTTPStatusNotOK:"Only pages with a status code of 2XX can be cached.",schemeNotHTTPOrHTTPS:"Only pages whose URL scheme is HTTP / HTTPS can be cached.",loading:"The page did not finish loading before navigating away.",wasGrantedMediaAccess:"Pages that have granted access to record video or audio are not currently eligible for back/forward cache.",HTTPMethodNotGET:"Only pages loaded via a GET request are eligible for back/forward cache.",subframeIsNavigating:"An iframe on the page started a navigation that did not complete.",timeout:"The page exceeded the maximum time in back/forward cache and was expired.",cacheLimit:"The page was evicted from the cache to allow another page to be cached.",JavaScriptExecution:"Chrome detected an attempt to execute JavaScript while in the cache.",rendererProcessKilled:"The renderer process for the page in back/forward cache was killed.",rendererProcessCrashed:"The renderer process for the page in back/forward cache crashed.",grantedMediaStreamAccess:"Pages that have granted media stream access are not currently eligible for back/forward cache.",cacheFlushed:"The cache was intentionally cleared.",serviceWorkerVersionActivation:"The page was evicted from back/forward cache due to a service worker activation.",sessionRestored:"Chrome restarted and cleared the back/forward cache entries.",serviceWorkerPostMessage:"A service worker attempted to send the page in back/forward cache a `MessageEvent`.",enteredBackForwardCacheBeforeServiceWorkerHostAdded:"A service worker was activated while the page was in back/forward cache.",serviceWorkerClaim:"The page was claimed by a service worker while it is in back/forward cache.",haveInnerContents:"Pages that have certain kinds of embedded content (e.g. PDFs) are not currently eligible for back/forward cache.",timeoutPuttingInCache:"The page timed out entering back/forward cache (likely due to long-running pagehide handlers).",backForwardCacheDisabledByLowMemory:"Back/forward cache is disabled due to insufficient memory.",backForwardCacheDisabledByCommandLine:"Back/forward cache is disabled by the command line.",networkRequestDatapipeDrainedAsBytesConsumer:"Pages that have inflight fetch() or XHR are not currently eligible for back/forward cache.",networkRequestRedirected:"The page was evicted from back/forward cache because an active network request involved a redirect.",networkRequestTimeout:"The page was evicted from the cache because a network connection was open too long. Chrome limits the amount of time that a page may receive data while cached.",networkExceedsBufferLimit:"The page was evicted from the cache because an active network connection received too much data. Chrome limits the amount of data that a page may receive while cached.",navigationCancelledWhileRestoring:"Navigation was cancelled before the page could be restored from back/forward cache.",backForwardCacheDisabledForPrerender:"Back/forward cache is disabled for prerenderer.",userAgentOverrideDiffers:"Browser has changed the user agent override header.",foregroundCacheLimit:"The page was evicted from the cache to allow another page to be cached.",backForwardCacheDisabledForDelegate:"Back/forward cache is not supported by delegate.",unloadHandlerExistsInMainFrame:"The page has an unload handler in the main frame.",unloadHandlerExistsInSubFrame:"The page has an unload handler in a sub frame.",serviceWorkerUnregistration:"ServiceWorker was unregistered while a page was in back/forward cache.",noResponseHead:"Pages that do not have a valid response head cannot enter back/forward cache.",cacheControlNoStore:"Pages with cache-control:no-store header cannot enter back/forward cache.",ineligibleAPI:"Ineligible APIs were used.",internalError:"Internal error.",webSocket:"Pages with WebSocket cannot enter back/forward cache.",webTransport:"Pages with WebTransport cannot enter back/forward cache.",webRTC:"Pages with WebRTC cannot enter back/forward cache.",mainResourceHasCacheControlNoStore:"Pages whose main resource has cache-control:no-store cannot enter back/forward cache.",mainResourceHasCacheControlNoCache:"Pages whose main resource has cache-control:no-cache cannot enter back/forward cache.",subresourceHasCacheControlNoStore:"Pages whose subresource has cache-control:no-store cannot enter back/forward cache.",subresourceHasCacheControlNoCache:"Pages whose subresource has cache-control:no-cache cannot enter back/forward cache.",containsPlugins:"Pages containing plugins are not currently eligible for back/forward cache.",documentLoaded:"The document did not finish loading before navigating away.",dedicatedWorkerOrWorklet:"Pages that use a dedicated worker or worklet are not currently eligible for back/forward cache.",outstandingNetworkRequestOthers:"Pages with an in-flight network request are not currently eligible for back/forward cache.",outstandingIndexedDBTransaction:"Page with ongoing indexed DB transactions are not currently eligible for back/forward cache.",requestedNotificationsPermission:"Pages that have requested notifications permissions are not currently eligible for back/forward cache.",requestedMIDIPermission:"Pages that have requested MIDI permissions are not currently eligible for back/forward cache.",requestedAudioCapturePermission:"Pages that have requested audio capture permissions are not currently eligible for back/forward cache.",requestedVideoCapturePermission:"Pages that have requested video capture permissions are not currently eligible for back/forward cache.",requestedBackForwardCacheBlockedSensors:"Pages that have requested sensor permissions are not currently eligible for back/forward cache.",requestedBackgroundWorkPermission:"Pages that have requested background sync or fetch permissions are not currently eligible for back/forward cache.",broadcastChannel:"The page cannot be cached because it has a BroadcastChannel instance with registered listeners.",indexedDBConnection:"Pages that have an open IndexedDB connection are not currently eligible for back/forward cache.",webXR:"Pages that use WebXR are not currently eligible for back/forward cache.",sharedWorker:"Pages that use SharedWorker are not currently eligible for back/forward cache.",webLocks:"Pages that use WebLocks are not currently eligible for back/forward cache.",webHID:"Pages that use WebHID are not currently eligible for back/forward cache.",webShare:"Pages that use WebShare are not currently eligible for back/forwad cache.",requestedStorageAccessGrant:"Pages that have requested storage access are not currently eligible for back/forward cache.",webNfc:"Pages that use WebNfc are not currently eligible for back/forwad cache.",outstandingNetworkRequestFetch:"Pages with an in-flight fetch network request are not currently eligible for back/forward cache.",outstandingNetworkRequestXHR:"Pages with an in-flight XHR network request are not currently eligible for back/forward cache.",appBanner:"Pages that requested an AppBanner are not currently eligible for back/forward cache.",printing:"Pages that show Printing UI are not currently eligible for back/forward cache.",webDatabase:"Pages that use WebDatabase are not currently eligible for back/forward cache.",pictureInPicture:"Pages that use Picture-in-Picture are not currently eligible for back/forward cache.",speechRecognizer:"Pages that use SpeechRecognizer are not currently eligible for back/forward cache.",idleManager:"Pages that use IdleManager are not currently eligible for back/forward cache.",paymentManager:"Pages that use PaymentManager are not currently eligible for back/forward cache.",speechSynthesis:"Pages that use SpeechSynthesis are not currently eligible for back/forward cache.",keyboardLock:"Pages that use Keyboard lock are not currently eligible for back/forward cache.",webOTPService:"Pages that use WebOTPService are not currently eligible for bfcache.",outstandingNetworkRequestDirectSocket:"Pages with an in-flight network request are not currently eligible for back/forward cache.",injectedJavascript:"Pages that `JavaScript` is injected into by extensions are not currently eligible for back/forward cache.",injectedStyleSheet:"Pages that a `StyleSheet` is injected into by extensions are not currently eligible for back/forward cache.",contentDiscarded:"Undefined",contentSecurityHandler:"Pages that use SecurityHandler are not eligible for back/forward cache.",contentWebAuthenticationAPI:"Pages that use WebAuthetication API are not eligible for back/forward cache.",contentFileChooser:"Pages that use FileChooser API are not eligible for back/forward cache.",contentSerial:"Pages that use Serial API are not eligible for back/forward cache.",contentFileSystemAccess:"Pages that use File System Access API are not eligible for back/forward cache.",contentMediaDevicesDispatcherHost:"Pages that use Media Device Dispatcher are not eligible for back/forward cache.",contentWebBluetooth:"Pages that use WebBluetooth API are not eligible for back/forward cache.",contentWebUSB:"Pages that use WebUSB API are not eligible for back/forward cache.",contentMediaSession:"Pages that use MediaSession API and set a playback state are not eligible for back/forward cache.",contentMediaSessionService:"Pages that use MediaSession API and set action handlers are not eligible for back/forward cache.",contentMediaPlay:"A media player was playing upon navigating away.",contentScreenReader:"Back/forward cache is disabled due to screen reader.",embedderPopupBlockerTabHelper:"Popup blocker was present upon navigating away.",embedderSafeBrowsingTriggeredPopupBlocker:"Safe Browsing considered this page to be abusive and blocked popup.",embedderSafeBrowsingThreatDetails:"Safe Browsing details were shown upon navigating away.",embedderAppBannerManager:"App Banner was present upon navigating away.",embedderDomDistillerViewerSource:"DOM Distiller Viewer was present upon navigating away.",embedderDomDistillerSelfDeletingRequestDelegate:"DOM distillation was in progress upon navigating away.",embedderOomInterventionTabHelper:"Out-Of-Memory Intervention bar was present upon navigating away.",embedderOfflinePage:"The offline page was shown upon navigating away.",embedderChromePasswordManagerClientBindCredentialManager:"Chrome Password Manager was present upon navigating away.",embedderPermissionRequestManager:"There were permission requests upon navigating away.",embedderModalDialog:"Modal dialog such as form resubmission or http password dialog was shown for the page upon navigating away.",embedderExtensions:"Back/forward cache is disabled due to extensions.",embedderExtensionMessaging:"Back/forward cache is disabled due to extensions using messaging API.",embedderExtensionMessagingForOpenPort:"Extensions with long-lived connection should close the connection before entering back/forward cache.",embedderExtensionSentMessageToCachedFrame:"Extensions with long-lived connection attempted to send messages to frames in back/forward cache.",errorDocument:"Back/forward cache is disabled due to a document error.",fencedFramesEmbedder:"Pages using FencedFrames cannot be stored in bfcache.",keepaliveRequest:"Back/forward cache is disabled due to a keepalive request.",jsNetworkRequestReceivedCacheControlNoStoreResource:"Back/forward cache is disabled because some JavaScript network request received resource with `Cache-Control: no-store` header.",indexedDBEvent:"Back/forward cache is disabled due to an IndexedDB event.",cookieDisabled:"Back/forward cache is disabled because cookies are disabled on a page that uses `Cache-Control: no-store`.",webRTCSticky:"Back/forward cache is disabled because WebRTC has been used.",webTransportSticky:"Back/forward cache is disabled because WebTransport has been used.",webSocketSticky:"Back/forward cache is disabled because WebSocket has been used."},w=o.i18n.registerUIStrings("panels/application/components/BackForwardCacheStrings.ts",f),y=o.i18n.getLazilyComputedLocalizedString.bind(void 0,w),x={NotPrimaryMainFrame:{name:y(f.notMainFrame)},BackForwardCacheDisabled:{name:y(f.backForwardCacheDisabled)},RelatedActiveContentsExist:{name:y(f.relatedActiveContentsExist)},HTTPStatusNotOK:{name:y(f.HTTPStatusNotOK)},SchemeNotHTTPOrHTTPS:{name:y(f.schemeNotHTTPOrHTTPS)},Loading:{name:y(f.loading)},WasGrantedMediaAccess:{name:y(f.wasGrantedMediaAccess)},HTTPMethodNotGET:{name:y(f.HTTPMethodNotGET)},SubframeIsNavigating:{name:y(f.subframeIsNavigating)},Timeout:{name:y(f.timeout)},CacheLimit:{name:y(f.cacheLimit)},JavaScriptExecution:{name:y(f.JavaScriptExecution)},RendererProcessKilled:{name:y(f.rendererProcessKilled)},RendererProcessCrashed:{name:y(f.rendererProcessCrashed)},GrantedMediaStreamAccess:{name:y(f.grantedMediaStreamAccess)},CacheFlushed:{name:y(f.cacheFlushed)},ServiceWorkerVersionActivation:{name:y(f.serviceWorkerVersionActivation)},SessionRestored:{name:y(f.sessionRestored)},ServiceWorkerPostMessage:{name:y(f.serviceWorkerPostMessage)},EnteredBackForwardCacheBeforeServiceWorkerHostAdded:{name:y(f.enteredBackForwardCacheBeforeServiceWorkerHostAdded)},ServiceWorkerClaim:{name:y(f.serviceWorkerClaim)},HaveInnerContents:{name:y(f.haveInnerContents)},TimeoutPuttingInCache:{name:y(f.timeoutPuttingInCache)},BackForwardCacheDisabledByLowMemory:{name:y(f.backForwardCacheDisabledByLowMemory)},BackForwardCacheDisabledByCommandLine:{name:y(f.backForwardCacheDisabledByCommandLine)},NetworkRequestDatapipeDrainedAsBytesConsumer:{name:y(f.networkRequestDatapipeDrainedAsBytesConsumer)},NetworkRequestRedirected:{name:y(f.networkRequestRedirected)},NetworkRequestTimeout:{name:y(f.networkRequestTimeout)},NetworkExceedsBufferLimit:{name:y(f.networkExceedsBufferLimit)},NavigationCancelledWhileRestoring:{name:y(f.navigationCancelledWhileRestoring)},BackForwardCacheDisabledForPrerender:{name:y(f.backForwardCacheDisabledForPrerender)},UserAgentOverrideDiffers:{name:y(f.userAgentOverrideDiffers)},ForegroundCacheLimit:{name:y(f.foregroundCacheLimit)},BackForwardCacheDisabledForDelegate:{name:y(f.backForwardCacheDisabledForDelegate)},UnloadHandlerExistsInMainFrame:{name:y(f.unloadHandlerExistsInMainFrame)},UnloadHandlerExistsInSubFrame:{name:y(f.unloadHandlerExistsInSubFrame)},ServiceWorkerUnregistration:{name:y(f.serviceWorkerUnregistration)},NoResponseHead:{name:y(f.noResponseHead)},CacheControlNoStore:{name:y(f.cacheControlNoStore)},CacheControlNoStoreCookieModified:{name:y(f.cacheControlNoStore)},CacheControlNoStoreHTTPOnlyCookieModified:{name:y(f.cacheControlNoStore)},DisableForRenderFrameHostCalled:{name:y(f.ineligibleAPI)},BlocklistedFeatures:{name:y(f.ineligibleAPI)},SchedulerTrackedFeatureUsed:{name:y(f.ineligibleAPI)},DomainNotAllowed:{name:y(f.internalError)},ConflictingBrowsingInstance:{name:y(f.internalError)},NotMostRecentNavigationEntry:{name:y(f.internalError)},IgnoreEventAndEvict:{name:y(f.internalError)},BrowsingInstanceNotSwapped:{name:y(f.internalError)},ActivationNavigationsDisallowedForBug1234857:{name:y(f.internalError)},Unknown:{name:y(f.internalError)},RenderFrameHostReused_SameSite:{name:y(f.internalError)},RenderFrameHostReused_CrossSite:{name:y(f.internalError)},WebSocket:{name:y(f.webSocket)},WebTransport:{name:y(f.webTransport)},WebRTC:{name:y(f.webRTC)},MainResourceHasCacheControlNoStore:{name:y(f.mainResourceHasCacheControlNoStore)},MainResourceHasCacheControlNoCache:{name:y(f.mainResourceHasCacheControlNoCache)},SubresourceHasCacheControlNoStore:{name:y(f.subresourceHasCacheControlNoStore)},SubresourceHasCacheControlNoCache:{name:y(f.subresourceHasCacheControlNoCache)},ContainsPlugins:{name:y(f.containsPlugins)},DocumentLoaded:{name:y(f.documentLoaded)},DedicatedWorkerOrWorklet:{name:y(f.dedicatedWorkerOrWorklet)},OutstandingNetworkRequestOthers:{name:y(f.outstandingNetworkRequestOthers)},OutstandingIndexedDBTransaction:{name:y(f.outstandingIndexedDBTransaction)},RequestedNotificationsPermission:{name:y(f.requestedNotificationsPermission)},RequestedMIDIPermission:{name:y(f.requestedMIDIPermission)},RequestedAudioCapturePermission:{name:y(f.requestedAudioCapturePermission)},RequestedVideoCapturePermission:{name:y(f.requestedVideoCapturePermission)},RequestedBackForwardCacheBlockedSensors:{name:y(f.requestedBackForwardCacheBlockedSensors)},RequestedBackgroundWorkPermission:{name:y(f.requestedBackgroundWorkPermission)},BroadcastChannel:{name:y(f.broadcastChannel)},IndexedDBConnection:{name:y(f.indexedDBConnection)},WebXR:{name:y(f.webXR)},SharedWorker:{name:y(f.sharedWorker)},WebLocks:{name:y(f.webLocks)},WebHID:{name:y(f.webHID)},WebShare:{name:y(f.webShare)},RequestedStorageAccessGrant:{name:y(f.requestedStorageAccessGrant)},WebNfc:{name:y(f.webNfc)},OutstandingNetworkRequestFetch:{name:y(f.outstandingNetworkRequestFetch)},OutstandingNetworkRequestXHR:{name:y(f.outstandingNetworkRequestXHR)},AppBanner:{name:y(f.appBanner)},Printing:{name:y(f.printing)},WebDatabase:{name:y(f.webDatabase)},PictureInPicture:{name:y(f.pictureInPicture)},SpeechRecognizer:{name:y(f.speechRecognizer)},IdleManager:{name:y(f.idleManager)},PaymentManager:{name:y(f.paymentManager)},SpeechSynthesis:{name:y(f.speechSynthesis)},KeyboardLock:{name:y(f.keyboardLock)},WebOTPService:{name:y(f.webOTPService)},OutstandingNetworkRequestDirectSocket:{name:y(f.outstandingNetworkRequestDirectSocket)},InjectedJavascript:{name:y(f.injectedJavascript)},InjectedStyleSheet:{name:y(f.injectedStyleSheet)},Dummy:{name:y(f.internalError)},ContentDiscarded:{name:y(f.contentDiscarded)},ContentSecurityHandler:{name:y(f.contentSecurityHandler)},ContentWebAuthenticationAPI:{name:y(f.contentWebAuthenticationAPI)},ContentFileChooser:{name:y(f.contentFileChooser)},ContentSerial:{name:y(f.contentSerial)},ContentFileSystemAccess:{name:y(f.contentFileSystemAccess)},ContentMediaDevicesDispatcherHost:{name:y(f.contentMediaDevicesDispatcherHost)},ContentWebBluetooth:{name:y(f.contentWebBluetooth)},ContentWebUSB:{name:y(f.contentWebUSB)},ContentMediaSession:{name:y(f.contentMediaSession)},ContentMediaSessionService:{name:y(f.contentMediaSessionService)},ContentMediaPlay:{name:y(f.contentMediaPlay)},ContentScreenReader:{name:y(f.contentScreenReader)},EmbedderPopupBlockerTabHelper:{name:y(f.embedderPopupBlockerTabHelper)},EmbedderSafeBrowsingTriggeredPopupBlocker:{name:y(f.embedderSafeBrowsingTriggeredPopupBlocker)},EmbedderSafeBrowsingThreatDetails:{name:y(f.embedderSafeBrowsingThreatDetails)},EmbedderAppBannerManager:{name:y(f.embedderAppBannerManager)},EmbedderDomDistillerViewerSource:{name:y(f.embedderDomDistillerViewerSource)},EmbedderDomDistillerSelfDeletingRequestDelegate:{name:y(f.embedderDomDistillerSelfDeletingRequestDelegate)},EmbedderOomInterventionTabHelper:{name:y(f.embedderOomInterventionTabHelper)},EmbedderOfflinePage:{name:y(f.embedderOfflinePage)},EmbedderChromePasswordManagerClientBindCredentialManager:{name:y(f.embedderChromePasswordManagerClientBindCredentialManager)},EmbedderPermissionRequestManager:{name:y(f.embedderPermissionRequestManager)},EmbedderModalDialog:{name:y(f.embedderModalDialog)},EmbedderExtensions:{name:y(f.embedderExtensions)},EmbedderExtensionMessaging:{name:y(f.embedderExtensionMessaging)},EmbedderExtensionMessagingForOpenPort:{name:y(f.embedderExtensionMessagingForOpenPort)},EmbedderExtensionSentMessageToCachedFrame:{name:y(f.embedderExtensionSentMessageToCachedFrame)},ErrorDocument:{name:y(f.errorDocument)},FencedFramesEmbedder:{name:y(f.fencedFramesEmbedder)},KeepaliveRequest:{name:y(f.keepaliveRequest)},JsNetworkRequestReceivedCacheControlNoStoreResource:{name:y(f.jsNetworkRequestReceivedCacheControlNoStoreResource)},IndexedDBEvent:{name:y(f.indexedDBEvent)},CookieDisabled:{name:y(f.cookieDisabled)},WebRTCSticky:{name:y(f.webRTCSticky)},WebTransportSticky:{name:y(f.webTransportSticky)},WebSocketSticky:{name:y(f.webSocketSticky)},HTTPAuthRequired:{name:o.i18n.lockedLazyString("HTTPAuthRequired")},CookieFlushed:{name:o.i18n.lockedLazyString("CookieFlushed")},SmartCard:{name:o.i18n.lockedLazyString("SmartCard")},LiveMediaStreamTrack:{name:o.i18n.lockedLazyString("LiveMediaStreamTrack")},UnloadHandler:{name:o.i18n.lockedLazyString("UnloadHandler")},ParserAborted:{name:o.i18n.lockedLazyString("ParserAborted")},BroadcastChannelOnMessage:{name:o.i18n.lockedLazyString("BroadcastChannelOnMessage")},RequestedByWebViewClient:{name:o.i18n.lockedLazyString("RequestedByWebViewClient")},PostMessageByWebViewClient:{name:o.i18n.lockedLazyString("PostMessageByWebViewClient")},WebViewSettingsChanged:{name:o.i18n.lockedLazyString("WebViewSettingsChanged")},WebViewJavaScriptObjectChanged:{name:o.i18n.lockedLazyString("WebViewJavaScriptObjectChanged")},WebViewMessageListenerInjected:{name:o.i18n.lockedLazyString("WebViewMessageListenerInjected")},WebViewSafeBrowsingAllowlistChanged:{name:o.i18n.lockedLazyString("WebViewSafeBrowsingAllowlistChanged")},WebViewDocumentStartJavascriptChanged:{name:o.i18n.lockedLazyString("WebViewDocumentStartJavascriptChanged")},CacheControlNoStoreDeviceBoundSessionTerminated:{name:y(f.cacheControlNoStore)},CacheLimitPruned:{name:o.i18n.lockedLazyString("CacheLimitPruned")}};var S=`.inline-icon{vertical-align:sub}.gray-text{color:var(--sys-color-token-subtle);margin:0 0 5px 56px;display:flex;flex-direction:row;align-items:center;flex:auto;overflow-wrap:break-word;overflow:hidden;grid-column-start:span 2}.details-list{margin-left:56px;grid-column-start:span 2}.help-outline-icon{margin:0 2px}.circled-exclamation-icon{margin-right:10px;flex-shrink:0}.status{margin-right:11px;flex-shrink:0}.report-line{grid-column-start:span 2;display:flex;align-items:center;margin:0 30px;line-height:26px}.report-key{color:var(--sys-color-token-subtle);min-width:auto;overflow-wrap:break-word;align-self:start}.report-value{padding:0 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link,\n.devtools-link{color:var(--sys-color-primary);text-decoration:underline;cursor:pointer;outline-offset:2px}devtools-report-value:has(devtools-tree-outline){margin-left:var(--sys-size-7)}.tree-outline li .selection{margin-left:-5px}@media (forced-colors: active){.link,\n .devtools-link{color:linktext;text-decoration-color:linktext}}\n/*# sourceURL=${import.meta.resolve("./backForwardCacheView.css")} */\n`;const{html:T}=s,$={mainFrame:"Main Frame",backForwardCacheTitle:"Back/forward cache",unavailable:"unavailable",url:"URL",unknown:"Unknown Status",normalNavigation:"Not served from back/forward cache: to trigger back/forward cache, use Chrome's back/forward buttons, or use the test button below to automatically navigate away and back.",restoredFromBFCache:"Successfully served from back/forward cache.",pageSupportNeeded:"Actionable",pageSupportNeededExplanation:"These reasons are actionable i.e. they can be cleaned up to make the page eligible for back/forward cache.",circumstantial:"Not Actionable",circumstantialExplanation:"These reasons are not actionable i.e. caching was prevented by something outside of the direct control of the page.",supportPending:"Pending Support",runTest:"Test back/forward cache",runningTest:"Running test",learnMore:"Learn more: back/forward cache eligibility",neverUseUnload:"Learn more: Never use unload handler",supportPendingExplanation:"Chrome support for these reasons is pending i.e. they will not prevent the page from being eligible for back/forward cache in a future version of Chrome.",blockingExtensionId:"Extension id: ",framesTitle:"Frames",issuesInSingleFrame:"{n, plural, =1 {# issue found in 1 frame.} other {# issues found in 1 frame.}}",issuesInMultipleFrames:"{n, plural, =1 {# issue found in {m} frames.} other {# issues found in {m} frames.}}",framesPerIssue:"{n, plural, =1 {# frame} other {# frames}}",blankURLTitle:"Blank URL [{PH1}]",filesPerIssue:"{n, plural, =1 {# file} other {# files}}"},C=o.i18n.registerUIStrings("panels/application/components/BackForwardCacheView.ts",$),P=o.i18n.getLocalizedString.bind(void 0,C);class R extends a.LegacyWrapper.WrappableComponent{#e=this.attachShadow({mode:"open"});#t="Result";#o=0;#r=0;constructor(){super(),this.#a()?.addEventListener(r.ResourceTreeModel.Events.PrimaryPageChanged,this.render,this),this.#a()?.addEventListener(r.ResourceTreeModel.Events.BackForwardCacheDetailsUpdated,this.render,this)}#a(){const e=r.TargetManager.TargetManager.instance().primaryPageTarget();return e?.model(r.ResourceTreeModel.ResourceTreeModel)||null}#n(){return this.#a()?.mainFrame||null}connectedCallback(){this.parentElement?.classList.add("overflow-auto")}async render(){await n.write("BackForwardCacheView render",(()=>{s.render(T`
<style>${S}</style>
<devtools-report .data=${{reportTitle:P($.backForwardCacheTitle)}} jslog=${l.pane("back-forward-cache")}>
${this.#i()}
</devtools-report>
`,this.#e,{host:this})}))}#s(){r.TargetManager.TargetManager.instance().removeModelListener(r.ResourceTreeModel.ResourceTreeModel,r.ResourceTreeModel.Events.FrameNavigated,this.#s,this),this.#t="Result",this.render()}async#l(){r.TargetManager.TargetManager.instance().removeModelListener(r.ResourceTreeModel.ResourceTreeModel,r.ResourceTreeModel.Events.FrameNavigated,this.#l,this),await this.#c(50)}async#c(e){const t=r.TargetManager.TargetManager.instance().primaryPageTarget(),o=t?.model(r.ResourceTreeModel.ResourceTreeModel),a=await(o?.navigationHistory());o&&a&&(a.currentIndex===this.#r?window.setTimeout(this.#c.bind(this,2*e),e):(r.TargetManager.TargetManager.instance().addModelListener(r.ResourceTreeModel.ResourceTreeModel,r.ResourceTreeModel.Events.FrameNavigated,this.#s,this),o.navigateToHistoryEntry(a.entries[a.currentIndex-1])))}async#d(){const e=r.TargetManager.TargetManager.instance().primaryPageTarget(),t=e?.model(r.ResourceTreeModel.ResourceTreeModel),o=await(t?.navigationHistory());t&&o&&(this.#r=o.currentIndex,this.#t="Running",this.render(),r.TargetManager.TargetManager.instance().addModelListener(r.ResourceTreeModel.ResourceTreeModel,r.ResourceTreeModel.Events.FrameNavigated,this.#l,this),t.navigate("chrome://terms"))}#i(){const e=this.#n();if(!e)return T`
<devtools-report-key>
${P($.mainFrame)}
</devtools-report-key>
<devtools-report-value>
${P($.unavailable)}
</devtools-report-value>
`;const o="Running"===this.#t,r=t.ParsedURL.schemeIs(e.url,"devtools:");return T`
${this.#h(e.backForwardCacheDetails.restoredFromCache)}
<devtools-report-key>${P($.url)}</devtools-report-key>
<devtools-report-value>${e.url}</devtools-report-value>
${this.#u(e.backForwardCacheDetails.explanationsTree)}
<devtools-report-section>
<devtools-button
aria-label=${P($.runTest)}
.disabled=${o||r}
.spinner=${o}
.variant=${"primary"}
@click=${this.#d}
jslog=${l.action("back-forward-cache.run-test").track({click:!0})}>
${o?T`
${P($.runningTest)}`:`\n ${P($.runTest)}\n `}
</devtools-button>
</devtools-report-section>
<devtools-report-divider>
</devtools-report-divider>
${this.#p(e.backForwardCacheDetails.explanations,e.backForwardCacheDetails.explanationsTree)}
<devtools-report-section>
<x-link href="https://web.dev/bfcache/" class="link"
jslog=${l.action("learn-more.eligibility").track({click:!0})}>
${P($.learnMore)}
</x-link>
</devtools-report-section>
`}#u(e){if(!e||0===e.explanations.length&&0===e.children.length)return s.nothing;const t=this.#g(e,{blankCount:1});t.node.treeNodeData.iconName="frame";let o="";o=1===t.frameCount?P($.issuesInSingleFrame,{n:t.issueCount}):P($.issuesInMultipleFrames,{n:t.issueCount,m:t.frameCount});const r={treeNodeData:{text:o},id:"root",children:()=>Promise.resolve([t.node])};return T`
<devtools-report-key jslog=${l.section("frames")}>${P($.framesTitle)}</devtools-report-key>
<devtools-report-value>
<devtools-tree-outline .data=${{tree:[r],defaultRenderer:function(e){return T`
<div class="text-ellipsis">
${e.treeNodeData.iconName?T`
<devtools-icon class="inline-icon" style="margin-bottom: -3px;" .data=${{iconName:e.treeNodeData.iconName,color:"var(--icon-default)",width:"20px",height:"20px"}}>
</devtools-icon>
`:s.nothing}
${e.treeNodeData.text}
</div>
`},compact:!0}}>
</devtools-tree-outline>
</devtools-report-value>
`}#g(e,t){let o=1,r=0;const a=[];let n="";e.url.length?n=e.url:(n=P($.blankURLTitle,{PH1:t.blankCount}),t.blankCount+=1);for(const t of e.explanations){const e={treeNodeData:{text:t.reason},id:String(this.#o++)};r+=1,a.push(e)}for(const n of e.children){const e=this.#g(n,t);e.issueCount>0&&(a.push(e.node),r+=e.issueCount,o+=e.frameCount)}let i={treeNodeData:{text:`(${r}) ${n}`},id:String(this.#o++)};return a.length?(i={...i,children:()=>Promise.resolve(a)},i.treeNodeData.iconName="iframe"):e.url.length||(t.blankCount-=1),{node:i,frameCount:o,issueCount:r}}#h(e){switch(e){case!0:return T`
<devtools-report-section>
<div class="status">
<devtools-icon class="inline-icon" .data=${{iconName:"check-circle",color:"var(--icon-checkmark-green)",width:"20px",height:"20px"}}>
</devtools-icon>
</div>
${P($.restoredFromBFCache)}
</devtools-report-section>
`;case!1:return T`
<devtools-report-section>
<div class="status">
<devtools-icon class="inline-icon" .data=${{iconName:"clear",color:"var(--icon-default)",width:"20px",height:"20px"}}>
</devtools-icon>
</div>
${P($.normalNavigation)}
</devtools-report-section>
`}return T`
<devtools-report-section>
${P($.unknown)}
</devtools-report-section>
`}#m(e,t,o){let r=e.url;0===r.length&&(r=P($.blankURLTitle,{PH1:t.blankCount}),t.blankCount+=1),e.explanations.forEach((e=>{let t=o.get(e.reason);void 0===t?(t=[r],o.set(e.reason,t)):t.push(r)})),e.children.map((e=>{this.#m(e,t,o)}))}#p(e,t){if(0===e.length)return s.nothing;const o=e.filter((e=>"PageSupportNeeded"===e.type)),r=e.filter((e=>"SupportPending"===e.type)),a=e.filter((e=>"Circumstantial"===e.type)),n=new Map;return t&&this.#m(t,{blankCount:1},n),T`
${this.#v(P($.pageSupportNeeded),P($.pageSupportNeededExplanation),o,n)}
${this.#v(P($.supportPending),P($.supportPendingExplanation),r,n)}
${this.#v(P($.circumstantial),P($.circumstantialExplanation),a,n)}
`}#v(e,t,o,r){return T`
${o.length>0?T`
<devtools-report-section-header>
${e}
<div class="help-outline-icon">
<devtools-icon class="inline-icon" .data=${{iconName:"help",color:"var(--icon-default)",width:"16px",height:"16px"}} title=${t}>
</devtools-icon>
</div>
</devtools-report-section-header>
${o.map((e=>this.#b(e,r.get(e.reason))))}
`:s.nothing}
`}#k(e){if("EmbedderExtensionSentMessageToCachedFrame"===e.reason&&e.context){const t="chrome://extensions/?id="+e.context;return T`${P($.blockingExtensionId)}
<devtools-chrome-link .href=${t}>${e.context}</devtools-chrome-link>`}return s.nothing}#f(e){if(void 0===e||0===e.length)return s.nothing;const t=[T`<div>${P($.framesPerIssue,{n:e.length})}</div>`];return t.push(...e.map((e=>T`<div class="text-ellipsis" title=${e}
jslog=${l.treeItem()}>${e}</div>`))),T`
<div class="details-list"
jslog=${l.tree("frames-per-issue")}>
<devtools-expandable-list .data=${{rows:t,title:P($.framesPerIssue,{n:e.length})}}
jslog=${l.treeItem()}></devtools-expandable-list>
</div>
`}#w(e){return"UnloadHandlerExistsInMainFrame"===e.reason||"UnloadHandlerExistsInSubFrame"===e.reason?T`
<x-link href="https://web.dev/bfcache/#never-use-the-unload-event" class="link"
jslog=${l.action("learn-more.never-use-unload").track({click:!0})}>
${P($.neverUseUnload)}
</x-link>`:s.nothing}#y(e){if(void 0===e||0===e.length)return s.nothing;const t=new i.Linkifier.Linkifier(50),o=[T`<div>${P($.filesPerIssue,{n:e.length})}</div>`];return o.push(...e.map((e=>T`${t.linkifyScriptLocation(null,null,e.url,e.lineNumber,{columnNumber:e.columnNumber,showColumnNumber:!0,inlineFrameIndex:0})}`))),T`
<div class="details-list">
<devtools-expandable-list .data=${{rows:o}}></devtools-expandable-list>
</div>
`}#b(e,t){return T`
<devtools-report-section>
${e.reason in x?T`
<div class="circled-exclamation-icon">
<devtools-icon class="inline-icon" .data=${{iconName:"warning",color:"var(--icon-warning)",width:"16px",height:"16px"}}>
</devtools-icon>
</div>
<div>
${x[e.reason].name()}
${this.#w(e)}
${this.#k(e)}
</div>`:s.nothing}
</devtools-report-section>
<div class="gray-text">
${e.reason}
</div>
${this.#y(e.details)}
${this.#f(t)}
`}}customElements.define("devtools-resources-back-forward-cache-view",R);var M=Object.freeze({__proto__:null,BackForwardCacheView:R}),D=`devtools-data-grid{margin-top:0}.link,\n.devtools-link{color:var(--sys-color-primary);text-decoration:underline;cursor:pointer;outline-offset:2px}@media (forced-colors: active){.link,\n .devtools-link{color:linktext;text-decoration-color:linktext}}\n/*# sourceURL=${import.meta.resolve("./bounceTrackingMitigationsView.css")} */\n`;const{html:I}=s,B={bounceTrackingMitigationsTitle:"Bounce tracking mitigations",forceRun:"Force run",runningMitigations:"Running",stateDeletedFor:"State was deleted for the following sites:",checkingPotentialTrackers:"Checking for potential bounce tracking sites.",learnMore:"Learn more: Bounce Tracking Mitigations",noPotentialBounceTrackersIdentified:"State was not cleared for any potential bounce tracking sites. Either none were identified or third-party cookies are not blocked.",featureDisabled:'Bounce tracking mitigations are disabled. To enable them, set the flag at {PH1} to "Enabled With Deletion".',featureFlag:"Bounce Tracking Mitigations Feature Flag"},E=o.i18n.registerUIStrings("panels/application/components/BounceTrackingMitigationsView.ts",B),F=o.i18n.getLocalizedString.bind(void 0,E);class L extends a.LegacyWrapper.WrappableComponent{#e=this.attachShadow({mode:"open"});#x=[];#t="Result";#S=!1;#T=!1;connectedCallback(){this.#$()}async#$(){s.render(I`
<style>${D}</style>
<devtools-report .data=${{reportTitle:F(B.bounceTrackingMitigationsTitle)}}
jslog=${l.pane("bounce-tracking-mitigations")}>
${await this.#i()}
</devtools-report>
`,this.#e,{host:this})}async#i(){if(this.#S||await this.#C(),"Disabled"===this.#t){const t=new e.ChromeLink.ChromeLink;return t.href="chrome://flags/#bounce-tracking-mitigations",t.textContent=F(B.featureFlag),I`
<devtools-report-section>
${o.i18n.getFormatLocalizedString(E,B.featureDisabled,{PH1:t})}
</devtools-report-section>
`}return I`
<devtools-report-section>
${this.#P()}
</devtools-report-section>
${this.#R()}
<devtools-report-divider>
</devtools-report-divider>
<devtools-report-section>
<x-link href="https://privacycg.github.io/nav-tracking-mitigations/#bounce-tracking-mitigations" class="link"
jslog=${l.link("learn-more").track({click:!0})}>
${F(B.learnMore)}
</x-link>
</devtools-report-section>
`}#P(){const e="Running"===this.#t;return I`
<devtools-button
aria-label=${F(B.forceRun)}
.disabled=${e}
.spinner=${e}
.variant=${"primary"}
@click=${this.#M}
jslog=${l.action("force-run").track({click:!0})}>
${e?I`
${F(B.runningMitigations)}`:`\n ${F(B.forceRun)}\n `}
</devtools-button>
`}#R(){return this.#T?0===this.#x.length?I`
<devtools-report-section>
${"Running"===this.#t?I`
${F(B.checkingPotentialTrackers)}`:`\n ${F(B.noPotentialBounceTrackersIdentified)}\n `}
</devtools-report-section>
`:I`
<devtools-report-section>
<devtools-data-grid striped inline>
<table>
<tr>
<th id="sites" weight="10" sortable>
${F(B.stateDeletedFor)}
</th>
</tr>
${this.#x.map((e=>I`
<tr><td>${e}</td></tr>`))}
</table>
</devtools-data-grid>
</devtools-report-section>
`:I``}async#M(){const e=r.TargetManager.TargetManager.instance().primaryPageTarget();if(!e)return;this.#T=!0,this.#t="Running",this.#$();const t=await e.storageAgent().invoke_runBounceTrackingMitigations();this.#x=[],t.deletedSites.forEach((e=>{this.#x.push(e)})),this.#D()}#D(){this.#t="Result",this.#$()}async#C(){this.#S=!0;const e=r.TargetManager.TargetManager.instance().primaryPageTarget();e&&((await e.systemInfo().invoke_getFeatureState({featureState:"DIPS"})).featureEnabled||(this.#t="Disabled"))}}customElements.define("devtools-bounce-tracking-mitigations-view",L);var N=Object.freeze({__proto__:null,BounceTrackingMitigationsView:L,i18nString:F}),A={cssText:`*{box-sizing:border-box;min-width:0;min-height:0}:root{height:100%;overflow:hidden;interpolate-size:allow-keywords}body{height:100%;width:100%;position:relative;overflow:hidden;margin:0;cursor:default;font-family:var(--default-font-family);font-size:12px;tab-size:4;user-select:none;color:var(--sys-color-on-surface);background:var(--sys-color-cdt-base-container)}:focus{outline-width:0}.monospace{font-family:var(--monospace-font-family);font-size:var(\n --monospace-font-size\n )!important}.source-code{font-family:var(--source-code-font-family);font-size:var(\n --source-code-font-size\n )!important;white-space:pre-wrap;&:not(input)::selection{color:var(--sys-color-on-surface)}}.source-code.breakpoint{white-space:nowrap}.source-code .devtools-link.text-button{max-width:100%;overflow:hidden;text-overflow:ellipsis}img{-webkit-user-drag:none}iframe,\na img{border:none}.fill{position:absolute;inset:0}iframe.fill{width:100%;height:100%}.widget{position:relative;flex:auto;contain:style}.hbox{display:flex;flex-direction:row!important;position:relative}.vbox{display:flex;flex-direction:column!important;position:relative}.view-container > devtools-toolbar{border-bottom:1px solid var(--sys-color-divider)}.flex-auto{flex:auto}.flex-none{flex:none}.flex-centered{display:flex;align-items:center;justify-content:center}.overflow-auto{overflow:auto;background-color:var(--sys-color-cdt-base-container)}iframe.widget{position:absolute;width:100%;height:100%;inset:0}.hidden{display:none!important}.highlighted-search-result{border-radius:1px;background-color:var(--sys-color-yellow-container);outline:1px solid var(--sys-color-yellow-container)}.link{cursor:pointer;text-decoration:underline;color:var(--sys-color-primary);outline-offset:2px}button,\ninput,\nselect{font-family:inherit;font-size:inherit}select option,\nselect optgroup,\ninput{background-color:var(--sys-color-cdt-base-container)}input{color:inherit;&[type="checkbox"]{position:relative;outline:none;display:flex;align-items:center;justify-content:center;&:hover::after,\n &:active::before{content:"";height:24px;width:24px;border-radius:var(--sys-shape-corner-full);position:absolute}&:not(.-theme-preserve){accent-color:var(--sys-color-primary-bright);color:var(--sys-color-on-primary)}&:not(:disabled):hover::after{background-color:var(--sys-color-state-hover-on-subtle)}&:not(:disabled):active::before{background-color:var(--sys-color-state-ripple-neutral-on-subtle)}&:not(:disabled):focus-visible::before{content:"";height:15px;width:15px;border-radius:5px;position:absolute;border:2px solid var(--sys-color-state-focus-ring)}&.small:hover::after,\n &.small:active::before{height:12px;width:12px;border-radius:2px}}}input::placeholder{--override-input-placeholder-color:rgb(0 0 0/54%);color:var(--override-input-placeholder-color)}.theme-with-dark-background input::placeholder,\n:host-context(.theme-with-dark-background) input::placeholder{--override-input-placeholder-color:rgb(230 230 230/54%)}.harmony-input:not([type]),\n.harmony-input[type="number"],\n.harmony-input[type="text"]{padding:3px 6px;height:24px;border:1px solid var(--sys-color-neutral-outline);border-radius:4px;&.error-input,\n &:invalid{border-color:var(--sys-color-error)}&:not(.error-input, :invalid):focus{border-color:var(--sys-color-state-focus-ring)}&:not(.error-input, :invalid):hover:not(:focus){background:var(--sys-color-state-hover-on-subtle)}}input[type="radio"]{height:17px;width:17px;min-width:17px;border-radius:8px;vertical-align:sub;margin:0 5px 5px 0;accent-color:var(--sys-color-primary-bright);color:var(--sys-color-on-primary);&:focus{box-shadow:var(--legacy-focus-ring-active-shadow)}}@media (forced-colors: active){input[type="radio"]{--gradient-start:ButtonFace;--gradient-end:ButtonFace;&:checked{--gradient-start:Highlight;--gradient-end:Highlight}}}input[type="range"]{appearance:none;margin:0;padding:0;height:10px;width:88px;outline:none;background:none}input[type="range"]::-webkit-slider-thumb,\n.-theme-preserve{appearance:none;margin:0;padding:0;border:0;width:12px;height:12px;margin-top:-5px;border-radius:50%;background-color:var(--sys-color-primary)}input[type="range"]::-webkit-slider-runnable-track{appearance:none;margin:0;padding:0;width:100%;height:2px;background-color:var(--sys-color-surface-variant)}input[type="range"]:focus::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--sys-color-inverse-primary)}input[type="range"]:disabled::-webkit-slider-thumb{background-color:var(--sys-color-state-disabled)}@media (forced-colors: active){input[type="range"]{forced-color-adjust:none}}.highlighted-search-result.current-search-result{--override-current-search-result-background-color:rgb(255 127 0/80%);border-radius:1px;padding:1px;margin:-1px;background-color:var(--override-current-search-result-background-color)}.dimmed{opacity:60%}.editing{box-shadow:var(--drop-shadow);background-color:var(--sys-color-cdt-base-container);text-overflow:clip!important;padding-left:2px;margin-left:-2px;padding-right:2px;margin-right:-2px;margin-bottom:-1px;padding-bottom:1px;opacity:100%!important}.editing,\n.editing *{color:var(\n --sys-color-on-surface\n )!important;text-decoration:none!important}select{appearance:none;user-select:none;height:var(--sys-size-11);border:var(--sys-size-1) solid var(--sys-color-neutral-outline);border-radius:var(--sys-shape-corner-extra-small);color:var(--sys-color-on-surface);font:inherit;margin:0;outline:none;padding:0 var(--sys-size-9) 0 var(--sys-size-5);background-image:var(--combobox-dropdown-arrow);background-color:transparent;background-position:right center;background-repeat:no-repeat;&:disabled{opacity:100%;border-color:transparent;color:var(--sys-color-state-disabled);background-color:var(--sys-color-state-disabled-container);pointer-events:none}&:enabled{&:hover{background-color:var(--sys-color-state-hover-on-subtle)}&:active{background-color:var(--sys-color-state-ripple-neutral-on-subtle)}&:hover:active{background:var(--combobox-dropdown-arrow),linear-gradient(var(--sys-color-state-hover-on-subtle),var(--sys-color-state-hover-on-subtle)),linear-gradient(var(--sys-color-state-ripple-neutral-on-subtle),var(--sys-color-state-ripple-neutral-on-subtle));background-position:right center;background-repeat:no-repeat}&:focus{outline:var(--sys-size-2) solid var(--sys-color-state-focus-ring);outline-offset:-1px}}}@media (forced-colors: active) and (prefers-color-scheme: light){:root,\n .theme-with-dark-background,\n :host-context(.theme-with-dark-background){--combobox-dropdown-arrow:var(--image-file-arrow-drop-down-light)}}@media (forced-colors: active) and (prefers-color-scheme: dark){:root,\n .theme-with-dark-background,\n :host-context(.theme-with-dark-background){--combobox-dropdown-arrow:var(--image-file-arrow-drop-down-dark)}}.chrome-select-label{margin:0 var(--sys-size-10);flex:none;p p{margin-top:0;color:var(--sys-color-token-subtle)}.reload-warning{margin-left:var(--sys-size-5)}}.settings-select{margin:0}select optgroup,\nselect option{background-color:var(--sys-color-cdt-base-container);color:var(--sys-color-on-surface)}.gray-info-message{text-align:center;font-style:italic;padding:6px;color:var(--sys-color-token-subtle);white-space:nowrap}.empty-state{margin:var(--sys-size-5);display:flex;flex-grow:1;justify-content:center;align-items:center;flex-direction:column;text-align:center;min-height:fit-content;min-width:fit-content;> *{max-width:var(--sys-size-29)}.empty-state-header{font:var(--sys-typescale-headline5);margin-bottom:var(--sys-size-3)}.empty-state-description{font:var(--sys-typescale-body4-regular);color:var(--sys-color-on-surface-subtle);> x-link{white-space:nowrap;margin-left:var(--sys-size-3)}}> devtools-button{margin-top:var(--sys-size-7)}}dt-icon-label{flex:none}.full-widget-dimmed-banner a{color:inherit}.full-widget-dimmed-banner{color:var(--sys-color-token-subtle);background-color:var(--sys-color-cdt-base-container);display:flex;justify-content:center;align-items:center;text-align:center;padding:20px;position:absolute;inset:0;font-size:13px;overflow:auto;z-index:500}.dot::before{content:var(--image-file-empty);width:6px;height:6px;border-radius:50%;outline:1px solid var(--icon-gap-default);left:9px;position:absolute;top:9px;z-index:1}.green::before{background-color:var(--sys-color-green-bright)}.purple::before{background-color:var(--sys-color-purple-bright)}.expandable-inline-button{background-color:var(--sys-color-cdt-base-container);color:var(--sys-color-on-surface);cursor:pointer;border-radius:3px}.undisplayable-text,\n.expandable-inline-button{border:none;padding:1px 3px;margin:0 2px;font-size:11px;font-family:sans-serif;white-space:nowrap;display:inline-block}.undisplayable-text::after,\n.expandable-inline-button::after{content:attr(data-text)}.undisplayable-text{color:var(--sys-color-state-disabled);font-style:italic}.expandable-inline-button:hover,\n.expandable-inline-button:focus-visible{background-color:var(--sys-color-state-hover-on-subtle)}.expandable-inline-button:focus-visible{background-color:var(--sys-color-state-focus-highlight)}::selection{background-color:var(--sys-color-state-text-highlight);color:var(--sys-color-state-on-text-highlight)}button.link{border:none;background:none;padding:3px}button.link:focus-visible{outline:2px solid var(--sys-color-state-focus-ring);outline-offset:2px;border-radius:var(--sys-shape-corner-full)}.data-grid-data-grid-node button.link:focus-visible{border-radius:var(--sys-shape-corner-extra-small);padding:0;margin-top:3px}@media (forced-colors: active){.dimmed,\n select:disabled{opacity:100%}.harmony-input:not([type]),\n .harmony-input[type="number"],\n .harmony-input[type="text"]{border:1px solid ButtonText}.harmony-input:not([type]):focus,\n .harmony-input[type="number"]:focus,\n .harmony-input[type="text"]:focus{border:1px solid Highlight}}input.custom-search-input::-webkit-search-cancel-button{appearance:none;width:16px;height:15px;margin-right:0;opacity:70%;mask-image:var(--image-file-cross-circle-filled);mask-position:center;mask-repeat:no-repeat;mask-size:99%;background-color:var(--icon-default)}input.custom-search-input::-webkit-search-cancel-button:hover{opacity:99%}.spinner::before{display:block;width:var(--dimension,24px);height:var(--dimension,24px);border:var(--override-spinner-size,3px) solid var(--override-spinner-color,var(--sys-color-token-subtle));border-radius:12px;clip:rect(0,var(--clip-size,15px),var(--clip-size,15px),0);content:"";position:absolute;animation:spinner-animation 1s linear infinite;box-sizing:border-box}@keyframes spinner-animation{from{transform:rotate(0)}to{transform:rotate(360deg)}}.adorner-container{display:inline-flex;vertical-align:middle}.adorner-container.hidden{display:none}.adorner-container devtools-adorner{margin-left:3px}:host-context(.theme-with-dark-background) devtools-adorner{--override-adorner-border-color:var(--sys-color-tonal-outline);--override-adorner-active-background-color:var(\n