UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 22.6 kB
import*as Common from"../../core/common/common.js";import*as i18n from"../../core/i18n/i18n.js";import*as DataGrid from"../../ui/legacy/components/data_grid/data_grid.js";import*as Components from"../../ui/legacy/components/utils/utils.js";import*as UI from"../../ui/legacy/legacy.js";import*as ThemeSupport from"../../ui/legacy/theme_support/theme_support.js";import{NetworkRequestNode}from"./NetworkDataGridNode.js";import{NetworkManageCustomHeadersView}from"./NetworkManageCustomHeadersView.js";import{NetworkWaterfallColumn}from"./NetworkWaterfallColumn.js";import{RequestInitiatorView}from"./RequestInitiatorView.js";const UIStrings={networkLog:"Network Log",waterfall:"Waterfall",responseHeaders:"Response Headers",manageHeaderColumns:"Manage Header Columns…",startTime:"Start Time",responseTime:"Response Time",endTime:"End Time",totalDuration:"Total Duration",latency:"Latency",name:"Name",path:"Path",url:"Url",method:"Method",status:"Status",text:"Text",protocol:"Protocol",scheme:"Scheme",domain:"Domain",remoteAddress:"Remote Address",type:"Type",initiator:"Initiator",hasOverrides:"Has overrides",initiatorAddressSpace:"Initiator Address Space",cookies:"Cookies",setCookies:"Set Cookies",size:"Size",content:"Content",time:"Time",priority:"Priority",connectionId:"Connection ID",remoteAddressSpace:"Remote Address Space"},str_=i18n.i18n.registerUIStrings("panels/network/NetworkLogViewColumns.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_),i18nLazyString=i18n.i18n.getLazilyComputedLocalizedString.bind(void 0,str_);export class NetworkLogViewColumns{networkLogView;persistantSettings;networkLogLargeRowsSetting;eventDividers;eventDividersShown;gridMode;columns;waterfallRequestsAreStale;waterfallScrollerWidthIsStale;popupLinkifier;calculatorsMap;lastWheelTime;dataGridInternal;splitWidget;waterfallColumn;activeScroller;dataGridScroller;waterfallScroller;waterfallScrollerContent;waterfallHeaderElement;waterfallColumnSortIcon;activeWaterfallSortId;popoverHelper;hasScrollerTouchStarted;scrollerTouchStartPos;constructor(e,t,i,r){this.networkLogView=e,this.persistantSettings=Common.Settings.Settings.instance().createSetting("networkLogColumns",{}),this.networkLogLargeRowsSetting=r,this.networkLogLargeRowsSetting.addChangeListener(this.updateRowsSize,this),this.eventDividers=new Map,this.eventDividersShown=!1,this.gridMode=!0,this.columns=[],this.waterfallRequestsAreStale=!1,this.waterfallScrollerWidthIsStale=!0,this.popupLinkifier=new Components.Linkifier.Linkifier,this.calculatorsMap=new Map,this.calculatorsMap.set(_calculatorTypes.Time,t),this.calculatorsMap.set(_calculatorTypes.Duration,i),this.lastWheelTime=0,this.setupDataGrid(),this.setupWaterfall(),ThemeSupport.ThemeSupport.instance().addEventListener(ThemeSupport.ThemeChangeEvent.eventName,(()=>{this.scheduleRefresh()}))}static convertToDataGridDescriptor(e){const t=e.title instanceof Function?e.title():e.title;return{id:e.id,title:t,sortable:e.sortable,align:e.align,nonSelectable:e.nonSelectable,weight:e.weight,allowInSortByEvenWhenHidden:e.allowInSortByEvenWhenHidden}}wasShown(){this.updateRowsSize()}willHide(){this.popoverHelper&&this.popoverHelper.hidePopover()}reset(){this.popoverHelper&&this.popoverHelper.hidePopover(),this.eventDividers.clear()}setupDataGrid(){const e=_defaultColumns,t=_defaultColumnConfig;this.columns=[];for(const i of e){const e=Object.assign({},t,i);if(e.id=e.id,e.subtitle){const t=e.title instanceof Function?e.title():e.title,i=e.subtitle instanceof Function?e.subtitle():e.subtitle;e.titleDOMFragment=this.makeHeaderFragment(t,i)}this.columns.push(e)}this.loadCustomColumnsAndSettings(),this.popoverHelper=new UI.PopoverHelper.PopoverHelper(this.networkLogView.element,this.getPopoverRequest.bind(this)),this.popoverHelper.setHasPadding(!0),this.popoverHelper.setTimeout(300,300),this.dataGridInternal=new DataGrid.SortableDataGrid.SortableDataGrid({displayName:i18nString(UIStrings.networkLog),columns:this.columns.map(NetworkLogViewColumns.convertToDataGridDescriptor),editCallback:void 0,deleteCallback:void 0,refreshCallback:void 0}),this.dataGridInternal.element.addEventListener("mousedown",(e=>{!this.dataGridInternal.selectedNode&&e.button&&e.consume()}),!0),this.dataGridScroller=this.dataGridInternal.scrollContainer,this.updateColumns(),this.dataGridInternal.addEventListener(DataGrid.DataGrid.Events.SortingChanged,this.sortHandler,this),this.dataGridInternal.setHeaderContextMenuCallback(this.innerHeaderContextMenu.bind(this)),this.activeWaterfallSortId=WaterfallSortIds.StartTime,this.dataGridInternal.markColumnAsSortedBy(_initialSortColumn,DataGrid.DataGrid.Order.Ascending),this.splitWidget=new UI.SplitWidget.SplitWidget(!0,!0,"networkPanelSplitViewWaterfall",200);const i=this.dataGridInternal.asWidget();i.setMinimumSize(150,0),this.splitWidget.setMainWidget(i)}setupWaterfall(){this.waterfallColumn=new NetworkWaterfallColumn(this.networkLogView.calculator()),this.waterfallColumn.element.addEventListener("contextmenu",function(e){const t=e,i=this.waterfallColumn.getNodeFromPoint(t.offsetX,t.offsetY);if(!i)return;const r=i.request();if(!r)return;const n=new UI.ContextMenu.ContextMenu(t);this.networkLogView.handleContextMenuForRequest(n,r),n.show()}.bind(this)),this.waterfallColumn.element.addEventListener("wheel",this.onMouseWheel.bind(this,!1),{passive:!0}),this.waterfallColumn.element.addEventListener("touchstart",this.onTouchStart.bind(this)),this.waterfallColumn.element.addEventListener("touchmove",this.onTouchMove.bind(this)),this.waterfallColumn.element.addEventListener("touchend",this.onTouchEnd.bind(this)),this.dataGridScroller.addEventListener("wheel",this.onMouseWheel.bind(this,!0),!0),this.dataGridScroller.addEventListener("touchstart",this.onTouchStart.bind(this)),this.dataGridScroller.addEventListener("touchmove",this.onTouchMove.bind(this)),this.dataGridScroller.addEventListener("touchend",this.onTouchEnd.bind(this)),this.waterfallScroller=this.waterfallColumn.contentElement.createChild("div","network-waterfall-v-scroll"),this.waterfallScrollerContent=this.waterfallScroller.createChild("div","network-waterfall-v-scroll-content"),this.dataGridInternal.addEventListener(DataGrid.DataGrid.Events.PaddingChanged,(()=>{this.waterfallScrollerWidthIsStale=!0,this.syncScrollers()})),this.dataGridInternal.addEventListener(DataGrid.ViewportDataGrid.Events.ViewportCalculated,this.redrawWaterfallColumn.bind(this)),this.createWaterfallHeader(),this.waterfallColumn.contentElement.classList.add("network-waterfall-view"),this.waterfallColumn.setMinimumSize(100,0),this.splitWidget.setSidebarWidget(this.waterfallColumn),this.switchViewMode(!1)}onMouseWheel(e,t){e&&t.consume(!0);const i=t,r=Date.now()-this.lastWheelTime<80;this.activeScroller.scrollBy({top:i.deltaY,behavior:r?"auto":"smooth"}),this.syncScrollers(),this.lastWheelTime=Date.now()}onTouchStart(e){const t=e;this.hasScrollerTouchStarted=!0,this.scrollerTouchStartPos=t.changedTouches[0].pageY}onTouchMove(e){if(!this.hasScrollerTouchStarted)return;const t=e.changedTouches[0].pageY,i=this.scrollerTouchStartPos-t;this.activeScroller.scrollBy({top:i,behavior:"auto"}),this.syncScrollers(),this.scrollerTouchStartPos=t}onTouchEnd(){this.hasScrollerTouchStarted=!1}syncScrollers(){this.waterfallColumn.isShowing()&&(this.waterfallScrollerContent.style.height=this.dataGridScroller.scrollHeight-this.dataGridInternal.headerHeight()+"px",this.updateScrollerWidthIfNeeded(),this.dataGridScroller.scrollTop=this.waterfallScroller.scrollTop)}updateScrollerWidthIfNeeded(){this.waterfallScrollerWidthIsStale&&(this.waterfallScrollerWidthIsStale=!1,this.waterfallColumn.setRightPadding(this.waterfallScroller.offsetWidth-this.waterfallScrollerContent.offsetWidth))}redrawWaterfallColumn(){if(!this.waterfallRequestsAreStale)return this.updateScrollerWidthIfNeeded(),void this.waterfallColumn.update(this.activeScroller.scrollTop,this.eventDividersShown?this.eventDividers:void 0);this.syncScrollers();const e=this.networkLogView.flatNodesList();this.waterfallColumn.update(this.activeScroller.scrollTop,this.eventDividers,e)}createWaterfallHeader(){this.waterfallHeaderElement=this.waterfallColumn.contentElement.createChild("div","network-waterfall-header"),this.waterfallHeaderElement.addEventListener("click",function(){const e=DataGrid.DataGrid.Order,t="waterfall"===this.dataGridInternal.sortColumnId(),i=this.dataGridInternal.isSortOrderAscending(),r=t&&i?e.Descending:e.Ascending;this.dataGridInternal.markColumnAsSortedBy("waterfall",r),this.sortHandler()}.bind(this)),this.waterfallHeaderElement.addEventListener("contextmenu",(e=>this.innerHeaderContextMenu(new UI.ContextMenu.ContextMenu(e))));this.waterfallHeaderElement.createChild("div").textContent=i18nString(UIStrings.waterfall),this.waterfallColumnSortIcon=UI.Icon.Icon.create("","sort-order-icon"),this.waterfallHeaderElement.createChild("div","sort-order-icon-container").appendChild(this.waterfallColumnSortIcon)}setCalculator(e){this.waterfallColumn.setCalculator(e)}scheduleRefresh(){this.waterfallColumn.scheduleDraw()}updateRowsSize(){const e=Boolean(this.networkLogLargeRowsSetting.get());this.dataGridInternal.element.classList.toggle("small",!e),this.dataGridInternal.scheduleUpdate(),this.waterfallScrollerWidthIsStale=!0,this.waterfallColumn.setRowHeight(e?41:21),this.waterfallScroller.classList.toggle("small",!e),this.waterfallHeaderElement.classList.toggle("small",!e),window.requestAnimationFrame((()=>{this.waterfallColumn.setHeaderHeight(this.waterfallScroller.offsetTop),this.waterfallColumn.scheduleDraw()}))}show(e){this.splitWidget.show(e)}setHidden(e){UI.ARIAUtils.setHidden(this.splitWidget.element,e)}dataGrid(){return this.dataGridInternal}sortByCurrentColumn(){this.sortHandler()}sortHandler(){const e=this.dataGridInternal.sortColumnId();if(this.networkLogView.removeAllNodeHighlights(),this.waterfallRequestsAreStale=!0,"waterfall"===e){this.dataGridInternal.sortOrder()===DataGrid.DataGrid.Order.Ascending?this.waterfallColumnSortIcon.setIconType("triangle-up"):this.waterfallColumnSortIcon.setIconType("triangle-down");const e=NetworkRequestNode.RequestPropertyComparator.bind(null,this.activeWaterfallSortId);return this.dataGridInternal.sortNodes(e,!this.dataGridInternal.isSortOrderAscending()),void this.dataGridSortedForTest()}this.waterfallColumnSortIcon.setIconType("");const t=this.columns.find((t=>t.id===e));if(!t||!t.sortingFunction)return;const i=t.sortingFunction;i&&(this.dataGridInternal.sortNodes(i,!this.dataGridInternal.isSortOrderAscending()),this.dataGridSortedForTest())}dataGridSortedForTest(){}updateColumns(){if(!this.dataGridInternal)return;const e=new Set;if(this.gridMode)for(const t of this.columns)t.visible&&e.add(t.id);else{const t=this.columns.find((e=>"path"===e.hideableGroup&&e.visible));t?e.add(t.id):e.add("name")}this.dataGridInternal.setColumnsVisiblity(e)}switchViewMode(e){this.gridMode!==e&&(this.gridMode=e,e?(this.splitWidget.showBoth(),this.activeScroller=this.waterfallScroller,this.waterfallScroller.scrollTop=this.dataGridScroller.scrollTop,this.dataGridInternal.setScrollContainer(this.waterfallScroller)):(this.networkLogView.removeAllNodeHighlights(),this.splitWidget.hideSidebar(),this.activeScroller=this.dataGridScroller,this.dataGridInternal.setScrollContainer(this.dataGridScroller)),this.networkLogView.element.classList.toggle("brief-mode",!e),this.updateColumns(),this.updateRowsSize())}toggleColumnVisibility(e){this.loadCustomColumnsAndSettings(),e.visible=!e.visible,this.saveColumnsSettings(),this.updateColumns()}saveColumnsSettings(){const e={};for(const t of this.columns)e[t.id]={visible:t.visible,title:t.title};this.persistantSettings.set(e)}loadCustomColumnsAndSettings(){const e=this.persistantSettings.get(),t=Object.keys(e);for(const i of t){const t=e[i];let r=this.columns.find((e=>e.id===i));r||(r=this.addCustomHeader(t.title,i)||void 0),r&&r.hideable&&"boolean"==typeof t.visible&&(r.visible=Boolean(t.visible)),r&&"string"==typeof t.title&&(r.title=t.title)}}makeHeaderFragment(e,t){const i=document.createDocumentFragment();UI.UIUtils.createTextChild(i,e);const r=i.createChild("div","network-header-subtitle");return UI.UIUtils.createTextChild(r,t),i}innerHeaderContextMenu(e){const t=this.columns.filter((e=>e.hideable)),i=t.filter((e=>!e.isResponseHeader)),r=new Map,n=[];for(const e of i)if(e.hideableGroup){const t=e.hideableGroup;let i=r.get(t);i||(i=[],r.set(t,i)),i.push(e)}else n.push(e);for(const t of r.values()){const i=t.filter((e=>e.visible));for(const r of t){const t=1===i.length&&i[0]===r,n=r.title instanceof Function?r.title():r.title;e.headerSection().appendCheckboxItem(n,this.toggleColumnVisibility.bind(this,r),r.visible,t)}e.headerSection().appendSeparator()}for(const t of n){const i=t.title instanceof Function?t.title():t.title;e.headerSection().appendCheckboxItem(i,this.toggleColumnVisibility.bind(this,t),t.visible)}const o=e.footerSection().appendSubMenuItem(i18nString(UIStrings.responseHeaders)),s=t.filter((e=>e.isResponseHeader));for(const e of s){const t=e.title instanceof Function?e.title():e.title;o.defaultSection().appendCheckboxItem(t,this.toggleColumnVisibility.bind(this,e),e.visible)}o.footerSection().appendItem(i18nString(UIStrings.manageHeaderColumns),this.manageCustomHeaderDialog.bind(this));const a=WaterfallSortIds,l=e.footerSection().appendSubMenuItem(i18nString(UIStrings.waterfall));function d(e){let t=this.calculatorsMap.get(_calculatorTypes.Time);const i=WaterfallSortIds;e!==i.Duration&&e!==i.Latency||(t=this.calculatorsMap.get(_calculatorTypes.Duration)),this.networkLogView.setCalculator(t),this.activeWaterfallSortId=e,this.dataGridInternal.markColumnAsSortedBy("waterfall",DataGrid.DataGrid.Order.Ascending),this.sortHandler()}l.defaultSection().appendCheckboxItem(i18nString(UIStrings.startTime),d.bind(this,a.StartTime),this.activeWaterfallSortId===a.StartTime),l.defaultSection().appendCheckboxItem(i18nString(UIStrings.responseTime),d.bind(this,a.ResponseTime),this.activeWaterfallSortId===a.ResponseTime),l.defaultSection().appendCheckboxItem(i18nString(UIStrings.endTime),d.bind(this,a.EndTime),this.activeWaterfallSortId===a.EndTime),l.defaultSection().appendCheckboxItem(i18nString(UIStrings.totalDuration),d.bind(this,a.Duration),this.activeWaterfallSortId===a.Duration),l.defaultSection().appendCheckboxItem(i18nString(UIStrings.latency),d.bind(this,a.Latency),this.activeWaterfallSortId===a.Latency)}manageCustomHeaderDialog(){const e=[];for(const t of this.columns){const i=t.title instanceof Function?t.title():t.title;t.isResponseHeader&&e.push({title:i,editable:t.isCustomHeader})}const t=new NetworkManageCustomHeadersView(e,(e=>Boolean(this.addCustomHeader(e))),this.changeCustomHeader.bind(this),this.removeCustomHeader.bind(this)),i=new UI.Dialog.Dialog;t.show(i.contentElement),i.setSizeBehavior("MeasureContent"),i.show(this.networkLogView.element)}removeCustomHeader(e){e=e.toLowerCase();const t=this.columns.findIndex((t=>t.id===e));return-1!==t&&(this.columns.splice(t,1),this.dataGridInternal.removeColumn(e),this.saveColumnsSettings(),this.updateColumns(),!0)}addCustomHeader(e,t,i){t||(t=e.toLowerCase()),void 0===i&&(i=this.columns.length-1);const r=this.columns.find((e=>e.id===t));if(r)return null;const n=Object.assign({},_defaultColumnConfig,{id:t,title:e,isResponseHeader:!0,isCustomHeader:!0,visible:!0,sortingFunction:NetworkRequestNode.ResponseHeaderStringComparator.bind(null,t)});return this.columns.splice(i,0,n),this.dataGridInternal&&this.dataGridInternal.addColumn(NetworkLogViewColumns.convertToDataGridDescriptor(n),i),this.saveColumnsSettings(),this.updateColumns(),n}changeCustomHeader(e,t,i){i||(i=t.toLowerCase()),e=e.toLowerCase();const r=this.columns.findIndex((t=>t.id===e)),n=this.columns[r],o=this.columns.find((e=>e.id===i));return!(!n||o&&e!==i)&&(this.removeCustomHeader(e),this.addCustomHeader(t,i,r),!0)}getPopoverRequest(e){if(!this.gridMode)return null;const t=this.networkLogView.hoveredNode();if(!t||!e.target)return null;const i=e.target.enclosingNodeOrSelfWithClass("network-script-initiated");if(!i)return null;const r=t.request();return r?{box:i.boxInWindow(),show:async e=>{this.popupLinkifier.setLiveLocationUpdateCallback((()=>{e.setSizeBehavior("MeasureContent")}));const t=RequestInitiatorView.createStackTracePreview(r,this.popupLinkifier,!1);return!!t&&(e.contentElement.appendChild(t.element),!0)},hide:this.popupLinkifier.reset.bind(this.popupLinkifier)}:null}addEventDividers(e,t){let i="transparent";switch(t){case"network-dcl-divider":i="#0867CB";break;case"network-load-divider":i="#B31412";break;default:return}const r=this.eventDividers.get(i)||[];this.eventDividers.set(i,r.concat(e)),this.networkLogView.scheduleRefresh()}hideEventDividers(){this.eventDividersShown=!0,this.redrawWaterfallColumn()}showEventDividers(){this.eventDividersShown=!1,this.redrawWaterfallColumn()}selectFilmStripFrame(e){this.eventDividers.set(_filmStripDividerColor,[e]),this.redrawWaterfallColumn()}clearFilmStripFrame(){this.eventDividers.delete(_filmStripDividerColor),this.redrawWaterfallColumn()}}export const _initialSortColumn="waterfall";export var _calculatorTypes;!function(e){e.Duration="Duration",e.Time="Time"}(_calculatorTypes||(_calculatorTypes={}));export const _defaultColumnConfig={subtitle:null,visible:!1,weight:6,sortable:!0,hideable:!0,hideableGroup:null,nonSelectable:!1,isResponseHeader:!1,isCustomHeader:!1,allowInSortByEvenWhenHidden:!1};const _temporaryDefaultColumns=[{id:"name",title:i18nLazyString(UIStrings.name),subtitle:i18nLazyString(UIStrings.path),visible:!0,weight:20,hideable:!0,hideableGroup:"path",sortingFunction:NetworkRequestNode.NameComparator},{id:"path",title:i18nLazyString(UIStrings.path),hideable:!0,hideableGroup:"path",sortingFunction:NetworkRequestNode.RequestPropertyComparator.bind(null,"pathname")},{id:"url",title:i18nLazyString(UIStrings.url),hideable:!0,hideableGroup:"path",sortingFunction:NetworkRequestNode.RequestURLComparator},{id:"method",title:i18nLazyString(UIStrings.method),sortingFunction:NetworkRequestNode.RequestPropertyComparator.bind(null,"requestMethod")},{id:"status",title:i18nLazyString(UIStrings.status),visible:!0,subtitle:i18nLazyString(UIStrings.text),sortingFunction:NetworkRequestNode.RequestPropertyComparator.bind(null,"statusCode")},{id:"protocol",title:i18nLazyString(UIStrings.protocol),sortingFunction:NetworkRequestNode.RequestPropertyComparator.bind(null,"protocol")},{id:"scheme",title:i18nLazyString(UIStrings.scheme),sortingFunction:NetworkRequestNode.RequestPropertyComparator.bind(null,"scheme")},{id:"domain",title:i18nLazyString(UIStrings.domain),sortingFunction:NetworkRequestNode.RequestPropertyComparator.bind(null,"domain")},{id:"remoteaddress",title:i18nLazyString(UIStrings.remoteAddress),weight:10,align:DataGrid.DataGrid.Align.Right,sortingFunction:NetworkRequestNode.RemoteAddressComparator},{id:"remoteaddress-space",title:i18nLazyString(UIStrings.remoteAddressSpace),visible:!1,weight:10,sortingFunction:NetworkRequestNode.RemoteAddressSpaceComparator},{id:"type",title:i18nLazyString(UIStrings.type),visible:!0,sortingFunction:NetworkRequestNode.TypeComparator},{id:"initiator",title:i18nLazyString(UIStrings.initiator),visible:!0,weight:10,sortingFunction:NetworkRequestNode.InitiatorComparator},{id:"initiator-address-space",title:i18nLazyString(UIStrings.initiatorAddressSpace),visible:!1,weight:10,sortingFunction:NetworkRequestNode.InitiatorAddressSpaceComparator},{id:"cookies",title:i18nLazyString(UIStrings.cookies),align:DataGrid.DataGrid.Align.Right,sortingFunction:NetworkRequestNode.RequestCookiesCountComparator},{id:"setcookies",title:i18nLazyString(UIStrings.setCookies),align:DataGrid.DataGrid.Align.Right,sortingFunction:NetworkRequestNode.ResponseCookiesCountComparator},{id:"size",title:i18nLazyString(UIStrings.size),visible:!0,subtitle:i18nLazyString(UIStrings.content),align:DataGrid.DataGrid.Align.Right,sortingFunction:NetworkRequestNode.SizeComparator},{id:"time",title:i18nLazyString(UIStrings.time),visible:!0,subtitle:i18nLazyString(UIStrings.latency),align:DataGrid.DataGrid.Align.Right,sortingFunction:NetworkRequestNode.RequestPropertyComparator.bind(null,"duration")},{id:"priority",title:i18nLazyString(UIStrings.priority),sortingFunction:NetworkRequestNode.PriorityComparator},{id:"connectionid",title:i18nLazyString(UIStrings.connectionId),sortingFunction:NetworkRequestNode.RequestPropertyComparator.bind(null,"connectionId")},{id:"cache-control",isResponseHeader:!0,title:i18n.i18n.lockedLazyString("Cache-Control"),sortingFunction:NetworkRequestNode.ResponseHeaderStringComparator.bind(null,"cache-control")},{id:"connection",isResponseHeader:!0,title:i18n.i18n.lockedLazyString("Connection"),sortingFunction:NetworkRequestNode.ResponseHeaderStringComparator.bind(null,"connection")},{id:"content-encoding",isResponseHeader:!0,title:i18n.i18n.lockedLazyString("Content-Encoding"),sortingFunction:NetworkRequestNode.ResponseHeaderStringComparator.bind(null,"content-encoding")},{id:"content-length",isResponseHeader:!0,title:i18n.i18n.lockedLazyString("Content-Length"),align:DataGrid.DataGrid.Align.Right,sortingFunction:NetworkRequestNode.ResponseHeaderNumberComparator.bind(null,"content-length")},{id:"etag",isResponseHeader:!0,title:i18n.i18n.lockedLazyString("ETag"),sortingFunction:NetworkRequestNode.ResponseHeaderStringComparator.bind(null,"etag")},{id:"has-overrides",title:i18nLazyString(UIStrings.hasOverrides),sortingFunction:NetworkRequestNode.ResponseHeaderStringComparator.bind(null,"has-overrides")},{id:"keep-alive",isResponseHeader:!0,title:i18n.i18n.lockedLazyString("Keep-Alive"),sortingFunction:NetworkRequestNode.ResponseHeaderStringComparator.bind(null,"keep-alive")},{id:"last-modified",isResponseHeader:!0,title:i18n.i18n.lockedLazyString("Last-Modified"),sortingFunction:NetworkRequestNode.ResponseHeaderDateComparator.bind(null,"last-modified")},{id:"server",isResponseHeader:!0,title:i18n.i18n.lockedLazyString("Server"),sortingFunction:NetworkRequestNode.ResponseHeaderStringComparator.bind(null,"server")},{id:"vary",isResponseHeader:!0,title:i18n.i18n.lockedLazyString("Vary"),sortingFunction:NetworkRequestNode.ResponseHeaderStringComparator.bind(null,"vary")},{id:"waterfall",title:i18nLazyString(UIStrings.waterfall),visible:!1,hideable:!1,allowInSortByEvenWhenHidden:!0}],_defaultColumns=_temporaryDefaultColumns;export const _filmStripDividerColor="#fccc49";export var WaterfallSortIds;!function(e){e.StartTime="startTime",e.ResponseTime="responseReceivedTime",e.EndTime="endTime",e.Duration="duration",e.Latency="latency"}(WaterfallSortIds||(WaterfallSortIds={}));