UNPKG

tressi

Version:

Deterministic load testing for API performance validation.

4 lines 112 kB
import{a as Zt,b as Yt,c as Xt,d as Qt,e as Jt,f as ei}from"./chunk-DRGB4IB5.js";import{a as Gt,b as Ut,c as Wt,d as Kt}from"./chunk-6LEULM43.js";import{a as qt}from"./chunk-2ZUXPUVI.js";import{a as se}from"./chunk-DLPQUWGS.js";import"./chunk-5PTWAMZ6.js";import{a as ae}from"./chunk-UR67FGQG.js";import"./chunk-RQPLME55.js";import{a as jt}from"./chunk-2IBU6HRE.js";import{a as ke,b as J}from"./chunk-OVBUA5RI.js";import{h as zt,t as Bt,v as Ht,x as Re}from"./chunk-BEQIQLT5.js";import{$ as g,$a as L,A as Ke,Bb as C,D as Rt,Db as l,Fc as $t,Gc as W,Hc as Te,K as be,Ka as h,Kb as Mt,L as qe,Lb as Lt,M as U,N as Et,Ob as j,Qa as Xe,Qb as y,R as T,Ra as Se,Rb as z,S as ye,Sa as ne,Sb as oe,Ta as Qe,U as H,W as d,Wb as re,Ya as Je,Z as Pt,aa as f,ab as we,b as te,ba as ie,bb as X,ca as q,d as he,da as Ze,e as b,eb as Ft,f as St,fa as M,fc as P,g as We,ga as Z,gc as tt,j as wt,jb as et,jc as R,ka as w,kb as De,kc as E,lb as D,lc as Vt,ma as Ye,mb as x,n as Dt,na as pe,pb as V,pc as xe,qa as Y,qb as N,rb as _,sa as It,sb as p,sc as Q,tb as u,tc as Nt,u as xt,ua as Ot,ub as k,vc as At,w as Tt,x as Ce,z as kt,zb as S}from"./chunk-W6IDPYNF.js";import{a as $,b as ee}from"./chunk-I4MTPUBM.js";function $i(o,t){if(o&1){let e=S();p(0,"app-button",2),C("click",function(){g(e);let n=l();return f(n.stop())})("onKeyDown",function(){g(e);let n=l();return f(n.stop())}),u()}o&2&&_("title","Stop Test")("color","error")("icon","close")}function Hi(o,t){if(o&1){let e=S();p(0,"app-button",3),C("click",function(){g(e);let n=l();return f(n.start())})("onKeyDown",function(){g(e);let n=l();return f(n.start())}),u()}if(o&2){let e=l();_("title","Start Test")("color","primary")("icon","dynamic_form")("disabled",e.isDisabled())}}var le=class o{_eventService=d(ae);_logService=d(W);_rpc=d(jt);config=E(null);testStarted=R();testStartFailed=R();isTestRunning=w(!0);isDisabled=P(()=>{let t=this.config();return!t||"error"in t||!t.id||this.isTestRunning()});_destroy$=new b;constructor(){this._setupTestEventsListener()}ngOnInit(){this._initializeTestState()}ngOnDestroy(){this._destroy$.next(),this._destroy$.complete()}async _initializeTestState(){try{let t=await this._rpc.getTestStatus();this.isTestRunning.set(t.isRunning)}catch(t){this._logService.error("Failed to initialize test state:",t),this.isTestRunning.set(!1)}}async start(){let t=this.config();if(!t||"error"in t){let e=new Error("No valid configuration selected");this._logService.error(e.message),this.testStartFailed.emit(e);return}if(!t.config){let e=new Error("Configuration data is missing");this._logService.error(e.message),this.testStartFailed.emit(e);return}try{let e=await this._rpc.client.test.$post({json:{configId:t.id}});if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);this.testStarted.emit()}catch(e){let i=e instanceof Error?e:new Error("Unknown error occurred");this._logService.error("Failed to start load test:",i),this.testStartFailed.emit(i)}}async stop(){try{let t=await this._rpc.client.test.stop.$post();if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`)}catch(t){let e=t instanceof Error?t:new Error("Unknown error occurred");this._logService.error("Failed to stop load test:",e)}}_setupTestEventsListener(){this._eventService.getTestEventsStream().pipe(U(this._destroy$)).subscribe({error:t=>{this._logService.error("Failed to handle test event:",t)},next:t=>{t.status==="running"?this.isTestRunning.set(!0):(t.status==="completed"||t.status==="failed"||t.status==="cancelled")&&this.isTestRunning.set(!1)}})}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=L({type:o,selectors:[["app-start-button"]],inputs:{config:[1,"config"]},outputs:{testStarted:"testStarted",testStartFailed:"testStartFailed"},decls:2,vars:1,consts:[[3,"title","color","icon"],["data-e2e","start-test-btn",3,"title","color","icon","disabled"],[3,"click","onKeyDown","title","color","icon"],["data-e2e","start-test-btn",3,"click","onKeyDown","title","color","icon","disabled"]],template:function(e,i){e&1&&D(0,$i,1,3,"app-button",0)(1,Hi,1,4,"app-button",1),e&2&&x(i.isTestRunning()?0:1)},dependencies:[J],encapsulation:2})};var Pe=class o{outsideClick=R();_elementRef=d(Y);_destroyRef=d(Ze);constructor(){xt(document,"click").pipe(Ht(this._destroyRef)).subscribe(t=>{let e=t.target;this._elementRef.nativeElement.contains(e)||this.outsideClick.emit()})}static \u0275fac=function(e){return new(e||o)};static \u0275dir=X({type:o,selectors:[["","appOutsideClick",""]],outputs:{outsideClick:"outsideClick"}})};var ce=(o,t)=>t.key;function ji(o,t){if(o&1){let e=S();p(0,"label",8)(1,"input",9),C("change",function(){let n=g(e).$implicit,r=l();return f(r.onToggleColumn(n.key))}),u(),p(2,"span",10),y(3),u()()}if(o&2){let e=t.$implicit;h(),_("checked",e.visible)("disabled",e.key==="select"||e.key==="status"||e.key==="actions"),h(2),z(e.label)}}function Gi(o,t){if(o&1){let e=S();p(0,"label",8)(1,"input",11),C("change",function(){let n=g(e).$implicit,r=l();return f(r.onToggleColumn(n.key))}),u(),p(2,"span",10),y(3),u()()}if(o&2){let e=t.$implicit;h(),_("checked",e.visible),h(2),z(e.label)}}function Ui(o,t){if(o&1){let e=S();p(0,"label",8)(1,"input",11),C("change",function(){let n=g(e).$implicit,r=l();return f(r.onToggleColumn(n.key))}),u(),p(2,"span",10),y(3),u()()}if(o&2){let e=t.$implicit;h(),_("checked",e.visible),h(2),z(e.label)}}function Wi(o,t){if(o&1){let e=S();p(0,"label",8)(1,"input",11),C("change",function(){let n=g(e).$implicit,r=l();return f(r.onToggleColumn(n.key))}),u(),p(2,"span",10),y(3),u()()}if(o&2){let e=t.$implicit;h(),_("checked",e.visible),h(2),z(e.label)}}function Ki(o,t){if(o&1){let e=S();p(0,"label",8)(1,"input",11),C("change",function(){let n=g(e).$implicit,r=l();return f(r.onToggleColumn(n.key))}),u(),p(2,"span",10),y(3),u()()}if(o&2){let e=t.$implicit;h(),_("checked",e.visible),h(2),z(e.label)}}function qi(o,t){if(o&1){let e=S();p(0,"label",8)(1,"input",11),C("change",function(){let n=g(e).$implicit,r=l();return f(r.onToggleColumn(n.key))}),u(),p(2,"span",10),y(3),u()()}if(o&2){let e=t.$implicit;h(),_("checked",e.visible),h(2),z(e.label)}}var Ie=class o{columnGroups=E.required();showColumnSelector=E.required();toggleColumn=R();resetColumns=R();toggleSelector=R();closeSelector=R();onToggleColumn(t){this.toggleColumn.emit(t)}onResetColumns(){this.resetColumns.emit()}onToggleSelector(){this.toggleSelector.emit()}onCloseSelector(){this.closeSelector.emit()}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=L({type:o,selectors:[["app-column-selector"]],inputs:{columnGroups:[1,"columnGroups"],showColumnSelector:[1,"showColumnSelector"]},outputs:{toggleColumn:"toggleColumn",resetColumns:"resetColumns",toggleSelector:"toggleSelector",closeSelector:"closeSelector"},decls:38,vars:11,consts:[["appOutsideClick","",1,"dropdown","dropdown-end",3,"outsideClick"],[3,"click","onKeyDown","ghost","title","tabindex","icon","secondaryIcon","toggled"],[1,"dropdown-content","bg-base-100","rounded-box","ring-base-content/10","z-50","mt-2","w-lg","p-6","shadow-lg","ring-1"],[1,"mb-4","flex","items-center","justify-between"],[1,"text-base-content","font-semibold"],[3,"click","onKeyDown","title","icon","ghost"],[1,"grid","grid-cols-3","gap-6"],[1,"text-base-content/70","text-sm","font-medium"],[1,"hover:bg-base-300/50","my-2","flex","cursor-pointer","items-center","rounded","transition-colors","duration-150"],["type","checkbox",1,"checkbox","checkbox-sm","mr-2",3,"change","checked","disabled"],[1,"text-xs","select-none"],["type","checkbox",1,"checkbox","checkbox-sm","mr-2",3,"change","checked"]],template:function(e,i){e&1&&(p(0,"div",0),C("outsideClick",function(){return i.onCloseSelector()}),p(1,"app-button",1),C("click",function(){return i.onToggleSelector()})("onKeyDown",function(){return i.onToggleSelector()}),u(),p(2,"div",2)(3,"div",3)(4,"h3",4),y(5,"Customize Columns"),u(),p(6,"app-button",5),C("click",function(){return i.onResetColumns()})("onKeyDown",function(){return i.onResetColumns()}),u()(),p(7,"div",6)(8,"div")(9,"h4",7),y(10,"Basic"),u(),V(11,ji,4,3,"label",8,ce),u(),p(13,"div")(14,"h4",7),y(15,"Request"),u(),V(16,Gi,4,2,"label",8,ce),u(),p(18,"div")(19,"h4",7),y(20,"Latency"),u(),V(21,Ui,4,2,"label",8,ce),u(),p(23,"div")(24,"h4",7),y(25,"Network"),u(),V(26,Wi,4,2,"label",8,ce),u(),p(28,"div")(29,"h4",7),y(30,"Performance"),u(),V(31,Ki,4,2,"label",8,ce),u(),p(33,"div")(34,"h4",7),y(35,"Configuration"),u(),V(36,qi,4,2,"label",8,ce),u()()()()),e&2&&(j("dropdown-open",i.showColumnSelector()),h(),_("ghost",!0)("title","Customize Columns")("tabindex",0)("icon","view_column")("secondaryIcon","close")("toggled",i.showColumnSelector()),h(5),_("title","Reset")("icon","reset_focus")("ghost",!0),h(5),N(i.columnGroups().basic),h(5),N(i.columnGroups().request),h(5),N(i.columnGroups().latency),h(5),N(i.columnGroups().network),h(5),N(i.columnGroups().performance),h(5),N(i.columnGroups().configuration))},dependencies:[J,Pe],encapsulation:2})};var Oe=class o{_logService=d(W);_localStorageService=d(Te);_defaultColumns=$t;_sortConfig=w(null);_columns=w(this._loadColumnPreferences());visibleColumns=tt({computation:t=>{let e=t,i=e.filter(r=>r.key==="select"||r.key==="status"),n=e.filter(r=>r.key!=="select"&&r.key!=="status"&&r.key!=="actions"&&r.visible).sort((r,s)=>r.order-s.order);return[...i,...n]},source:this._columns});columnGroups=tt({computation:t=>{let e={basic:[],configuration:[],latency:[],network:[],performance:[],request:[]};return t.forEach(i=>{i.key!=="actions"&&i.key!=="status"&&i.key!=="select"&&e[i.group]?.push(i)}),e},source:this._columns});currentSort=this._sortConfig.asReadonly();_loadColumnPreferences(){try{let e=this._localStorageService.preferences().columnPreferences;if(e&&e.length>0)return this._defaultColumns.map(i=>{let n=e.find(r=>r.key===i.key);return n?$($({},i),n):i})}catch(t){this._logService.error("Failed to load column preferences:",t)}return this._defaultColumns}_saveColumnPreferences(){try{let t=this._localStorageService.preferences(),e=ee($({},t),{columnPreferences:this._columns()});this._localStorageService.savePreferences(e)}catch(t){this._logService.error("Failed to save column preferences:",t)}}toggleColumn(t){this._columns.update(e=>e.map(i=>i.key===t?ee($({},i),{visible:!i.visible}):i)),this._saveColumnPreferences()}reorderColumn(t,e){this._columns.update(i=>{let n=i.findIndex(c=>c.key===t),r=i.findIndex(c=>c.key===e);if(n===-1||r===-1||!i[n].draggable||!i[r].draggable)return i;let s=[...i],[a]=s.splice(n,1);return s.splice(r,0,a),s.map((c,m)=>ee($({},c),{order:m}))}),this._saveColumnPreferences()}updateColumnWidth(t,e){this._columns.update(i=>i.map(n=>n.key===t?ee($({},n),{width:e}):n)),this._saveColumnPreferences()}updateSort(t,e){e===null?this._sortConfig.set(null):this._sortConfig.set({columnKey:t,direction:e})}toggleSort(t){let e=this._sortConfig();e?.columnKey===t?this._sortConfig.set({columnKey:t,direction:e.direction==="asc"?"desc":"asc"}):this._sortConfig.set({columnKey:t,direction:"asc"})}getSortableColumns(){return this._columns().filter(t=>t.sortable!==!1)}resetColumns(){this._columns.set(this._defaultColumns),this._sortConfig.set(null),this._saveColumnPreferences()}static \u0275fac=function(e){return new(e||o)};static \u0275prov=T({token:o,factory:o.\u0275fac,providedIn:"root"})};var Fe=class o{_testService=d(se);_logService=d(W);async deleteTest(t){try{return(await this._testService.deleteTest(t)).success?(this._logService.info(`Test ${t} deleted successfully`),{deletedCount:1,errors:[],failedCount:0,success:!0}):{deletedCount:0,errors:[`Failed to delete test ${t}`],failedCount:1,success:!1}}catch(e){let i=e instanceof Error?e.message:"Unknown error";return this._logService.error(`Failed to delete test ${t}:`,e),{deletedCount:0,errors:[i],failedCount:1,success:!1}}}async deleteTests(t){if(t.length===0)return{deletedCount:0,errors:[],failedCount:0,success:!0};try{let e=await Promise.allSettled(t.map(s=>this._testService.deleteTest(s))),i=e.filter(s=>s.status==="fulfilled"&&s.value.success),n=e.filter(s=>s.status==="rejected"||s.status==="fulfilled"&&!s.value.success),r=[];return n.forEach((s,a)=>{s.status==="rejected"?r.push(`Test ${t[a]}: ${s.reason}`):s.status==="fulfilled"&&!s.value.success&&r.push(`Test ${t[a]}: Deletion failed`)}),i.length>0&&this._logService.info(`${i.length} tests deleted successfully`),{deletedCount:i.length,errors:r,failedCount:n.length,success:n.length===0}}catch(e){let i=e instanceof Error?e.message:"Unknown error";return this._logService.error("Failed to delete tests:",e),{deletedCount:0,errors:[i],failedCount:t.length,success:!1}}}async deleteTestWithLoading(t){return await this.deleteTest(t)}async deleteTestsWithLoading(t){return await this.deleteTests(t)}static \u0275fac=function(e){return new(e||o)};static \u0275prov=T({token:o,factory:o.\u0275fac,providedIn:"root"})};var Me=class o{_selectedTests=w(new Set);selectedTestsSet=this._selectedTests.asReadonly();toggleTestSelection(t,e){e.stopPropagation(),this._selectedTests.update(i=>{let n=new Set(i);return n.has(t)?n.delete(t):n.add(t),n})}toggleAllTests(t,e){e.stopPropagation(),this._selectedTests.update(()=>this.isAllSelected(t)?new Set:new Set(t))}isAllSelected(t){return t.length>0&&t.every(e=>this._selectedTests().has(e))}isSomeSelected(){return this._selectedTests().size>0}hasRunningTestsSelected(t){let e=this._selectedTests();return t.some(i=>e.has(i.id)&&i.status==="running")}clearSelection(){this._selectedTests.set(new Set)}getSelectedCount(){return this._selectedTests().size}getSelectedIds(){return new Set(this._selectedTests())}setSelectedTests(t){this._selectedTests.set(new Set(t.map(e=>e.id)))}static \u0275fac=function(e){return new(e||o)};static \u0275prov=T({token:o,factory:o.\u0275fac,providedIn:"root"})};var it;function Yi(){if(it==null){let o=typeof document<"u"?document.head:null;it=!!(o&&(o.createShadowRoot||o.attachShadow))}return it}function Le(o){if(Yi()){let t=o.getRootNode?o.getRootNode():null;if(typeof ShadowRoot<"u"&&ShadowRoot&&t instanceof ShadowRoot)return t}return null}function me(o){return o.composedPath?o.composedPath()[0]:o.target}var Ve=new WeakMap,ti=(()=>{class o{_appRef;_injector=d(ie);_environmentInjector=d(Pt);load(e){let i=this._appRef=this._appRef||this._injector.get(et),n=Ve.get(i);n||(n={loaders:new Set,refs:[]},Ve.set(i,n),i.onDestroy(()=>{Ve.get(i)?.refs.forEach(r=>r.destroy()),Ve.delete(i)})),n.loaders.has(e)||(n.loaders.add(e),n.refs.push(At(e,{environmentInjector:this._environmentInjector})))}static \u0275fac=function(i){return new(i||o)};static \u0275prov=T({token:o,factory:o.\u0275fac,providedIn:"root"})}return o})();function ii(o){return o.buttons===0||o.detail===0}function ni(o){let t=o.touches&&o.touches[0]||o.changedTouches&&o.changedTouches[0];return!!t&&t.identifier===-1&&(t.radiusX==null||t.radiusX===1)&&(t.radiusY==null||t.radiusY===1)}function Ne(o,t=0){return Xi(o)?Number(o):arguments.length===2?t:0}function Xi(o){return!isNaN(parseFloat(o))&&!isNaN(Number(o))}function G(o){return o instanceof Y?o.nativeElement:o}var nt;try{nt=typeof Intl<"u"&&Intl.v8BreakIterator}catch{nt=!1}var ot=(()=>{class o{_platformId=d(Ot);isBrowser=this._platformId?zt(this._platformId):typeof document=="object"&&!!document;EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent);TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent);BLINK=this.isBrowser&&!!(window.chrome||nt)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT;WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT;IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window);FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent);ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT;SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT;constructor(){}static \u0275fac=function(i){return new(i||o)};static \u0275prov=T({token:o,factory:o.\u0275fac,providedIn:"root"})}return o})();var Qi=new H("cdk-dir-doc",{providedIn:"root",factory:()=>d(q)}),Ji=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;function en(o){let t=o?.toLowerCase()||"";return t==="auto"&&typeof navigator<"u"&&navigator?.language?Ji.test(navigator.language)?"rtl":"ltr":t==="rtl"?"rtl":"ltr"}var rt=(()=>{class o{get value(){return this.valueSignal()}valueSignal=w("ltr");change=new M;constructor(){let e=d(Qi,{optional:!0});if(e){let i=e.body?e.body.dir:null,n=e.documentElement?e.documentElement.dir:null;this.valueSignal.set(en(i||n||"ltr"))}}ngOnDestroy(){this.change.complete()}static \u0275fac=function(i){return new(i||o)};static \u0275prov=T({token:o,factory:o.\u0275fac,providedIn:"root"})}return o})();var tn=20,oi=(()=>{class o{_ngZone=d(Z);_platform=d(ot);_renderer=d(ne).createRenderer(null,null);_cleanupGlobalListener;constructor(){}_scrolled=new b;_scrolledCount=0;scrollContainers=new Map;register(e){this.scrollContainers.has(e)||this.scrollContainers.set(e,e.elementScrolled().subscribe(()=>this._scrolled.next(e)))}deregister(e){let i=this.scrollContainers.get(e);i&&(i.unsubscribe(),this.scrollContainers.delete(e))}scrolled(e=tn){return this._platform.isBrowser?new he(i=>{this._cleanupGlobalListener||(this._cleanupGlobalListener=this._ngZone.runOutsideAngular(()=>this._renderer.listen("document","scroll",()=>this._scrolled.next())));let n=e>0?this._scrolled.pipe(Ke(e)).subscribe(i):this._scrolled.subscribe(i);return this._scrolledCount++,()=>{n.unsubscribe(),this._scrolledCount--,this._scrolledCount||(this._cleanupGlobalListener?.(),this._cleanupGlobalListener=void 0)}}):wt()}ngOnDestroy(){this._cleanupGlobalListener?.(),this._cleanupGlobalListener=void 0,this.scrollContainers.forEach((e,i)=>this.deregister(i)),this._scrolled.complete()}ancestorScrolled(e,i){let n=this.getAncestorScrollContainers(e);return this.scrolled(i).pipe(kt(r=>!r||n.indexOf(r)>-1))}getAncestorScrollContainers(e){let i=[];return this.scrollContainers.forEach((n,r)=>{this._scrollableContainsElement(r,e)&&i.push(r)}),i}_scrollableContainsElement(e,i){let n=G(i),r=e.getElementRef().nativeElement;do if(n==r)return!0;while(n=n.parentElement);return!1}static \u0275fac=function(i){return new(i||o)};static \u0275prov=T({token:o,factory:o.\u0275fac,providedIn:"root"})}return o})();var nn=20,st=(()=>{class o{_platform=d(ot);_listeners;_viewportSize=null;_change=new b;_document=d(q);constructor(){let e=d(Z),i=d(ne).createRenderer(null,null);e.runOutsideAngular(()=>{if(this._platform.isBrowser){let n=r=>this._change.next(r);this._listeners=[i.listen("window","resize",n),i.listen("window","orientationchange",n)]}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){this._listeners?.forEach(e=>e()),this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();let e={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),e}getViewportRect(){let e=this.getViewportScrollPosition(),{width:i,height:n}=this.getViewportSize();return{top:e.top,left:e.left,bottom:e.top+n,right:e.left+i,height:n,width:i}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};let e=this._document,i=this._getWindow(),n=e.documentElement,r=n.getBoundingClientRect(),s=-r.top||e.body?.scrollTop||i.scrollY||n.scrollTop||0,a=-r.left||e.body?.scrollLeft||i.scrollX||n.scrollLeft||0;return{top:s,left:a}}change(e=nn){return e>0?this._change.pipe(Ke(e)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){let e=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:e.innerWidth,height:e.innerHeight}:{width:0,height:0}}static \u0275fac=function(i){return new(i||o)};static \u0275prov=T({token:o,factory:o.\u0275fac,providedIn:"root"})}return o})();var ri=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=we({type:o});static \u0275inj=ye({})}return o})();var at={},Ae=class o{_appId=d(It);static _infix=`a${Math.floor(Math.random()*1e5).toString()}`;getId(t,e=!1){return this._appId!=="ng"&&(t+=this._appId),at.hasOwnProperty(t)||(at[t]=0),`${t}${e?o._infix+"-":""}${at[t]++}`}static \u0275fac=function(e){return new(e||o)};static \u0275prov=T({token:o,factory:o.\u0275fac,providedIn:"root"})};function si(o){return Array.isArray(o)?o:[o]}function dt(o){let t=o.cloneNode(!0),e=t.querySelectorAll("[id]"),i=o.nodeName.toLowerCase();t.removeAttribute("id");for(let n=0;n<e.length;n++)e[n].removeAttribute("id");return i==="canvas"?ci(o,t):(i==="input"||i==="select"||i==="textarea")&&li(o,t),ai("canvas",o,t,ci),ai("input, textarea, select",o,t,li),t}function ai(o,t,e,i){let n=t.querySelectorAll(o);if(n.length){let r=e.querySelectorAll(o);for(let s=0;s<n.length;s++)i(n[s],r[s])}}var on=0;function li(o,t){t.type!=="file"&&(t.value=o.value),t.type==="radio"&&t.name&&(t.name=`mat-clone-${t.name}-${on++}`)}function ci(o,t){let e=t.getContext("2d");if(e)try{e.drawImage(o,0,0)}catch{}}function gt(o){let t=o.getBoundingClientRect();return{top:t.top,right:t.right,bottom:t.bottom,left:t.left,width:t.width,height:t.height,x:t.x,y:t.y}}function ut(o,t,e){let{top:i,bottom:n,left:r,right:s}=o;return e>=i&&e<=n&&t>=r&&t<=s}function rn(o,t){let e=t.left<o.left,i=t.left+t.width>o.right,n=t.top<o.top,r=t.top+t.height>o.bottom;return e||i||n||r}function fe(o,t,e){o.top+=t,o.bottom=o.top+o.height,o.left+=e,o.right=o.left+o.width}function di(o,t,e,i){let{top:n,right:r,bottom:s,left:a,width:c,height:m}=o,v=c*t,F=m*t;return i>n-F&&i<s+F&&e>a-v&&e<r+v}var ze=class{_document;positions=new Map;constructor(t){this._document=t}clear(){this.positions.clear()}cache(t){this.clear(),this.positions.set(this._document,{scrollPosition:this.getViewportScrollPosition()}),t.forEach(e=>{this.positions.set(e,{scrollPosition:{top:e.scrollTop,left:e.scrollLeft},clientRect:gt(e)})})}handleScroll(t){let e=me(t),i=this.positions.get(e);if(!i)return null;let n=i.scrollPosition,r,s;if(e===this._document){let m=this.getViewportScrollPosition();r=m.top,s=m.left}else r=e.scrollTop,s=e.scrollLeft;let a=n.top-r,c=n.left-s;return this.positions.forEach((m,v)=>{m.clientRect&&e!==v&&e.contains(v)&&fe(m.clientRect,a,c)}),n.top=r,n.left=s,{top:a,left:c}}getViewportScrollPosition(){return{top:window.scrollY,left:window.scrollX}}};function Si(o,t){let e=o.rootNodes;if(e.length===1&&e[0].nodeType===t.ELEMENT_NODE)return e[0];let i=t.createElement("div");return e.forEach(n=>i.appendChild(n)),i}function ft(o,t,e){for(let i in t)if(t.hasOwnProperty(i)){let n=t[i];n?o.setProperty(i,n,e?.has(i)?"important":""):o.removeProperty(i)}return o}function de(o,t){let e=t?"":"none";ft(o.style,{"touch-action":t?"":"none","-webkit-user-drag":t?"":"none","-webkit-tap-highlight-color":t?"":"transparent","user-select":e,"-ms-user-select":e,"-webkit-user-select":e,"-moz-user-select":e})}function ui(o,t,e){ft(o.style,{position:t?"":"fixed",top:t?"":"0",opacity:t?"":"0",left:t?"":"-999em"},e)}function Be(o,t){return t&&t!="none"?o+" "+t:o}function hi(o,t){o.style.width=`${t.width}px`,o.style.height=`${t.height}px`,o.style.transform=ve(t.left,t.top)}function ve(o,t){return`translate3d(${Math.round(o)}px, ${Math.round(t)}px, 0)`}var _e={capture:!0},lt={passive:!1,capture:!0},sn=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275cmp=L({type:o,selectors:[["ng-component"]],hostAttrs:["cdk-drag-resets-container",""],decls:0,vars:0,template:function(i,n){},styles:[`@layer cdk-resets{.cdk-drag-preview{background:none;border:none;padding:0;color:inherit;inset:auto}}.cdk-drag-placeholder *,.cdk-drag-preview *{pointer-events:none !important}
`],encapsulation:2,changeDetection:0})}return o})(),vt=(()=>{class o{_ngZone=d(Z);_document=d(q);_styleLoader=d(ti);_renderer=d(ne).createRenderer(null,null);_cleanupDocumentTouchmove;_scroll=new b;_dropInstances=new Set;_dragInstances=new Set;_activeDragInstances=w([]);_globalListeners;_draggingPredicate=e=>e.isDragging();_domNodesToDirectives=null;pointerMove=new b;pointerUp=new b;constructor(){}registerDropContainer(e){this._dropInstances.has(e)||this._dropInstances.add(e)}registerDragItem(e){this._dragInstances.add(e),this._dragInstances.size===1&&this._ngZone.runOutsideAngular(()=>{this._cleanupDocumentTouchmove?.(),this._cleanupDocumentTouchmove=this._renderer.listen(this._document,"touchmove",this._persistentTouchmoveListener,lt)})}removeDropContainer(e){this._dropInstances.delete(e)}removeDragItem(e){this._dragInstances.delete(e),this.stopDragging(e),this._dragInstances.size===0&&this._cleanupDocumentTouchmove?.()}startDragging(e,i){if(!(this._activeDragInstances().indexOf(e)>-1)&&(this._styleLoader.load(sn),this._activeDragInstances.update(n=>[...n,e]),this._activeDragInstances().length===1)){let n=i.type.startsWith("touch"),r=a=>this.pointerUp.next(a),s=[["scroll",a=>this._scroll.next(a),_e],["selectstart",this._preventDefaultWhileDragging,lt]];n?s.push(["touchend",r,_e],["touchcancel",r,_e]):s.push(["mouseup",r,_e]),n||s.push(["mousemove",a=>this.pointerMove.next(a),lt]),this._ngZone.runOutsideAngular(()=>{this._globalListeners=s.map(([a,c,m])=>this._renderer.listen(this._document,a,c,m))})}}stopDragging(e){this._activeDragInstances.update(i=>{let n=i.indexOf(e);return n>-1?(i.splice(n,1),[...i]):i}),this._activeDragInstances().length===0&&this._clearGlobalListeners()}isDragging(e){return this._activeDragInstances().indexOf(e)>-1}scrolled(e){let i=[this._scroll];return e&&e!==this._document&&i.push(new he(n=>this._ngZone.runOutsideAngular(()=>{let r=this._renderer.listen(e,"scroll",s=>{this._activeDragInstances().length&&n.next(s)},_e);return()=>{r()}}))),Ce(...i)}registerDirectiveNode(e,i){this._domNodesToDirectives??=new WeakMap,this._domNodesToDirectives.set(e,i)}removeDirectiveNode(e){this._domNodesToDirectives?.delete(e)}getDragDirectiveForNode(e){return this._domNodesToDirectives?.get(e)||null}ngOnDestroy(){this._dragInstances.forEach(e=>this.removeDragItem(e)),this._dropInstances.forEach(e=>this.removeDropContainer(e)),this._domNodesToDirectives=null,this._clearGlobalListeners(),this.pointerMove.complete(),this.pointerUp.complete()}_preventDefaultWhileDragging=e=>{this._activeDragInstances().length>0&&e.preventDefault()};_persistentTouchmoveListener=e=>{this._activeDragInstances().length>0&&(this._activeDragInstances().some(this._draggingPredicate)&&e.preventDefault(),this.pointerMove.next(e))};_clearGlobalListeners(){this._globalListeners?.forEach(e=>e()),this._globalListeners=void 0}static \u0275fac=function(i){return new(i||o)};static \u0275prov=T({token:o,factory:o.\u0275fac,providedIn:"root"})}return o})();function pi(o){let t=o.toLowerCase().indexOf("ms")>-1?1:1e3;return parseFloat(o)*t}function an(o){let t=getComputedStyle(o),e=ct(t,"transition-property"),i=e.find(a=>a==="transform"||a==="all");if(!i)return 0;let n=e.indexOf(i),r=ct(t,"transition-duration"),s=ct(t,"transition-delay");return pi(r[n])+pi(s[n])}function ct(o,t){return o.getPropertyValue(t).split(",").map(i=>i.trim())}var ln=new Set(["position"]),ht=class{_document;_rootElement;_direction;_initialDomRect;_previewTemplate;_previewClass;_pickupPositionOnPage;_initialTransform;_zIndex;_renderer;_previewEmbeddedView=null;_preview;get element(){return this._preview}constructor(t,e,i,n,r,s,a,c,m,v){this._document=t,this._rootElement=e,this._direction=i,this._initialDomRect=n,this._previewTemplate=r,this._previewClass=s,this._pickupPositionOnPage=a,this._initialTransform=c,this._zIndex=m,this._renderer=v}attach(t){this._preview=this._createPreview(),t.appendChild(this._preview),mi(this._preview)&&this._preview.showPopover()}destroy(){this._preview.remove(),this._previewEmbeddedView?.destroy(),this._preview=this._previewEmbeddedView=null}setTransform(t){this._preview.style.transform=t}getBoundingClientRect(){return this._preview.getBoundingClientRect()}addClass(t){this._preview.classList.add(t)}getTransitionDuration(){return an(this._preview)}addEventListener(t,e){return this._renderer.listen(this._preview,t,e)}_createPreview(){let t=this._previewTemplate,e=this._previewClass,i=t?t.template:null,n;if(i&&t){let r=t.matchSize?this._initialDomRect:null,s=t.viewContainer.createEmbeddedView(i,t.context);s.detectChanges(),n=Si(s,this._document),this._previewEmbeddedView=s,t.matchSize?hi(n,r):n.style.transform=ve(this._pickupPositionOnPage.x,this._pickupPositionOnPage.y)}else n=dt(this._rootElement),hi(n,this._initialDomRect),this._initialTransform&&(n.style.transform=this._initialTransform);return ft(n.style,{"pointer-events":"none",margin:mi(n)?"0 auto 0 0":"0",position:"fixed",top:"0",left:"0","z-index":this._zIndex+""},ln),de(n,!1),n.classList.add("cdk-drag-preview"),n.setAttribute("popover","manual"),n.setAttribute("dir",this._direction),e&&(Array.isArray(e)?e.forEach(r=>n.classList.add(r)):n.classList.add(e)),n}};function mi(o){return"showPopover"in o}var cn={passive:!0},_i={passive:!1},dn={passive:!1,capture:!0},un=800,gi="cdk-drag-placeholder",fi=new Set(["position"]);function wi(o,t,e={dragStartThreshold:5,pointerDirectionChangeThreshold:5}){let i=o.get(Qe,null,{optional:!0})||o.get(ne).createRenderer(null,null);return new pt(t,e,o.get(q),o.get(Z),o.get(st),o.get(vt),i)}var pt=class{_config;_document;_ngZone;_viewportRuler;_dragDropRegistry;_renderer;_rootElementCleanups;_cleanupShadowRootSelectStart;_preview=null;_previewContainer;_placeholderRef=null;_placeholder;_pickupPositionInElement;_pickupPositionOnPage;_marker;_anchor=null;_passiveTransform={x:0,y:0};_activeTransform={x:0,y:0};_initialTransform;_hasStartedDragging=w(!1);_hasMoved=!1;_initialContainer;_initialIndex;_parentPositions;_moveEvents=new b;_pointerDirectionDelta;_pointerPositionAtLastDirectionChange;_lastKnownPointerPosition;_rootElement;_ownerSVGElement=null;_rootElementTapHighlight;_pointerMoveSubscription=te.EMPTY;_pointerUpSubscription=te.EMPTY;_scrollSubscription=te.EMPTY;_resizeSubscription=te.EMPTY;_lastTouchEventTime;_dragStartTime;_boundaryElement=null;_nativeInteractionsEnabled=!0;_initialDomRect;_previewRect;_boundaryRect;_previewTemplate;_placeholderTemplate;_handles=[];_disabledHandles=new Set;_dropContainer;_direction="ltr";_parentDragRef=null;_cachedShadowRoot;lockAxis=null;dragStartDelay=0;previewClass;scale=1;get disabled(){return this._disabled||!!(this._dropContainer&&this._dropContainer.disabled)}set disabled(t){t!==this._disabled&&(this._disabled=t,this._toggleNativeDragInteractions(),this._handles.forEach(e=>de(e,t)))}_disabled=!1;beforeStarted=new b;started=new b;released=new b;ended=new b;entered=new b;exited=new b;dropped=new b;moved=this._moveEvents;data;constrainPosition;constructor(t,e,i,n,r,s,a){this._config=e,this._document=i,this._ngZone=n,this._viewportRuler=r,this._dragDropRegistry=s,this._renderer=a,this.withRootElement(t).withParent(e.parentDragRef||null),this._parentPositions=new ze(i),s.registerDragItem(this)}getPlaceholderElement(){return this._placeholder}getRootElement(){return this._rootElement}getVisibleElement(){return this.isDragging()?this.getPlaceholderElement():this.getRootElement()}withHandles(t){this._handles=t.map(i=>G(i)),this._handles.forEach(i=>de(i,this.disabled)),this._toggleNativeDragInteractions();let e=new Set;return this._disabledHandles.forEach(i=>{this._handles.indexOf(i)>-1&&e.add(i)}),this._disabledHandles=e,this}withPreviewTemplate(t){return this._previewTemplate=t,this}withPlaceholderTemplate(t){return this._placeholderTemplate=t,this}withRootElement(t){let e=G(t);if(e!==this._rootElement){this._removeRootElementListeners();let i=this._renderer;this._rootElementCleanups=this._ngZone.runOutsideAngular(()=>[i.listen(e,"mousedown",this._pointerDown,_i),i.listen(e,"touchstart",this._pointerDown,cn),i.listen(e,"dragstart",this._nativeDragStart,_i)]),this._initialTransform=void 0,this._rootElement=e}return typeof SVGElement<"u"&&this._rootElement instanceof SVGElement&&(this._ownerSVGElement=this._rootElement.ownerSVGElement),this}withBoundaryElement(t){return this._boundaryElement=t?G(t):null,this._resizeSubscription.unsubscribe(),t&&(this._resizeSubscription=this._viewportRuler.change(10).subscribe(()=>this._containInsideBoundaryOnResize())),this}withParent(t){return this._parentDragRef=t,this}dispose(){this._removeRootElementListeners(),this.isDragging()&&this._rootElement?.remove(),this._marker?.remove(),this._destroyPreview(),this._destroyPlaceholder(),this._dragDropRegistry.removeDragItem(this),this._removeListeners(),this.beforeStarted.complete(),this.started.complete(),this.released.complete(),this.ended.complete(),this.entered.complete(),this.exited.complete(),this.dropped.complete(),this._moveEvents.complete(),this._handles=[],this._disabledHandles.clear(),this._dropContainer=void 0,this._resizeSubscription.unsubscribe(),this._parentPositions.clear(),this._boundaryElement=this._rootElement=this._ownerSVGElement=this._placeholderTemplate=this._previewTemplate=this._marker=this._parentDragRef=null}isDragging(){return this._hasStartedDragging()&&this._dragDropRegistry.isDragging(this)}reset(){this._rootElement.style.transform=this._initialTransform||"",this._activeTransform={x:0,y:0},this._passiveTransform={x:0,y:0}}resetToBoundary(){if(this._boundaryElement&&this._rootElement&&rn(this._boundaryElement.getBoundingClientRect(),this._rootElement.getBoundingClientRect())){let t=this._boundaryElement.getBoundingClientRect(),e=this._rootElement.getBoundingClientRect(),i=0,n=0;e.left<t.left?i=t.left-e.left:e.right>t.right&&(i=t.right-e.right),e.top<t.top?n=t.top-e.top:e.bottom>t.bottom&&(n=t.bottom-e.bottom);let r=this._activeTransform.x,s=this._activeTransform.y,a=r+i,c=s+n;this._rootElement.style.transform=ve(a,c),this._activeTransform={x:a,y:c},this._passiveTransform={x:a,y:c}}}disableHandle(t){!this._disabledHandles.has(t)&&this._handles.indexOf(t)>-1&&(this._disabledHandles.add(t),de(t,!0))}enableHandle(t){this._disabledHandles.has(t)&&(this._disabledHandles.delete(t),de(t,this.disabled))}withDirection(t){return this._direction=t,this}_withDropContainer(t){this._dropContainer=t}getFreeDragPosition(){let t=this.isDragging()?this._activeTransform:this._passiveTransform;return{x:t.x,y:t.y}}setFreeDragPosition(t){return this._activeTransform={x:0,y:0},this._passiveTransform.x=t.x,this._passiveTransform.y=t.y,this._dropContainer||this._applyRootElementTransform(t.x,t.y),this}withPreviewContainer(t){return this._previewContainer=t,this}_sortFromLastPointerPosition(){let t=this._lastKnownPointerPosition;t&&this._dropContainer&&this._updateActiveDropContainer(this._getConstrainedPointerPosition(t),t)}_removeListeners(){this._pointerMoveSubscription.unsubscribe(),this._pointerUpSubscription.unsubscribe(),this._scrollSubscription.unsubscribe(),this._cleanupShadowRootSelectStart?.(),this._cleanupShadowRootSelectStart=void 0}_destroyPreview(){this._preview?.destroy(),this._preview=null}_destroyPlaceholder(){this._anchor?.remove(),this._placeholder?.remove(),this._placeholderRef?.destroy(),this._placeholder=this._anchor=this._placeholderRef=null}_pointerDown=t=>{if(this.beforeStarted.next(),this._handles.length){let e=this._getTargetHandle(t);e&&!this._disabledHandles.has(e)&&!this.disabled&&this._initializeDragSequence(e,t)}else this.disabled||this._initializeDragSequence(this._rootElement,t)};_pointerMove=t=>{let e=this._getPointerPositionOnPage(t);if(!this._hasStartedDragging()){let n=Math.abs(e.x-this._pickupPositionOnPage.x),r=Math.abs(e.y-this._pickupPositionOnPage.y);if(n+r>=this._config.dragStartThreshold){let a=Date.now()>=this._dragStartTime+this._getDragStartDelay(t),c=this._dropContainer;if(!a){this._endDragSequence(t);return}(!c||!c.isDragging()&&!c.isReceiving())&&(t.cancelable&&t.preventDefault(),this._hasStartedDragging.set(!0),this._ngZone.run(()=>this._startDragSequence(t)))}return}t.cancelable&&t.preventDefault();let i=this._getConstrainedPointerPosition(e);if(this._hasMoved=!0,this._lastKnownPointerPosition=e,this._updatePointerDirectionDelta(i),this._dropContainer)this._updateActiveDropContainer(i,e);else{let n=this.constrainPosition?this._initialDomRect:this._pickupPositionOnPage,r=this._activeTransform;r.x=i.x-n.x+this._passiveTransform.x,r.y=i.y-n.y+this._passiveTransform.y,this._applyRootElementTransform(r.x,r.y)}this._moveEvents.observers.length&&this._ngZone.run(()=>{this._moveEvents.next({source:this,pointerPosition:i,event:t,distance:this._getDragDistance(i),delta:this._pointerDirectionDelta})})};_pointerUp=t=>{this._endDragSequence(t)};_endDragSequence(t){if(this._dragDropRegistry.isDragging(this)&&(this._removeListeners(),this._dragDropRegistry.stopDragging(this),this._toggleNativeDragInteractions(),this._handles&&(this._rootElement.style.webkitTapHighlightColor=this._rootElementTapHighlight),!!this._hasStartedDragging()))if(this.released.next({source:this,event:t}),this._dropContainer)this._dropContainer._stopScrolling(),this._animatePreviewToPlaceholder().then(()=>{this._cleanupDragArtifacts(t),this._cleanupCachedDimensions(),this._dragDropRegistry.stopDragging(this)});else{this._passiveTransform.x=this._activeTransform.x;let e=this._getPointerPositionOnPage(t);this._passiveTransform.y=this._activeTransform.y,this._ngZone.run(()=>{this.ended.next({source:this,distance:this._getDragDistance(e),dropPoint:e,event:t})}),this._cleanupCachedDimensions(),this._dragDropRegistry.stopDragging(this)}}_startDragSequence(t){ge(t)&&(this._lastTouchEventTime=Date.now()),this._toggleNativeDragInteractions();let e=this._getShadowRoot(),i=this._dropContainer;if(e&&this._ngZone.runOutsideAngular(()=>{this._cleanupShadowRootSelectStart=this._renderer.listen(e,"selectstart",hn,dn)}),i){let n=this._rootElement,r=n.parentNode,s=this._placeholder=this._createPlaceholderElement(),a=this._marker=this._marker||this._document.createComment("");r.insertBefore(a,n),this._initialTransform=n.style.transform||"",this._preview=new ht(this._document,this._rootElement,this._direction,this._initialDomRect,this._previewTemplate||null,this.previewClass||null,this._pickupPositionOnPage,this._initialTransform,this._config.zIndex||1e3,this._renderer),this._preview.attach(this._getPreviewInsertionPoint(r,e)),ui(n,!1,fi),this._document.body.appendChild(r.replaceChild(s,n)),this.started.next({source:this,event:t}),i.start(),this._initialContainer=i,this._initialIndex=i.getItemIndex(this)}else this.started.next({source:this,event:t}),this._initialContainer=this._initialIndex=void 0;this._parentPositions.cache(i?i.getScrollableParents():[])}_initializeDragSequence(t,e){this._parentDragRef&&e.stopPropagation();let i=this.isDragging(),n=ge(e),r=!n&&e.button!==0,s=this._rootElement,a=me(e),c=!n&&this._lastTouchEventTime&&this._lastTouchEventTime+un>Date.now(),m=n?ni(e):ii(e);if(a&&a.draggable&&e.type==="mousedown"&&e.preventDefault(),i||r||c||m)return;if(this._handles.length){let K=s.style;this._rootElementTapHighlight=K.webkitTapHighlightColor||"",K.webkitTapHighlightColor="transparent"}this._hasMoved=!1,this._hasStartedDragging.set(this._hasMoved),this._removeListeners(),this._initialDomRect=this._rootElement.getBoundingClientRect(),this._pointerMoveSubscription=this._dragDropRegistry.pointerMove.subscribe(this._pointerMove),this._pointerUpSubscription=this._dragDropRegistry.pointerUp.subscribe(this._pointerUp),this._scrollSubscription=this._dragDropRegistry.scrolled(this._getShadowRoot()).subscribe(K=>this._updateOnScroll(K)),this._boundaryElement&&(this._boundaryRect=gt(this._boundaryElement));let v=this._previewTemplate;this._pickupPositionInElement=v&&v.template&&!v.matchSize?{x:0,y:0}:this._getPointerPositionInElement(this._initialDomRect,t,e);let F=this._pickupPositionOnPage=this._lastKnownPointerPosition=this._getPointerPositionOnPage(e);this._pointerDirectionDelta={x:0,y:0},this._pointerPositionAtLastDirectionChange={x:F.x,y:F.y},this._dragStartTime=Date.now(),this._dragDropRegistry.startDragging(this,e)}_cleanupDragArtifacts(t){ui(this._rootElement,!0,fi),this._marker.parentNode.replaceChild(this._rootElement,this._marker),this._destroyPreview(),this._destroyPlaceholder(),this._initialDomRect=this._boundaryRect=this._previewRect=this._initialTransform=void 0,this._ngZone.run(()=>{let e=this._dropContainer,i=e.getItemIndex(this),n=this._getPointerPositionOnPage(t),r=this._getDragDistance(n),s=e._isOverContainer(n.x,n.y);this.ended.next({source:this,distance:r,dropPoint:n,event:t}),this.dropped.next({item:this,currentIndex:i,previousIndex:this._initialIndex,container:e,previousContainer:this._initialContainer,isPointerOverContainer:s,distance:r,dropPoint:n,event:t}),e.drop(this,i,this._initialIndex,this._initialContainer,s,r,n,t),this._dropContainer=this._initialContainer})}_updateActiveDropContainer({x:t,y:e},{x:i,y:n}){let r=this._initialContainer._getSiblingContainerFromPosition(this,t,e);!r&&this._dropContainer!==this._initialContainer&&this._initialContainer._isOverContainer(t,e)&&(r=this._initialContainer),r&&r!==this._dropContainer&&this._ngZone.run(()=>{let s=this._dropContainer.getItemIndex(this),a=this._dropContainer.getItemAtIndex(s+1)?.getVisibleElement()||null;this.exited.next({item:this,container:this._dropContainer}),this._dropContainer.exit(this),this._conditionallyInsertAnchor(r,this._dropContainer,a),this._dropContainer=r,this._dropContainer.enter(this,t,e,r===this._initialContainer&&r.sortingDisabled?this._initialIndex:void 0),this.entered.next({item:this,container:r,currentIndex:r.getItemIndex(this)})}),this.isDragging()&&(this._dropContainer._startScrollingIfNecessary(i,n),this._dropContainer._sortItem(this,t,e,this._pointerDirectionDelta),this.constrainPosition?this._applyPreviewTransform(t,e):this._applyPreviewTransform(t-this._pickupPositionInElement.x,e-this._pickupPositionInElement.y))}_animatePreviewToPlaceholder(){if(!this._hasMoved)return Promise.resolve();let t=this._placeholder.getBoundingClientRect();this._preview.addClass("cdk-drag-animating"),this._applyPreviewTransform(t.left,t.top);let e=this._preview.getTransitionDuration();return e===0?Promise.resolve():this._ngZone.runOutsideAngular(()=>new Promise(i=>{let n=a=>{(!a||this._preview&&me(a)===this._preview.element&&a.propertyName==="transform")&&(s(),i(),clearTimeout(r))},r=setTimeout(n,e*1.5),s=this._preview.addEventListener("transitionend",n)}))}_createPlaceholderElement(){let t=this._placeholderTemplate,e=t?t.template:null,i;return e?(this._placeholderRef=t.viewContainer.createEmbeddedView(e,t.context),this._placeholderRef.detectChanges(),i=Si(this._placeholderRef,this._document)):i=dt(this._rootElement),i.style.pointerEvents="none",i.classList.add(gi),i}_getPointerPositionInElement(t,e,i){let n=e===this._rootElement?null:e,r=n?n.getBoundingClientRect():t,s=ge(i)?i.targetTouches[0]:i,a=this._getViewportScrollPosition(),c=s.pageX-r.left-a.left,m=s.pageY-r.top-a.top;return{x:r.left-t.left+c,y:r.top-t.top+m}}_getPointerPositionOnPage(t){let e=this._getViewportScrollPosition(),i=ge(t)?t.touches[0]||t.changedTouches[0]||{pageX:0,pageY:0}:t,n=i.pageX-e.left,r=i.pageY-e.top;if(this._ownerSVGElement){let s=this._ownerSVGElement.getScreenCTM();if(s){let a=this._ownerSVGElement.createSVGPoint();return a.x=n,a.y=r,a.matrixTransform(s.inverse())}}return{x:n,y:r}}_getConstrainedPointerPosition(t){let e=this._dropContainer?this._dropContainer.lockAxis:null,{x:i,y:n}=this.constrainPosition?this.constrainPosition(t,this,this._initialDomRect,this._pickupPositionInElement):t;if(this.lockAxis==="x"||e==="x"?n=this._pickupPositionOnPage.y-(this.constrainPosition?this._pickupPositionInElement.y:0):(this.lockAxis==="y"||e==="y")&&(i=this._pickupPositionOnPage.x-(this.constrainPosition?this._pickupPositionInElement.x:0)),this._boundaryRect){let{x:r,y:s}=this.constrainPosition?{x:0,y:0}:this._pickupPositionInElement,a=this._boundaryRect,{width:c,height:m}=this._getPreviewRect(),v=a.top+s,F=a.bottom-(m-s),K=a.left+r,Ge=a.right-(c-r);i=vi(i,K,Ge),n=vi(n,v,F)}return{x:i,y:n}}_updatePointerDirectionDelta(t){let{x:e,y:i}=t,n=this._pointerDirectionDelta,r=this._pointerPositionAtLastDirectionChange,s=Math.abs(e-r.x),a=Math.abs(i-r.y);return s>this._config.pointerDirectionChangeThreshold&&(n.x=e>r.x?1:-1,r.x=e),a>this._config.pointerDirectionChangeThreshold&&(n.y=i>r.y?1:-1,r.y=i),n}_toggleNativeDragInteractions(){if(!this._rootElement||!this._handles)return;let t=this._handles.length>0||!this.isDragging();t!==this._nativeInteractionsEnabled&&(this._nativeInteractionsEnabled=t,de(this._rootElement,t))}_removeRootElementListeners(){this._rootElementCleanups?.forEach(t=>t()),this._rootElementCleanups=void 0}_applyRootElementTransform(t,e){let i=1/this.scale,n=ve(t*i,e*i),r=this._rootElement.style;this._initialTransform==null&&(this._initialTransform=r.transform&&r.transform!="none"?r.transform:""),r.transform=Be(n,this._initialTransform)}_applyPreviewTransform(t,e){let i=this._previewTemplate?.template?void 0:this._initialTransform,n=ve(t,e);this._preview.setTransform(Be(n,i))}_getDragDistance(t){let e=this._pickupPositionOnPage;return e?{x:t.x-e.x,y:t.y-e.y}:{x:0,y:0}}_cleanupCachedDimensions(){this._boundaryRect=this._previewRect=void 0,this._parentPositions.clear()}_containInsideBoundaryOnResize(){let{x:t,y:e}=this._passiveTransform;if(t===0&&e===0||this.isDragging()||!this._boundaryElement)return;let i=this._rootElement.getBoundingClientRect(),n=this._boundaryElement.getBoundingClientRect();if(n.width===0&&n.height===0||i.width===0&&i.height===0)return;let r=n.left-i.left,s=i.right-n.right,a=n.top-i.top,c=i.bottom-n.bottom;n.width>i.width?(r>0&&(t+=r),s>0&&(t-=s)):t=0,n.height>i.height?(a>0&&(e+=a),c>0&&(e-=c)):e=0,(t!==this._passiveTransform.x||e!==this._passiveTransform.y)&&this.setFreeDragPosition({y:e,x:t})}_getDragStartDelay(t){let e=this.dragStartDelay;return typeof e=="number"?e:ge(t)?e.touch:e?e.mouse:0}_updateOnScroll(t){let e=this._parentPositions.handleScroll(t);if(e){let i=me(t);this._boundaryRect&&i!==this._boundaryElement&&i.contains(this._boundaryElement)&&fe(this._boundaryRect,e.top,e.left),this._pickupPositionOnPage.x+=e.left,this._pickupPositionOnPage.y+=e.top,this._dropContainer||(this._activeTransform.x-=e.left,this._activeTransform.y-=e.top,this._applyRootElementTransform(this._activeTransform.x,this._activeTransform.y))}}_getViewportScrollPosition(){return this._parentPositions.positions.get(this._document)?.scrollPosition||this._parentPositions.getViewportScrollPosition()}_getShadowRoot(){return this._cachedShadowRoot===void 0&&(this._cachedShadowRoot=Le(this._rootElement)),this._cachedShadowRoot}_getPreviewInsertionPoint(t,e){let i=this._previewContainer||"global";if(i==="parent")return t;if(i==="global"){let n=this._document;return e||n.fullscreenElement||n.webkitFullscreenElement||n.mozFullScreenElement||n.msFullscreenElement||n.body}return G(i)}_getPreviewRect(){return(!this._previewRect||!this._previewRect.width&&!this._previewRect.height)&&(this._previewRect=this._preview?this._preview.getBoundingClientRect():this._initialDomRect),this._previewRect}_nativeDragStart=t=>{if(this._handles.length){let e=this._getTargetHandle(t);e&&!this._disabledHandles.has(e)&&!this.disabled&&t.preventDefault()}else this.disabled||t.preventDefault()};_getTargetHandle(t){return this._handles.find(e=>t.target&&(t.target===e||e.contains(t.target)))}_conditionallyInsertAnchor(t,e,i){if(t===this._initialContainer)this._anchor?.remove(),this._anchor=null;else if(e===this._initialContainer&&e.hasAnchor){let n=this._anchor??=dt(this._placeholder);n.classList.remove(gi),n.classList.add("cdk-drag-anchor"),n.style.transform="",i?i.before(n):G(e.element).appendChild(n)}}};function vi(o,t,e){return Math.max(t,Math.min(e,o))}function ge(o){return o.type[0]==="t"}function hn(o){o.preventDefault()}function Di(o,t,e){let i=Ci(t,o.length-1),n=Ci(e,o.length-1);if(i===n)return;let r=o[i],s=n<i?-1:1;for(let a=i;a!==n;a+=s)o[a]=o[a+s];o[n]=r}function Ci(o,t){return Math.max(0,Math.min(t,o))}var $e=class{_dragDropRegistry;_element;_sortPredicate;_itemPositions=[];_activeDraggables;orientation="vertical";direction="ltr";constructor(t){this._dragDropRegistry=t}_previousSwap={drag:null,delta:0,overlaps:!1};start(t){this.withItems(t)}sort(t,e,i,n){let r=this._itemPositions,s=this._getItemIndexFromPointerPosition(t,e,i,n);if(s===-1&&r.length>0)return null;let a=this.orientation==="horizontal",c=r.findIndex(A=>A.drag===t),m=r[s],v=r[c].clientRect,F=m.clientRect,K=c>s?1:-1,Ge=this._getItemOffsetPx(v,F,K),Ai=this._getSiblingOffsetPx(c,r,K),zi=r.slice();return Di(r,c,s),r.forEach((A,Bi)=>{if(zi[Bi]===A)return;let Ct=A.drag===t,Ue=Ct?Ge:Ai,bt=Ct?t.getPlaceholderElement():A.drag.getRootElement();A.offset+=Ue;let yt=Math.round(A.offset*(1/A.drag.scale));a?(bt.style.transform=Be(`translate3d(${yt}px, 0, 0)`,A.initialTransform),fe(A.clientRect,0,Ue)):(bt.style.transform=Be(`translate3d(0, ${yt}px, 0)`,A.initialTransform),fe(A.clientRect,Ue,0))}),this._previousSwap.overlaps=ut(F,e,i),this._previousSwap.drag=m.drag,this._previousSwap.delta=a?n.x:n.y,{previousIndex:c,currentIndex:s}}enter(t,e,i,n){let r=this._activeDraggables,s=r.indexOf(t),a=t.getPlaceholderElement();s>-1&&r.splice(s,1);let c=n==null||n<0?this._getItemIndexFromPointerPosition(t,e,i):n,m=r[c];if(m===t&&(m=r[c+1]),!m&&(c==null||c===-1||c<r.length-1)&&this._shouldEnterAsFirstChild(e,i)&&(m=r[0]),m&&!this._dragDropRegistry.isDragging(m)){let v=m.getRootElement();v.parentElement.insertBefore(a,v),r.splice(c,0,t)}else this._element.appendChild(a),r.push(t);a.style.transform="",this._cacheItemPositions()}withItems(t){this._activeDraggables=t.slice(),this._cacheItemPositions()}withSortPredicate(t){this._sortPredicate=t}reset(){this._activeDraggables?.forEach(t=>{let e=t.getRootElement();if(e){let i=this._itemPositions.find(n=>n.drag===t)?.initialTransform;e.style.transform=i||""}}),this._itemPositions=[],this._activeDraggables=[],this._previousSwap.drag=null,this._previousSwap.delta=0,this._previousSwap.overlaps=!1}getActiveItemsSnapshot(){return this._activeDraggables}getItemIndex(t){return this._getVisualItemPositions().findIndex(e=>e.drag===t)}getItemAtIndex(t){return this._getVisualItemPositions()[t]?.drag||null}updateOnScroll(t,e){this._itemPositions.forEach(({clientRect:i})=>{fe(i,t,e)}),this._itemPositions.forEach(({drag:i})=>{this._dragDropRegistry.isDragging(i)&&i._sortFromLastPointerPosition()})}withElementContainer(t){this._element=t}_cacheItemPositions(){let t=this.orientation==="horizontal";this._itemPositions=this._activeDraggables.map(e=>{let i=e.getVisibleElement();return{drag:e,offset:0,initialTransform:i.style.transform||"",clientRect:gt(i)}}).sort((e,i)=>t?e.clientRect.left-i.clientRect.left:e.clientRect.top-i.clientRect.top)}_getVisualItemPositions(){return this.orientation==="horizontal"&&this.direction==="rtl"?this._itemPositions.slice().reverse():this._itemPositions}_getItemOffsetPx(t,e,i){let n=this.orientation==="horizontal",r=n?e.left-t.left:e.top-t.top;return i===-1&&(r+=n?e.width-t.width:e.height-t.height),r}_getSiblingOffsetPx(t,e,i){let n=this.orientation==="horizontal",r=e[t].clientRect,s=e[t+i*-1],a=r[n?"width":"height"]*i;if(s){let c=n?"left":"top",m=n?"right":"bottom";i===-1?a-=s.clientRect[c]-r[m]:a+=r[c]-s.clientRect[m]}return a}_shouldEnterAsFirstChild(t,e){if(!this._activeDraggables.length)return!1;let i=this._itemPositions,n=this.orientation==="horizontal";if(i[0].drag!==this._activeDraggables[0]){let s=i[i.length-1].clientRect;return n?t>=s.right:e>=s.bottom}else{let s=i[0].clientRect;return n?t<=s.left:e<=s.top}}_getItemIndexFromPointerPosition(t,e,i,n){let r=this.orientation==="horizontal",s=this._itemPositions.findIndex(({drag:a,clientRect:c})=>{if(a===t)return!1;if(n){let m=r?n.x:n.y;if(a===this._previousSwap.drag&&this._previousSwap.overlaps&&m===this._previousSwap.delta)return!1}return r?e>=Math.floor(c.left)&&e<Math.floor(c.right):i>=Math.floor(c.top)&&i<Math.floor(c.bottom)});return s===-1||!this._sortPredicate(s,t)?-1:s}},mt=class{_document;_dragDropRegistry;_element;_sortPredicate;_rootNode;_activeItems;_previousSwap={drag:null,deltaX:0,deltaY:0,overlaps:!1};_relatedNodes=[];constructor(t,e){this._document=t,this._dragDropRegistry=e}start(t){let e=this._element.childNodes;this._relatedNodes=[];for(let i=0;i<e.length;i++){let n=e[i];this._relatedNodes.push([n,n.nextSibling])}this.withItems(t)}sort(t,e,i,n){let r=this._getItemIndexFromPointerPosition(t,e,i),s=this._previousSwap;if(r===-1||this._activeItems[r]===t)return null;let a=this._activeItems[r];if(s.drag===a&&s.overlaps&&s.deltaX===n.x&&s.deltaY===n.y)return null;let c=this.getItemIndex(t),m=t.getPlaceholderElement(),v=a.getRootElement();r>c?v.after(m):v.before(m),Di(this._activeItems,c,r);let F=this._getRootNode().elementFromPoint(e,i);return s.deltaX=n.x,s.deltaY=n.y,s.drag=a,s.overlaps=v===F||v.contains(F),{previousIndex:c,currentIndex:r}}enter(t,e,i,n){let r=this._activeItems.indexOf(t);r>-1&&this._activeItems.splice(r,1);let s=n==null||n<0?this._getItemIndexFromPointerPosition(t,e,i):n;s===-1&&(s=this._getClosestItemIndexToPointer(t,e,i));let a=this._activeItems[s];a&&!this._dragDropRegistry.isDragging(a)?(this._activeItems.splice(s,0,t),a.getRootElement().before(t.getPlaceholderElement())):(this._activeItems.push(t),this._element.appendChild(t.getPlaceholderElement()))}withItems(t){this._activeItems=t.slice()}withSortPredicate(t){this._sortPredicate=t}reset(){let t=this._element,e=this._previousSwap;for(let i=this._relatedNodes.length-1;i>-1;i--){let[n,r]=this._relatedNodes[i];n.parentNode===t&&n.nextSibling!==r&&(r===null?t.appendChild(n):r.parentNode===t&&t.insertBefore(n,r))}this._relatedNodes=[],this._activeItems=[],e.drag=null,e.deltaX=e.deltaY=0,e.overlaps=!1}getActiveItemsSnapshot(){return this._activeItems}getItemIndex(t){return this._activeItems.indexOf(t)}getItemAtIndex(t){return this._activeItems[t]||null}updateOnScroll(){this._activeItems.forEach(t=>{this._dragDropRegistry.isDragging(t)&&t._sortFromLastPointerPosition()})}withElementContainer(t){t!==this._element&&(this._element=t,this._rootNode=void 0)}_getItemIndexFromPointerPosition(t,e,i){let n=this._getRootNode().elementFromPoint(Math.floor(e),Math.floor(i)),r=n?this._activeItems.findIndex(s=>{let a=s.getRootElement();return n===a||a.contains(n)}):-1;return r===-1||!this._sortPredicate(r,t)?-1:r}_getRootNode(){return this._rootNode||(this._rootNode=Le(this._element)||this._document),this._rootNode}_getClosestItemIndexToPointer(t,e,i){if(this._activeItems.length===0)return-1;if(this._activeItems.length===1)return 0;let n=1/0,r=-1;for(let s=0;s<this._activeItems.length;s++){let a=this._activeItems[s];if(a!==t){let{x:c,y:m}=a.getRootElement().getBoundingClientRect(),v=Math.hypot(e-c,i-m);v<n&&(n=v,r=s)}}return r}},bi=.05,xi=.05,B=(function(o){return o[o.NONE=0]="NONE",o[o.UP=1]="UP",o[o.DOWN=2]="DOWN",o})(B||{}),I=(function(o){return o[o.NONE=0]="NONE",o[o.LEFT=1]="LEFT",o[o.RIGHT=2]="RIGHT",o})(I||{});function Ti(o,t){return new _t(t,o.get(vt),o.get(q),o.get(Z),o.get(st))}var _t=class{_dragDropRegistry;_ngZone;_viewportRuler;element;disabled=!1;sortingDisabled=!1;lockAxis=null;autoScrollDisabled=!1;autoScrollStep=2;hasAnchor=!1;enterPredicate=()=>!0;sortPredicate=()=>!0;beforeStarted=new b;entered=new b;exited=new b;dropped=new b;sorted=new b;receivingStarted=new b;receivingStopped=new b;data;_container;_isDragging=!1;_parentPositions;_sortStrategy;_domRect;_draggables=[];_siblings=[];_activeSiblings=new Set;_viewportScrollSubscription=te.EMPTY;_verticalScrollDirection=B.NONE;_horizontalScrollDirection=I.NONE;_scrollNode;_stopScrollTimers=new b;_cachedShadowRoot=null;_document;_scrollableElements=[];_initialScrollSnap;_direction="ltr";constructor(t,e,i,n,r){this._dragDropRegistry=e,this._ngZone=n,this._viewportRuler=r;let s=this.element=G(t);this._document=i,this.withOrientation("vertical").withElementContainer(s),e.registerDropContainer(this),this._parentPositions=new ze(i)}dispose(){this._stopScrolling(),this._stopScrollTimers.complete(),this._viewportScrollSubscription.unsubscribe(),this.beforeStarted.complete(),this.entered.complete(),this.exited.complete(),this.dropped.complete(),this.sorted.complete(),this.receivingStarted.complete(),this.receivingStopped.complete(),this._activeSiblings.clear(),this._scrollNode=null,this._parentPositions.clear(),this._dragDropRegistry.removeDropContainer(this)}isDragging(){return this._isDragging}start(){this._draggingStarted(),this._notifyReceivingSiblings()}enter(t,e,i,n){this._draggingStarted(),n==null&&this.sortingDisabled&&(n=this._draggables.indexOf(t)),this._sortStrategy.enter(t,e,i,n),this._cacheParentPositions(),this._notifyReceivingSiblings(),this.entered.next({item:t,container:this,currentIndex:this.getItemIndex(t)})}exit(t){this._reset(),this.exited.next({item:t,container:this})}drop(t,e,i,n,r,s,a,c={}){this._reset(),this.dropped.next({item:t,currentIndex:e,previousIndex:i,container:this,previousContainer:n,isPointerOverContainer:r,distance:s,dropPoint:a,event:c})}withItems(t){let e=this._draggables;return this._draggables=t,t.forEach(i=>i._withDropContainer(this)),this.isDragging()&&(e.filter(n=>n.isDragging()).every(n=>t.indexOf(n)===-1)?this._reset():this._sortStrategy.withItems(this._draggables)),this}withDirection(t){return this._direction=t,this._sortStrategy instanceof $e&&(this._sortStrategy.direction=t),this}connectedTo(t){return this._siblings=t.slice(),this}withOrientation(t){if(t==="mixed")this._sortStrategy=new mt(this._document,this._dragDropRegistry);else{let e=new $e(this._dragDropRegistry);e.direction=this._direction,e.orientation=t,this._sortStrategy=e}return this._sortStrategy.withElementContainer(this._container),this._sortStrategy.withSortPredicate((e,i)=>this.sortPredicate(e,i,this)),this}withScrollableParents(t){let e=this._container;return this._scrollableElements=t.indexOf(e)===-1?[e,...t]:t.slice(),this}withElementContainer(t){if(t===this._container)return this;let e=G(this.element),i=this._scrollableElements.indexOf(this._container),n=this._scrollableElements.indexOf(t);return i>-1&&this._scrollableElements.splice(i,1),n>-1&&this._scrollableElements.splice(n,1),this._sortStrategy&&this._sortStrategy.withElementContainer(t),this._cachedShadowRoot=null,this._scrollableElements.unshift(t),this._container=t,this}getScrollableParents(){return this._scrollableElements}getItemIndex(t){return this._isDragging?this._sortStrategy.getItemIndex(t):this._draggables.indexOf(t)}getItemAtIndex(t){return this._isDragging?this._sortStrategy.getItemAtIndex(t):this._draggables[t]||null}isReceiving(){return this._activeSiblings.size>0}_sortItem(t,e,i,n){if(this.sortingDisabled||!this._domRect||!di(this._domRect,bi,e,i))return;let r=this._sortStrategy.sort(t,e,i,n);r&&this.sorted.next({previousIndex:r.previousIndex,currentIndex:r.currentIndex,container:this,item:t})}_startScrollingIfNecessary(t,e){if(this.autoScrollDisabled)return;let i,n=B.NONE,r=I.NONE;if(this._parentPositions.positions.forEach((s,a)=>{a===this._document||!s.clientRect||i||di(s.clientRect,bi,t,e)&&([n,r]=pn(a,s.clientRect,this._direction,t,e),(n||r)&&(i=a))}),!n&&!r){let{width:s,height:a}=this._viewportRuler.getViewportSize(),c={width:s,height:a,top:0,right:s,bottom:a,left:0};n=ki(c,e),r=Ri(c,t),i=window}i&&(n!==this._verticalScrollDirection||r!==this._horizontalScrollDirection||i!==this._scrollNode)&&(this._verticalScrollDirection=n,this._horizontalScrollDirection=r,this._scrollNode=i,(n||r)&&i?this._ngZone.runOutsideAngular(this._startScrollInterval):this._stopScrolling())}_stopScrolling(){this._stopScrollTimers.next()}_draggingStarted(){let t=this._container.style;this.beforeStarted.next(),this._isDragging=!0,this._initialScrollSnap=t.msScrollSnapType||t.scrollSnapType||"",t.scrollSnapType=t.msScrollSnapType="none",this._sortStrategy.start(this._draggables),this._cacheParentPositions(),this._viewportScrollSubscription.unsubscribe(),this._listenToScrollEvents()}_cacheParentPositions(){this._parentPositions.cache(this._scrollableElements),this._domRect=this._parentPositions.positions.get(this._container).clientRect}_reset(){this._isDragging=!1;let t=this._container.style;t.scrollSnapType=t.msScrollSnapType=this._initialScrollSnap,this._siblings.forEach(e=>e._stopReceiving(this)),this._sortStrategy.reset(),this._stopScrolling(),this._viewportScrollSubscription.unsubscribe(),this._parentPositions.clear()}_startScrollInterval=()=>{this._stopScrolling(),Tt(0,We).pipe(U(this._stopScrollTimers)).subscribe(()=>{let t=this._scrollNode,e=this.autoScrollStep;this._verticalScrollDirection===B.UP?t.scrollBy(0,-e):this._verticalScrollDirection===B.DOWN&&t.scrollBy(0,e),this._horizontalScrollDirection===I.LEFT?t.scrollBy(-e,0):this._horizontalScrollDirection===I.RIGHT&&t.scrollBy(e,0)})};_isOverContainer(t,e){return this._domRect!=null&&ut(this._domRect,t,e)}_getSiblingContainerFromPosition(t,e,i){return this._siblings.find(n=>n._canReceive(t,e,i))}_canReceive(t,e,i){if(!this._domRect||!ut(this._domRect,e,i)||!this.enterPredicate(t,this))return!1;let n=this._getShadowRoot().elementFromPoint(e,i);return n?n===this._container||this._container.contains(n):!1}_startReceiving(t,e){let i=this._activeSiblings;!i.has(t)&&e.every(n=>this.enterPredicate(n,this)||this._draggables.indexOf(n)>-1)&&(i.add(t),this._cacheParentPositions(),this._listenToScrollEvents(),this.receivingStarted.next({initiator:t,receiver:this,items:e}))}_stopReceiving(t){this._activeSiblings.delete(t),this._viewportScrollSubscription.unsubscribe(),this.receivingStopped.next({initiator:t,receiver:this})}_listenToScrollEvents(){this._viewportScrollSubscription=this._dragDropRegistry.scrolled(this._getShadowRoot()).subscribe(t=>{if(this.isDragging()){let e=this._parentPositions.handleScroll(t);e&&this._sortStrategy.updateOnScroll(e.top,e.left)}else this.isReceiving()&&this._cacheParentPositions()})}_getShadowRoot(){if(!this._cachedShadowRoot){let t=Le(this._container);this._cachedShadowRoot=t||this._document}return this._cachedShadowRoot}_notifyReceivingSiblings(){let t=this._sortStrategy.getActiveItemsSnapshot().filter(e=>e.isDragging());this._siblings.forEach(e=>e._startReceiving(this,t))}};function ki(o,t){let{top:e,bottom:i,height:n}=o,r=n*xi;return t>=e-r&&t<=e+r?B.UP:t>=i-r&&t<=i+r?B.DOWN:B.NONE}function Ri(o,t){let{left:e,right:i,width:n}=o,r=n*xi;return t>=e-r&&t<=e+r?I.LEFT:t>=i-r&&t<=i+r?I.RIGHT:I.NONE}function pn(o,t,e,i,n){let r=ki(t,n),s=Ri(t,i),a=B.NONE,c=I.NONE;if(r){let m=o.scrollTop;r===B.UP?m>0&&(a=B.UP):o.scrollHeight-m>o.clientHeight&&(a=B.DOWN)}if(s){let m=o.scrollLeft;e==="rtl"?s===I.RIGHT?m<0&&(c=I.RIGHT):o.scrollWidth+m>o.clientWidth&&(c=I.LEFT):s===I.LEFT?m>0&&(c=I.LEFT):o.scrollWidth-m>o.clientWidth&&(c=I.RIGHT)}return[a,c]}var mn=(()=>{class o{_injector=d(ie);constructor(){}createDrag(e,i){return wi(this._injector,e,i)}createDropList(e){return Ti(this._injector,e)}static \u0275fac=function(i){return new(i||o)};static \u0275prov=T({token:o,factory:o.\u0275fac,providedIn:"root"})}return o})(),He=new H("CDK_DRAG_PARENT");var _n=new H("CdkDragHandle");var Ei=new H("CDK_DRAG_CONFIG"),Pi=new H("CdkDropList"),Ii=(()=>{class o{element=d(Y);dropContainer=d(Pi,{optional:!0,skipSelf:!0});_ngZone=d(Z);_viewContainerRef=d(Je);_dir=d(rt,{optional:!0});_changeDetectorRef=d(xe);_selfHandle=d(_n,{optional:!0,self:!0});_parentDrag=d(He,{optional:!0,skipSelf:!0});_dragDropRegistry=d(vt);_destroyed=new b;_handles=new St([]);_previewTemplate=null;_placeholderTemplate=null;_dragRef;data;lockAxis=null;rootElementSelector;boundaryElement;dragStartDelay;freeDragPosition;get disabled(){return this._disabled||!!(this.dropContainer&&this.dropContainer.disabled)}set disabled(e){this._disabled=e,this._dragRef.disabled=this._disabled}_disabled=!1;constrainPosition;previewClass;previewContainer;scale=1;started=new M;released=new M;ended=new M;entered=new M;exited=new M;dropped=new M;moved=new he(e=>{let i=this._dragRef.moved.pipe(Dt(n=>({source:this,pointerPosition:n.pointerPosition,event:n.event,delta:n.delta,distance:n.distance}))).subscribe(e);return()=>{i.unsubscribe()}});_injector=d(ie);constructor(){let e=this.dropContainer,i=d(Ei,{optional:!0});this._dragRef=wi(this._injector,this.element,{dragStartThreshold:i&&i.dragStartThreshold!=null?i.dragStartThreshold:5,pointerDirectionChangeThreshold:i&&i.pointerDirectionChangeThreshold!=null?i.pointerDirectionChangeThreshold:5,zIndex:i?.zIndex}),this._dragRef.data=this,this._dragDropRegistry.registerDirectiveNode(this.element.nativeElement,this),i&&this._assignDefaults(i),e&&(e.addItem(this),e._dropListRef.beforeStarted.pipe(U(this._destroyed)).subscribe(()=>{this._dragRef.scale=this.scale})),this._syncInputs(this._dragRef),this._handleEvents(this._dragRef)}getPlaceholderElement(){return this._dragRef.getPlaceholderElement()}getRootElement(){return this._dragRef.getRootElement()}reset(){this._dragRef.reset()}resetToBoundary(){this._dragRef.resetToBoundary()}getFreeDragPosition(){return this._dragRef.getFreeDragPosition()}setFreeDragPosition(e){this._dragRef.setFreeDragPosition(e)}ngAfterViewInit(){Xe(()=>{this._updateRootElement(),this._setupHandlesListener(),this._dragRef.scale=this.scale,this.freeDragPosition&&this._dragRef.setFreeDragPosition(this.freeDragPosition)},{injector:this._injector})}ngOnChanges(e){let i=e.rootElementSelector,n=e.freeDragPosition;i&&!i.firstChange&&this._updateRootElement(),this._dragRef.scale=this.scale,n&&!n.firstChange&&this.freeDragPosition&&this._dragRef.setFreeDragPosition(this.freeDragPosition)}ngOnDestroy(){this.dropContainer&&this.dropContainer.removeItem(this),this._dragDropRegistry.removeDirectiveNode(this.element.nativeElement),this._ngZone.runOutsideAngular(()=>{this._handles.complete(),this._destroyed.next(),this._destroyed.complete(),this._dragRef.dispose()})}_addHandle(e){let i=this._handles.getValue();i.push(e),this._handles.next(i)}_removeHandle(e){let i=this._handles.getValue(),n=i.indexOf(e);n>-1&&(i.splice(n,1),this._handles.next(i))}_setPreviewTemplate(e){this._previewTemplate=e}_resetPreviewTemplate(e){e===this._previewTemplate&&(this._previewTemplate=null)}_setPlaceholderTemplate(e){this._placeholderTemplate=e}_resetPlaceholderTemplate(e){e===this._placeholderTemplate&&(this._placeholderTemplate=null)}_updateRootElement(){let e=this.element.nativeElement,i=e;this.rootElementSelector&&(i=e.closest!==void 0?e.closest(this.rootElementSelector):e.parentElement?.closest(this.rootElementSelector)),this._dragRef.withRootElement(i||e)}_getBoundaryElement(){let e=this.boundaryElement;return e?typeof e=="string"?this.element.nativeElement.closest(e):G(e):null}_syncInputs(e){e.beforeStarted.subscribe(()=>{if(!e.isDragging()){let i=this._dir,n=this.dragStartDelay,r=this._placeholderTemplate?{template:this._placeholderTemplate.templateRef,context:this._placeholderTemplate.data,viewContainer:this._viewContainerRef}:null,s=this._previewTemplate?{template:this._previewTemplate.templateRef,context:this._previewTemplate.data,matchSize:this._previewTemplate.matchSize,viewContainer:this._viewContainerRef}:null;e.disabled=this.disabled,e.lockAxis=this.lockAxis,e.scale=this.scale,e.dragStartDelay=typeof n=="object"&&n?n:Ne(n),e.constrainPosition=this.constrainPosition,e.previewClass=this.previewClass,e.withBoundaryElement(this._getBoundaryElement()).withPlaceholderTemplate(r).withPreviewTemplate(s).withPreviewContainer(this.previewContainer||"global"),i&&e.withDirection(i.value)}}),e.beforeStarted.pipe(Rt(1)).subscribe(()=>{if(this._parentDrag){e.withParent(this._parentDrag._dragRef);return}let i=this.element.nativeElement.parentElement;for(;i;){let n=this._dragDropRegistry.getDragDirectiveForNode(i);if(n){e.withParent(n._dragRef);break}i=i.parentElement}})}_handleEvents(e){e.started.subscribe(i=>{this.started.emit({source:this,event:i.event}),this._changeDetectorRef.markForCheck()}),e.released.subscribe(i=>{this.released.emit({source:this,event:i.event})}),e.ended.subscribe(i=>{this.ended.emit({source:this,distance:i.distance,dropPoint:i.dropPoint,event:i.event}),this._changeDetectorRef.markForCheck()}),e.entered.subscribe(i=>{this.entered.emit({container:i.container.data,item:this,currentIndex:i.currentIndex})}),e.exited.subscribe(i=>{this.exited.emit({container:i.container.data,item:this})}),e.dropped.subscribe(i=>{this.dropped.emit({previousIndex:i.previousIndex,currentIndex:i.currentIndex,previousContainer:i.previousContainer.data,container:i.container.data,isPointerOverContainer:i.isPointerOverContainer,item:this,distance:i.distance,dropPoint:i.dropPoint,event:i.event})})}_assignDefaults(e){let{lockAxis:i,dragStartDelay:n,constrainPosition:r,previewClass:s,boundaryElement:a,draggingDisabled:c,rootElementSelector:m,previewContainer:v}=e;this.disabled=c??!1,this.dragStartDelay=n||0,this.lockAxis=i||null,r&&(this.constrainPosition=r),s&&(this.previewClass=s),a&&(this.boundaryElement=a),m&&(this.rootElementSelector=m),v&&(this.previewContainer=v)}_setupHandlesListener(){this._handles.pipe(Et(e=>{let i=e.map(n=>n.element);this._selfHandle&&this.rootElementSelector&&i.push(this.element),this._dragRef.withHandles(i)}),qe(e=>Ce(...e.map(i=>i._stateChanges.pipe(be(i))))),U(this._destroyed)).subscribe(e=>{let i=this._dragRef,n=e.element.nativeElement;e.disabled?i.disableHandle(n):i.enableHandle(n)})}static \u0275fac=function(i){return new(i||o)};static \u0275dir=X({type:o,selectors:[["","cdkDrag",""]],hostAttrs:[1,"cdk-drag"],hostVars:4,hostBindings:function(i,n){i&2&&j("cdk-drag-disabled",n.disabled)("cdk-drag-dragging",n._dragRef.isDragging())},inputs:{data:[0,"cdkDragData","data"],lockAxis:[0,"cdkDragLockAxis","lockAxis"],rootElementSelector:[0,"cdkDragRootElement","rootElementSelector"],boundaryElement:[0,"cdkDragBoundary","boundaryElement"],dragStartDelay:[0,"cdkDragStartDelay","dragStartDelay"],freeDragPosition:[0,"cdkDragFreeDragPosition","freeDragPosition"],disabled:[2,"cdkDragDisabled","disabled",Q],constrainPosition:[0,"cdkDragConstrainPosition","constrainPosition"],previewClass:[0,"cdkDragPreviewClass","previewClass"],previewContainer:[0,"cdkDragPreviewContainer","previewContainer"],scale:[2,"cdkDragScale","scale",Nt]},outputs:{started:"cdkDragStarted",released:"cdkDragReleased",ended:"cdkDragEnded",entered:"cdkDragEntered",exited:"cdkDragExited",dropped:"cdkDragDropped",moved:"cdkDragMoved"},exportAs:["cdkDrag"],features:[re([{provide:He,useExisting:o}]),pe]})}return o})(),yi=new H("CdkDropListGroup");var Oi=(()=>{class o{element=d(Y);_changeDetectorRef=d(xe);_scrollDispatcher=d(oi);_dir=d(rt,{optional:!0});_group=d(yi,{optional:!0,skipSelf:!0});_latestSortedRefs;_destroyed=new b;_scrollableParentsResolved=!1;static _dropLists=[];_dropListRef;connectedTo=[];data;orientation="vertical";id=d(Ae).getId("cdk-drop-list-");lockAxis=null;get disabled(){return this._disabled||!!this._group&&this._group.disabled}set disabled(e){this._dropListRef.disabled=this._disabled=e}_disabled=!1;sortingDisabled=!1;enterPredicate=()=>!0;sortPredicate=()=>!0;autoScrollDisabled=!1;autoScrollStep;elementContainerSelector=null;hasAnchor=!1;dropped=new M;entered=new M;exited=new M;sorted=new M;_unsortedItems=new Set;constructor(){let e=d(Ei,{optional:!0}),i=d(ie);this._dropListRef=Ti(i,this.element),this._dropListRef.data=this,e&&this._assignDefaults(e),this._dropListRef.enterPredicate=(n,r)=>this.enterPredicate(n.data,r.data),this._dropListRef.sortPredicate=(n,r,s)=>this.sortPredicate(n,r.data,s.data),this._setupInputSyncSubscription(this._dropListRef),this._handleEvents(this._dropListRef),o._dropLists.push(this),this._group&&this._group._items.add(this)}addItem(e){this._unsortedItems.add(e),e._dragRef._withDropContainer(this._dropListRef),this._dropListRef.isDragging()&&this._syncItemsWithRef(this.getSortedItems().map(i=>i._dragRef))}removeItem(e){if(this._unsortedItems.delete(e),this._latestSortedRefs){let i=this._latestSortedRefs.indexOf(e._dragRef);i>-1&&(this._latestSortedRefs.splice(i,1),this._syncItemsWithRef(this._latestSortedRefs))}}getSortedItems(){return Array.from(this._unsortedItems).sort((e,i)=>e._dragRef.getVisibleElement().compareDocumentPosition(i._dragRef.getVisibleElement())&Node.DOCUMENT_POSITION_FOLLOWING?-1:1)}ngOnDestroy(){let e=o._dropLists.indexOf(this);e>-1&&o._dropLists.splice(e,1),this._group&&this._group._items.delete(this),this._latestSortedRefs=void 0,this._unsortedItems.clear(),this._dropListRef.dispose(),this._destroyed.next(),this._destroyed.complete()}_setupInputSyncSubscription(e){this._dir&&this._dir.change.pipe(be(this._dir.value),U(this._destroyed)).subscribe(i=>e.withDirection(i)),e.beforeStarted.subscribe(()=>{let i=si(this.connectedTo).map(n=>{if(typeof n=="string"){let r=o._dropLists.find(s=>s.id===n);return r}return n});if(this._group&&this._group._items.forEach(n=>{i.indexOf(n)===-1&&i.push(n)}),!this._scrollableParentsResolved){let n=this._scrollDispatcher.getAncestorScrollContainers(this.element).map(r=>r.getElementRef().nativeElement);this._dropListRef.withScrollableParents(n),this._scrollableParentsResolved=!0}if(this.elementContainerSelector){let n=this.element.nativeElement.querySelector(this.elementContainerSelector);e.withElementContainer(n)}e.disabled=this.disabled,e.lockAxis=this.lockAxis,e.sortingDisabled=this.sortingDisabled,e.autoScrollDisabled=this.autoScrollDisabled,e.autoScrollStep=Ne(this.autoScrollStep,2),e.hasAnchor=this.hasAnchor,e.connectedTo(i.filter(n=>n&&n!==this).map(n=>n._dropListRef)).withOrientation(this.orientation)})}_handleEvents(e){e.beforeStarted.subscribe(()=>{this._syncItemsWithRef(this.getSortedItems().map(i=>i._dragRef)),this._changeDetectorRef.markForCheck()}),e.entered.subscribe(i=>{this.entered.emit({container:this,item:i.item.data,currentIndex:i.currentIndex})}),e.exited.subscribe(i=>{this.exited.emit({container:this,item:i.item.data}),this._changeDetectorRef.markForCheck()}),e.sorted.subscribe(i=>{this.sorted.emit({previousIndex:i.previousIndex,currentIndex:i.currentIndex,container:this,item:i.item.data})}),e.dropped.subscribe(i=>{this.dropped.emit({previousIndex:i.previousIndex,currentIndex:i.currentIndex,previousContainer:i.previousContainer.data,container:i.container.data,item:i.item.data,isPointerOverContainer:i.isPointerOverContainer,distance:i.distance,dropPoint:i.dropPoint,event:i.event}),this._changeDetectorRef.markForCheck()}),Ce(e.receivingStarted,e.receivingStopped).subscribe(()=>this._changeDetectorRef.markForCheck())}_assignDefaults(e){let{lockAxis:i,draggingDisabled:n,sortingDisabled:r,listAutoScrollDisabled:s,listOrientation:a}=e;this.disabled=n??!1,this.sortingDisabled=r??!1,this.autoScrollDisabled=s??!1,this.orientation=a||"vertical",this.lockAxis=i||null}_syncItemsWithRef(e){this._latestSortedRefs=e,this._dropListRef.withItems(e)}static \u0275fac=function(i){return new(i||o)};static \u0275dir=X({type:o,selectors:[["","cdkDropList",""],["cdk-drop-list"]],hostAttrs:[1,"cdk-drop-list"],hostVars:7,hostBindings:function(i,n){i&2&&(De("id",n.id),j("cdk-drop-list-disabled",n.disabled)("cdk-drop-list-dragging",n._dropListRef.isDragging())("cdk-drop-list-receiving",n._dropListRef.isReceiving()))},inputs:{connectedTo:[0,"cdkDropListConnectedTo","connectedTo"],data:[0,"cdkDropListData","data"],orientation:[0,"cdkDropListOrientation","orientation"],id:"id",lockAxis:[0,"cdkDropListLockAxis","lockAxis"],disabled:[2,"cdkDropListDisabled","disabled",Q],sortingDisabled:[2,"cdkDropListSortingDisabled","sortingDisabled",Q],enterPredicate:[0,"cdkDropListEnterPredicate","enterPredicate"],sortPredicate:[0,"cdkDropListSortPredicate","sortPredicate"],autoScrollDisabled:[2,"cdkDropListAutoScrollDisabled","autoScrollDisabled",Q],autoScrollStep:[0,"cdkDropListAutoScrollStep","autoScrollStep"],elementContainerSelector:[0,"cdkDropListElementContainer","elementContainerSelector"],hasAnchor:[2,"cdkDropListHasAnchor","hasAnchor",Q]},outputs:{dropped:"cdkDropListDropped",entered:"cdkDropListEntered",exited:"cdkDropListExited",sorted:"cdkDropListSorted"},exportAs:["cdkDropList"],features:[re([{provide:yi,useValue:void 0},{provide:Pi,useExisting:o}])]})}return o})(),gn=new H("CdkDragPreview"),Fi=(()=>{class o{templateRef=d(Se);_drag=d(He,{optional:!0});data;matchSize=!1;constructor(){this._drag?._setPreviewTemplate(this)}ngOnDestroy(){this._drag?._resetPreviewTemplate(this)}static \u0275fac=function(i){return new(i||o)};static \u0275dir=X({type:o,selectors:[["ng-template","cdkDragPreview",""]],inputs:{data:"data",matchSize:[2,"matchSize","matchSize",Q]},features:[re([{provide:gn,useExisting:o}])]})}return o})(),fn=new H("CdkDragPlaceholder"),Mi=(()=>{class o{templateRef=d(Se);_drag=d(He,{optional:!0});data;constructor(){this._drag?._setPlaceholderTemplate(this)}ngOnDestroy(){this._drag?._resetPlaceholderTemplate(this)}static \u0275fac=function(i){return new(i||o)};static \u0275dir=X({type:o,selectors:[["ng-template","cdkDragPlaceholder",""]],inputs:{data:"data"},features:[re([{provide:fn,useExisting:o}])]})}return o})();var Li=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=we({type:o});static \u0275inj=ye({providers:[mn],imports:[ri]})}return o})();var Vi=(o,t)=>t.key,Cn=(o,t)=>t.id;function bn(o,t){o&1&&(p(0,"div",7),k(1,"app-icon",12),u())}function yn(o,t){if(o&1){let e=S();p(0,"input",13),C("change",function(n){g(e);let r=l(2);return f(r.onToggleAllSelection(n))}),u()}if(o&2){let e=l(2);_("checked",e.isAllSelected())("indeterminate",e.isSomeSelected()&&!e.isAllSelected())}}function Sn(o,t){if(o&1&&k(0,"app-icon",15),o&2){let e=l(2).$implicit,i=l();_("name",i.getSortIcon(e.key))}}function wn(o,t){if(o&1){let e=S();p(0,"div",14),C("click",function(){g(e);let n=l().$implicit,r=l();return f(r.onColumnHeaderClick(n))})("onKeyDown",function(){g(e);let n=l().$implicit,r=l();return f(r.onColumnHeaderClick(n))}),p(1,"span"),y(2),u(),D(3,Sn,1,1,"app-icon",15),u()}if(o&2){let e=l().$implicit,i=l();j("cursor-pointer",e.sortable)("pl-6",e.draggable),h(2),z(e.label),h(),x(e.sortable&&i.isColumnSorted(e.key)?3:-1)}}function Dn(o,t){if(o&1&&(p(0,"div",16),y(1),u()),o&2){let e=l().$implicit;h(),oe(" ",e.label," ")}}function xn(o,t){o&1&&k(0,"div",17)}function Tn(o,t){if(o&1&&(p(0,"th",6),D(1,bn,2,0,"div",7),D(2,yn,1,2,"input",8)(3,wn,4,6,"div",9),Ft(4,Dn,2,1,"div",10)(5,xn,1,0,"div",11),u()),o&2){let e=t.$implicit;j("w-12",e.key==="select")("cursor-move",e.draggable),_("cdkDragDisabled",!e.draggable),h(),x(e.draggable?1:-1),h(),x(e.key==="select"?2:3)}}function kn(o,t){if(o&1){let e=S();p(0,"td",23),C("click",function(n){return n.stopPropagation()})("keydown",function(n){return n.stopPropagation()}),p(1,"input",24),C("change",function(n){g(e);let r=l(2).$implicit,s=l();return f(s.onToggleSelection(r.id,n))}),u()()}if(o&2){let e=l(2).$implicit,i=l();h(),_("checked",i.selectedTests().has(e.id))}}function Rn(o,t){if(o&1){let e=S();p(0,"td",19)(1,"app-status-badge",25),C("click",function(n){g(e);let r=l(2).$implicit,s=l();return f(s.onToggleStatus(r.status,n))})("onKeyDown",function(n){g(e);let r=l(2).$implicit,s=l();return f(s.onToggleStatus(r.status,n))}),u()()}if(o&2){let e=l(2).$implicit;h(),_("status",e.status)}}function En(o,t){if(o&1&&(p(0,"td",19),k(1,"div",26),u()),o&2){let e=l().$implicit,i=l().$implicit,n=l();h(),_("appFormatDate",n.getColumnValue(i,e))}}function Pn(o,t){if(o&1&&(p(0,"td",19)(1,"div",27),y(2),u()()),o&2){let e=l(2).$implicit;h(2),oe(" ",e.id," ")}}function In(o,t){if(o&1&&k(0,"td",20),o&2){let e=l().$implicit,i=l().$implicit,n=l();_("appFormatDuration",n.getColumnValue(i,e))}}function On(o,t){if(o&1&&k(0,"td",21),o&2){let e=l().$implicit,i=l().$implicit,n=l();_("appFormatNumber",n.getColumnValue(i,e))}}function Fn(o,t){if(o&1&&(p(0,"td",19),k(1,"span",28),u()),o&2){let e=l().$implicit,i=l().$implicit,n=l();h(),j("text-error",i.status==="failed"||i.error),_("appFormatPercentage",n.getColumnValue(i,e))}}function Mn(o,t){if(o&1&&k(0,"span",29),o&2){let e=l(2).$implicit,i=l().$implicit,n=l();_("appFormatLatency",n.getColumnValue(i,e))}}function Ln(o,t){if(o&1&&k(0,"span",30),o&2){let e=l(2).$implicit,i=l().$implicit,n=l();_("appFormatNetwork",n.getColumnValue(i,e))}}function Vn(o,t){if(o&1&&k(0,"span",31),o&2){let e=l(2).$implicit,i=l().$implicit,n=l();_("appFormatBytes",n.getColumnValue(i,e))}}function Nn(o,t){if(o&1&&k(0,"span",32),o&2){let e=l(2).$implicit,i=l().$implicit,n=l();_("appFormatRps",n.getColumnValue(i,e))}}function An(o,t){if(o&1&&k(0,"span",33),o&2){let e=l(2).$implicit,i=l().$implicit,n=l();_("appFormatNumber",n.getColumnValue(i,e))}}function zn(o,t){if(o&1&&k(0,"span",34),o&2){let e=l(2).$implicit,i=l().$implicit,n=l();_("appFormatDuration",n.getColumnValue(i,e))}}function Bn(o,t){if(o&1&&k(0,"span",35),o&2){let e=l(2).$implicit,i=l().$implicit,n=l();_("appFormatPercentage",n.getColumnValue(i,e))}}function $n(o,t){if(o&1&&k(0,"span",36),o&2){let e=l(2).$implicit,i=l().$implicit,n=l();_("appFormatDate",n.getColumnValue(i,e))}}function Hn(o,t){if(o&1&&y(0),o&2){let e=l(2).$implicit,i=l().$implicit,n=l();oe(" ",n.getColumnValue(i,e)??"\u2014"," ")}}function jn(o,t){if(o&1&&(p(0,"td",22),D(1,Mn,1,1,"span",29)(2,Ln,1,1,"span",30)(3,Vn,1,1,"span",31)(4,Nn,1,1,"span",32)(5,An,1,1,"span",33)(6,zn,1,1,"span",34)(7,Bn,1,1,"span",35)(8,$n,1,1,"span",36)(9,Hn,1,1),u()),o&2){let e=l().$implicit;h(),x(e.field.includes("Latency")?1:e.field.includes("BytesPerSec")?2:e.field.includes("Bytes")?3:e.field.includes("RequestsPerSecond")?4:e.field.includes("Requests")||e.field.includes("threads")?5:e.field.includes("DurationSec")?6:e.field.includes("errorRate")?7:e.field.includes("epoch")?8:9)}}function Gn(o,t){if(o&1&&(D(0,kn,2,1,"td",19),D(1,Rn,2,1,"td",19),D(2,En,2,1,"td",19),D(3,Pn,3,1,"td",19),D(4,In,1,1,"td",20),D(5,On,1,1,"td",21),D(6,Fn,2,3,"td",19),D(7,jn,10,1,"td",22)),o&2){let e=t.$implicit;x(e.key==="select"?0:-1),h(),x(e.key==="status"?1:-1),h(),x(e.key==="startTime"?2:-1),h(),x(e.key==="id"?3:-1),h(),x(e.key==="duration"?4:-1),h(),x(e.key==="requests"?5:-1),h(),x(e.key==="errorRate"?6:-1),h(),x(e.key!=="select"&&e.key!=="status"&&e.key!=="startTime"&&e.key!=="id"&&e.key!=="duration"&&e.key!=="requests"&&e.key!=="errorRate"&&e.key!=="actions"?7:-1)}}function Un(o,t){if(o&1){let e=S();p(0,"tr",18),C("click",function(){let n=g(e).$implicit,r=l();return f(r.onViewTest(n.id))})("onKeyDown",function(){let n=g(e).$implicit,r=l();return f(r.onViewTest(n.id))}),V(1,Gn,8,8,null,null,Vi),u()}if(o&2){let e=t.$implicit,i=l();j("bg-base-300",i.selectedTests().has(e.id)),h(),N(i.columns())}}var je=class o{tests=E.required();columns=E.required();selectedTests=E.required();isAllSelected=E.required();isSomeSelected=E.required();currentSort=E(null);viewTest=R();toggleSelection=R();toggleAllSelection=R();columnReorder=R();columnSort=R();_testService=d(se);_valueExtractors={select:()=>"","summary.configSnapshot.options.durationSec":t=>t.summary?.configSnapshot?.options?.durationSec??null,"summary.configSnapshot.options.rampUpDurationSec":t=>t.summary?.configSnapshot?.options?.rampUpDurationSec??null,"summary.configSnapshot.options.threads":t=>t.summary?.configSnapshot?.options?.threads??null,"summary.configSnapshot.options.workerMemoryLimit":t=>t.summary?.configSnapshot?.options?.workerMemoryLimit??null,"summary.global.averageRequestsPerSecond":t=>t.summary?.global.averageRequestsPerSecond??null,"summary.global.epochEndedAt":t=>t.summary?.global.epochEndedAt??null,"summary.global.epochStartedAt":t=>t.summary?.global.epochStartedAt??null,"summary.global.errorRate":t=>t.summary?.global.errorRate??null,"summary.global.failedRequests":t=>t.summary?.global.failedRequests??null,"summary.global.finalDurationSec":t=>t.summary?.global.finalDurationSec??null,"summary.global.maxLatencyMs":t=>t.summary?.global.maxLatencyMs??null,"summary.global.minLatencyMs":t=>t.summary?.global.minLatencyMs??null,"summary.global.networkBytesPerSec":t=>t.summary?.global.networkBytesPerSec??null,"summary.global.networkBytesReceived":t=>t.summary?.global.networkBytesReceived??null,"summary.global.networkBytesSent":t=>t.summary?.global.networkBytesSent??null,"summary.global.p50LatencyMs":t=>t.summary?.global.p50LatencyMs??null,"summary.global.p95LatencyMs":t=>t.summary?.global.p95LatencyMs??null,"summary.global.p99LatencyMs":t=>t.summary?.global.p99LatencyMs??null,"summary.global.peakRequestsPerSecond":t=>t.summary?.global.peakRequestsPerSecond??null,"summary.global.successfulRequests":t=>t.summary?.global.successfulRequests??null,"summary.global.totalRequests":t=>t.summary?.global.totalRequests??null,"summary.tressiVersion":t=>t.summary?.tressiVersion??null,"test.duration":t=>this.getTestDurationRaw(t),"test.epochStartedAt":t=>t.summary?.global.epochStartedAt||t.epochCreatedAt,"test.status":t=>t.status||"unknown"};getColumnValue(t,e){if(e.field==="select")return"";let i=this._valueExtractors[e.field];return i?i(t):null}getTestDurationRaw(t){return t.summary?.global.finalDurationSec?t.summary.global.finalDurationSec:t.status==="completed"&&t.summary?.global.epochStartedAt&&t.summary?.global.epochEndedAt?(t.summary.global.epochEndedAt-t.summary.global.epochStartedAt)/1e3:this._testService.getTestDuration(t)/1e3}onViewTest(t){this.viewTest.emit(t)}onToggleSelection(t,e){this.toggleSelection.emit({event:e,testId:t})}onToggleAllSelection(t){this.toggleAllSelection.emit(t)}onToggleStatus(t,e){this.tests().filter(i=>i.status===t).forEach(i=>{this.toggleSelection.emit({event:e,testId:i.id})})}onHeaderDragDrop(t){if(t.previousIndex===t.currentIndex)return;let e=this.columns(),i=e[t.previousIndex],n=e[t.currentIndex];!i.draggable||!n.draggable||this.columnReorder.emit({draggedKey:i.key,targetKey:n.key})}onColumnHeaderClick(t){t.sortable!==!1&&t.key!=="select"&&this.columnSort.emit(t.key)}getSortIcon(t){let e=this.currentSort();return e?.columnKey!==t?null:e.direction==="asc"?"keyboard_arrow_up":"keyboard_arrow_down"}isColumnSorted(t){return this.currentSort()?.columnKey===t}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=L({type:o,selectors:[["app-test-table"]],inputs:{tests:[1,"tests"],columns:[1,"columns"],selectedTests:[1,"selectedTests"],isAllSelected:[1,"isAllSelected"],isSomeSelected:[1,"isSomeSelected"],currentSort:[1,"currentSort"]},outputs:{viewTest:"viewTest",toggleSelection:"toggleSelection",toggleAllSelection:"toggleAllSelection",columnReorder:"columnReorder",columnSort:"columnSort"},decls:9,vars:0,consts:[[1,"rounded-box","border-base-content/10","bg-base-100","max-h-[69vh]","overflow-auto","border"],[1,"table"],[1,"bg-base-300","sticky","top-0","z-10"],["cdkDropList","","cdkDropListOrientation","horizontal",1,"text-base-content",3,"cdkDropListDropped"],["cdkDrag","",1,"bg-base-300","group","relative","text-center",3,"w-12","cdkDragDisabled","cursor-move"],["data-e2e","test-row",1,"hover:bg-base-300","bg-base-200","cursor-pointer",3,"bg-base-300"],["cdkDrag","",1,"bg-base-300","group","relative","text-center",3,"cdkDragDisabled"],[1,"absolute","top-1/2","left-1","-translate-y-1/2","cursor-grab","opacity-0","transition-opacity","select-none","group-hover:opacity-50","hover:opacity-100","active:cursor-grabbing"],["type","checkbox",1,"checkbox","checkbox-sm","mx-auto",3,"checked","indeterminate"],[1,"flex","items-center","justify-center","gap-1",3,"cursor-pointer","pl-6"],["class","bg-base-100 text-base-content rounded-xl px-4 py-2 font-medium shadow-lg",4,"cdkDragPreview"],["class","bg-primary/20 border-primary rounded-xl border-2 border-dashed",4,"cdkDragPlaceholder"],["name","drag_indicator"],["type","checkbox",1,"checkbox","checkbox-sm","mx-auto",3,"change","checked","indeterminate"],[1,"flex","items-center","justify-center","gap-1",3,"click","onKeyDown"],[1,"hover:text-base-content","text-base-content/50","transition-colors",3,"name"],[1,"bg-base-100","text-base-content","rounded-xl","px-4","py-2","font-medium","shadow-lg"],[1,"bg-primary/20","border-primary","rounded-xl","border-2","border-dashed"],["data-e2e","test-row",1,"hover:bg-base-300","bg-base-200","cursor-pointer",3,"click","onKeyDown"],[1,"text-center"],[1,"text-base-content","text-center",3,"appFormatDuration"],[1,"text-base-content","text-center",3,"appFormatNumber"],[1,"text-base-content","text-center"],[1,"text-center",3,"click","keydown"],["type","checkbox",1,"checkbox","checkbox-sm","mx-auto",3,"change","checked"],[3,"click","onKeyDown","status"],[1,"text-base-content","font-medium",3,"appFormatDate"],[1,"text-base-content/70","font-mono","text-xs"],[1,"font-medium",3,"appFormatPercentage"],[3,"appFormatLatency"],[3,"appFormatNetwork"],[3,"appFormatBytes"],[3,"appFormatRps"],[3,"appFormatNumber"],[3,"appFormatDuration"],[3,"appFormatPercentage"],[3,"appFormatDate"]],template:function(e,i){e&1&&(p(0,"div",0)(1,"table",1)(2,"thead",2)(3,"tr",3),C("cdkDropListDropped",function(r){return i.onHeaderDragDrop(r)}),V(4,Tn,6,7,"th",4,Vi),u()(),p(6,"tbody"),V(7,Un,3,2,"tr",5,Cn),u()()()),e&2&&(h(4),N(i.columns()),h(3),N(i.tests()))},dependencies:[ke,Li,Oi,Ii,Fi,Mi,ei,Gt,Yt,Jt,Wt,Ut,Zt,Qt,Xt],encapsulation:2})};function Wn(o,t){if(o&1){let e=S();p(0,"div",6)(1,"app-button",9),C("click",function(n){g(e);let r=l(2);return f(r.deleteTest(null,n))})("onKeyDown",function(n){g(e);let r=l(2);return f(r.deleteTest(null,n))}),u()()}if(o&2){let e=l(2);h(),_("disabled",e.hasRunningTestsSelected())("color","error")("title",`Delete ${e.selectedTestsCount()}`)("icon","delete")}}function Kn(o,t){if(o&1){let e=S();p(0,"div",3)(1,"div",4)(2,"h2",5),y(3),u()(),D(4,Wn,2,4,"div",6),p(5,"app-column-selector",7),C("toggleColumn",function(n){g(e);let r=l();return f(r.toggleColumn(n))})("resetColumns",function(){g(e);let n=l();return f(n.resetColumns())})("toggleSelector",function(){g(e);let n=l();return f(n.toggleColumnSelector())})("closeSelector",function(){g(e);let n=l();return f(n.closeColumnSelector())}),u()(),p(6,"app-test-table",8),C("viewTest",function(n){g(e);let r=l();return f(r.appRouter.toTestDetails(n))})("toggleSelection",function(n){g(e);let r=l();return f(r.toggleTestSelection(n.testId,n.event))})("toggleAllSelection",function(n){g(e);let r=l();return f(r.toggleAllTests(n))})("columnReorder",function(n){g(e);let r=l();return f(r.onColumnReorder(n))})("columnSort",function(n){g(e);let r=l();return f(r.onColumnSort(n))}),u()}if(o&2){let e=l();h(3),z(e.pageTitle()),h(),x(e.selectedTestsCount()>0?4:-1),h(),_("columnGroups",e.columnGroups())("showColumnSelector",e.showColumnSelector()),h(),_("tests",e.displayedTests())("columns",e.visibleColumns())("selectedTests",e.selectedTests())("isAllSelected",e.isAllSelected())("isSomeSelected",e.isSomeSelected())("currentSort",e.currentSort())}}function qn(o,t){if(o&1){let e=S();p(0,"div",0)(1,"div",10),k(2,"app-icon",11),p(3,"h2",12),y(4,"Failed to Load Tests"),u(),p(5,"p",13),y(6),u(),p(7,"app-button",14),C("click",function(){g(e);let n=l();return f(n.refreshTests())})("keydown",function(){g(e);let n=l();return f(n.refreshTests())}),u()()()}if(o&2){let e=l();h(6),z(e.errorMessage()),h(),_("title","Try Again")("icon","search")}}function Zn(o,t){if(o&1){let e=S();p(0,"div",1)(1,"div",15)(2,"h2",12),y(3,"No Test History"),u(),p(4,"p",16),y(5),u(),p(6,"p",13),y(7,"Run a new test to see it appear here."),u(),p(8,"app-start-button",17),C("testStarted",function(){g(e);let n=l();return f(n.onTestStarted())})("testStartFailed",function(n){g(e);let r=l();return f(r.onTestStartFailed(n))}),u()()()}if(o&2){let e=l();h(5),oe(" There are no tests recorded for ",e.configName()," yet. "),h(3),_("config",e.config())}}var ue=class o{appRouter=d(Re);_testService=d(se);_logService=d(W);_eventService=d(ae);_columnsService=d(Oe);_selectionService=d(Me);_deleteService=d(Fe);config=E.required();testHistoryUpdate=R();_tests=w([]);_error=w(null);_latestMetrics=w(null);configName=P(()=>this.config()?.name||"[Deleted Configuration]");showDeleteModal=w(!1);testToDelete=w(null);showColumnSelector=w(!1);displayedTests=P(()=>{let t=this._tests(),e=this.currentSort();return e?this._sortTests(t,e):t});hasError=P(()=>this._error()!==null);errorMessage=P(()=>this._error());hasTests=P(()=>this._tests().length>0);pageTitle=P(()=>`Test History - ${this.configName()}`);visibleColumns=this._columnsService.visibleColumns;columnGroups=this._columnsService.columnGroups;currentSort=this._columnsService.currentSort;selectedTests=this._selectionService.selectedTestsSet;selectedTestsCount=P(()=>this._selectionService.getSelectedCount());isBulkDelete=P(()=>this._selectionService.getSelectedCount()>1);isAllSelected=P(()=>{let t=this._tests().map(e=>e.id);return this._selectionService.isAllSelected(t)});isSomeSelected=P(()=>this._selectionService.isSomeSelected());hasRunningTestsSelected=P(()=>this._selectionService.hasRunningTestsSelected(this._tests()));_metricsSubscription;_testEventsSubscription;ngOnInit(){this._subscribeToMetrics(),this._subscribeToTestEvents()}ngOnChanges(t){t.config?.currentValue&&this.loadTests()}async loadTests(){try{this._error.set(null);let t=await this._testService.getTestsByConfigId(this.config().id);this._tests.set(t),this.testHistoryUpdate.emit(t.length>0)}catch(t){this._error.set(t instanceof Error?t.message:"Failed to load tests"),this._tests.set([]),this.testHistoryUpdate.emit(!1)}}async refreshTests(){this._error.set(null),await this.loadTests()}onTestStarted(){this.refreshTests()}onTestStartFailed(t){this._logService.error("Failed to start test:",t)}toggleColumn(t){this._columnsService.toggleColumn(t)}resetColumns(){this._columnsService.resetColumns()}onColumnReorder(t){this._columnsService.reorderColumn(t.draggedKey,t.targetKey)}onColumnSort(t){this._columnsService.toggleSort(t)}toggleColumnSelector(){this.showColumnSelector.update(t=>!t)}closeColumnSelector(){this.showColumnSelector.set(!1)}toggleTestSelection(t,e){this._selectionService.toggleTestSelection(t,e)}toggleAllTests(t){let e=this._tests().map(i=>i.id);this._selectionService.toggleAllTests(e,t)}async deleteTest(t,e){this.showDeleteConfirm(t,e)}showDeleteConfirm(t,e){e.stopPropagation(),t?this.testToDelete.set(t):this.testToDelete.set(null),this.showDeleteModal.set(!0)}cancelDelete(){this.showDeleteModal.set(!1),this.testToDelete.set(null),this._selectionService.clearSelection()}async deleteTestConfirmed(){this.showDeleteModal.set(!1),this._error.set(null),await this.deleteSelectedTests()}async deleteSelectedTests(){let t=Array.from(this._selectionService.getSelectedIds());if(t.length===0)return;let e=await this._deleteService.deleteTestsWithLoading(t);this._handleDeleteResult(e,t)}_handleDeleteResult(t,e){if(t.deletedCount>0){this._tests.update(n=>n.filter(r=>!e.includes(r.id)));let i=this._tests();this.testHistoryUpdate.emit(i.length>0)}t.failedCount>0&&this._error.set(t.errors.join(", ")||`Failed to delete ${t.failedCount} test(s)`),this._selectionService.clearSelection(),this.testToDelete.set(null)}_subscribeToMetrics(){this._metricsSubscription=this._eventService.getMetricsStream().subscribe({error:t=>{this._logService.error("Metrics stream error:",t)},next:({testSummary:t})=>{this._latestMetrics.set(t),this._updateRunningTest(t)}})}_subscribeToTestEvents(){this._testEventsSubscription=this._eventService.getTestEventsStream().subscribe({error:t=>{this._logService.error("Test events stream error:",t)},next:t=>{t.configId===this.config().id&&this._handleTestEvent(t)}})}async _handleTestEvent(t){(t.status==="completed"||t.status==="failed"||t.status==="cancelled")&&await this._refreshTest(t.testId)}async _refreshTest(t){try{let e=await this._testService.getTestById(t);this._tests.update(i=>{let n=i.findIndex(r=>r.id===t);if(n!==-1){let r=[...i];return r[n]=e,r}return i})}catch(e){this._logService.error(`Failed to refresh test ${t}:`,e)}}_updateRunningTest(t){this._tests.update(e=>{let i=e.findIndex(s=>s.status==="running");if(i===-1)return e;let n=$({},e[i]);n.summary=t;let r=[...e];return r[i]=n,r})}ngOnDestroy(){this._metricsSubscription?.unsubscribe(),this._testEventsSubscription?.unsubscribe()}_sortTests(t,e){let i=[...t],{columnKey:n,direction:r}=e;return i.sort((s,a)=>{let c=this._extractSortValue(s,n),m=this._extractSortValue(a,n),v=0;return typeof c=="number"&&typeof m=="number"?v=c-m:v=String(c).localeCompare(String(m)),r==="asc"?v:-v}),i}_extractSortValue(t,e){let i=t.summary;switch(e){case"startTime":return i?.global.epochStartedAt||t.epochCreatedAt||0;case"endTime":return i?.global.epochEndedAt||0;case"duration":return this._extractDurationValue(i);case"totalRequests":return i?.global.totalRequests||0;case"errorRate":return this._extractErrorRateValue(t,i);case"successfulRequests":return i?.global.successfulRequests||0;case"failedRequests":return i?.global.failedRequests||0;case"p50LatencyMs":return i?.global.p50LatencyMs||0;case"p95LatencyMs":return i?.global.p95LatencyMs||0;case"p99LatencyMs":return i?.global.p99LatencyMs||0;case"minLatencyMs":return i?.global.minLatencyMs||0;case"maxLatencyMs":return i?.global.maxLatencyMs||0;case"id":return t.id;case"tressiVersion":return i?.tressiVersion||"";default:return""}}_extractDurationValue(t){return t?.global.finalDurationSec?t.global.finalDurationSec:t?.global.epochEndedAt&&t?.global.epochStartedAt?(t.global.epochEndedAt-t.global.epochStartedAt)/1e3:0}_extractErrorRateValue(t,e){return e?e.global.failedRequests/e.global.totalRequests:t.status==="failed"?1:0}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=L({type:o,selectors:[["app-test-list"]],inputs:{config:[1,"config"]},outputs:{testHistoryUpdate:"testHistoryUpdate"},features:[pe],decls:4,vars:7,consts:[[1,"flex","min-h-100","items-center","justify-center","p-8"],[1,"border-base-content/10","mx-auto","rounded-xl","border-2","p-8"],[3,"confirmed","closed","isOpen","bulkCount","id","itemLabel"],[1,"mb-4","flex","items-center","justify-between"],[1,"flex","items-center","gap-4"],[1,"text-base-content","text-xl","font-semibold"],[1,"mr-2","ml-auto","flex","items-center"],[3,"toggleColumn","resetColumns","toggleSelector","closeSelector","columnGroups","showColumnSelector"],[3,"viewTest","toggleSelection","toggleAllSelection","columnReorder","columnSort","tests","columns","selectedTests","isAllSelected","isSomeSelected","currentSort"],[3,"click","onKeyDown","disabled","color","title","icon"],[1,"max-w-md","text-center"],["name","warning",1,"text-warning","mb-4"],[1,"text-base-content","mb-2","text-xl","font-semibold"],[1,"text-base-content/70","mb-4"],[3,"click","keydown","title","icon"],[1,"text-center"],[1,"text-base-content/70","mb-2"],[3,"testStarted","testStartFailed","config"]],template:function(e,i){if(e&1&&(D(0,Kn,7,10),D(1,qn,8,3,"div",0),D(2,Zn,9,2,"div",1),p(3,"app-delete-confirmation-modal",2),C("confirmed",function(){return i.deleteTestConfirmed()})("closed",function(){return i.cancelDelete()}),u()),e&2){let n;x(!i.hasError()&&i.hasTests()?0:-1),h(),x(i.hasError()?1:-1),h(),x(!i.hasError()&&!i.hasTests()?2:-1),h(),_("isOpen",i.showDeleteModal())("bulkCount",i.isBulkDelete()?i.selectedTestsCount():null)("id",((n=i.testToDelete())==null?null:n.id)||"")("itemLabel",i.isBulkDelete()?"Tests":"Test")}},dependencies:[Bt,ke,je,Ie,Kt,le,J],styles:[`@layer properties;@supports (color: color-mix(in lab,red,red)){:is()   .cdk-drag-placeholder[_ngcontent-%COMP%]{background-color:color-mix(in oklab,var(--color-primary) 20%,transparent)}}@layer base{:where([_ngcontent-%COMP%]:root), [_ngcontent-%COMP%]:root:has(input.theme-controller[value=light]:checked), [data-theme=light][_ngcontent-%COMP%]{color-scheme:light;--color-base-100: oklch(100% 0 0);--color-base-200: oklch(98% 0 0);--color-base-300: oklch(95% 0 0);--color-base-content: oklch(21% .006 285.885);--color-primary: oklch(45% .24 277.023);--color-primary-content: oklch(93% .034 272.788);--color-secondary: oklch(65% .241 354.308);--color-secondary-content: oklch(94% .028 342.258);--color-accent: oklch(77% .152 181.912);--color-accent-content: oklch(38% .063 188.416);--color-neutral: oklch(14% .005 285.823);--color-neutral-content: oklch(92% .004 286.32);--color-info: oklch(74% .16 232.661);--color-info-content: oklch(29% .066 243.157);--color-success: oklch(76% .177 163.223);--color-success-content: oklch(37% .077 168.94);--color-warning: oklch(82% .189 84.429);--color-warning-content: oklch(41% .112 45.904);--color-error: oklch(71% .194 13.428);--color-error-content: oklch(27% .105 12.094);--radius-selector: .5rem;--radius-field: .25rem;--radius-box: .5rem;--size-selector: .25rem;--size-field: .25rem;--border: 1px;--depth: 1;--noise: 0}}@layer base{@media(prefers-color-scheme:dark){[_ngcontent-%COMP%]:root:not([data-theme]){color-scheme:dark;--color-base-100: oklch(25.33% .016 252.42);--color-base-200: oklch(23.26% .014 253.1);--color-base-300: oklch(21.15% .012 254.09);--color-base-content: oklch(97.807% .029 256.847);--color-primary: oklch(58% .233 277.117);--color-primary-content: oklch(96% .018 272.314);--color-secondary: oklch(65% .241 354.308);--color-secondary-content: oklch(94% .028 342.258);--color-accent: oklch(77% .152 181.912);--color-accent-content: oklch(38% .063 188.416);--color-neutral: oklch(14% .005 285.823);--color-neutral-content: oklch(92% .004 286.32);--color-info: oklch(74% .16 232.661);--color-info-content: oklch(29% .066 243.157);--color-success: oklch(76% .177 163.223);--color-success-content: oklch(37% .077 168.94);--color-warning: oklch(82% .189 84.429);--color-warning-content: oklch(41% .112 45.904);--color-error: oklch(71% .194 13.428);--color-error-content: oklch(27% .105 12.094);--radius-selector: .5rem;--radius-field: .25rem;--radius-box: .5rem;--size-selector: .25rem;--size-field: .25rem;--border: 1px;--depth: 1;--noise: 0}}}@layer base{[_ngcontent-%COMP%]:root:has(input.theme-controller[value=light]:checked), [data-theme=light][_ngcontent-%COMP%]{color-scheme:light;--color-base-100: oklch(100% 0 0);--color-base-200: oklch(98% 0 0);--color-base-300: oklch(95% 0 0);--color-base-content: oklch(21% .006 285.885);--color-primary: oklch(45% .24 277.023);--color-primary-content: oklch(93% .034 272.788);--color-secondary: oklch(65% .241 354.308);--color-secondary-content: oklch(94% .028 342.258);--color-accent: oklch(77% .152 181.912);--color-accent-content: oklch(38% .063 188.416);--color-neutral: oklch(14% .005 285.823);--color-neutral-content: oklch(92% .004 286.32);--color-info: oklch(74% .16 232.661);--color-info-content: oklch(29% .066 243.157);--color-success: oklch(76% .177 163.223);--color-success-content: oklch(37% .077 168.94);--color-warning: oklch(82% .189 84.429);--color-warning-content: oklch(41% .112 45.904);--color-error: oklch(71% .194 13.428);--color-error-content: oklch(27% .105 12.094);--radius-selector: .5rem;--radius-field: .25rem;--radius-box: .5rem;--size-selector: .25rem;--size-field: .25rem;--border: 1px;--depth: 1;--noise: 0}}@layer base{[_ngcontent-%COMP%]:root:has(input.theme-controller[value=dark]:checked), [data-theme=dark][_ngcontent-%COMP%]{color-scheme:dark;--color-base-100: oklch(25.33% .016 252.42);--color-base-200: oklch(23.26% .014 253.1);--color-base-300: oklch(21.15% .012 254.09);--color-base-content: oklch(97.807% .029 256.847);--color-primary: oklch(58% .233 277.117);--color-primary-content: oklch(96% .018 272.314);--color-secondary: oklch(65% .241 354.308);--color-secondary-content: oklch(94% .028 342.258);--color-accent: oklch(77% .152 181.912);--color-accent-content: oklch(38% .063 188.416);--color-neutral: oklch(14% .005 285.823);--color-neutral-content: oklch(92% .004 286.32);--color-info: oklch(74% .16 232.661);--color-info-content: oklch(29% .066 243.157);--color-success: oklch(76% .177 163.223);--color-success-content: oklch(37% .077 168.94);--color-warning: oklch(82% .189 84.429);--color-warning-content: oklch(41% .112 45.904);--color-error: oklch(71% .194 13.428);--color-error-content: oklch(27% .105 12.094);--radius-selector: .5rem;--radius-field: .25rem;--radius-box: .5rem;--size-selector: .25rem;--size-field: .25rem;--border: 1px;--depth: 1;--noise: 0}}@layer base{[_ngcontent-%COMP%]:root{--fx-noise: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.34' numOctaves='4' stitchTiles='stitch'%3E%3C/feTurbulence%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23a)' opacity='0.2'%3E%3C/rect%3E%3C/svg%3E")}}@layer base{[_ngcontent-%COMP%]:root{scrollbar-color:currentColor #0000}@supports (color: color-mix(in lab,red,red)){[_ngcontent-%COMP%]:root{scrollbar-color:color-mix(in oklch,currentColor 35%,#0000) #0000}}}@layer base{@property --radialprogress{syntax: "<percentage>"; inherits: true; initial-value: 0%;}}@layer base{[_ngcontent-%COMP%]:root:not(span){overflow:var(--page-overflow)}}@layer base{[_ngcontent-%COMP%]:root{background:var(--page-scroll-bg, var(--root-bg));--page-scroll-bg-on: linear-gradient(var(--root-bg, #0000), var(--root-bg, #0000)) var(--root-bg, #0000);--page-scroll-transition-on: background-color .3s ease-out;transition:var(--page-scroll-transition);scrollbar-gutter:var(--page-scroll-gutter, unset);scrollbar-gutter:if(style(--page-has-scroll: 1): var(--page-scroll-gutter, unset) ; else: unset)}@supports (color: color-mix(in lab,red,red)){[_ngcontent-%COMP%]:root{--page-scroll-bg-on: linear-gradient(var(--root-bg, #0000), var(--root-bg, #0000)) color-mix(in srgb, var(--root-bg, #0000), oklch(0% 0 0) calc(var(--page-has-backdrop, 0) * 40%))}}@keyframes set-page-has-scroll{0%,to{--page-has-scroll: 1}}}@layer base{[_ngcontent-%COMP%]:root, [data-theme][_ngcontent-%COMP%]{background:var(--page-scroll-bg, var(--root-bg));color:var(--color-base-content)}:where([_ngcontent-%COMP%]:root, [data-theme][_ngcontent-%COMP%]){--root-bg: var(--color-base-100)}}@keyframes _ngcontent-%COMP%_rating{0%,40%{scale:1.1;filter:brightness(1.05) contrast(1.05)}}@keyframes _ngcontent-%COMP%_dropdown{0%{opacity:0}}@keyframes _ngcontent-%COMP%_radio{0%{padding:5px}50%{padding:3px}}@keyframes _ngcontent-%COMP%_toast{0%{scale:.9;opacity:0}to{scale:1;opacity:1}}@keyframes _ngcontent-%COMP%_rotator{89.9999%,to{--first-item-position: 0 0%}90%,99.9999%{--first-item-position: 0 calc(var(--items) * 100%)}to{translate:0 -100%}}@keyframes _ngcontent-%COMP%_skeleton{0%{background-position:150%}to{background-position:-50%}}@keyframes _ngcontent-%COMP%_menu{0%{opacity:0}}@keyframes _ngcontent-%COMP%_progress{50%{background-position-x:-115%}}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-ease{syntax: "*"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*[_ngcontent-%COMP%], [_ngcontent-%COMP%]:before, [_ngcontent-%COMP%]:after, [_ngcontent-%COMP%]::backdrop{--tw-font-weight: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-border-style: solid;--tw-duration: initial;--tw-ease: initial}}}
`]})};var Yn=(o,t)=>t.id;function Xn(o,t){if(o&1){let e=S();p(0,"app-start-button",7),C("testStarted",function(){g(e);let n=l();return f(n.onTestStarted())})("testStartFailed",function(n){g(e);let r=l();return f(r.onTestStartFailed(n))}),u()}if(o&2){let e=l();_("config",e.selectedConfig())}}function Qn(o,t){if(o&1){let e=S();p(0,"li")(1,"input",8),C("change",function(){let n=g(e).$implicit,r=l();return f(r.onConfigSelect(n.id))}),u()()}if(o&2){let e=t.$implicit,i=l();h(),_("value",e.id)("checked",i.selectedConfigId()===e.id),De("aria-label",e.name)}}function Jn(o,t){if(o&1){let e=S();p(0,"div",6)(1,"app-test-list",9),C("testHistoryUpdate",function(n){g(e);let r=l();return f(r.onTestHistoryUpdate(n))}),u()()}if(o&2){let e=l();h(),_("config",e.selectedConfig())}}var Ni=class o{appRouter=d(Re);_logService=d(W);_localStorageService=d(Te);_eventService=d(ae);configId=E();configs=E.required();selectedConfig=w(null);selectedConfigId=P(()=>{let t=this.selectedConfig();return!t||"error"in t?"":t.id});testListComponent=Vt(ue);hasTestHistory=w(!1);isTestRunning=w(!1);_destroy$=new b;constructor(){Ye(()=>{let t=this.configId();t&&t!==this.selectedConfigId()&&this.onConfigSelect(t)})}ngOnInit(){this._initializeFromInputs(),this._subscribeToTestEvents()}ngOnDestroy(){this._destroy$.next(),this._destroy$.complete()}_initializeFromInputs(){let t=this.configs();if(t.length===0){this.appRouter.toWelcome();return}let e=this.configId(),i=this._localStorageService.preferences().lastSelectedConfig;if(e){let n=t.find(r=>r.id===e);n?this.onConfigSelect(n.id):this._selectFallbackConfig(t,i)}else this._selectFallbackConfig(t,i)}_selectFallbackConfig(t,e){if(e){let n=t.find(r=>r.id===e.id);if(n){this.onConfigSelect(n.id);return}}let i=t[0];this.onConfigSelect(i.id)}onConfigSelect(t){let e=this.configs().find(i=>i.id===t);e&&(this.selectedConfig.set(e),this._localStorageService.savePreferences(ee($({},this._localStorageService.preferences()),{lastSelectedConfig:e})),this.appRouter.updateDashboardUrl(t))}onConfigSelectEvent(t){let i=t.target.value;i?this.onConfigSelect(i):this.selectedConfig.set(null)}onTestStarted(){let t=this.testListComponent();t&&t.refreshTests()}onTestStartFailed(t){this._logService.error("Failed to start test:",t)}onTestHistoryUpdate(t){this.hasTestHistory.set(t)}_subscribeToTestEvents(){this._eventService.getTestEventsStream().pipe(U(this._destroy$)).subscribe({error:t=>{this._logService.error("Failed to handle test event:",t)},next:t=>{t.status==="running"?this.isTestRunning.set(!0):(t.status==="completed"||t.status==="failed"||t.status==="cancelled")&&this.isTestRunning.set(!1)}})}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=L({type:o,selectors:[["app-dashboard"]],viewQuery:function(e,i){e&1&&Mt(i.testListComponent,ue,5),e&2&&Lt()},inputs:{configId:[1,"configId"],configs:[1,"configs"]},decls:10,vars:9,consts:[[1,"p-12"],[3,"config"],[1,"dropdown","dropdown-center"],[3,"title","tabindex","color","icon"],[1,"dropdown-content","bg-base-200","rounded-box","z-9999","mt-2","max-h-96","w-52","overflow-y-auto","p-2","shadow-2xl"],[3,"click","onKeyDown","title","color","icon"],[1,"mt-8","px-8"],[3,"testStarted","testStartFailed","config"],["type","radio","name","config-dropdown",1,"theme-controller","btn","btn-sm","btn-block","btn-ghost","w-full","justify-start",3,"change","value","checked"],[3,"testHistoryUpdate","config"]],template:function(e,i){e&1&&(p(0,"div",0)(1,"app-header"),D(2,Xn,1,1,"app-start-button",1),p(3,"div",2),k(4,"app-button",3),p(5,"menu",4),V(6,Qn,2,3,"li",null,Yn),u()(),p(8,"app-button",5),C("click",function(){return i.appRouter.toConfigs()})("onKeyDown",function(){return i.appRouter.toConfigs()}),u()(),D(9,Jn,2,1,"div",6),u()),e&2&&(h(2),x(i.hasTestHistory()||!i.selectedConfigId()?2:-1),h(2),_("title","Select Config")("tabindex",0)("color","secondary")("icon","text_snippet"),h(2),N(i.configs()),h(2),_("title","View Configs")("color","info")("icon","sdk"),h(),x(i.selectedConfig()?9:-1))},dependencies:[qt,ue,le,J],encapsulation:2})};export{Ni as DashboardComponent};