@ngocsangairvds/vsaf 5.4.6 → 5.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/package.json +1 -1
  2. package/packages/cli/dist/commands/run.d.ts +2 -0
  3. package/packages/cli/dist/commands/run.d.ts.map +1 -1
  4. package/packages/cli/dist/commands/run.js +7 -3
  5. package/packages/cli/dist/commands/run.js.map +1 -1
  6. package/packages/cli/dist/server/app.d.ts.map +1 -1
  7. package/packages/cli/dist/server/app.js +2 -0
  8. package/packages/cli/dist/server/app.js.map +1 -1
  9. package/packages/cli/dist/server/routes/config.d.ts +6 -0
  10. package/packages/cli/dist/server/routes/config.d.ts.map +1 -0
  11. package/packages/cli/dist/server/routes/config.js +64 -0
  12. package/packages/cli/dist/server/routes/config.js.map +1 -0
  13. package/packages/cli/dist/server/services/execution-manager.d.ts.map +1 -1
  14. package/packages/cli/dist/server/services/execution-manager.js +10 -6
  15. package/packages/cli/dist/server/services/execution-manager.js.map +1 -1
  16. package/packages/core/dist/config/config-loader.d.ts +4 -0
  17. package/packages/core/dist/config/config-loader.d.ts.map +1 -1
  18. package/packages/core/dist/config/config-loader.js +5 -0
  19. package/packages/core/dist/config/config-loader.js.map +1 -1
  20. package/packages/core/dist/engine/dag-executor.d.ts +4 -0
  21. package/packages/core/dist/engine/dag-executor.d.ts.map +1 -1
  22. package/packages/core/dist/engine/dag-executor.js +7 -2
  23. package/packages/core/dist/engine/dag-executor.js.map +1 -1
  24. package/packages/core/dist/engine/dag-parser.d.ts.map +1 -1
  25. package/packages/core/dist/engine/dag-parser.js +1 -0
  26. package/packages/core/dist/engine/dag-parser.js.map +1 -1
  27. package/packages/core/dist/providers/default-adapters.d.ts.map +1 -1
  28. package/packages/core/dist/providers/default-adapters.js +4 -0
  29. package/packages/core/dist/providers/default-adapters.js.map +1 -1
  30. package/packages/core/dist/schema/workflow-schema.d.ts +4 -0
  31. package/packages/core/dist/schema/workflow-schema.d.ts.map +1 -1
  32. package/packages/core/dist/schema/workflow-schema.js +1 -0
  33. package/packages/core/dist/schema/workflow-schema.js.map +1 -1
  34. package/packages/core/dist/types/dag.d.ts +2 -0
  35. package/packages/core/dist/types/dag.d.ts.map +1 -1
  36. package/packages/core/dist/types/provider.d.ts +2 -0
  37. package/packages/core/dist/types/provider.d.ts.map +1 -1
  38. package/packages/core/dist/types/workflow.d.ts +2 -0
  39. package/packages/core/dist/types/workflow.d.ts.map +1 -1
  40. package/packages/web/dist/web/3rdpartylicenses.txt +52 -52
  41. package/packages/web/dist/web/browser/chunk-3LPWUDNW.js +1 -0
  42. package/packages/web/dist/web/browser/chunk-4LHJGOIU.js +1 -0
  43. package/packages/web/dist/web/browser/chunk-FQUOTTEA.js +4 -0
  44. package/packages/web/dist/web/browser/chunk-FWLQWWZ3.js +1 -0
  45. package/packages/web/dist/web/browser/chunk-K4VRVZWF.js +1 -0
  46. package/packages/web/dist/web/browser/chunk-OBMUVQWL.js +1 -0
  47. package/packages/web/dist/web/browser/chunk-UJHVWNPU.js +1 -0
  48. package/packages/web/dist/web/browser/chunk-UXRT7NQK.js +1 -0
  49. package/packages/web/dist/web/browser/chunk-VJ3UNUDS.js +1 -0
  50. package/packages/web/dist/web/browser/chunk-W7ZKECPT.js +5 -0
  51. package/packages/web/dist/web/browser/index.html +1 -1
  52. package/packages/web/dist/web/browser/main-7FONYLE6.js +1 -0
  53. package/workflows/sdlc/sdlc-build-headless.yaml +7 -2
  54. package/packages/web/dist/web/browser/chunk-2JHYGCCN.js +0 -1
  55. package/packages/web/dist/web/browser/chunk-BMQT4ZPK.js +0 -1
  56. package/packages/web/dist/web/browser/chunk-GWHJRWJM.js +0 -1
  57. package/packages/web/dist/web/browser/chunk-OZ6BRCXC.js +0 -1
  58. package/packages/web/dist/web/browser/chunk-Q7N6DAKT.js +0 -1
  59. package/packages/web/dist/web/browser/chunk-SEBU2SK7.js +0 -1
  60. package/packages/web/dist/web/browser/chunk-SOS4TH5D.js +0 -4
  61. package/packages/web/dist/web/browser/chunk-WSAVMPNK.js +0 -5
  62. package/packages/web/dist/web/browser/main-UPZIVGM6.js +0 -1
@@ -0,0 +1 @@
1
+ import{b as K,d as Q,e as U}from"./chunk-FWLQWWZ3.js";import{a as X,b as Z,e as ee,g as te,h as ne,i as ie,j as oe,k as re}from"./chunk-K4VRVZWF.js";import{$ as k,Ba as w,Fa as f,Ib as q,Jb as G,Ka as y,La as F,Lb as H,Ma as L,Mb as J,Na as A,O as C,Oa as S,Pa as E,Qa as s,Ra as n,Sa as t,T as g,Ta as B,U as x,Ua as j,Va as $,Xa as b,Ya as _,Za as p,db as v,fb as i,gb as c,hb as u,ib as Y,jb as h,k as N,kb as M,lb as P,ob as I,pb as D,qa as o,qb as R,u as V,w as z}from"./chunk-W7ZKECPT.js";var me=(r,a)=>a.name;function ge(r,a){if(r&1&&(n(0,"option",9),i(1),t()),r&2){let e=a.$implicit;s("value",e.name)("disabled",!e.available),o(),Y(" ",e.name,"",e.available?"":" \u2014 not available on this machine"," ")}}function xe(r,a){if(r&1&&(n(0,"option",10),i(1),t()),r&2){let e=a.$implicit;s("value",e),o(),c(e)}}function _e(r,a){if(r&1){let e=b();n(0,"div",1),_("click",function(){g(e);let l=p();return x(l.close())}),n(1,"div",2),_("click",function(l){return l.stopPropagation()}),n(2,"h3",3),i(3),t(),n(4,"label",4),i(5,"Arguments"),t(),n(6,"input",5),P("ngModelChange",function(l){g(e);let m=p();return M(m.args,l)||(m.args=l),x(l)}),_("keydown.enter",function(){g(e);let l=p();return x(l.submit())}),t(),n(7,"div",6)(8,"div")(9,"label",4),i(10,"Provider"),t(),n(11,"select",7),P("ngModelChange",function(l){g(e);let m=p();return M(m.provider,l)||(m.provider=l),x(l)}),_("ngModelChange",function(){g(e);let l=p();return x(l.onProviderChange())}),n(12,"option",8),i(13,"(workflow default)"),t(),S(14,ge,2,4,"option",9,me),t()(),n(16,"div")(17,"label",4),i(18,"Model"),t(),n(19,"select",7),P("ngModelChange",function(l){g(e);let m=p();return M(m.model,l)||(m.model=l),x(l)}),n(20,"option",8),i(21,"(workflow default)"),t(),S(22,xe,2,2,"option",10,A),t()()(),n(24,"div",11)(25,"button",12),_("click",function(){g(e);let l=p();return x(l.close())}),i(26,"Cancel"),t(),n(27,"button",13),_("click",function(){g(e);let l=p();return x(l.submit())}),i(28,"Start \u25B6"),t()()()()}if(r&2){let e=p();o(3),u("Run ",e.workflowName),o(3),h("ngModel",e.args),o(5),h("ngModel",e.provider),o(3),E(e.providers),o(5),h("ngModel",e.model),o(3),E(e.modelOptions)}}var O=class r{visible=!1;workflowName="";providers=[];run=new k;closed=new k;args="";provider="";model="";get modelOptions(){return this.provider?this.providers.find(a=>a.name===this.provider)?.defaultModels??[]:[...new Set(this.providers.flatMap(a=>a.defaultModels))]}onProviderChange(){this.model&&!this.modelOptions.includes(this.model)&&(this.model="")}submit(){this.run.emit({args:this.args,provider:this.provider||void 0,model:this.model||void 0}),this.reset()}close(){this.visible=!1,this.reset(),this.closed.emit()}reset(){this.args="",this.provider="",this.model=""}static \u0275fac=function(e){return new(e||r)};static \u0275cmp=w({type:r,selectors:[["app-run-dialog"]],inputs:{visible:"visible",workflowName:"workflowName",providers:"providers"},outputs:{run:"run",closed:"closed"},decls:1,vars:1,consts:[[1,"fixed","inset-0","bg-black/60","flex","items-center","justify-center","z-50"],[1,"fixed","inset-0","bg-black/60","flex","items-center","justify-center","z-50",3,"click"],[1,"bg-slate-800","rounded-lg","p-6","w-full","max-w-md","border","border-slate-700",3,"click"],[1,"text-lg","font-semibold","text-slate-100","mb-4"],[1,"block","text-sm","text-slate-400","mb-1"],["placeholder",'e.g. "fix #42"',1,"w-full","bg-slate-900","border","border-slate-600","rounded","px-3","py-2","text-slate-100","text-sm","focus:outline-none","focus:border-blue-500","mb-4",3,"ngModelChange","keydown.enter","ngModel"],[1,"grid","grid-cols-2","gap-3","mb-4"],[1,"w-full","bg-slate-900","border","border-slate-600","rounded","px-3","py-2","text-slate-100","text-sm","focus:outline-none","focus:border-blue-500",3,"ngModelChange","ngModel"],["value",""],[3,"value","disabled"],[3,"value"],[1,"flex","justify-end","gap-3"],[1,"px-4","py-2","text-sm","text-slate-400","hover:text-slate-200",3,"click"],[1,"px-4","py-2","text-sm","bg-blue-600","text-white","rounded","hover:bg-blue-500",3,"click"]],template:function(e,d){e&1&&F(0,_e,29,4,"div",0),e&2&&L(d.visible?0:-1)},dependencies:[oe,ne,ie,X,te,Z,ee],encapsulation:2})};function ae(r,a,e={}){let d=r.provider||a.provider||e.provider||"default",l=r.model||a.model||e.model||"";return{name:l?`${d}/${l}`:d,inherited:!r.provider&&!r.model}}var fe=r=>({edit:r}),ue=r=>["/runs",r];function be(r,a){if(r&1&&(n(0,"div",4),i(1),t()),r&2){let e=p();o(),c(e.error)}}function ve(r,a){r&1&&(n(0,"div",5),i(1,"Loading workflow definition..."),t())}function Ce(r,a){if(r&1&&(n(0,"span"),i(1),t()),r&2){let e=p(3);o(),c(e.runs.length)}}function we(r,a){if(r&1){let e=b();n(0,"button",24),_("click",function(){let l=g(e).$implicit,m=p(2);return x(m.tab=l.id)}),i(1),f(2,Ce,2,1,"span",3),t()}if(r&2){let e=a.$implicit,d=p(2);v("active",d.tab===e.id),o(),u(" ",e.label," "),o(),s("ngIf",e.id==="runs")}}function ye(r,a){if(r&1){let e=b();n(0,"button",30),_("click",function(){let l=g(e).$implicit,m=p(3);return x(m.selectedNode=l)}),n(1,"span",31),i(2),t(),n(3,"span",32),i(4),t(),n(5,"span",33)(6,"strong"),i(7),n(8,"span",34),i(9),t()(),n(10,"small"),i(11),t()(),n(12,"span",35),i(13),t()()}if(r&2){let e=a.$implicit,d=a.index,l=p(3);v("selected",(l.selectedNode==null?null:l.selectedNode.id)===e.id),o(2),c(d+1),o(),y("data-type",e.type),o(),c(l.typeLabel(e.type)),o(3),u("",e.id," "),o(),v("inherited",l.nodeProvider(e).inherited),o(),c(l.providerBadgeLabel(e)),o(2),c(e.content),o(2),c(e.dependsOn.length?"After "+e.dependsOn.join(", "):"Entry point")}}function he(r,a){if(r&1&&(n(0,"aside",36)(1,"div",37),i(2,"Node inspector"),t(),n(3,"h3"),i(4),t(),n(5,"span",38),i(6),t(),n(7,"dl")(8,"div")(9,"dt"),i(10,"Depends on"),t(),n(11,"dd"),i(12),t()(),n(13,"div")(14,"dt"),i(15,"Trigger"),t(),n(16,"dd"),i(17),t()(),n(18,"div")(19,"dt"),i(20,"Context"),t(),n(21,"dd"),i(22),t()(),n(23,"div")(24,"dt"),i(25,"Condition"),t(),n(26,"dd"),i(27),t()(),n(28,"div")(29,"dt"),i(30,"Provider"),t(),n(31,"dd"),i(32),t()(),n(33,"div")(34,"dt"),i(35,"Model"),t(),n(36,"dd"),i(37),t()()(),n(38,"label"),i(39,"Content"),t(),n(40,"pre"),i(41),t()()),r&2){let e=p(3);o(4),c(e.selectedNode.id),o(2),c(e.selectedNode.type),o(6),c(e.selectedNode.dependsOn.join(", ")||"None"),o(5),c(e.selectedNode.triggerRule),o(5),c(e.selectedNode.context),o(5),c(e.selectedNode.when||"Always"),o(5),c(e.selectedNode.provider||e.workflow.defaultProvider||"Default"),o(5),c(e.selectedNode.model||e.workflow.defaultModel||"Default"),o(4),c(e.selectedNode.content)}}function Me(r,a){if(r&1&&(n(0,"div",25)(1,"main",26)(2,"div",27)(3,"div")(4,"h2"),i(5,"Workflow steps"),t(),n(6,"p"),i(7,"Execution order and node configuration."),t()()(),f(8,ye,14,11,"button",28),t(),f(9,he,42,9,"aside",29),t()),r&2){let e=p(2);o(8),s("ngForOf",e.workflow.nodes),o(),s("ngIf",e.selectedNode)}}function Pe(r,a){if(r&1&&(n(0,"article")(1,"div")(2,"span",32),i(3),t(),n(4,"strong"),i(5),t()(),n(6,"span",34),i(7),t()()),r&2){let e=a.$implicit,d=p(4);o(2),y("data-type",e.type),o(),c(d.typeLabel(e.type)),o(2),c(e.id),o(),v("inherited",d.nodeProvider(e).inherited),o(),c(d.providerBadgeLabel(e))}}function Oe(r,a){if(r&1&&(n(0,"div",44)(1,"span",45),i(2),t(),f(3,Pe,8,6,"article",46),t()),r&2){let e=a.$implicit,d=a.index;o(2),u("Stage ",d+1),o(),s("ngForOf",e)}}function ke(r,a){if(r&1&&(n(0,"div",39)(1,"div",40)(2,"div")(3,"h2"),i(4,"DAG topology"),t(),n(5,"p"),i(6,"Dependencies flow from left to right."),t()(),n(7,"span"),i(8),t()(),n(9,"div",41)(10,"div",42),f(11,Oe,4,2,"div",43),t()()()),r&2){let e=p(2);o(8),u("",e.dagLayers.length," stages"),o(3),s("ngForOf",e.dagLayers)}}function Se(r,a){if(r&1){let e=b();n(0,"div",47)(1,"div",48)(2,"span"),i(3,"Read-only YAML definition"),t(),n(4,"button",24),_("click",function(){g(e);let l=p(2);return x(l.copyYaml())}),i(5),t()(),n(6,"pre"),i(7),t()()}if(r&2){let e=p(2);o(5),c(e.copied?"Copied":"Copy"),o(2),c(e.workflow.yaml)}}function Ee(r,a){r&1&&(n(0,"span",53),i(1,"history"),t())}function Ie(r,a){if(r&1&&(n(0,"a",54),i(1,"Open"),t()),r&2){let e=p().$implicit;s("routerLink",I(1,ue,e.runId))}}function De(r,a){if(r&1&&(n(0,"tr")(1,"td")(2,"code"),i(3),t()(),n(4,"td")(5,"span",50),i(6),t(),f(7,Ee,2,0,"span",51),t(),n(8,"td"),i(9),D(10,"date"),t(),n(11,"td"),i(12),D(13,"date"),t(),n(14,"td"),f(15,Ie,2,3,"a",52),t()()),r&2){let e=a.$implicit;o(3),c(e.runId),o(2),y("data-status",e.status),o(),c(e.status),o(),s("ngIf",e.source==="history"),o(2),c(R(10,7,e.startedAt,"medium")),o(3),c(e.completedAt?R(13,10,e.completedAt,"medium"):"In progress"),o(3),s("ngIf",e.source!=="history")}}function Re(r,a){r&1&&(n(0,"tr")(1,"td",55),i(2,"This workflow has not been run yet."),t()())}function We(r,a){if(r&1&&(n(0,"div",49)(1,"table")(2,"thead")(3,"tr")(4,"th"),i(5,"Run ID"),t(),n(6,"th"),i(7,"Status"),t(),n(8,"th"),i(9,"Started"),t(),n(10,"th"),i(11,"Completed"),t(),B(12,"th"),t()(),n(13,"tbody"),f(14,De,16,13,"tr",46)(15,Re,3,0,"tr",3),t()()()),r&2){let e=p(2);o(14),s("ngForOf",e.runs),o(),s("ngIf",!e.runs.length)}}function Te(r,a){if(r&1){let e=b();j(0),n(1,"nav",6)(2,"a",7),i(3,"Workflows"),t(),n(4,"span"),i(5,"/"),t(),n(6,"span"),i(7),t()(),n(8,"header",8)(9,"div",9),i(10,"Y"),t(),n(11,"div",10)(12,"span",11),i(13),t(),n(14,"h1"),i(15),t(),n(16,"p"),i(17),t()(),n(18,"div",12)(19,"a",13),i(20,"Edit"),t(),n(21,"button",14),_("click",function(){g(e);let l=p();return x(l.showRunDialog=!0)}),i(22,"Run workflow"),t()()(),n(23,"div",15)(24,"div")(25,"span"),i(26,"Nodes"),t(),n(27,"strong"),i(28),t()(),n(29,"div")(30,"span"),i(31,"Dependencies"),t(),n(32,"strong"),i(33),t()(),n(34,"div")(35,"span"),i(36,"Provider"),t(),n(37,"strong"),i(38),t()(),n(39,"div")(40,"span"),i(41,"Model"),t(),n(42,"strong"),i(43),t()(),n(44,"div")(45,"span"),i(46,"Runs"),t(),n(47,"strong"),i(48),t()()(),n(49,"div",16)(50,"span"),i(51,"Definition"),t(),n(52,"code"),i(53),t()(),n(54,"nav",17),f(55,we,3,4,"button",18),t(),f(56,Me,10,2,"div",19)(57,ke,12,2,"div",20)(58,Se,8,2,"div",21)(59,We,16,2,"div",22),n(60,"app-run-dialog",23),_("run",function(l){g(e);let m=p();return x(m.onStartRun(l))})("closed",function(){g(e);let l=p();return x(l.showRunDialog=!1)}),t(),$()}if(r&2){let e=p();o(7),c(e.workflow.id),o(6),c(e.workflow.id),o(2),c(e.workflow.name),o(2),c(e.workflow.description||"No description provided."),o(2),s("queryParams",I(19,fe,e.workflow.id)),o(9),c(e.workflow.nodeCount),o(5),c(e.dependencyCount),o(5),c(e.workflow.defaultProvider||"default"),o(5),c(e.workflow.defaultModel||"default"),o(5),c(e.runs.length),o(5),u(".vsaf/workflows/",e.workflow.file),o(2),s("ngForOf",e.tabs),o(),s("ngIf",e.tab==="overview"),o(),s("ngIf",e.tab==="dag"),o(),s("ngIf",e.tab==="yaml"),o(),s("ngIf",e.tab==="runs"),o(),s("visible",e.showRunDialog)("workflowName",e.workflow.id)("providers",e.providers)}}var le=class r{route=C(K);api=C(re);router=C(Q);workflow;runs=[];providers=[];selectedNode;tab="overview";showRunDialog=!1;loading=!0;error="";copied=!1;tabs=[{id:"overview",label:"Overview"},{id:"dag",label:"DAG"},{id:"yaml",label:"YAML"},{id:"runs",label:"Runs"}];ngOnInit(){let a=this.route.snapshot.queryParamMap.get("id");if(!a){this.loading=!1,this.error="Missing workflow id.";return}V({workflow:this.api.getWorkflow(a),runs:this.api.getRuns(),providers:this.api.getProviders().pipe(z(()=>N({providers:[]})))}).subscribe({next:e=>{this.workflow=e.workflow,this.selectedNode=e.workflow.nodes[0],this.runs=e.runs.filter(d=>d.workflow===a).reverse(),this.providers=e.providers.providers??[],this.loading=!1},error:e=>{this.loading=!1,this.error=e?.error?.error??"Failed to load workflow."}})}nodeProvider(a){return ae(a,{provider:this.workflow?.defaultProvider,model:this.workflow?.defaultModel})}providerBadgeLabel(a){let e=this.nodeProvider(a);return e.inherited?`\u2192 ${e.name}`:e.name}get dependencyCount(){return this.workflow?.nodes.reduce((a,e)=>a+e.dependsOn.length,0)??0}get dagLayers(){if(!this.workflow)return[];let a=new Map,e=(l,m=new Set)=>{if(a.has(l.id))return a.get(l.id);if(m.has(l.id)||!l.dependsOn.length)return 0;m.add(l.id);let W=1+Math.max(...l.dependsOn.map(de=>{let T=this.workflow.nodes.find(ce=>ce.id===de);return T?e(T,m):0}));return m.delete(l.id),a.set(l.id,W),W};for(let l of this.workflow.nodes)a.set(l.id,e(l));let d=[];for(let l of this.workflow.nodes)(d[a.get(l.id)??0]??=[]).push(l);return d}typeLabel(a){return a==="command"?"CMD":a==="prompt"?"AI":"SH"}onStartRun(a){this.showRunDialog=!1,this.api.startRun(this.workflow.id,a.args,{provider:a.provider,model:a.model}).subscribe(e=>this.router.navigate(["/runs",e.runId]))}copyYaml(){this.workflow&&navigator.clipboard.writeText(this.workflow.yaml).then(()=>{this.copied=!0,setTimeout(()=>this.copied=!1,1500)})}static \u0275fac=function(e){return new(e||r)};static \u0275cmp=w({type:r,selectors:[["app-workflow-detail"]],decls:4,vars:3,consts:[[1,"detail-page"],["class","state error",4,"ngIf"],["class","state",4,"ngIf"],[4,"ngIf"],[1,"state","error"],[1,"state"],[1,"breadcrumb"],["routerLink","/workflows"],[1,"hero"],[1,"workflow-icon"],[1,"hero-copy"],[1,"namespace"],[1,"hero-actions"],["routerLink","/workflows/builder",1,"button","secondary",3,"queryParams"],["type","button",1,"button","primary",3,"click"],[1,"stats"],[1,"file-strip"],["aria-label","Workflow detail sections",1,"tabs"],["type","button",3,"active","click",4,"ngFor","ngForOf"],["class","tab-content",4,"ngIf"],["class","dag-panel",4,"ngIf"],["class","yaml-panel",4,"ngIf"],["class","runs-panel",4,"ngIf"],[3,"run","closed","visible","workflowName","providers"],["type","button",3,"click"],[1,"tab-content"],[1,"node-list"],[1,"section-heading"],["type","button","class","node-row",3,"selected","click",4,"ngFor","ngForOf"],["class","inspector",4,"ngIf"],["type","button",1,"node-row",3,"click"],[1,"step-index"],[1,"type-icon"],[1,"node-main"],[1,"provider-badge"],[1,"dependency"],[1,"inspector"],[1,"inspector-title"],[1,"badge"],[1,"dag-panel"],[1,"dag-toolbar"],[1,"dag-scroll"],[1,"dag-canvas"],["class","dag-layer",4,"ngFor","ngForOf"],[1,"dag-layer"],[1,"layer-label"],[4,"ngFor","ngForOf"],[1,"yaml-panel"],[1,"yaml-toolbar"],[1,"runs-panel"],[1,"status"],["class","history-tag",4,"ngIf"],[3,"routerLink",4,"ngIf"],[1,"history-tag"],[3,"routerLink"],["colspan","5",1,"empty"]],template:function(e,d){e&1&&(n(0,"section",0),f(1,be,2,1,"div",1)(2,ve,2,0,"div",2)(3,Te,61,21,"ng-container",3),t()),e&2&&(o(),s("ngIf",d.error),o(),s("ngIf",d.loading),o(),s("ngIf",d.workflow))},dependencies:[J,q,G,U,O,H],styles:["[_nghost-%COMP%]{display:block;min-height:calc(100vh - 56px);background:#101114;color:#e7e7ea}.detail-page[_ngcontent-%COMP%]{max-width:1320px;margin:auto;padding:24px 28px 60px}.breadcrumb[_ngcontent-%COMP%]{display:flex;gap:7px;color:#737a87;font-size:12px;margin-bottom:18px}.breadcrumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#9ca3af;text-decoration:none}.hero[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:15px}.workflow-icon[_ngcontent-%COMP%]{display:grid;place-items:center;flex:0 0 46px;height:52px;border:1px solid #454957;border-radius:6px;color:#a5b4fc;font-weight:900}.hero-copy[_ngcontent-%COMP%]{min-width:0}.namespace[_ngcontent-%COMP%]{font:11px ui-monospace,monospace;color:#818cf8}.hero[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-size:26px;margin:4px 0}.hero[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#9ba1ad;margin:5px 0;line-height:1.5;max-width:800px}.hero-actions[_ngcontent-%COMP%]{display:flex;gap:8px;margin-left:auto}.button[_ngcontent-%COMP%]{padding:9px 13px;border-radius:5px;text-decoration:none;font:inherit;font-size:12px;font-weight:700;cursor:pointer}.button.secondary[_ngcontent-%COMP%]{border:1px solid #3b3e48;background:#1c1e24;color:#e5e7eb}.button.primary[_ngcontent-%COMP%]{border:1px solid #6366f1;background:#6366f1;color:#fff}.stats[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(5,1fr);border:1px solid #2d3038;border-radius:7px;margin-top:24px;background:#16171c}.stats[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{padding:13px 16px;border-right:1px solid #2d3038}.stats[_ngcontent-%COMP%] div[_ngcontent-%COMP%]:last-child{border:0}.stats[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .file-strip[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;color:#777e8b;font-size:10px;text-transform:uppercase;font-weight:700}.stats[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{display:block;margin-top:5px;font-size:14px}.file-strip[_ngcontent-%COMP%]{display:flex;align-items:center;gap:14px;padding:10px 14px;border:1px solid #2d3038;border-top:0;background:#131419}.file-strip[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{color:#aab0bb;font-size:11px}.tabs[_ngcontent-%COMP%]{display:flex;border-bottom:1px solid #2d3038;margin-top:24px}.tabs[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{border:0;background:transparent;color:#858c98;padding:10px 14px;font-weight:700;cursor:pointer}.tabs[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{color:#fff;box-shadow:inset 0 -2px #6366f1}.tabs[_ngcontent-%COMP%] button[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{background:#292c34;padding:1px 5px;border-radius:8px;font-size:10px}.tab-content[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;margin-top:18px}.section-heading[_ngcontent-%COMP%] h2[_ngcontent-%COMP%], .dag-toolbar[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:15px;margin:0}.section-heading[_ngcontent-%COMP%] p[_ngcontent-%COMP%], .dag-toolbar[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:12px;color:#7f8692;margin:4px 0 12px}.node-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:28px 38px minmax(180px,1fr) minmax(120px,.5fr);align-items:center;gap:11px;width:100%;border:1px solid #292c34;border-bottom:0;background:#16171c;color:#e5e7eb;padding:11px;text-align:left;cursor:pointer}.node-row[_ngcontent-%COMP%]:first-of-type{border-radius:6px 6px 0 0}.node-row[_ngcontent-%COMP%]:last-child{border-bottom:1px solid #292c34;border-radius:0 0 6px 6px}.node-row[_ngcontent-%COMP%]:hover, .node-row.selected[_ngcontent-%COMP%]{background:#1e2027;border-color:#494d5a}.step-index[_ngcontent-%COMP%]{color:#676e7a;font-size:11px;text-align:center}.type-icon[_ngcontent-%COMP%]{display:grid;place-items:center;width:34px;height:28px;border-radius:4px;background:#242630;color:#c4b5fd;font-size:9px;font-weight:900;text-transform:uppercase}.type-icon[data-type=bash][_ngcontent-%COMP%]{color:#fbbf24}.type-icon[data-type=command][_ngcontent-%COMP%]{color:#67e8f9}.node-main[_ngcontent-%COMP%]{min-width:0}.node-main[_ngcontent-%COMP%] strong[_ngcontent-%COMP%], .node-main[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{display:block}.node-main[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{color:#777e8b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:4px}.dependency[_ngcontent-%COMP%]{color:#858c98;font-size:11px;overflow-wrap:anywhere}.inspector[_ngcontent-%COMP%]{border:1px solid #2d3038;background:#16171c;border-radius:6px;padding:15px}.inspector-title[_ngcontent-%COMP%]{color:#777e8b;text-transform:uppercase;font-size:10px;font-weight:800}.inspector[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:8px 0;font-size:16px}.badge[_ngcontent-%COMP%]{display:inline-block;border:1px solid #4b4f5c;padding:2px 6px;border-radius:4px;font-size:10px;color:#a5b4fc}.inspector[_ngcontent-%COMP%] dl[_ngcontent-%COMP%]{margin:14px 0}.inspector[_ngcontent-%COMP%] dl[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid #282a31;font-size:11px}.inspector[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{color:#777e8b}.inspector[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;text-align:right;overflow-wrap:anywhere}.inspector[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-size:10px;color:#777e8b;text-transform:uppercase}.inspector[_ngcontent-%COMP%] pre[_ngcontent-%COMP%]{white-space:pre-wrap;overflow-wrap:anywhere;background:#0d0e11;padding:10px;border-radius:5px;font-size:11px;max-height:240px;overflow:auto}.dag-panel[_ngcontent-%COMP%], .yaml-panel[_ngcontent-%COMP%], .runs-panel[_ngcontent-%COMP%]{margin-top:18px;border:1px solid #2d3038;border-radius:7px;overflow:hidden}.dag-toolbar[_ngcontent-%COMP%], .yaml-toolbar[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #2d3038;background:#16171c}.dag-toolbar[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin-bottom:0}.dag-toolbar[_ngcontent-%COMP%] > span[_ngcontent-%COMP%], .yaml-toolbar[_ngcontent-%COMP%]{font-size:11px;color:#858c98}.dag-scroll[_ngcontent-%COMP%]{overflow-x:auto;background-color:var(--background)}.dag-canvas[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:20px;width:max-content;min-width:100%;box-sizing:border-box;padding:14px 16px;background-image:radial-gradient(#30333b 1px,transparent 1px);background-size:16px 16px}.dag-layer[_ngcontent-%COMP%]{display:flex;flex:0 0 auto;min-width:200px;flex-direction:column;gap:8px}.layer-label[_ngcontent-%COMP%]{font-size:10px;color:var(--text-tertiary);text-transform:uppercase}.dag-layer[_ngcontent-%COMP%] article[_ngcontent-%COMP%]{border:1px solid var(--border-bright);background:var(--surface);border-radius:6px;padding:8px 10px}.dag-layer[_ngcontent-%COMP%] article[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;min-width:0}.dag-layer[_ngcontent-%COMP%] article[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-size:12px;overflow-wrap:anywhere}.dag-layer[_ngcontent-%COMP%] article[_ngcontent-%COMP%] .provider-badge[_ngcontent-%COMP%]{margin:7px 0 0}.yaml-toolbar[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{border:1px solid #3a3d47;background:#22242b;color:#ddd;border-radius:4px;padding:5px 9px}.yaml-panel[_ngcontent-%COMP%] > pre[_ngcontent-%COMP%]{margin:0;padding:18px;min-height:420px;max-height:65vh;overflow:auto;background:#0d0e11;color:#cdd6f4;font:12px/1.6 ui-monospace,monospace;white-space:pre-wrap}.runs-panel[_ngcontent-%COMP%] table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;background:#16171c;font-size:12px}.runs-panel[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .runs-panel[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:12px;text-align:left;border-bottom:1px solid #292c34}.runs-panel[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{color:#777e8b;text-transform:uppercase;font-size:10px}.runs-panel[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#a5b4fc}.status[_ngcontent-%COMP%]{font-size:10px;text-transform:uppercase}.status[data-status=completed][_ngcontent-%COMP%]{color:#34d399}.status[data-status=failed][_ngcontent-%COMP%], .status[data-status=cancelled][_ngcontent-%COMP%]{color:#f87171}.status[data-status=running][_ngcontent-%COMP%]{color:#60a5fa}.provider-badge[_ngcontent-%COMP%]{display:inline-block;border:1px solid var(--border-bright);border-radius:4px;background:var(--surface-elevated);color:#c4b5fd;font:10px ui-monospace,monospace;padding:1px 6px;margin-left:8px;vertical-align:1px}.provider-badge.inherited[_ngcontent-%COMP%]{color:var(--text-tertiary);border-style:dashed;background:transparent}.history-tag[_ngcontent-%COMP%]{border:1px dashed var(--border-bright);color:var(--text-tertiary);padding:1px 5px;border-radius:4px;font-size:9px;text-transform:uppercase;margin-left:6px}.empty[_ngcontent-%COMP%], .state[_ngcontent-%COMP%]{padding:24px;text-align:center;color:#858c98}.state.error[_ngcontent-%COMP%]{color:#fca5a5}@media(max-width:900px){.detail-page[_ngcontent-%COMP%]{padding:18px 14px}.hero[_ngcontent-%COMP%]{flex-wrap:wrap}.hero-actions[_ngcontent-%COMP%]{width:100%;margin-left:61px}.stats[_ngcontent-%COMP%]{grid-template-columns:repeat(2,1fr)}.stats[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{border-bottom:1px solid #2d3038}.tab-content[_ngcontent-%COMP%]{grid-template-columns:1fr}.node-row[_ngcontent-%COMP%]{grid-template-columns:28px 38px 1fr}.dependency[_ngcontent-%COMP%]{grid-column:3}.inspector[_ngcontent-%COMP%]{position:static}}@media(max-width:600px){.stats[_ngcontent-%COMP%]{grid-template-columns:1fr}.hero-actions[_ngcontent-%COMP%]{margin-left:0}.tabs[_ngcontent-%COMP%]{overflow:auto}.node-row[_ngcontent-%COMP%]{grid-template-columns:28px 1fr}.type-icon[_ngcontent-%COMP%]{display:none}.node-main[_ngcontent-%COMP%], .dependency[_ngcontent-%COMP%]{grid-column:2}.dag-canvas[_ngcontent-%COMP%]{padding:18px}}"]})};export{le as WorkflowDetailComponent};
@@ -0,0 +1,4 @@
1
+ import{b as H,d as J,e as K}from"./chunk-FWLQWWZ3.js";import{a as U,b as X,e as Q,g as Z,h as ee,i as te,j as ne,k as oe}from"./chunk-K4VRVZWF.js";import{Ba as V,Fa as _,Ib as j,Jb as q,Ka as F,Mb as G,O as M,Qa as u,Ra as i,Sa as r,T as m,Ta as O,U as g,Ua as D,V as S,Va as $,W as I,Xa as C,Ya as f,Za as p,a as B,b as T,bb as z,cb as L,db as P,eb as R,fb as d,gb as w,hb as v,ib as N,jb as h,kb as x,lb as b,ob as Y,qa as s,rb as A}from"./chunk-W7ZKECPT.js";var le=l=>["/runs",l];function de(l,n){if(l&1){let e=C();i(0,"button",39),f("dragstart",function(o){let a=m(e).$implicit,c=p();return g(c.onPaletteDragStart(o,a.type))})("click",function(){let o=m(e).$implicit,a=p();return g(a.addNode(o.type))}),i(1,"span",40),d(2),r(),i(3,"span")(4,"strong"),d(5),r(),i(6,"small"),d(7),r()()()}if(l&2){let e=n.$implicit,t=p();s(2),w(t.iconFor(e.type)),s(3),w(e.label),s(2),w(e.description)}}function se(l,n){if(l&1){let e=C();i(0,"button",41),f("click",function(){let o=m(e).$implicit,a=p();return g(a.loadWorkflow(o.id))}),i(1,"span"),d(2),r(),i(3,"small"),d(4),r()()}if(l&2){let e=n.$implicit;s(2),w(e.name),s(2),v("",e.nodeCount," nodes")}}function ce(l,n){if(l&1&&(i(0,"div",42),d(1),r()),l&2){let e=p();P("error",e.saveState==="error"),s(),v(" ",e.statusMessage," ")}}function pe(l,n){l&1&&(i(0,"div",43)(1,"h2"),d(2,"Drop nodes here"),r(),i(3,"p"),d(4,"Build a DAG by adding Bash, Command, and Prompt nodes."),r()())}function me(l,n){if(l&1&&(S(),O(0,"line")),l&2){let e=n.$implicit;F("x1",e.x1)("y1",e.y1)("x2",e.x2)("y2",e.y2)}}function ge(l,n){if(l&1){let e=C();i(0,"button",44),f("click",function(){let o=m(e).$implicit,a=p();return g(a.selectNode(o))})("dragstart",function(o){let a=m(e).$implicit,c=p();return g(c.onNodeDragStart(o,a))}),i(1,"span",45),d(2),r(),i(3,"span",46)(4,"strong"),d(5),r(),i(6,"small"),d(7),r()()()}if(l&2){let e=n.$implicit,t=p();L("left",e.x,"px")("top",e.y,"px"),P("selected",(t.selectedNode==null?null:t.selectedNode.id)===e.id),s(2),w(t.iconFor(e.type)),s(3),w(e.id),s(2),N("",e.type," \xB7 ",e.dependsOn.length||0," deps")}}function ue(l,n){if(l&1&&(i(0,"option",67),d(1),r()),l&2){let e=n.$implicit;u("value",e.name)("disabled",!e.available),s(),N(" ",e.name,"",e.available?"":" \u2014 not available on this machine"," ")}}function fe(l,n){if(l&1&&O(0,"option",68),l&2){let e=n.$implicit;u("value",e)}}function _e(l,n){if(l&1){let e=C();i(0,"label",69)(1,"input",70),f("change",function(o){let a=m(e).$implicit,c=p(2);return g(c.toggleDependency(a.id,o))}),r(),i(2,"span"),d(3),r()()}if(l&2){let e=n.$implicit,t=p(2);s(),u("checked",t.selectedNode.dependsOn.includes(e.id)),s(2),w(e.id)}}function we(l,n){if(l&1){let e=C();D(0),i(1,"div",34),d(2,"Inspector"),r(),i(3,"label",47),d(4,"Node ID"),r(),i(5,"input",48),f("ngModelChange",function(o){m(e);let a=p();return g(a.renameSelectedNode(o))}),r(),i(6,"label",49),d(7,"Type"),r(),i(8,"select",50),b("ngModelChange",function(o){m(e);let a=p();return x(a.selectedNode.type,o)||(a.selectedNode.type=o),g(o)}),f("ngModelChange",function(){m(e);let o=p();return g(o.refreshYaml())}),i(9,"option",51),d(10,"bash"),r(),i(11,"option",52),d(12,"command"),r(),i(13,"option",53),d(14,"prompt"),r()(),i(15,"label",54),d(16,"Content"),r(),i(17,"textarea",55),b("ngModelChange",function(o){m(e);let a=p();return x(a.selectedNode.content,o)||(a.selectedNode.content=o),g(o)}),f("ngModelChange",function(){m(e);let o=p();return g(o.refreshYaml())}),r(),i(18,"label",56),d(19,"Provider"),r(),i(20,"select",57),b("ngModelChange",function(o){m(e);let a=p();return x(a.selectedNode.provider,o)||(a.selectedNode.provider=o),g(o)}),f("ngModelChange",function(){m(e);let o=p();return g(o.refreshYaml())}),i(21,"option",58),d(22,"(inherit workflow)"),r(),_(23,ue,2,4,"option",59),r(),i(24,"label",60),d(25,"Model"),r(),i(26,"input",61),b("ngModelChange",function(o){m(e);let a=p();return x(a.selectedNode.model,o)||(a.selectedNode.model=o),g(o)}),f("ngModelChange",function(){m(e);let o=p();return g(o.refreshYaml())}),r(),i(27,"datalist",62),_(28,fe,1,1,"option",63),r(),i(29,"label",64),d(30,"Depends on"),r(),_(31,_e,4,2,"label",65),i(32,"button",66),f("click",function(){m(e);let o=p();return g(o.deleteSelectedNode())}),d(33,"Delete Node"),r(),$()}if(l&2){let e=p();s(5),u("ngModel",e.selectedNode.id),s(3),h("ngModel",e.selectedNode.type),s(9),h("ngModel",e.selectedNode.content),s(3),h("ngModel",e.selectedNode.provider),s(3),u("ngForOf",e.providers),s(3),h("ngModel",e.selectedNode.model),s(2),u("ngForOf",e.modelSuggestions),s(3),u("ngForOf",e.dependencyCandidates)}}function he(l,n){l&1&&(i(0,"div",34),d(1,"Inspector"),r(),i(2,"p",71),d(3,"Select a node to edit its ID, type, command body, and dependencies."),r())}function xe(l,n){if(l&1&&(i(0,"a",72)(1,"span")(2,"strong"),d(3),r(),i(4,"small"),d(5),r()(),i(6,"em"),d(7),r()()),l&2){let e=n.$implicit,t=p();u("routerLink",Y(6,le,e.runId)),s(3),w(e.workflow),s(2),w(e.runId),s(),R(t.statusClass(e.status)),s(),w(e.status)}}function be(l,n){l&1&&(i(0,"p",71),d(1,"No runs yet."),r())}var ie=class l{api=M(oe);router=M(J);route=M(H);palette=[{type:"bash",label:"Bash",description:"Run a shell step"},{type:"command",label:"Command",description:"Use a .vsaf command"},{type:"prompt",label:"Prompt",description:"Call an AI provider"}];workflowName="new-workflow";workflowFolder="";description="Draft workflow";nodes=[];selectedNode;workflows=[];runs=[];providers=[];yamlPreview="";saveState="idle";statusMessage="";draggingType;draggingNodeId;ngOnInit(){this.workflowFolder=W(this.route.snapshot.queryParamMap.get("folder")??""),this.refreshData(),this.resetBuilder();let n=this.route.snapshot.queryParamMap.get("edit");n&&this.loadWorkflow(n)}refreshData(){this.api.getWorkflows().subscribe(n=>this.workflows=n),this.api.getRuns().subscribe(n=>this.runs=n.slice().reverse().slice(0,8)),this.api.getProviders().subscribe({next:n=>this.providers=n.providers??[],error:()=>this.providers=[]})}get modelSuggestions(){let n=this.selectedNode?.provider||re;return this.providers.find(e=>e.name===n)?.defaultModels??[]}resetBuilder(){this.workflowName="new-workflow",this.description="Draft workflow",this.nodes=[this.makeNode("bash",80,100,"setup"),this.makeNode("command",330,170,"review")],this.nodes[1].dependsOn=[this.nodes[0].id],this.selectedNode=this.nodes[0],this.setStatus(""),this.refreshYaml()}get workflowId(){let n=W(this.workflowFolder),e=y(this.workflowName);return n?`${n}/${e}`:e}onPaletteDragStart(n,e){this.draggingType=e,n.dataTransfer?.setData("application/x-vsaf-node-type",e),n.dataTransfer?.setData("text/plain",e)}onNodeDragStart(n,e){this.draggingNodeId=e.id,n.dataTransfer?.setData("application/x-vsaf-node-id",e.id)}onCanvasDragOver(n){n.preventDefault()}onCanvasDrop(n){n.preventDefault();let e=n.currentTarget.getBoundingClientRect(),t=Math.max(18,n.clientX-e.left-95),o=Math.max(18,n.clientY-e.top-24),a=n.dataTransfer?.getData("application/x-vsaf-node-id")||this.draggingNodeId;if(a){let k=this.nodes.find(ae=>ae.id===a);k&&(k.x=t,k.y=o,this.selectNode(k),this.refreshYaml()),this.draggingNodeId=void 0;return}let c=n.dataTransfer?.getData("application/x-vsaf-node-type")||this.draggingType;c&&this.addNode(c,t,o),this.draggingType=void 0}addNode(n,e=90+this.nodes.length*34,t=90+this.nodes.length*42){let o=this.makeNode(n,e,t);this.nodes=[...this.nodes,o],this.selectNode(o),this.refreshYaml()}selectNode(n){this.selectedNode=n}renameSelectedNode(n){if(!this.selectedNode)return;let e=y(n);if(!e)return;let t=this.selectedNode.id;if(t!==e){if(this.nodes.some(o=>o.id===e)){this.setStatus(`Node ID already exists: ${e}`,"error");return}this.selectedNode.id=e;for(let o of this.nodes)o.dependsOn=o.dependsOn.map(a=>a===t?e:a);this.refreshYaml()}}toggleDependency(n,e){if(!this.selectedNode)return;e.target.checked?this.selectedNode.dependsOn=[...new Set([...this.selectedNode.dependsOn,n])]:this.selectedNode.dependsOn=this.selectedNode.dependsOn.filter(o=>o!==n),this.refreshYaml()}deleteSelectedNode(){if(!this.selectedNode)return;let n=this.selectedNode.id;this.nodes=this.nodes.filter(e=>e.id!==n).map(e=>T(B({},e),{dependsOn:e.dependsOn.filter(t=>t!==n)})),this.selectedNode=this.nodes[0],this.refreshYaml()}loadWorkflow(n){this.api.getWorkflow(n).subscribe(e=>{let t=e.id.lastIndexOf("/");this.workflowFolder=t>=0?e.id.slice(0,t):"",this.workflowName=t>=0?e.id.slice(t+1):e.id,this.description=e.description||"Workflow loaded from disk",this.nodes=e.nodes.map((o,a)=>({id:o.id,type:o.type,title:o.id,content:o.content,dependsOn:o.dependsOn,provider:o.provider??"",model:o.model??"",x:80+a%3*250,y:80+Math.floor(a/3)*120})),this.selectedNode=this.nodes[0],this.setStatus(`Loaded ${e.name}`),this.refreshYaml()})}saveWorkflow(){this.saveCurrentWorkflow()}runWorkflow(){this.saveCurrentWorkflow(n=>{this.api.startRun(n,"").subscribe({next:e=>this.router.navigate(["/runs",e.runId]),error:e=>this.setStatus(e?.error?.error??e?.message??"Run failed","error")})})}refreshYaml(){this.yamlPreview=ye(this.workflowName,this.description,this.nodes),this.saveState==="saved"&&(this.saveState="idle")}get dependencyCandidates(){return this.selectedNode?this.nodes.filter(n=>n.id!==this.selectedNode.id):[]}get edges(){let n=new Map(this.nodes.map(t=>[t.id,t])),e=[];for(let t of this.nodes)for(let o of t.dependsOn){let a=n.get(o);a&&e.push({x1:a.x+190,y1:a.y+28,x2:t.x,y2:t.y+28})}return e}iconFor(n){switch(n){case"bash":return"$";case"command":return"/";case"prompt":return"AI"}}statusClass(n){switch(n){case"completed":return"status-completed";case"failed":return"status-failed";case"running":return"status-running";default:return"status-default"}}saveCurrentWorkflow(n){let e=y(this.workflowName),t=W(this.workflowFolder),o=t?`${t}/${e}`:e;if(!e||this.nodes.length===0){this.setStatus("Workflow name and at least one node are required.","error");return}this.workflowName=e,this.refreshYaml(),this.saveState="saving",this.api.saveWorkflow(o,this.yamlPreview).subscribe({next:()=>{this.saveState="saved",this.setStatus(`Saved ${o}`),this.refreshData(),n?.(o)},error:a=>{this.saveState="error",this.setStatus(a?.error?.error??a?.message??"Save failed","error")}})}makeNode(n,e,t,o=n){let a=ve(this.nodes.map(c=>c.id),`${n}-${o}`);return{id:a,type:n,title:a,content:Ce(n,a),dependsOn:[],provider:"",model:"",x:e,y:t}}setStatus(n,e="idle"){this.statusMessage=n,this.saveState=e}static \u0275fac=function(e){return new(e||l)};static \u0275cmp=V({type:l,selectors:[["app-workflow-builder"]],decls:63,vars:19,consts:[["noSelection",""],[1,"builder-shell"],[1,"sidebar"],[1,"brand-row"],[1,"brand-mark"],[1,"brand-title"],[1,"brand-subtitle"],["for","workflow-folder",1,"field-label"],["id","workflow-folder","placeholder","e.g. sdlc/release",1,"text-input",3,"ngModelChange","ngModel"],["for","workflow-name",1,"field-label"],["id","workflow-name",1,"text-input",3,"ngModelChange","ngModel"],["for","workflow-description",1,"field-label"],["id","workflow-description","rows","3",1,"text-area",3,"ngModelChange","ngModel"],[1,"section-title"],["type","button","class","palette-item","draggable","true",3,"dragstart","click",4,"ngFor","ngForOf"],["type","button","class","workflow-link",3,"click",4,"ngFor","ngForOf"],[1,"workspace"],[1,"toolbar"],[1,"toolbar-actions"],["type","button",1,"ghost-button",3,"click"],["type","button",1,"primary-button",3,"click","disabled"],["type","button",1,"run-button",3,"click","disabled"],["class","status-row",3,"error",4,"ngIf"],[1,"builder-grid"],[1,"canvas",3,"dragover","drop"],[1,"canvas-grid"],["class","empty-state",4,"ngIf"],["aria-hidden","true",1,"edges"],[4,"ngFor","ngForOf"],["type","button","class","node-card","draggable","true",3,"selected","left","top","click","dragstart",4,"ngFor","ngForOf"],[1,"inspector"],[4,"ngIf","ngIfElse"],[1,"bottom-grid"],[1,"yaml-panel"],[1,"panel-title"],[1,"yaml-editor",3,"ngModelChange","ngModel"],[1,"runs-panel"],["class","run-row",3,"routerLink",4,"ngFor","ngForOf"],["class","muted",4,"ngIf"],["type","button","draggable","true",1,"palette-item",3,"dragstart","click"],[1,"palette-icon"],["type","button",1,"workflow-link",3,"click"],[1,"status-row"],[1,"empty-state"],["type","button","draggable","true",1,"node-card",3,"click","dragstart"],[1,"node-kind"],[1,"node-copy"],["for","node-id",1,"field-label"],["id","node-id",1,"text-input",3,"ngModelChange","ngModel"],["for","node-type",1,"field-label"],["id","node-type",1,"text-input",3,"ngModelChange","ngModel"],["value","bash"],["value","command"],["value","prompt"],["for","node-content",1,"field-label"],["id","node-content","rows","7",1,"text-area","mono",3,"ngModelChange","ngModel"],["for","node-provider",1,"field-label"],["id","node-provider",1,"text-input",3,"ngModelChange","ngModel"],["value",""],[3,"value","disabled",4,"ngFor","ngForOf"],["for","node-model",1,"field-label"],["id","node-model","list","builder-model-suggestions","placeholder","(inherit)",1,"text-input",3,"ngModelChange","ngModel"],["id","builder-model-suggestions"],[3,"value",4,"ngFor","ngForOf"],[1,"field-label"],["class","check-row",4,"ngFor","ngForOf"],["type","button",1,"danger-button",3,"click"],[3,"value","disabled"],[3,"value"],[1,"check-row"],["type","checkbox",3,"change","checked"],[1,"muted"],[1,"run-row",3,"routerLink"]],template:function(e,t){if(e&1){let o=C();i(0,"section",1)(1,"aside",2)(2,"div",3)(3,"div",4),d(4,"V"),r(),i(5,"div")(6,"div",5),d(7,"VSAF Builder"),r(),i(8,"div",6),d(9,"Workflow canvas"),r()()(),i(10,"label",7),d(11,"Folder"),r(),i(12,"input",8),b("ngModelChange",function(c){return m(o),x(t.workflowFolder,c)||(t.workflowFolder=c),g(c)}),r(),i(13,"label",9),d(14,"Workflow name"),r(),i(15,"input",10),b("ngModelChange",function(c){return m(o),x(t.workflowName,c)||(t.workflowName=c),g(c)}),f("ngModelChange",function(){return t.refreshYaml()}),r(),i(16,"label",11),d(17,"Description"),r(),i(18,"textarea",12),b("ngModelChange",function(c){return m(o),x(t.description,c)||(t.description=c),g(c)}),f("ngModelChange",function(){return t.refreshYaml()}),r(),i(19,"div",13),d(20,"Node Palette"),r(),_(21,de,8,3,"button",14),i(22,"div",13),d(23,"Existing"),r(),_(24,se,5,2,"button",15),r(),i(25,"main",16)(26,"header",17)(27,"div")(28,"h1"),d(29),r(),i(30,"p"),d(31),r()(),i(32,"div",18)(33,"button",19),f("click",function(){return t.resetBuilder()}),d(34,"New"),r(),i(35,"button",19),f("click",function(){return t.refreshData()}),d(36,"Reload"),r(),i(37,"button",20),f("click",function(){return t.saveWorkflow()}),d(38),r(),i(39,"button",21),f("click",function(){return t.runWorkflow()}),d(40,"Run"),r()()(),_(41,ce,2,3,"div",22),i(42,"div",23)(43,"section",24),f("dragover",function(c){return t.onCanvasDragOver(c)})("drop",function(c){return t.onCanvasDrop(c)}),O(44,"div",25),_(45,pe,5,0,"div",26),S(),i(46,"svg",27),_(47,me,1,4,"line",28),r(),_(48,ge,8,10,"button",29),r(),I(),i(49,"aside",30),_(50,we,34,8,"ng-container",31)(51,he,4,0,"ng-template",null,0,A),r()(),i(53,"section",32)(54,"div",33)(55,"div",34),d(56,"Workflow YAML"),r(),i(57,"textarea",35),b("ngModelChange",function(c){return m(o),x(t.yamlPreview,c)||(t.yamlPreview=c),g(c)}),r()(),i(58,"div",36)(59,"div",34),d(60,"Recent Runs"),r(),_(61,xe,8,8,"a",37)(62,be,2,0,"p",38),r()()()()}if(e&2){let o=z(52);s(12),h("ngModel",t.workflowFolder),s(3),h("ngModel",t.workflowName),s(3),h("ngModel",t.description),s(3),u("ngForOf",t.palette),s(3),u("ngForOf",t.workflows),s(5),w(t.workflowId||"untitled-workflow"),s(2),v("",t.nodes.length," nodes \xB7 drag from palette or click a node to edit"),s(6),u("disabled",t.saveState==="saving"),s(),v(" ",t.saveState==="saving"?"Saving...":"Save Workflow"," "),s(),u("disabled",t.nodes.length===0),s(2),u("ngIf",t.statusMessage),s(4),u("ngIf",t.nodes.length===0),s(2),u("ngForOf",t.edges),s(),u("ngForOf",t.nodes),s(2),u("ngIf",t.selectedNode)("ngIfElse",o),s(7),h("ngModel",t.yamlPreview),s(4),u("ngForOf",t.runs),s(),u("ngIf",t.runs.length===0)}},dependencies:[G,j,q,ne,ee,te,U,Z,X,Q,K],styles:["[_nghost-%COMP%]{display:block;min-height:calc(100vh - 56px);background:#101114;color:#e7e7ea}button[_ngcontent-%COMP%], input[_ngcontent-%COMP%], textarea[_ngcontent-%COMP%], select[_ngcontent-%COMP%]{font:inherit}.builder-shell[_ngcontent-%COMP%]{display:grid;grid-template-columns:280px minmax(0,1fr);min-height:calc(100vh - 56px)}.sidebar[_ngcontent-%COMP%]{border-right:1px solid #2b2d33;background:#17181d;padding:16px;overflow:auto}.brand-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;margin-bottom:22px}.brand-mark[_ngcontent-%COMP%]{display:grid;place-items:center;width:34px;height:34px;border-radius:8px;background:#6366f1;color:#fff;font-weight:700}.brand-title[_ngcontent-%COMP%]{font-size:15px;font-weight:700}.brand-subtitle[_ngcontent-%COMP%], .muted[_ngcontent-%COMP%], small[_ngcontent-%COMP%]{color:#9ca3af}.field-label[_ngcontent-%COMP%], .section-title[_ngcontent-%COMP%]{display:block;margin:14px 0 7px;color:#a1a1aa;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.text-input[_ngcontent-%COMP%], .text-area[_ngcontent-%COMP%]{width:100%;box-sizing:border-box;border:1px solid #333640;border-radius:7px;background:#101114;color:#f4f4f5;padding:9px 10px;outline:none}.text-input[_ngcontent-%COMP%]:focus, .text-area[_ngcontent-%COMP%]:focus, .yaml-editor[_ngcontent-%COMP%]:focus{border-color:#6366f1;box-shadow:0 0 0 2px #6366f12e}.text-area[_ngcontent-%COMP%]{resize:vertical}.mono[_ngcontent-%COMP%], .yaml-editor[_ngcontent-%COMP%]{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.palette-item[_ngcontent-%COMP%], .workflow-link[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;width:100%;border:1px solid #2b2d33;border-radius:8px;background:#1f2128;color:#e7e7ea;padding:10px;margin-bottom:8px;text-align:left;cursor:grab}.palette-item[_ngcontent-%COMP%]:hover, .workflow-link[_ngcontent-%COMP%]:hover{border-color:#4f46e5;background:#242633}.palette-icon[_ngcontent-%COMP%]{display:grid;place-items:center;width:28px;height:28px;border-radius:7px;background:#111827;color:#a5b4fc}.palette-item[_ngcontent-%COMP%] strong[_ngcontent-%COMP%], .workflow-link[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;font-size:13px}.palette-item[_ngcontent-%COMP%] small[_ngcontent-%COMP%], .workflow-link[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{display:block;font-size:11px;margin-top:2px}.workflow-link[_ngcontent-%COMP%]{justify-content:space-between;cursor:pointer}.workspace[_ngcontent-%COMP%]{min-width:0;padding:18px;overflow:auto}.toolbar[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:12px}.toolbar[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{margin:0;font-size:20px}.toolbar[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:4px 0 0;color:#9ca3af;font-size:13px}.toolbar-actions[_ngcontent-%COMP%]{display:flex;gap:8px;flex-wrap:wrap}.ghost-button[_ngcontent-%COMP%], .primary-button[_ngcontent-%COMP%], .run-button[_ngcontent-%COMP%], .danger-button[_ngcontent-%COMP%]{border:1px solid #333640;border-radius:7px;padding:8px 12px;color:#f4f4f5;background:#20222a;cursor:pointer}.primary-button[_ngcontent-%COMP%]{background:#4f46e5;border-color:#4f46e5}.run-button[_ngcontent-%COMP%]{background:#059669;border-color:#059669}.danger-button[_ngcontent-%COMP%]{width:100%;margin-top:14px;background:#3f1d24;border-color:#7f1d1d;color:#fecaca}.primary-button[_ngcontent-%COMP%]:disabled, .run-button[_ngcontent-%COMP%]:disabled{opacity:.55;cursor:not-allowed}.status-row[_ngcontent-%COMP%]{border:1px solid #1f5f45;border-radius:8px;background:#092d22;color:#a7f3d0;padding:10px 12px;margin-bottom:12px;font-size:13px}.status-row.error[_ngcontent-%COMP%]{border-color:#7f1d1d;background:#2a1217;color:#fecaca}.builder-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(520px,1fr) 320px;gap:14px;min-height:470px}.canvas[_ngcontent-%COMP%]{position:relative;overflow:hidden;min-height:470px;border:1px solid #2b2d33;border-radius:8px;background:#15161b}.canvas-grid[_ngcontent-%COMP%]{position:absolute;inset:0;background-image:linear-gradient(#24262e 1px,transparent 1px),linear-gradient(90deg,#24262e 1px,transparent 1px);background-size:28px 28px;opacity:.45}.empty-state[_ngcontent-%COMP%]{position:absolute;inset:0;display:grid;place-content:center;text-align:center;color:#9ca3af;pointer-events:none}.empty-state[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0 0 6px;color:#e7e7ea}.edges[_ngcontent-%COMP%]{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.edges[_ngcontent-%COMP%] line[_ngcontent-%COMP%]{stroke:#6366f1;stroke-width:2;stroke-dasharray:5 5;opacity:.8}.node-card[_ngcontent-%COMP%]{position:absolute;z-index:2;display:flex;align-items:center;gap:10px;width:190px;border:1px solid #3f4250;border-radius:8px;background:#20222a;color:#f4f4f5;padding:11px;cursor:move;text-align:left;box-shadow:0 12px 28px #00000038}.node-card.selected[_ngcontent-%COMP%]{border-color:#818cf8;box-shadow:0 0 0 2px #6366f147,0 12px 28px #00000038}.node-kind[_ngcontent-%COMP%]{display:grid;place-items:center;width:30px;height:30px;border-radius:7px;background:#111827;color:#a5b4fc}.node-copy[_ngcontent-%COMP%] strong[_ngcontent-%COMP%], .node-copy[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.node-copy[_ngcontent-%COMP%]{min-width:0}.inspector[_ngcontent-%COMP%], .yaml-panel[_ngcontent-%COMP%], .runs-panel[_ngcontent-%COMP%]{border:1px solid #2b2d33;border-radius:8px;background:#17181d;padding:14px}.panel-title[_ngcontent-%COMP%]{margin-bottom:12px;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:#d4d4d8}.check-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;margin:8px 0;color:#d4d4d8;font-size:13px}.bottom-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:14px;margin-top:14px}.yaml-editor[_ngcontent-%COMP%]{width:100%;min-height:260px;box-sizing:border-box;border:1px solid #333640;border-radius:7px;background:#0f1014;color:#d4d4d8;padding:12px;resize:vertical}.run-row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:12px;padding:10px 0;color:#e7e7ea;text-decoration:none;border-bottom:1px solid #252730}.run-row[_ngcontent-%COMP%] strong[_ngcontent-%COMP%], .run-row[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{display:block}.run-row[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.status-completed[_ngcontent-%COMP%]{color:#34d399}.status-failed[_ngcontent-%COMP%]{color:#f87171}.status-running[_ngcontent-%COMP%]{color:#60a5fa}.status-default[_ngcontent-%COMP%]{color:#a1a1aa}@media(max-width:980px){.builder-shell[_ngcontent-%COMP%], .builder-grid[_ngcontent-%COMP%], .bottom-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}.sidebar[_ngcontent-%COMP%]{border-right:0;border-bottom:1px solid #2b2d33}.toolbar[_ngcontent-%COMP%]{align-items:flex-start;flex-direction:column}}"]})};function Ce(l,n){switch(l){case"bash":return`echo "${n}"`;case"command":return n;case"prompt":return`Complete ${n} and summarize the result.`}}var re="claude";function ye(l,n,e){let t=[`name: ${y(l)||"new-workflow"}`,`description: ${E(n||"Draft workflow")}`,`provider: ${re}`,"model: sonnet","nodes:"];for(let o of e)if(t.push(` - id: ${o.id}`),o.dependsOn.length>0&&t.push(` depends_on: [${o.dependsOn.join(", ")}]`),o.provider&&t.push(` provider: ${o.provider}`),o.model&&t.push(` model: ${o.model}`),o.type==="bash")t.push(` bash: ${E(o.content||"echo ok")}`);else if(o.type==="command")t.push(` command: ${E(o.content||o.id)}`);else{t.push(" prompt: |");for(let a of(o.content||`Complete ${o.id}`).split(`
2
+ `))t.push(` ${a}`)}return`${t.join(`
3
+ `)}
4
+ `}function y(l){return l.trim().toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")}function W(l){return l.split("/").map(y).filter(Boolean).join("/")}function ve(l,n){let e=y(n)||"node";if(!l.includes(e))return e;let t=2;for(;l.includes(`${e}-${t}`);)t++;return`${e}-${t}`}function E(l){return JSON.stringify(l)}export{ie as WorkflowBuilderComponent};
@@ -0,0 +1 @@
1
+ import{$ as ie,$a as mn,A as Q,Aa as rr,Ab as En,B as Wt,Ba as cn,Bb as ct,C as Gr,Cb as _e,D as $,Da as De,Db as bn,E as tt,Eb as Mn,F as j,Fb as In,G as w,Ga as un,Gb as ut,H as Wr,Ha as ln,Ia as dn,J as y,Ja as hn,Ka as fn,L as Yr,M,N as R,Nb as Tn,O as f,Ob as Dn,P as Qr,Pb as _n,Q as Kr,R as K,S as L,Ta as pn,X as Yt,Y as z,Ya as gn,Z as Qt,_ as Zr,_a as vn,a as d,aa as rt,ab as yn,b as _,ba as Kt,c as S,ca as nt,d as kr,da as E,e as Hr,ea as Ie,f as $r,fa as Zt,g as re,ga as Jr,h as P,ha as Jt,i as U,ia as Xr,j as A,ja as Xt,k as g,ka as en,l as zr,la as it,m as Vt,ma as er,n as Fr,na as ot,o as T,p as Br,pa as tn,q as V,r as Gt,ra as Te,s as qr,sa as rn,sb as Rn,t as Je,ta as nn,tb as C,ub as st,v as ne,va as on,vb as Sn,w as Xe,wa as tr,wb as wn,x as et,xa as F,xb as Cn,y as de,ya as sn,z as Vr,za as an,zb as at}from"./chunk-W7ZKECPT.js";var Ae=class{_doc;constructor(n){this._doc=n}manager},lt=(()=>{class t extends Ae{constructor(e){super(e)}supports(e){return!0}addEventListener(e,r,i,o){return e.addEventListener(r,i,o),()=>this.removeEventListener(e,r,i,o)}removeEventListener(e,r,i,o){return e.removeEventListener(r,i,o)}static \u0275fac=function(r){return new(r||t)(R(z))};static \u0275prov=y({token:t,factory:t.\u0275fac})}return t})(),pt=new M(""),sr=(()=>{class t{_zone;_plugins;_eventNameToPlugin=new Map;constructor(e,r){this._zone=r,e.forEach(s=>{s.manager=this});let i=e.filter(s=>!(s instanceof lt));this._plugins=i.slice().reverse();let o=e.find(s=>s instanceof lt);o&&this._plugins.push(o)}addEventListener(e,r,i,o){return this._findPluginFor(r).addEventListener(e,r,i,o)}getZone(){return this._zone}_findPluginFor(e){let r=this._eventNameToPlugin.get(e);if(r)return r;if(r=this._plugins.find(o=>o.supports(e)),!r)throw new w(5101,!1);return this._eventNameToPlugin.set(e,r),r}static \u0275fac=function(r){return new(r||t)(R(pt),R(rt))};static \u0275prov=y({token:t,factory:t.\u0275fac})}return t})(),nr="ng-app-id";function An(t){for(let n of t)n.remove()}function On(t,n){let e=n.createElement("style");return e.textContent=t,e}function Ui(t,n,e,r){let i=t.head?.querySelectorAll(`style[${nr}="${n}"],link[${nr}="${n}"]`);if(i)for(let o of i)o.removeAttribute(nr),o instanceof HTMLLinkElement?r.set(o.href.slice(o.href.lastIndexOf("/")+1),{usage:0,elements:[o]}):o.textContent&&e.set(o.textContent,{usage:0,elements:[o]})}function or(t,n){let e=n.createElement("link");return e.setAttribute("rel","stylesheet"),e.setAttribute("href",t),e}var ar=(()=>{class t{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;constructor(e,r,i,o={}){this.doc=e,this.appId=r,this.nonce=i,Ui(e,r,this.inline,this.external),this.hosts.add(e.head)}addStyles(e,r){for(let i of e)this.addUsage(i,this.inline,On);r?.forEach(i=>this.addUsage(i,this.external,or))}removeStyles(e,r){for(let i of e)this.removeUsage(i,this.inline);r?.forEach(i=>this.removeUsage(i,this.external))}addUsage(e,r,i){let o=r.get(e);o?o.usage++:r.set(e,{usage:1,elements:[...this.hosts].map(s=>this.addElement(s,i(e,this.doc)))})}removeUsage(e,r){let i=r.get(e);i&&(i.usage--,i.usage<=0&&(An(i.elements),r.delete(e)))}ngOnDestroy(){for(let[,{elements:e}]of[...this.inline,...this.external])An(e);this.hosts.clear()}addHost(e){this.hosts.add(e);for(let[r,{elements:i}]of this.inline)i.push(this.addElement(e,On(r,this.doc)));for(let[r,{elements:i}]of this.external)i.push(this.addElement(e,or(r,this.doc)))}removeHost(e){this.hosts.delete(e)}addElement(e,r){return this.nonce&&r.setAttribute("nonce",this.nonce),e.appendChild(r)}static \u0275fac=function(r){return new(r||t)(R(z),R(Xt),R(er,8),R(it))};static \u0275prov=y({token:t,factory:t.\u0275fac})}return t})(),ir={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/Math/MathML"},cr=/%COMP%/g;var Pn="%COMP%",Li=`_nghost-${Pn}`,xi=`_ngcontent-${Pn}`,ji=!0,ki=new M("",{factory:()=>ji});function Hi(t){return xi.replace(cr,t)}function $i(t){return Li.replace(cr,t)}function Un(t,n){return n.map(e=>e.replace(cr,t))}var ur=(()=>{class t{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;constructor(e,r,i,o,s,a,c=null,u=null){this.eventManager=e,this.sharedStylesHost=r,this.appId=i,this.removeStylesOnCompDestroy=o,this.doc=s,this.ngZone=a,this.nonce=c,this.tracingService=u,this.defaultRenderer=new Oe(e,s,a,this.tracingService)}createRenderer(e,r){if(!e||!r)return this.defaultRenderer;let i=this.getOrCreateRenderer(e,r);return i instanceof ht?i.applyToHost(e):i instanceof Ne&&i.applyStyles(),i}getOrCreateRenderer(e,r){let i=this.rendererByCompId,o=i.get(r.id);if(!o){let s=this.doc,a=this.ngZone,c=this.eventManager,u=this.sharedStylesHost,l=this.removeStylesOnCompDestroy,h=this.tracingService;switch(r.encapsulation){case ot.Emulated:o=new ht(c,u,r,this.appId,l,s,a,h);break;case ot.ShadowDom:return new dt(c,e,r,s,a,this.nonce,h,u);case ot.ExperimentalIsolatedShadowDom:return new dt(c,e,r,s,a,this.nonce,h);default:o=new Ne(c,u,r,l,s,a,h);break}i.set(r.id,o)}return o}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(e){this.rendererByCompId.delete(e)}static \u0275fac=function(r){return new(r||t)(R(sr),R(ar),R(Xt),R(ki),R(z),R(rt),R(er),R(nn,8))};static \u0275prov=y({token:t,factory:t.\u0275fac})}return t})(),Oe=class{eventManager;doc;ngZone;tracingService;data=Object.create(null);throwOnSyntheticProps=!0;constructor(n,e,r,i){this.eventManager=n,this.doc=e,this.ngZone=r,this.tracingService=i}destroy(){}destroyNode=null;createElement(n,e){return e?this.doc.createElementNS(ir[e]||e,n):this.doc.createElement(n)}createComment(n){return this.doc.createComment(n)}createText(n){return this.doc.createTextNode(n)}appendChild(n,e){(Nn(n)?n.content:n).appendChild(e)}insertBefore(n,e,r){n&&(Nn(n)?n.content:n).insertBefore(e,r)}removeChild(n,e){e.remove()}selectRootElement(n,e){let r=typeof n=="string"?this.doc.querySelector(n):n;if(!r)throw new w(-5104,!1);return e||(r.textContent=""),r}parentNode(n){return n.parentNode}nextSibling(n){return n.nextSibling}setAttribute(n,e,r,i){if(i){e=i+":"+e;let o=ir[i];o?n.setAttributeNS(o,e,r):n.setAttribute(e,r)}else n.setAttribute(e,r)}removeAttribute(n,e,r){if(r){let i=ir[r];i?n.removeAttributeNS(i,e):n.removeAttribute(`${r}:${e}`)}else n.removeAttribute(e)}addClass(n,e){n.classList.add(e)}removeClass(n,e){n.classList.remove(e)}setStyle(n,e,r,i){i&(Te.DashCase|Te.Important)?n.style.setProperty(e,r,i&Te.Important?"important":""):n.style[e]=r}removeStyle(n,e,r){r&Te.DashCase?n.style.removeProperty(e):n.style[e]=""}setProperty(n,e,r){n!=null&&(n[e]=r)}setValue(n,e){n.nodeValue=e}listen(n,e,r,i){if(typeof n=="string"&&(n=_e().getGlobalEventTarget(this.doc,n),!n))throw new w(5102,!1);let o=this.decoratePreventDefault(r);return this.tracingService?.wrapEventListener&&(o=this.tracingService.wrapEventListener(n,e,o)),this.eventManager.addEventListener(n,e,o,i)}decoratePreventDefault(n){return e=>{if(e==="__ngUnwrap__")return n;n(e)===!1&&e.preventDefault()}}};function Nn(t){return t.tagName==="TEMPLATE"&&t.content!==void 0}var dt=class extends Oe{hostEl;sharedStylesHost;shadowRoot;constructor(n,e,r,i,o,s,a,c){super(n,i,o,a),this.hostEl=e,this.sharedStylesHost=c,this.shadowRoot=e.attachShadow({mode:"open"}),this.sharedStylesHost&&this.sharedStylesHost.addHost(this.shadowRoot);let u=r.styles;u=Un(r.id,u);for(let h of u){let m=document.createElement("style");s&&m.setAttribute("nonce",s),m.textContent=h,this.shadowRoot.appendChild(m)}let l=r.getExternalStyles?.();if(l)for(let h of l){let m=or(h,i);s&&m.setAttribute("nonce",s),this.shadowRoot.appendChild(m)}}nodeOrShadowRoot(n){return n===this.hostEl?this.shadowRoot:n}appendChild(n,e){return super.appendChild(this.nodeOrShadowRoot(n),e)}insertBefore(n,e,r){return super.insertBefore(this.nodeOrShadowRoot(n),e,r)}removeChild(n,e){return super.removeChild(null,e)}parentNode(n){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(n)))}destroy(){this.sharedStylesHost&&this.sharedStylesHost.removeHost(this.shadowRoot)}},Ne=class extends Oe{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(n,e,r,i,o,s,a,c){super(n,o,s,a),this.sharedStylesHost=e,this.removeStylesOnCompDestroy=i;let u=r.styles;this.styles=c?Un(c,u):u,this.styleUrls=r.getExternalStyles?.(c)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&rn.size===0&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}},ht=class extends Ne{contentAttr;hostAttr;constructor(n,e,r,i,o,s,a,c){let u=i+"-"+r.id;super(n,e,r,o,s,a,c,u),this.contentAttr=Hi(u),this.hostAttr=$i(u)}applyToHost(n){this.applyStyles(),this.setAttribute(n,this.hostAttr,"")}createElement(n,e){let r=super.createElement(n,e);return super.setAttribute(r,this.contentAttr,""),r}};var gt=class t extends Mn{supportsDOMEvents=!0;static makeCurrent(){bn(new t)}onAndCancel(n,e,r,i){return n.addEventListener(e,r,i),()=>{n.removeEventListener(e,r,i)}}dispatchEvent(n,e){n.dispatchEvent(e)}remove(n){n.remove()}createElement(n,e){return e=e||this.getDefaultDocument(),e.createElement(n)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(n){return n.nodeType===Node.ELEMENT_NODE}isShadowRoot(n){return n instanceof DocumentFragment}getGlobalEventTarget(n,e){return e==="window"?window:e==="document"?n:e==="body"?n.body:null}getBaseHref(n){let e=zi();return e==null?null:Fi(e)}resetBaseElement(){Pe=null}getUserAgent(){return window.navigator.userAgent}getCookie(n){return Tn(document.cookie,n)}},Pe=null;function zi(){return Pe=Pe||document.head.querySelector("base"),Pe?Pe.getAttribute("href"):null}function Fi(t){return new URL(t,document.baseURI).pathname}var Bi=(()=>{class t{build(){return new XMLHttpRequest}static \u0275fac=function(r){return new(r||t)};static \u0275prov=y({token:t,factory:t.\u0275fac})}return t})(),Ln=["alt","control","meta","shift"],qi={"\b":"Backspace"," ":"Tab","\x7F":"Delete","\x1B":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},Vi={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey},kn=(()=>{class t extends Ae{constructor(e){super(e)}supports(e){return t.parseEventName(e)!=null}addEventListener(e,r,i,o){let s=t.parseEventName(r),a=t.eventCallback(s.fullKey,i,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>_e().onAndCancel(e,s.domEventName,a,o))}static parseEventName(e){let r=e.toLowerCase().split("."),i=r.shift();if(r.length===0||!(i==="keydown"||i==="keyup"))return null;let o=t._normalizeKey(r.pop()),s="",a=r.indexOf("code");if(a>-1&&(r.splice(a,1),s="code."),Ln.forEach(u=>{let l=r.indexOf(u);l>-1&&(r.splice(l,1),s+=u+".")}),s+=o,r.length!=0||o.length===0)return null;let c={};return c.domEventName=i,c.fullKey=s,c}static matchEventFullKeyCode(e,r){let i=qi[e.key]||e.key,o="";return r.indexOf("code.")>-1&&(i=e.code,o="code."),i==null||!i?!1:(i=i.toLowerCase(),i===" "?i="space":i==="."&&(i="dot"),Ln.forEach(s=>{if(s!==i){let a=Vi[s];a(e)&&(o+=s+".")}}),o+=i,o===r)}static eventCallback(e,r,i){return o=>{t.matchEventFullKeyCode(o,e)&&i.runGuarded(()=>r(o))}}static _normalizeKey(e){return e==="esc"?"escape":e}static \u0275fac=function(r){return new(r||t)(R(z))};static \u0275prov=y({token:t,factory:t.\u0275fac})}return t})();function Gi(t,n,e){return S(this,null,function*(){let r=d({rootComponent:t},Wi(n,e));return En(r)})}function Wi(t,n){return{platformRef:n?.platformRef,appProviders:[...Ji,...t?.providers??[]],platformProviders:Zi}}function Yi(){gt.makeCurrent()}function Qi(){return new Kt}function Ki(){return Xr(document),document}var Zi=[{provide:it,useValue:_n},{provide:en,useValue:Yi,multi:!0},{provide:z,useFactory:Ki}];var Ji=[{provide:Kr,useValue:"root"},{provide:Kt,useFactory:Qi},{provide:pt,useClass:lt,multi:!0},{provide:pt,useClass:kn,multi:!0},ur,ar,sr,{provide:on,useExisting:ur},{provide:Dn,useClass:Bi},[]];var Hn=(()=>{class t{_doc;constructor(e){this._doc=e}getTitle(){return this._doc.title}setTitle(e){this._doc.title=e||""}static \u0275fac=function(r){return new(r||t)(R(z))};static \u0275prov=y({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var p="primary",Ye=Symbol("RouteTitle"),pr=class{params;constructor(n){this.params=n||{}}has(n){return Object.prototype.hasOwnProperty.call(this.params,n)}get(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e[0]:e}return null}getAll(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}};function se(t){return new pr(t)}function lr(t,n,e){for(let r=0;r<t.length;r++){let i=t[r],o=n[r];if(i[0]===":")e[i.substring(1)]=o;else if(i!==o.path)return!1}return!0}function Gn(t,n,e){let r=e.path.split("/"),i=r.indexOf("**");if(i===-1){if(r.length>t.length||e.pathMatch==="full"&&(n.hasChildren()||r.length<t.length))return null;let c={},u=t.slice(0,r.length);return lr(r,u,c)?{consumed:u,posParams:c}:null}if(i!==r.lastIndexOf("**"))return null;let o=r.slice(0,i),s=r.slice(i+1);if(o.length+s.length>t.length||e.pathMatch==="full"&&n.hasChildren()&&e.path!=="**")return null;let a={};return!lr(o,t.slice(0,o.length),a)||!lr(s,t.slice(t.length-s.length),a)?null:{consumed:t,posParams:a}}function wt(t){return new Promise((n,e)=>{t.pipe(Q()).subscribe({next:r=>n(r),error:r=>e(r)})})}function to(t,n){if(t.length!==n.length)return!1;for(let e=0;e<t.length;++e)if(!B(t[e],n[e]))return!1;return!0}function B(t,n){let e=t?gr(t):void 0,r=n?gr(n):void 0;if(!e||!r||e.length!=r.length)return!1;let i;for(let o=0;o<e.length;o++)if(i=e[o],!Wn(t[i],n[i]))return!1;return!0}function gr(t){return[...Object.keys(t),...Object.getOwnPropertySymbols(t)]}function Wn(t,n){if(Array.isArray(t)&&Array.isArray(n)){if(t.length!==n.length)return!1;let e=[...t].sort(),r=[...n].sort();return e.every((i,o)=>r[o]===i)}else return t===n}function ro(t){return t.length>0?t[t.length-1]:null}function ue(t){return Vt(t)?t:ln(t)?A(Promise.resolve(t)):g(t)}function Yn(t){return Vt(t)?wt(t):Promise.resolve(t)}var no={exact:Kn,subset:Zn},Qn={exact:io,subset:oo,ignored:()=>!0},_r={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},He={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};function Ar(t,n,e){let r=t instanceof D?t:n.parseUrl(t);return st(()=>vr(n.lastSuccessfulNavigation()?.finalUrl??new D,r,d(d({},He),e)))}function vr(t,n,e){return no[e.paths](t.root,n.root,e.matrixParams)&&Qn[e.queryParams](t.queryParams,n.queryParams)&&!(e.fragment==="exact"&&t.fragment!==n.fragment)}function io(t,n){return B(t,n)}function Kn(t,n,e){if(!oe(t.segments,n.segments)||!yt(t.segments,n.segments,e)||t.numberOfChildren!==n.numberOfChildren)return!1;for(let r in n.children)if(!t.children[r]||!Kn(t.children[r],n.children[r],e))return!1;return!0}function oo(t,n){return Object.keys(n).length<=Object.keys(t).length&&Object.keys(n).every(e=>Wn(t[e],n[e]))}function Zn(t,n,e){return Jn(t,n,n.segments,e)}function Jn(t,n,e,r){if(t.segments.length>e.length){let i=t.segments.slice(0,e.length);return!(!oe(i,e)||n.hasChildren()||!yt(i,e,r))}else if(t.segments.length===e.length){if(!oe(t.segments,e)||!yt(t.segments,e,r))return!1;for(let i in n.children)if(!t.children[i]||!Zn(t.children[i],n.children[i],r))return!1;return!0}else{let i=e.slice(0,t.segments.length),o=e.slice(t.segments.length);return!oe(t.segments,i)||!yt(t.segments,i,r)||!t.children[p]?!1:Jn(t.children[p],n,o,r)}}function yt(t,n,e){return n.every((r,i)=>Qn[e](t[i].parameters,r.parameters))}var D=class{root;queryParams;fragment;_queryParamMap;constructor(n=new v([],{}),e={},r=null){this.root=n,this.queryParams=e,this.fragment=r}get queryParamMap(){return this._queryParamMap??=se(this.queryParams),this._queryParamMap}toString(){return co.serialize(this)}},v=class{segments;children;parent=null;constructor(n,e){this.segments=n,this.children=e,Object.values(e).forEach(r=>r.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return Rt(this)}},Z=class{path;parameters;_parameterMap;constructor(n,e){this.path=n,this.parameters=e}get parameterMap(){return this._parameterMap??=se(this.parameters),this._parameterMap}toString(){return ei(this)}};function so(t,n){return oe(t,n)&&t.every((e,r)=>B(e.parameters,n[r].parameters))}function oe(t,n){return t.length!==n.length?!1:t.every((e,r)=>e.path===n[r].path)}function ao(t,n){let e=[];return Object.entries(t.children).forEach(([r,i])=>{r===p&&(e=e.concat(n(i,r)))}),Object.entries(t.children).forEach(([r,i])=>{r!==p&&(e=e.concat(n(i,r)))}),e}var Se=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275prov=y({token:t,factory:()=>new J,providedIn:"root"})}return t})(),J=class{parse(n){let e=new yr(n);return new D(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(n){let e=`/${Ue(n.root,!0)}`,r=ho(n.queryParams),i=typeof n.fragment=="string"?`#${uo(n.fragment)}`:"";return`${e}${r}${i}`}},co=new J;function Rt(t){return t.segments.map(n=>ei(n)).join("/")}function Ue(t,n){if(!t.hasChildren())return Rt(t);if(n){let e=t.children[p]?Ue(t.children[p],!1):"",r=[];return Object.entries(t.children).forEach(([i,o])=>{i!==p&&r.push(`${i}:${Ue(o,!1)}`)}),r.length>0?`${e}(${r.join("//")})`:e}else{let e=ao(t,(r,i)=>i===p?[Ue(t.children[p],!1)]:[`${i}:${Ue(r,!1)}`]);return Object.keys(t.children).length===1&&t.children[p]!=null?`${Rt(t)}/${e[0]}`:`${Rt(t)}/(${e.join("//")})`}}function Xn(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function vt(t){return Xn(t).replace(/%3B/gi,";")}function uo(t){return encodeURI(t)}function mr(t){return Xn(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function St(t){return decodeURIComponent(t)}function $n(t){return St(t.replace(/\+/g,"%20"))}function ei(t){return`${mr(t.path)}${lo(t.parameters)}`}function lo(t){return Object.entries(t).map(([n,e])=>`;${mr(n)}=${mr(e)}`).join("")}function ho(t){let n=Object.entries(t).map(([e,r])=>Array.isArray(r)?r.map(i=>`${vt(e)}=${vt(i)}`).join("&"):`${vt(e)}=${vt(r)}`).filter(e=>e);return n.length?`?${n.join("&")}`:""}var fo=/^[^\/()?;#]+/;function dr(t){let n=t.match(fo);return n?n[0]:""}var po=/^[^\/()?;=#]+/;function go(t){let n=t.match(po);return n?n[0]:""}var vo=/^[^=?&#]+/;function mo(t){let n=t.match(vo);return n?n[0]:""}var yo=/^[^&#]+/;function Ro(t){let n=t.match(yo);return n?n[0]:""}var yr=class{url;remaining;constructor(n){this.url=n,this.remaining=n}parseRootSegment(){for(;this.consumeOptional("/"););return this.remaining===""||this.peekStartsWith("?")||this.peekStartsWith("#")?new v([],{}):new v([],this.parseChildren())}parseQueryParams(){let n={};if(this.consumeOptional("?"))do this.parseQueryParam(n);while(this.consumeOptional("&"));return n}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(n=0){if(n>50)throw new w(4010,!1);if(this.remaining==="")return{};this.consumeOptional("/");let e=[];for(this.peekStartsWith("(")||e.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),e.push(this.parseSegment());let r={};this.peekStartsWith("/(")&&(this.capture("/"),r=this.parseParens(!0,n));let i={};return this.peekStartsWith("(")&&(i=this.parseParens(!1,n)),(e.length>0||Object.keys(r).length>0)&&(i[p]=new v(e,r)),i}parseSegment(){let n=dr(this.remaining);if(n===""&&this.peekStartsWith(";"))throw new w(4009,!1);return this.capture(n),new Z(St(n),this.parseMatrixParams())}parseMatrixParams(){let n={};for(;this.consumeOptional(";");)this.parseParam(n);return n}parseParam(n){let e=go(this.remaining);if(!e)return;this.capture(e);let r="";if(this.consumeOptional("=")){let i=dr(this.remaining);i&&(r=i,this.capture(r))}n[St(e)]=St(r)}parseQueryParam(n){let e=mo(this.remaining);if(!e)return;this.capture(e);let r="";if(this.consumeOptional("=")){let s=Ro(this.remaining);s&&(r=s,this.capture(r))}let i=$n(e),o=$n(r);if(n.hasOwnProperty(i)){let s=n[i];Array.isArray(s)||(s=[s],n[i]=s),s.push(o)}else n[i]=o}parseParens(n,e){let r={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){let i=dr(this.remaining),o=this.remaining[i.length];if(o!=="/"&&o!==")"&&o!==";")throw new w(4010,!1);let s;i.indexOf(":")>-1?(s=i.slice(0,i.indexOf(":")),this.capture(s),this.capture(":")):n&&(s=p);let a=this.parseChildren(e+1);r[s??p]=Object.keys(a).length===1&&a[p]?a[p]:new v([],a),this.consumeOptional("//")}return r}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return this.peekStartsWith(n)?(this.remaining=this.remaining.substring(n.length),!0):!1}capture(n){if(!this.consumeOptional(n))throw new w(4011,!1)}};function ti(t){return t.segments.length>0?new v([],{[p]:t}):t}function ri(t){let n={};for(let[r,i]of Object.entries(t.children)){let o=ri(i);if(r===p&&o.segments.length===0&&o.hasChildren())for(let[s,a]of Object.entries(o.children))n[s]=a;else(o.segments.length>0||o.hasChildren())&&(n[r]=o)}let e=new v(t.segments,n);return So(e)}function So(t){if(t.numberOfChildren===1&&t.children[p]){let n=t.children[p];return new v(t.segments.concat(n.segments),n.children)}return t}function X(t){return t instanceof D}function ni(t,n,e=null,r=null,i=new J){let o=ii(t);return oi(o,n,e,r,i)}function ii(t){let n;function e(o){let s={};for(let c of o.children){let u=e(c);s[c.outlet]=u}let a=new v(o.url,s);return o===t&&(n=a),a}let r=e(t.root),i=ti(r);return n??i}function oi(t,n,e,r,i){let o=t;for(;o.parent;)o=o.parent;if(n.length===0)return hr(o,o,o,e,r,i);let s=wo(n);if(s.toRoot())return hr(o,o,new v([],{}),e,r,i);let a=Co(s,o,t),c=a.processChildren?xe(a.segmentGroup,a.index,s.commands):ai(a.segmentGroup,a.index,s.commands);return hr(o,a.segmentGroup,c,e,r,i)}function Ct(t){return typeof t=="object"&&t!=null&&!t.outlets&&!t.segmentPath}function $e(t){return typeof t=="object"&&t!=null&&t.outlets}function zn(t,n,e){t||="\u0275";let r=new D;return r.queryParams={[t]:n},e.parse(e.serialize(r)).queryParams[t]}function hr(t,n,e,r,i,o){let s={};for(let[u,l]of Object.entries(r??{}))s[u]=Array.isArray(l)?l.map(h=>zn(u,h,o)):zn(u,l,o);let a;t===n?a=e:a=si(t,n,e);let c=ti(ri(a));return new D(c,s,i)}function si(t,n,e){let r={};return Object.entries(t.children).forEach(([i,o])=>{o===n?r[i]=e:r[i]=si(o,n,e)}),new v(t.segments,r)}var Et=class{isAbsolute;numberOfDoubleDots;commands;constructor(n,e,r){if(this.isAbsolute=n,this.numberOfDoubleDots=e,this.commands=r,n&&r.length>0&&Ct(r[0]))throw new w(4003,!1);let i=r.find($e);if(i&&i!==ro(r))throw new w(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]=="/"}};function wo(t){if(typeof t[0]=="string"&&t.length===1&&t[0]==="/")return new Et(!0,0,t);let n=0,e=!1,r=t.reduce((i,o,s)=>{if(typeof o=="object"&&o!=null){if(o.outlets){let a={};return Object.entries(o.outlets).forEach(([c,u])=>{a[c]=typeof u=="string"?u.split("/"):u}),[...i,{outlets:a}]}if(o.segmentPath)return[...i,o.segmentPath]}return typeof o!="string"?[...i,o]:s===0?(o.split("/").forEach((a,c)=>{c==0&&a==="."||(c==0&&a===""?e=!0:a===".."?n++:a!=""&&i.push(a))}),i):[...i,o]},[]);return new Et(e,n,r)}var fe=class{segmentGroup;processChildren;index;constructor(n,e,r){this.segmentGroup=n,this.processChildren=e,this.index=r}};function Co(t,n,e){if(t.isAbsolute)return new fe(n,!0,0);if(!e)return new fe(n,!1,NaN);if(e.parent===null)return new fe(e,!0,0);let r=Ct(t.commands[0])?0:1,i=e.segments.length-1+r;return Eo(e,i,t.numberOfDoubleDots)}function Eo(t,n,e){let r=t,i=n,o=e;for(;o>i;){if(o-=i,r=r.parent,!r)throw new w(4005,!1);i=r.segments.length}return new fe(r,!1,i-o)}function bo(t){return $e(t[0])?t[0].outlets:{[p]:t}}function ai(t,n,e){if(t??=new v([],{}),t.segments.length===0&&t.hasChildren())return xe(t,n,e);let r=Mo(t,n,e),i=e.slice(r.commandIndex);if(r.match&&r.pathIndex<t.segments.length){let o=new v(t.segments.slice(0,r.pathIndex),{});return o.children[p]=new v(t.segments.slice(r.pathIndex),t.children),xe(o,0,i)}else return r.match&&i.length===0?new v(t.segments,{}):r.match&&!t.hasChildren()?Rr(t,n,e):r.match?xe(t,0,i):Rr(t,n,e)}function xe(t,n,e){if(e.length===0)return new v(t.segments,{});{let r=bo(e),i={};if(Object.keys(r).some(o=>o!==p)&&t.children[p]&&t.numberOfChildren===1&&t.children[p].segments.length===0){let o=xe(t.children[p],n,e);return new v(t.segments,o.children)}return Object.entries(r).forEach(([o,s])=>{typeof s=="string"&&(s=[s]),s!==null&&(i[o]=ai(t.children[o],n,s))}),Object.entries(t.children).forEach(([o,s])=>{r[o]===void 0&&(i[o]=s)}),new v(t.segments,i)}}function Mo(t,n,e){let r=0,i=n,o={match:!1,pathIndex:0,commandIndex:0};for(;i<t.segments.length;){if(r>=e.length)return o;let s=t.segments[i],a=e[r];if($e(a))break;let c=`${a}`,u=r<e.length-1?e[r+1]:null;if(i>0&&c===void 0)break;if(c&&u&&typeof u=="object"&&u.outlets===void 0){if(!Bn(c,u,s))return o;r+=2}else{if(!Bn(c,{},s))return o;r++}i++}return{match:!0,pathIndex:i,commandIndex:r}}function Rr(t,n,e){let r=t.segments.slice(0,n),i=0;for(;i<e.length;){let o=e[i];if($e(o)){let c=Io(o.outlets);return new v(r,c)}if(i===0&&Ct(e[0])){let c=t.segments[n];r.push(new Z(c.path,Fn(e[0]))),i++;continue}let s=$e(o)?o.outlets[p]:`${o}`,a=i<e.length-1?e[i+1]:null;s&&a&&Ct(a)?(r.push(new Z(s,Fn(a))),i+=2):(r.push(new Z(s,{})),i++)}return new v(r,{})}function Io(t){let n={};return Object.entries(t).forEach(([e,r])=>{typeof r=="string"&&(r=[r]),r!==null&&(n[e]=Rr(new v([],{}),0,r))}),n}function Fn(t){let n={};return Object.entries(t).forEach(([e,r])=>n[e]=`${r}`),n}function Bn(t,n,e){return t==e.path&&B(n,e.parameters)}var je="imperative",b=(function(t){return t[t.NavigationStart=0]="NavigationStart",t[t.NavigationEnd=1]="NavigationEnd",t[t.NavigationCancel=2]="NavigationCancel",t[t.NavigationError=3]="NavigationError",t[t.RoutesRecognized=4]="RoutesRecognized",t[t.ResolveStart=5]="ResolveStart",t[t.ResolveEnd=6]="ResolveEnd",t[t.GuardsCheckStart=7]="GuardsCheckStart",t[t.GuardsCheckEnd=8]="GuardsCheckEnd",t[t.RouteConfigLoadStart=9]="RouteConfigLoadStart",t[t.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",t[t.ChildActivationStart=11]="ChildActivationStart",t[t.ChildActivationEnd=12]="ChildActivationEnd",t[t.ActivationStart=13]="ActivationStart",t[t.ActivationEnd=14]="ActivationEnd",t[t.Scroll=15]="Scroll",t[t.NavigationSkipped=16]="NavigationSkipped",t})(b||{}),N=class{id;url;constructor(n,e){this.id=n,this.url=e}},ae=class extends N{type=b.NavigationStart;navigationTrigger;restoredState;constructor(n,e,r="imperative",i=null){super(n,e),this.navigationTrigger=r,this.restoredState=i}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}},H=class extends N{urlAfterRedirects;type=b.NavigationEnd;constructor(n,e,r){super(n,e),this.urlAfterRedirects=r}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}},I=(function(t){return t[t.Redirect=0]="Redirect",t[t.SupersededByNewNavigation=1]="SupersededByNewNavigation",t[t.NoDataFromResolver=2]="NoDataFromResolver",t[t.GuardRejected=3]="GuardRejected",t[t.Aborted=4]="Aborted",t})(I||{}),ze=(function(t){return t[t.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",t[t.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",t})(ze||{}),x=class extends N{reason;code;type=b.NavigationCancel;constructor(n,e,r,i){super(n,e),this.reason=r,this.code=i}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}};function ci(t){return t instanceof x&&(t.code===I.Redirect||t.code===I.SupersededByNewNavigation)}var W=class extends N{reason;code;type=b.NavigationSkipped;constructor(n,e,r,i){super(n,e),this.reason=r,this.code=i}},ce=class extends N{error;target;type=b.NavigationError;constructor(n,e,r,i){super(n,e),this.error=r,this.target=i}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}},Fe=class extends N{urlAfterRedirects;state;type=b.RoutesRecognized;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},bt=class extends N{urlAfterRedirects;state;type=b.GuardsCheckStart;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},Mt=class extends N{urlAfterRedirects;state;shouldActivate;type=b.GuardsCheckEnd;constructor(n,e,r,i,o){super(n,e),this.urlAfterRedirects=r,this.state=i,this.shouldActivate=o}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}},It=class extends N{urlAfterRedirects;state;type=b.ResolveStart;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},Tt=class extends N{urlAfterRedirects;state;type=b.ResolveEnd;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},Dt=class{route;type=b.RouteConfigLoadStart;constructor(n){this.route=n}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}},_t=class{route;type=b.RouteConfigLoadEnd;constructor(n){this.route=n}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}},At=class{snapshot;type=b.ChildActivationStart;constructor(n){this.snapshot=n}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},Ot=class{snapshot;type=b.ChildActivationEnd;constructor(n){this.snapshot=n}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},Nt=class{snapshot;type=b.ActivationStart;constructor(n){this.snapshot=n}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},Pt=class{snapshot;type=b.ActivationEnd;constructor(n){this.snapshot=n}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}};var ge=class{},Be=class{},ve=class{url;navigationBehaviorOptions;constructor(n,e){this.url=n,this.navigationBehaviorOptions=e}};function To(t){return!(t instanceof ge)&&!(t instanceof ve)&&!(t instanceof Be)}var Ut=class{rootInjector;outlet=null;route=null;children;attachRef=null;get injector(){return this.route?.snapshot._environmentInjector??this.rootInjector}constructor(n){this.rootInjector=n,this.children=new we(this.rootInjector)}},we=(()=>{class t{rootInjector;contexts=new Map;constructor(e){this.rootInjector=e}onChildOutletCreated(e,r){let i=this.getOrCreateContext(e);i.outlet=r,this.contexts.set(e,i)}onChildOutletDestroyed(e){let r=this.getContext(e);r&&(r.outlet=null,r.attachRef=null)}onOutletDeactivated(){let e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let r=this.getContext(e);return r||(r=new Ut(this.rootInjector),this.contexts.set(e,r)),r}getContext(e){return this.contexts.get(e)||null}static \u0275fac=function(r){return new(r||t)(R(K))};static \u0275prov=y({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Lt=class{_root;constructor(n){this._root=n}get root(){return this._root.value}parent(n){let e=this.pathFromRoot(n);return e.length>1?e[e.length-2]:null}children(n){let e=Sr(n,this._root);return e?e.children.map(r=>r.value):[]}firstChild(n){let e=Sr(n,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(n){let e=wr(n,this._root);return e.length<2?[]:e[e.length-2].children.map(i=>i.value).filter(i=>i!==n)}pathFromRoot(n){return wr(n,this._root).map(e=>e.value)}};function Sr(t,n){if(t===n.value)return n;for(let e of n.children){let r=Sr(t,e);if(r)return r}return null}function wr(t,n){if(t===n.value)return[n];for(let e of n.children){let r=wr(t,e);if(r.length)return r.unshift(n),r}return[]}var O=class{value;children;constructor(n,e){this.value=n,this.children=e}toString(){return`TreeNode(${this.value})`}};function he(t){let n={};return t&&t.children.forEach(e=>n[e.value.outlet]=e),n}var qe=class extends Lt{snapshot;constructor(n,e){super(n),this.snapshot=e,Nr(this,n)}toString(){return this.snapshot.toString()}};function ui(t,n){let e=Do(t,n),r=new P([new Z("",{})]),i=new P({}),o=new P({}),s=new P({}),a=new P(""),c=new Y(r,i,s,a,o,p,t,e.root);return c.snapshot=e.root,new qe(new O(c,[]),e)}function Do(t,n){let e={},r={},i={},s=new me([],e,i,"",r,p,t,null,{},n);return new Ve("",new O(s,[]))}var Y=class{urlSubject;paramsSubject;queryParamsSubject;fragmentSubject;dataSubject;outlet;component;snapshot;_futureSnapshot;_routerState;_paramMap;_queryParamMap;title;url;params;queryParams;fragment;data;constructor(n,e,r,i,o,s,a,c){this.urlSubject=n,this.paramsSubject=e,this.queryParamsSubject=r,this.fragmentSubject=i,this.dataSubject=o,this.outlet=s,this.component=a,this._futureSnapshot=c,this.title=this.dataSubject?.pipe(T(u=>u[Ye]))??g(void 0),this.url=n,this.params=e,this.queryParams=r,this.fragment=i,this.data=o}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe(T(n=>se(n))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(T(n=>se(n))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}};function Or(t,n,e="emptyOnly"){let r,{routeConfig:i}=t;return n!==null&&(e==="always"||i?.path===""||!n.component&&!n.routeConfig?.loadComponent)?r={params:d(d({},n.params),t.params),data:d(d({},n.data),t.data),resolve:d(d(d(d({},t.data),n.data),i?.data),t._resolvedData)}:r={params:d({},t.params),data:d({},t.data),resolve:d(d({},t.data),t._resolvedData??{})},i&&di(i)&&(r.resolve[Ye]=i.title),r}var me=class{url;params;queryParams;fragment;data;outlet;component;routeConfig;_resolve;_resolvedData;_routerState;_paramMap;_queryParamMap;_environmentInjector;get title(){return this.data?.[Ye]}constructor(n,e,r,i,o,s,a,c,u,l){this.url=n,this.params=e,this.queryParams=r,this.fragment=i,this.data=o,this.outlet=s,this.component=a,this.routeConfig=c,this._resolve=u,this._environmentInjector=l}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=se(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=se(this.queryParams),this._queryParamMap}toString(){let n=this.url.map(r=>r.toString()).join("/"),e=this.routeConfig?this.routeConfig.path:"";return`Route(url:'${n}', path:'${e}')`}},Ve=class extends Lt{url;constructor(n,e){super(e),this.url=n,Nr(this,e)}toString(){return li(this._root)}};function Nr(t,n){n.value._routerState=t,n.children.forEach(e=>Nr(t,e))}function li(t){let n=t.children.length>0?` { ${t.children.map(li).join(", ")} } `:"";return`${t.value}${n}`}function fr(t){if(t.snapshot){let n=t.snapshot,e=t._futureSnapshot;t.snapshot=e,B(n.queryParams,e.queryParams)||t.queryParamsSubject.next(e.queryParams),n.fragment!==e.fragment&&t.fragmentSubject.next(e.fragment),B(n.params,e.params)||t.paramsSubject.next(e.params),to(n.url,e.url)||t.urlSubject.next(e.url),B(n.data,e.data)||t.dataSubject.next(e.data)}else t.snapshot=t._futureSnapshot,t.dataSubject.next(t._futureSnapshot.data)}function Cr(t,n){let e=B(t.params,n.params)&&so(t.url,n.url),r=!t.parent!=!n.parent;return e&&!r&&(!t.parent||Cr(t.parent,n.parent))}function di(t){return typeof t.title=="string"||t.title===null}var hi=new M(""),Pr=(()=>{class t{activated=null;get activatedComponentRef(){return this.activated}_activatedRoute=null;name=p;activateEvents=new ie;deactivateEvents=new ie;attachEvents=new ie;detachEvents=new ie;routerOutletData=Cn();parentContexts=f(we);location=f(sn);changeDetector=f(at);inputBinder=f(Ht,{optional:!0});supportsBindingToComponentInputs=!0;ngOnChanges(e){if(e.name){let{firstChange:r,previousValue:i}=e.name;if(r)return;this.isTrackedInParentContexts(i)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(i)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(e){return this.parentContexts.getContext(e)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let e=this.parentContexts.getContext(this.name);e?.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new w(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new w(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new w(4012,!1);this.location.detach();let e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,r){this.activated=e,this._activatedRoute=r,this.location.insert(e.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){let e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,r){if(this.isActivated)throw new w(4013,!1);this._activatedRoute=e;let i=this.location,s=e.snapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,c=new Er(e,a,i.injector,this.routerOutletData);this.activated=i.createComponent(s,{index:i.length,injector:c,environmentInjector:r}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static \u0275fac=function(r){return new(r||t)};static \u0275dir=De({type:t,selectors:[["router-outlet"]],inputs:{name:"name",routerOutletData:[1,"routerOutletData"]},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],features:[Ie]})}return t})(),Er=class{route;childContexts;parent;outletData;constructor(n,e,r,i){this.route=n,this.childContexts=e,this.parent=r,this.outletData=i}get(n,e){return n===Y?this.route:n===we?this.childContexts:n===hi?this.outletData:this.parent.get(n,e)}},Ht=new M("");var Ur=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275cmp=cn({type:t,selectors:[["ng-component"]],exportAs:["emptyRouterOutlet"],decls:1,vars:0,template:function(r,i){r&1&&pn(0,"router-outlet")},dependencies:[Pr],encapsulation:2})}return t})();function Lr(t){let n=t.children&&t.children.map(Lr),e=n?_(d({},t),{children:n}):d({},t);return!e.component&&!e.loadComponent&&(n||e.loadChildren)&&e.outlet&&e.outlet!==p&&(e.component=Ur),e}function _o(t,n,e){let r=Ge(t,n._root,e?e._root:void 0);return new qe(r,n)}function Ge(t,n,e){if(e&&t.shouldReuseRoute(n.value,e.value.snapshot)){let r=e.value;r._futureSnapshot=n.value;let i=Ao(t,n,e);return new O(r,i)}else{if(t.shouldAttach(n.value)){let o=t.retrieve(n.value);if(o!==null){let s=o.route;return s.value._futureSnapshot=n.value,s.children=n.children.map(a=>Ge(t,a)),s}}let r=Oo(n.value),i=n.children.map(o=>Ge(t,o));return new O(r,i)}}function Ao(t,n,e){return n.children.map(r=>{for(let i of e.children)if(t.shouldReuseRoute(r.value,i.value.snapshot))return Ge(t,r,i);return Ge(t,r)})}function Oo(t){return new Y(new P(t.url),new P(t.params),new P(t.queryParams),new P(t.fragment),new P(t.data),t.outlet,t.component,t)}var ye=class{redirectTo;navigationBehaviorOptions;constructor(n,e){this.redirectTo=n,this.navigationBehaviorOptions=e}},fi="ngNavigationCancelingError";function xt(t,n){let{redirectTo:e,navigationBehaviorOptions:r}=X(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,i=pi(!1,I.Redirect);return i.url=e,i.navigationBehaviorOptions=r,i}function pi(t,n){let e=new Error(`NavigationCancelingError: ${t||""}`);return e[fi]=!0,e.cancellationCode=n,e}function No(t){return gi(t)&&X(t.url)}function gi(t){return!!t&&t[fi]}var br=class{routeReuseStrategy;futureState;currState;forwardEvent;inputBindingEnabled;constructor(n,e,r,i,o){this.routeReuseStrategy=n,this.futureState=e,this.currState=r,this.forwardEvent=i,this.inputBindingEnabled=o}activate(n){let e=this.futureState._root,r=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,r,n),fr(this.futureState.root),this.activateChildRoutes(e,r,n)}deactivateChildRoutes(n,e,r){let i=he(e);n.children.forEach(o=>{let s=o.value.outlet;this.deactivateRoutes(o,i[s],r),delete i[s]}),Object.values(i).forEach(o=>{this.deactivateRouteAndItsChildren(o,r)})}deactivateRoutes(n,e,r){let i=n.value,o=e?e.value:null;if(i===o)if(i.component){let s=r.getContext(i.outlet);s&&this.deactivateChildRoutes(n,e,s.children)}else this.deactivateChildRoutes(n,e,r);else o&&this.deactivateRouteAndItsChildren(e,r)}deactivateRouteAndItsChildren(n,e){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,e):this.deactivateRouteAndOutlet(n,e)}detachAndStoreRouteSubtree(n,e){let r=e.getContext(n.value.outlet),i=r&&n.value.component?r.children:e,o=he(n);for(let s of Object.values(o))this.deactivateRouteAndItsChildren(s,i);if(r&&r.outlet){let s=r.outlet.detach(),a=r.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:s,route:n,contexts:a})}}deactivateRouteAndOutlet(n,e){let r=e.getContext(n.value.outlet),i=r&&n.value.component?r.children:e,o=he(n);for(let s of Object.values(o))this.deactivateRouteAndItsChildren(s,i);r&&(r.outlet&&(r.outlet.deactivate(),r.children.onOutletDeactivated()),r.attachRef=null,r.route=null)}activateChildRoutes(n,e,r){let i=he(e);n.children.forEach(o=>{this.activateRoutes(o,i[o.value.outlet],r),this.forwardEvent(new Pt(o.value.snapshot))}),n.children.length&&this.forwardEvent(new Ot(n.value.snapshot))}activateRoutes(n,e,r){let i=n.value,o=e?e.value:null;if(fr(i),i===o)if(i.component){let s=r.getOrCreateContext(i.outlet);this.activateChildRoutes(n,e,s.children)}else this.activateChildRoutes(n,e,r);else if(i.component){let s=r.getOrCreateContext(i.outlet);if(this.routeReuseStrategy.shouldAttach(i.snapshot)){let a=this.routeReuseStrategy.retrieve(i.snapshot);this.routeReuseStrategy.store(i.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),fr(a.route.value),this.activateChildRoutes(n,null,s.children)}else s.attachRef=null,s.route=i,s.outlet&&s.outlet.activateWith(i,s.injector),this.activateChildRoutes(n,null,s.children)}else this.activateChildRoutes(n,null,r)}},jt=class{path;route;constructor(n){this.path=n,this.route=this.path[this.path.length-1]}},pe=class{component;route;constructor(n,e){this.component=n,this.route=e}};function Po(t,n,e){let r=t._root,i=n?n._root:null;return Le(r,i,e,[r.value])}function Uo(t){let n=t.routeConfig?t.routeConfig.canActivateChild:null;return!n||n.length===0?null:{node:t,guards:n}}function Ce(t,n){let e=Symbol(),r=n.get(t,e);return r===e?typeof t=="function"&&!Yr(t)?t:n.get(t):r}function Le(t,n,e,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let o=he(n);return t.children.forEach(s=>{Lo(s,o[s.value.outlet],e,r.concat([s.value]),i),delete o[s.value.outlet]}),Object.entries(o).forEach(([s,a])=>ke(a,e.getContext(s),i)),i}function Lo(t,n,e,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let o=t.value,s=n?n.value:null,a=e?e.getContext(t.value.outlet):null;if(s&&o.routeConfig===s.routeConfig){let c=xo(s,o,o.routeConfig.runGuardsAndResolvers);c?i.canActivateChecks.push(new jt(r)):(o.data=s.data,o._resolvedData=s._resolvedData),o.component?Le(t,n,a?a.children:null,r,i):Le(t,n,e,r,i),c&&a&&a.outlet&&a.outlet.isActivated&&i.canDeactivateChecks.push(new pe(a.outlet.component,s))}else s&&ke(n,a,i),i.canActivateChecks.push(new jt(r)),o.component?Le(t,null,a?a.children:null,r,i):Le(t,null,e,r,i);return i}function xo(t,n,e){if(typeof e=="function")return L(n._environmentInjector,()=>e(t,n));switch(e){case"pathParamsChange":return!oe(t.url,n.url);case"pathParamsOrQueryParamsChange":return!oe(t.url,n.url)||!B(t.queryParams,n.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Cr(t,n)||!B(t.queryParams,n.queryParams);default:return!Cr(t,n)}}function ke(t,n,e){let r=he(t),i=t.value;Object.entries(r).forEach(([o,s])=>{i.component?n?ke(s,n.children.getContext(o),e):ke(s,null,e):ke(s,n,e)}),i.component?n&&n.outlet&&n.outlet.isActivated?e.canDeactivateChecks.push(new pe(n.outlet.component,i)):e.canDeactivateChecks.push(new pe(null,i)):e.canDeactivateChecks.push(new pe(null,i))}function Qe(t){return typeof t=="function"}function jo(t){return typeof t=="boolean"}function ko(t){return t&&Qe(t.canLoad)}function Ho(t){return t&&Qe(t.canActivate)}function $o(t){return t&&Qe(t.canActivateChild)}function zo(t){return t&&Qe(t.canDeactivate)}function Fo(t){return t&&Qe(t.canMatch)}function vi(t){return t instanceof Fr||t?.name==="EmptyError"}var mt=Symbol("INITIAL_VALUE");function Re(){return $(t=>Br(t.map(n=>n.pipe(de(1),Gr(mt)))).pipe(T(n=>{for(let e of n)if(e!==!0){if(e===mt)return mt;if(e===!1||Bo(e))return e}return!0}),ne(n=>n!==mt),de(1)))}function Bo(t){return X(t)||t instanceof ye}function mi(t){return t.aborted?g(void 0).pipe(de(1)):new $r(n=>{let e=()=>{n.next(),n.complete()};return t.addEventListener("abort",e),()=>t.removeEventListener("abort",e)})}function yi(t){return tt(mi(t))}function qo(t){return V(n=>{let{targetSnapshot:e,currentSnapshot:r,guards:{canActivateChecks:i,canDeactivateChecks:o}}=n;return o.length===0&&i.length===0?g(_(d({},n),{guardsResult:!0})):Vo(o,e,r).pipe(V(s=>s&&jo(s)?Go(e,i,t):g(s)),T(s=>_(d({},n),{guardsResult:s})))})}function Vo(t,n,e){return A(t).pipe(V(r=>Zo(r.component,r.route,e,n)),Q(r=>r!==!0,!0))}function Go(t,n,e){return A(n).pipe(et(r=>qr(Yo(r.route.parent,e),Wo(r.route,e),Ko(t,r.path),Qo(t,r.route))),Q(r=>r!==!0,!0))}function Wo(t,n){return t!==null&&n&&n(new Nt(t)),g(!0)}function Yo(t,n){return t!==null&&n&&n(new At(t)),g(!0)}function Qo(t,n){let e=n.routeConfig?n.routeConfig.canActivate:null;if(!e||e.length===0)return g(!0);let r=e.map(i=>Je(()=>{let o=n._environmentInjector,s=Ce(i,o),a=Ho(s)?s.canActivate(n,t):L(o,()=>s(n,t));return ue(a).pipe(Q())}));return g(r).pipe(Re())}function Ko(t,n){let e=n[n.length-1],i=n.slice(0,n.length-1).reverse().map(o=>Uo(o)).filter(o=>o!==null).map(o=>Je(()=>{let s=o.guards.map(a=>{let c=o.node._environmentInjector,u=Ce(a,c),l=$o(u)?u.canActivateChild(e,t):L(c,()=>u(e,t));return ue(l).pipe(Q())});return g(s).pipe(Re())}));return g(i).pipe(Re())}function Zo(t,n,e,r){let i=n&&n.routeConfig?n.routeConfig.canDeactivate:null;if(!i||i.length===0)return g(!0);let o=i.map(s=>{let a=n._environmentInjector,c=Ce(s,a),u=zo(c)?c.canDeactivate(t,n,e,r):L(a,()=>c(t,n,e,r));return ue(u).pipe(Q())});return g(o).pipe(Re())}function Jo(t,n,e,r,i){let o=n.canLoad;if(o===void 0||o.length===0)return g(!0);let s=o.map(a=>{let c=Ce(a,t),u=ko(c)?c.canLoad(n,e):L(t,()=>c(n,e)),l=ue(u);return i?l.pipe(yi(i)):l});return g(s).pipe(Re(),Ri(r))}function Ri(t){return Hr(j(n=>{if(typeof n!="boolean")throw xt(t,n)}),T(n=>n===!0))}function Xo(t,n,e,r,i,o){let s=n.canMatch;if(!s||s.length===0)return g(!0);let a=s.map(c=>{let u=Ce(c,t),l=Fo(u)?u.canMatch(n,e,i):L(t,()=>u(n,e,i));return ue(l).pipe(yi(o))});return g(a).pipe(Re(),Ri(r))}var G=class t extends Error{segmentGroup;constructor(n){super(),this.segmentGroup=n||null,Object.setPrototypeOf(this,t.prototype)}},We=class t extends Error{urlTree;constructor(n){super(),this.urlTree=n,Object.setPrototypeOf(this,t.prototype)}};function es(t){throw new w(4e3,!1)}function ts(t){throw pi(!1,I.GuardRejected)}var Mr=class{urlSerializer;urlTree;constructor(n,e){this.urlSerializer=n,this.urlTree=e}lineralizeSegments(n,e){return S(this,null,function*(){let r=[],i=e.root;for(;;){if(r=r.concat(i.segments),i.numberOfChildren===0)return r;if(i.numberOfChildren>1||!i.children[p])throw es(`${n.redirectTo}`);i=i.children[p]}})}applyRedirectCommands(n,e,r,i,o){return S(this,null,function*(){let s=yield rs(e,i,o);if(s instanceof D)throw new We(s);let a=this.applyRedirectCreateUrlTree(s,this.urlSerializer.parse(s),n,r);if(s[0]==="/")throw new We(a);return a})}applyRedirectCreateUrlTree(n,e,r,i){let o=this.createSegmentGroup(n,e.root,r,i);return new D(o,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(n,e){let r={};return Object.entries(n).forEach(([i,o])=>{if(typeof o=="string"&&o[0]===":"){let a=o.substring(1);r[i]=e[a]}else r[i]=o}),r}createSegmentGroup(n,e,r,i){let o=this.createSegments(n,e.segments,r,i),s={};return Object.entries(e.children).forEach(([a,c])=>{s[a]=this.createSegmentGroup(n,c,r,i)}),new v(o,s)}createSegments(n,e,r,i){return e.map(o=>o.path[0]===":"?this.findPosParam(n,o,i):this.findOrReturn(o,r))}findPosParam(n,e,r){let i=r[e.path.substring(1)];if(!i)throw new w(4001,!1);return i}findOrReturn(n,e){let r=0;for(let i of e){if(i.path===n.path)return e.splice(r),i;r++}return n}};function rs(t,n,e){if(typeof t=="string")return Promise.resolve(t);let r=t;return wt(ue(L(e,()=>r(n))))}function ns(t,n){return t.providers&&!t._injector&&(t._injector=rr(t.providers,n,`Route: ${t.path}`)),t._injector??n}function k(t){return t.outlet||p}function is(t,n){let e=t.filter(r=>k(r)===n);return e.push(...t.filter(r=>k(r)!==n)),e}var Ir={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function Si(t){return{routeConfig:t.routeConfig,url:t.url,params:t.params,queryParams:t.queryParams,fragment:t.fragment,data:t.data,outlet:t.outlet,title:t.title,paramMap:t.paramMap,queryParamMap:t.queryParamMap}}function os(t,n,e,r,i,o,s){let a=wi(t,n,e);if(!a.matched)return g(a);let c=Si(o(a));return r=ns(n,r),Xo(r,n,e,i,c,s).pipe(T(u=>u===!0?a:d({},Ir)))}function wi(t,n,e){if(n.path==="")return n.pathMatch==="full"&&(t.hasChildren()||e.length>0)?d({},Ir):{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};let i=(n.matcher||Gn)(e,t,n);if(!i)return d({},Ir);let o={};Object.entries(i.posParams??{}).forEach(([a,c])=>{o[a]=c.path});let s=i.consumed.length>0?d(d({},o),i.consumed[i.consumed.length-1].parameters):o;return{matched:!0,consumedSegments:i.consumed,remainingSegments:e.slice(i.consumed.length),parameters:s,positionalParamSegments:i.posParams??{}}}function qn(t,n,e,r,i){return e.length>0&&cs(t,e,r,i)?{segmentGroup:new v(n,as(r,new v(e,t.children))),slicedSegments:[]}:e.length===0&&us(t,e,r)?{segmentGroup:new v(t.segments,ss(t,e,r,t.children)),slicedSegments:e}:{segmentGroup:new v(t.segments,t.children),slicedSegments:e}}function ss(t,n,e,r){let i={};for(let o of e)if($t(t,n,o)&&!r[k(o)]){let s=new v([],{});i[k(o)]=s}return d(d({},r),i)}function as(t,n){let e={};e[p]=n;for(let r of t)if(r.path===""&&k(r)!==p){let i=new v([],{});e[k(r)]=i}return e}function cs(t,n,e,r){return e.some(i=>!$t(t,n,i)||!(k(i)!==p)?!1:!(r!==void 0&&k(i)===r))}function us(t,n,e){return e.some(r=>$t(t,n,r))}function $t(t,n,e){return(t.hasChildren()||n.length>0)&&e.pathMatch==="full"?!1:e.path===""}function ls(t,n,e){return n.length===0&&!t.children[e]}var Tr=class{};function ds(t,n,e,r,i,o,s="emptyOnly",a){return S(this,null,function*(){return new Dr(t,n,e,r,i,s,o,a).recognize()})}var hs=31,Dr=class{injector;configLoader;rootComponentType;config;urlTree;paramsInheritanceStrategy;urlSerializer;abortSignal;applyRedirects;absoluteRedirectCount=0;allowRedirects=!0;constructor(n,e,r,i,o,s,a,c){this.injector=n,this.configLoader=e,this.rootComponentType=r,this.config=i,this.urlTree=o,this.paramsInheritanceStrategy=s,this.urlSerializer=a,this.abortSignal=c,this.applyRedirects=new Mr(this.urlSerializer,this.urlTree)}noMatchError(n){return new w(4002,`'${n.segmentGroup}'`)}recognize(){return S(this,null,function*(){let n=qn(this.urlTree.root,[],[],this.config).segmentGroup,{children:e,rootSnapshot:r}=yield this.match(n),i=new O(r,e),o=new Ve("",i),s=ni(r,[],this.urlTree.queryParams,this.urlTree.fragment);return s.queryParams=this.urlTree.queryParams,o.url=this.urlSerializer.serialize(s),{state:o,tree:s}})}match(n){return S(this,null,function*(){let e=new me([],Object.freeze({}),Object.freeze(d({},this.urlTree.queryParams)),this.urlTree.fragment,Object.freeze({}),p,this.rootComponentType,null,{},this.injector);try{return{children:yield this.processSegmentGroup(this.injector,this.config,n,p,e),rootSnapshot:e}}catch(r){if(r instanceof We)return this.urlTree=r.urlTree,this.match(r.urlTree.root);throw r instanceof G?this.noMatchError(r):r}})}processSegmentGroup(n,e,r,i,o){return S(this,null,function*(){if(r.segments.length===0&&r.hasChildren())return this.processChildren(n,e,r,o);let s=yield this.processSegment(n,e,r,r.segments,i,!0,o);return s instanceof O?[s]:[]})}processChildren(n,e,r,i){return S(this,null,function*(){let o=[];for(let c of Object.keys(r.children))c==="primary"?o.unshift(c):o.push(c);let s=[];for(let c of o){let u=r.children[c],l=is(e,c),h=yield this.processSegmentGroup(n,l,u,c,i);s.push(...h)}let a=Ci(s);return fs(a),a})}processSegment(n,e,r,i,o,s,a){return S(this,null,function*(){for(let c of e)try{return yield this.processSegmentAgainstRoute(c._injector??n,e,c,r,i,o,s,a)}catch(u){if(u instanceof G||vi(u))continue;throw u}if(ls(r,i,o))return new Tr;throw new G(r)})}processSegmentAgainstRoute(n,e,r,i,o,s,a,c){return S(this,null,function*(){if(k(r)!==s&&(s===p||!$t(i,o,r)))throw new G(i);if(r.redirectTo===void 0)return this.matchSegmentAgainstRoute(n,i,r,o,s,c);if(this.allowRedirects&&a)return this.expandSegmentAgainstRouteUsingRedirect(n,i,e,r,o,s,c);throw new G(i)})}expandSegmentAgainstRouteUsingRedirect(n,e,r,i,o,s,a){return S(this,null,function*(){let{matched:c,parameters:u,consumedSegments:l,positionalParamSegments:h,remainingSegments:m}=wi(e,i,o);if(!c)throw new G(e);typeof i.redirectTo=="string"&&i.redirectTo[0]==="/"&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>hs&&(this.allowRedirects=!1));let ee=this.createSnapshot(n,i,o,u,a);if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let q=yield this.applyRedirects.applyRedirectCommands(l,i.redirectTo,h,Si(ee),n),te=yield this.applyRedirects.lineralizeSegments(i,q);return this.processSegment(n,r,e,te.concat(m),s,!1,a)})}createSnapshot(n,e,r,i,o){let s=new me(r,i,Object.freeze(d({},this.urlTree.queryParams)),this.urlTree.fragment,gs(e),k(e),e.component??e._loadedComponent??null,e,vs(e),n),a=Or(s,o,this.paramsInheritanceStrategy);return s.params=Object.freeze(a.params),s.data=Object.freeze(a.data),s}matchSegmentAgainstRoute(n,e,r,i,o,s){return S(this,null,function*(){if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let a=Ze=>this.createSnapshot(n,r,Ze.consumedSegments,Ze.parameters,s),c=yield wt(os(e,r,i,n,this.urlSerializer,a,this.abortSignal));if(r.path==="**"&&(e.children={}),!c?.matched)throw new G(e);n=r._injector??n;let{routes:u}=yield this.getChildConfig(n,r,i),l=r._loadedInjector??n,{parameters:h,consumedSegments:m,remainingSegments:ee}=c,q=this.createSnapshot(n,r,m,h,s),{segmentGroup:te,slicedSegments:be}=qn(e,m,ee,u,o);if(be.length===0&&te.hasChildren()){let Ze=yield this.processChildren(l,u,te,q);return new O(q,Ze)}if(u.length===0&&be.length===0)return new O(q,[]);let qt=k(r)===o,Me=yield this.processSegment(l,u,te,be,qt?p:o,!0,q);return new O(q,Me instanceof O?[Me]:[])})}getChildConfig(n,e,r){return S(this,null,function*(){if(e.children)return{routes:e.children,injector:n};if(e.loadChildren){if(e._loadedRoutes!==void 0){let o=e._loadedNgModuleFactory;return o&&!e._loadedInjector&&(e._loadedInjector=o.create(n).injector),{routes:e._loadedRoutes,injector:e._loadedInjector}}if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);if(yield wt(Jo(n,e,r,this.urlSerializer,this.abortSignal))){let o=yield this.configLoader.loadChildren(n,e);return e._loadedRoutes=o.routes,e._loadedInjector=o.injector,e._loadedNgModuleFactory=o.factory,o}throw ts(e)}return{routes:[],injector:n}})}};function fs(t){t.sort((n,e)=>n.value.outlet===p?-1:e.value.outlet===p?1:n.value.outlet.localeCompare(e.value.outlet))}function ps(t){let n=t.value.routeConfig;return n&&n.path===""}function Ci(t){let n=[],e=new Set;for(let r of t){if(!ps(r)){n.push(r);continue}let i=n.find(o=>r.value.routeConfig===o.value.routeConfig);i!==void 0?(i.children.push(...r.children),e.add(i)):n.push(r)}for(let r of e){let i=Ci(r.children);n.push(new O(r.value,i))}return n.filter(r=>!e.has(r))}function gs(t){return t.data||{}}function vs(t){return t.resolve||{}}function ms(t,n,e,r,i,o,s){return V(a=>S(null,null,function*(){let{state:c,tree:u}=yield ds(t,n,e,r,a.extractedUrl,i,o,s);return _(d({},a),{targetSnapshot:c,urlAfterRedirects:u})}))}function ys(t){return V(n=>{let{targetSnapshot:e,guards:{canActivateChecks:r}}=n;if(!r.length)return g(n);let i=new Set(r.map(a=>a.route)),o=new Set;for(let a of i)if(!o.has(a))for(let c of Ei(a))o.add(c);let s=0;return A(o).pipe(et(a=>i.has(a)?Rs(a,e,t):(a.data=Or(a,a.parent,t).resolve,g(void 0))),j(()=>s++),Wt(1),V(a=>s===o.size?g(n):U))})}function Ei(t){let n=t.children.map(e=>Ei(e)).flat();return[t,...n]}function Rs(t,n,e){let r=t.routeConfig,i=t._resolve;return r?.title!==void 0&&!di(r)&&(i[Ye]=r.title),Je(()=>(t.data=Or(t,t.parent,e).resolve,Ss(i,t,n).pipe(T(o=>(t._resolvedData=o,t.data=d(d({},t.data),o),null)))))}function Ss(t,n,e){let r=gr(t);if(r.length===0)return g({});let i={};return A(r).pipe(V(o=>ws(t[o],n,e).pipe(Q(),j(s=>{if(s instanceof ye)throw xt(new J,s);i[o]=s}))),Wt(1),T(()=>i),Xe(o=>vi(o)?U:zr(o)))}function ws(t,n,e){let r=n._environmentInjector,i=Ce(t,r),o=i.resolve?i.resolve(n,e):L(r,()=>i(n,e));return ue(o)}function Vn(t){return $(n=>{let e=t(n);return e?A(e).pipe(T(()=>n)):g(n)})}var xr=(()=>{class t{buildTitle(e){let r,i=e.root;for(;i!==void 0;)r=this.getResolvedTitleForRoute(i)??r,i=i.children.find(o=>o.outlet===p);return r}getResolvedTitleForRoute(e){return e.data[Ye]}static \u0275fac=function(r){return new(r||t)};static \u0275prov=y({token:t,factory:()=>f(bi),providedIn:"root"})}return t})(),bi=(()=>{class t extends xr{title;constructor(e){super(),this.title=e}updateTitle(e){let r=this.buildTitle(e);r!==void 0&&this.title.setTitle(r)}static \u0275fac=function(r){return new(r||t)(R(Hn))};static \u0275prov=y({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Ee=new M("",{factory:()=>({})}),Ke=new M(""),Mi=(()=>{class t{componentLoaders=new WeakMap;childrenLoaders=new WeakMap;onLoadStartListener;onLoadEndListener;compiler=f(Rn);loadComponent(e,r){return S(this,null,function*(){if(this.componentLoaders.get(r))return this.componentLoaders.get(r);if(r._loadedComponent)return Promise.resolve(r._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(r);let i=S(this,null,function*(){try{let o=yield Yn(L(e,()=>r.loadComponent())),s=yield Di(Ti(o));return this.onLoadEndListener&&this.onLoadEndListener(r),r._loadedComponent=s,s}finally{this.componentLoaders.delete(r)}});return this.componentLoaders.set(r,i),i})}loadChildren(e,r){if(this.childrenLoaders.get(r))return this.childrenLoaders.get(r);if(r._loadedRoutes)return Promise.resolve({routes:r._loadedRoutes,injector:r._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(r);let i=S(this,null,function*(){try{let o=yield Ii(r,this.compiler,e,this.onLoadEndListener);return r._loadedRoutes=o.routes,r._loadedInjector=o.injector,r._loadedNgModuleFactory=o.factory,o}finally{this.childrenLoaders.delete(r)}});return this.childrenLoaders.set(r,i),i}static \u0275fac=function(r){return new(r||t)};static \u0275prov=y({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Ii(t,n,e,r){return S(this,null,function*(){let i=yield Yn(L(e,()=>t.loadChildren())),o=yield Di(Ti(i)),s;o instanceof an||Array.isArray(o)?s=o:s=yield n.compileModuleAsync(o),r&&r(t);let a,c,u=!1,l;return Array.isArray(s)?(c=s,u=!0):(a=s.create(e).injector,l=s,c=a.get(Ke,[],{optional:!0,self:!0}).flat()),{routes:c.map(Lr),injector:a,factory:l}})}function Cs(t){return t&&typeof t=="object"&&"default"in t}function Ti(t){return Cs(t)?t.default:t}function Di(t){return S(this,null,function*(){return t})}var zt=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275prov=y({token:t,factory:()=>f(Es),providedIn:"root"})}return t})(),Es=(()=>{class t{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,r){return e}static \u0275fac=function(r){return new(r||t)};static \u0275prov=y({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),_i=new M("");var bs=()=>{},Ai=new M(""),Oi=(()=>{class t{currentNavigation=E(null,{equal:()=>!1});currentTransition=null;lastSuccessfulNavigation=E(null);events=new re;transitionAbortWithErrorSubject=new re;configLoader=f(Mi);environmentInjector=f(K);destroyRef=f(Qt);urlSerializer=f(Se);rootContexts=f(we);location=f(ut);inputBindingEnabled=f(Ht,{optional:!0})!==null;titleStrategy=f(xr);options=f(Ee,{optional:!0})||{};paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly";urlHandlingStrategy=f(zt);createViewTransition=f(_i,{optional:!0});navigationErrorHandler=f(Ai,{optional:!0});navigationId=0;get hasRequestedNavigation(){return this.navigationId!==0}transitions;afterPreactivation=()=>g(void 0);rootComponentType=null;destroyed=!1;constructor(){let e=i=>this.events.next(new Dt(i)),r=i=>this.events.next(new _t(i));this.configLoader.onLoadEndListener=r,this.configLoader.onLoadStartListener=e,this.destroyRef.onDestroy(()=>{this.destroyed=!0})}complete(){this.transitions?.complete()}handleNavigationRequest(e){let r=++this.navigationId;C(()=>{this.transitions?.next(_(d({},e),{extractedUrl:this.urlHandlingStrategy.extract(e.rawUrl),targetSnapshot:null,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null,id:r,routesRecognizeHandler:{},beforeActivateHandler:{}}))})}setupNavigations(e){return this.transitions=new P(null),this.transitions.pipe(ne(r=>r!==null),$(r=>{let i=!1,o=new AbortController,s=()=>!i&&this.currentTransition?.id===r.id;return g(r).pipe($(a=>{if(this.navigationId>r.id)return this.cancelNavigationTransition(r,"",I.SupersededByNewNavigation),U;this.currentTransition=r;let c=this.lastSuccessfulNavigation();this.currentNavigation.set({id:a.id,initialUrl:a.rawUrl,extractedUrl:a.extractedUrl,targetBrowserUrl:typeof a.extras.browserUrl=="string"?this.urlSerializer.parse(a.extras.browserUrl):a.extras.browserUrl,trigger:a.source,extras:a.extras,previousNavigation:c?_(d({},c),{previousNavigation:null}):null,abort:()=>o.abort(),routesRecognizeHandler:a.routesRecognizeHandler,beforeActivateHandler:a.beforeActivateHandler});let u=!e.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),l=a.extras.onSameUrlNavigation??e.onSameUrlNavigation;if(!u&&l!=="reload")return this.events.next(new W(a.id,this.urlSerializer.serialize(a.rawUrl),"",ze.IgnoredSameUrlNavigation)),a.resolve(!1),U;if(this.urlHandlingStrategy.shouldProcessUrl(a.rawUrl))return g(a).pipe($(h=>(this.events.next(new ae(h.id,this.urlSerializer.serialize(h.extractedUrl),h.source,h.restoredState)),h.id!==this.navigationId?U:Promise.resolve(h))),ms(this.environmentInjector,this.configLoader,this.rootComponentType,e.config,this.urlSerializer,this.paramsInheritanceStrategy,o.signal),j(h=>{r.targetSnapshot=h.targetSnapshot,r.urlAfterRedirects=h.urlAfterRedirects,this.currentNavigation.update(m=>(m.finalUrl=h.urlAfterRedirects,m)),this.events.next(new Be)}),$(h=>A(r.routesRecognizeHandler.deferredHandle??g(void 0)).pipe(T(()=>h))),j(()=>{let h=new Fe(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(h)}));if(u&&this.urlHandlingStrategy.shouldProcessUrl(a.currentRawUrl)){let{id:h,extractedUrl:m,source:ee,restoredState:q,extras:te}=a,be=new ae(h,this.urlSerializer.serialize(m),ee,q);this.events.next(be);let qt=ui(this.rootComponentType,this.environmentInjector).snapshot;return this.currentTransition=r=_(d({},a),{targetSnapshot:qt,urlAfterRedirects:m,extras:_(d({},te),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.update(Me=>(Me.finalUrl=m,Me)),g(r)}else return this.events.next(new W(a.id,this.urlSerializer.serialize(a.extractedUrl),"",ze.IgnoredByUrlHandlingStrategy)),a.resolve(!1),U}),T(a=>{let c=new bt(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);return this.events.next(c),this.currentTransition=r=_(d({},a),{guards:Po(a.targetSnapshot,a.currentSnapshot,this.rootContexts)}),r}),qo(a=>this.events.next(a)),$(a=>{if(r.guardsResult=a.guardsResult,a.guardsResult&&typeof a.guardsResult!="boolean")throw xt(this.urlSerializer,a.guardsResult);let c=new Mt(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot,!!a.guardsResult);if(this.events.next(c),!s())return U;if(!a.guardsResult)return this.cancelNavigationTransition(a,"",I.GuardRejected),U;if(a.guards.canActivateChecks.length===0)return g(a);let u=new It(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);if(this.events.next(u),!s())return U;let l=!1;return g(a).pipe(ys(this.paramsInheritanceStrategy),j({next:()=>{l=!0;let h=new Tt(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(h)},complete:()=>{l||this.cancelNavigationTransition(a,"",I.NoDataFromResolver)}}))}),Vn(a=>{let c=l=>{let h=[];if(l.routeConfig?._loadedComponent)l.component=l.routeConfig?._loadedComponent;else if(l.routeConfig?.loadComponent){let m=l._environmentInjector;h.push(this.configLoader.loadComponent(m,l.routeConfig).then(ee=>{l.component=ee}))}for(let m of l.children)h.push(...c(m));return h},u=c(a.targetSnapshot.root);return u.length===0?g(a):A(Promise.all(u).then(()=>a))}),Vn(()=>this.afterPreactivation()),$(()=>{let{currentSnapshot:a,targetSnapshot:c}=r,u=this.createViewTransition?.(this.environmentInjector,a.root,c.root);return u?A(u).pipe(T(()=>r)):g(r)}),de(1),$(a=>{let c=_o(e.routeReuseStrategy,a.targetSnapshot,a.currentRouterState);this.currentTransition=r=a=_(d({},a),{targetRouterState:c}),this.currentNavigation.update(l=>(l.targetRouterState=c,l)),this.events.next(new ge);let u=r.beforeActivateHandler.deferredHandle;return u?A(u.then(()=>a)):g(a)}),j(a=>{new br(e.routeReuseStrategy,r.targetRouterState,r.currentRouterState,c=>this.events.next(c),this.inputBindingEnabled).activate(this.rootContexts),s()&&(i=!0,this.currentNavigation.update(c=>(c.abort=bs,c)),this.lastSuccessfulNavigation.set(C(this.currentNavigation)),this.events.next(new H(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects))),this.titleStrategy?.updateTitle(a.targetRouterState.snapshot),a.resolve(!0))}),tt(mi(o.signal).pipe(ne(()=>!i&&!r.targetRouterState),j(()=>{this.cancelNavigationTransition(r,o.signal.reason+"",I.Aborted)}))),j({complete:()=>{i=!0}}),tt(this.transitionAbortWithErrorSubject.pipe(j(a=>{throw a}))),Vr(()=>{o.abort(),i||this.cancelNavigationTransition(r,"",I.SupersededByNewNavigation),this.currentTransition?.id===r.id&&(this.currentNavigation.set(null),this.currentTransition=null)}),Xe(a=>{if(i=!0,this.destroyed)return r.resolve(!1),U;if(gi(a))this.events.next(new x(r.id,this.urlSerializer.serialize(r.extractedUrl),a.message,a.cancellationCode)),No(a)?this.events.next(new ve(a.url,a.navigationBehaviorOptions)):r.resolve(!1);else{let c=new ce(r.id,this.urlSerializer.serialize(r.extractedUrl),a,r.targetSnapshot??void 0);try{let u=L(this.environmentInjector,()=>this.navigationErrorHandler?.(c));if(u instanceof ye){let{message:l,cancellationCode:h}=xt(this.urlSerializer,u);this.events.next(new x(r.id,this.urlSerializer.serialize(r.extractedUrl),l,h)),this.events.next(new ve(u.redirectTo,u.navigationBehaviorOptions))}else throw this.events.next(c),a}catch(u){this.options.resolveNavigationPromiseOnError?r.resolve(!1):r.reject(u)}}return U}))}))}cancelNavigationTransition(e,r,i){let o=new x(e.id,this.urlSerializer.serialize(e.extractedUrl),r,i);this.events.next(o),e.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){let e=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),r=C(this.currentNavigation),i=r?.targetBrowserUrl??r?.extractedUrl;return e.toString()!==i?.toString()&&!r?.extras.skipLocationChange}static \u0275fac=function(r){return new(r||t)};static \u0275prov=y({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Ms(t){return t!==je}var Ni=new M("");var Pi=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275prov=y({token:t,factory:()=>f(Is),providedIn:"root"})}return t})(),kt=class{shouldDetach(n){return!1}store(n,e){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,e){return n.routeConfig===e.routeConfig}shouldDestroyInjector(n){return!0}},Is=(()=>{class t extends kt{static \u0275fac=(()=>{let e;return function(i){return(e||(e=Zt(t)))(i||t)}})();static \u0275prov=y({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Ft=(()=>{class t{urlSerializer=f(Se);options=f(Ee,{optional:!0})||{};canceledNavigationResolution=this.options.canceledNavigationResolution||"replace";location=f(ut);urlHandlingStrategy=f(zt);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";currentUrlTree=new D;getCurrentUrlTree(){return this.currentUrlTree}rawUrlTree=this.currentUrlTree;getRawUrlTree(){return this.rawUrlTree}createBrowserPath({finalUrl:e,initialUrl:r,targetBrowserUrl:i}){let o=e!==void 0?this.urlHandlingStrategy.merge(e,r):r,s=i??o;return s instanceof D?this.urlSerializer.serialize(s):s}routerUrlState(e){return e?.targetBrowserUrl===void 0||e?.finalUrl===void 0?{}:{\u0275routerUrl:this.urlSerializer.serialize(e.finalUrl)}}commitTransition({targetRouterState:e,finalUrl:r,initialUrl:i}){r&&e?(this.currentUrlTree=r,this.rawUrlTree=this.urlHandlingStrategy.merge(r,i),this.routerState=e):this.rawUrlTree=i}routerState=ui(null,f(K));getRouterState(){return this.routerState}_stateMemento=this.createStateMemento();get stateMemento(){return this._stateMemento}updateStateMemento(){this._stateMemento=this.createStateMemento()}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}restoredState(){return this.location.getState()}static \u0275fac=function(r){return new(r||t)};static \u0275prov=y({token:t,factory:()=>f(Ts),providedIn:"root"})}return t})(),Ts=(()=>{class t extends Ft{currentPageId=0;lastSuccessfulId=-1;get browserPageId(){return this.canceledNavigationResolution!=="computed"?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}registerNonRouterCurrentEntryChangeListener(e){return this.location.subscribe(r=>{r.type==="popstate"&&setTimeout(()=>{e(r.url,r.state,"popstate",{replaceUrl:!0})})})}handleRouterEvent(e,r){e instanceof ae?this.updateStateMemento():e instanceof W?this.commitTransition(r):e instanceof Fe?this.urlUpdateStrategy==="eager"&&(r.extras.skipLocationChange||this.setBrowserUrl(this.createBrowserPath(r),r)):e instanceof ge?(this.commitTransition(r),this.urlUpdateStrategy==="deferred"&&!r.extras.skipLocationChange&&this.setBrowserUrl(this.createBrowserPath(r),r)):e instanceof x&&!ci(e)?this.restoreHistory(r):e instanceof ce?this.restoreHistory(r,!0):e instanceof H&&(this.lastSuccessfulId=e.id,this.currentPageId=this.browserPageId)}setBrowserUrl(e,r){let{extras:i,id:o}=r,{replaceUrl:s,state:a}=i;if(this.location.isCurrentPathEqualTo(e)||s){let c=this.browserPageId,u=d(d({},a),this.generateNgRouterState(o,c,r));this.location.replaceState(e,"",u)}else{let c=d(d({},a),this.generateNgRouterState(o,this.browserPageId+1,r));this.location.go(e,"",c)}}restoreHistory(e,r=!1){if(this.canceledNavigationResolution==="computed"){let i=this.browserPageId,o=this.currentPageId-i;o!==0?this.location.historyGo(o):this.getCurrentUrlTree()===e.finalUrl&&o===0&&(this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution==="replace"&&(r&&this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}resetInternalState({finalUrl:e}){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,r,i){return this.canceledNavigationResolution==="computed"?d({navigationId:e,\u0275routerPageId:r},this.routerUrlState(i)):d({navigationId:e},this.routerUrlState(i))}static \u0275fac=(()=>{let e;return function(i){return(e||(e=Zt(t)))(i||t)}})();static \u0275prov=y({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function jr(t,n){t.events.pipe(ne(e=>e instanceof H||e instanceof x||e instanceof ce||e instanceof W),T(e=>e instanceof H||e instanceof W?0:(e instanceof x?e.code===I.Redirect||e.code===I.SupersededByNewNavigation:!1)?2:1),ne(e=>e!==2),de(1)).subscribe(()=>{n()})}var le=(()=>{class t{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}disposed=!1;nonRouterCurrentEntryChangeSubscription;console=f(un);stateManager=f(Ft);options=f(Ee,{optional:!0})||{};pendingTasks=f(Zr);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";navigationTransitions=f(Oi);urlSerializer=f(Se);location=f(ut);urlHandlingStrategy=f(zt);injector=f(K);_events=new re;get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}navigated=!1;routeReuseStrategy=f(Pi);injectorCleanup=f(Ni,{optional:!0});onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore";config=f(Ke,{optional:!0})?.flat()??[];componentInputBindingEnabled=!!f(Ht,{optional:!0});currentNavigation=this.navigationTransitions.currentNavigation.asReadonly();constructor(){this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this).subscribe({error:e=>{}}),this.subscribeToNavigationEvents()}eventsSubscription=new kr;subscribeToNavigationEvents(){let e=this.navigationTransitions.events.subscribe(r=>{try{let i=this.navigationTransitions.currentTransition,o=C(this.navigationTransitions.currentNavigation);if(i!==null&&o!==null){if(this.stateManager.handleRouterEvent(r,o),r instanceof x&&r.code!==I.Redirect&&r.code!==I.SupersededByNewNavigation)this.navigated=!0;else if(r instanceof H)this.navigated=!0,this.injectorCleanup?.(this.routeReuseStrategy,this.routerState,this.config);else if(r instanceof ve){let s=r.navigationBehaviorOptions,a=this.urlHandlingStrategy.merge(r.url,i.currentRawUrl),c=d({scroll:i.extras.scroll,browserUrl:i.extras.browserUrl,info:i.extras.info,skipLocationChange:i.extras.skipLocationChange,replaceUrl:i.extras.replaceUrl||this.urlUpdateStrategy==="eager"||Ms(i.source)},s);this.scheduleNavigation(a,je,null,c,{resolve:i.resolve,reject:i.reject,promise:i.promise})}}To(r)&&this._events.next(r)}catch(i){this.navigationTransitions.transitionAbortWithErrorSubject.next(i)}});this.eventsSubscription.add(e)}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),je,this.stateManager.restoredState(),{replaceUrl:!0})}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((e,r,i,o)=>{this.navigateToSyncWithBrowser(e,i,r,o)})}navigateToSyncWithBrowser(e,r,i,o){let s=i?.navigationId?i:null,a=i?.\u0275routerUrl??e;if(i?.\u0275routerUrl&&(o=_(d({},o),{browserUrl:e})),i){let u=d({},i);delete u.navigationId,delete u.\u0275routerPageId,delete u.\u0275routerUrl,Object.keys(u).length!==0&&(o.state=u)}let c=this.parseUrl(a);this.scheduleNavigation(c,r,s,o).catch(u=>{this.disposed||this.injector.get(nt)(u)})}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return C(this.navigationTransitions.currentNavigation)}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(e){this.config=e.map(Lr),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this._events.unsubscribe(),this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription?.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0,this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(e,r={}){let{relativeTo:i,queryParams:o,fragment:s,queryParamsHandling:a,preserveFragment:c}=r,u=c?this.currentUrlTree.fragment:s,l=null;switch(a??this.options.defaultQueryParamsHandling){case"merge":l=d(d({},this.currentUrlTree.queryParams),o);break;case"preserve":l=this.currentUrlTree.queryParams;break;default:l=o||null}l!==null&&(l=this.removeEmptyProps(l));let h;try{let m=i?i.snapshot:this.routerState.snapshot.root;h=ii(m)}catch(m){(typeof e[0]!="string"||e[0][0]!=="/")&&(e=[]),h=this.currentUrlTree.root}return oi(h,e,l,u??null,this.urlSerializer)}navigateByUrl(e,r={skipLocationChange:!1}){let i=X(e)?e:this.parseUrl(e),o=this.urlHandlingStrategy.merge(i,this.rawUrlTree);return this.scheduleNavigation(o,je,null,r)}navigate(e,r={skipLocationChange:!1}){return Ds(e),this.navigateByUrl(this.createUrlTree(e,r),r)}serializeUrl(e){return this.urlSerializer.serialize(e)}parseUrl(e){try{return this.urlSerializer.parse(e)}catch(r){return this.console.warn(Wr(4018,!1)),this.urlSerializer.parse("/")}}isActive(e,r){let i;if(r===!0?i=d({},_r):r===!1?i=d({},He):i=d(d({},He),r),X(e))return vr(this.currentUrlTree,e,i);let o=this.parseUrl(e);return vr(this.currentUrlTree,o,i)}removeEmptyProps(e){return Object.entries(e).reduce((r,[i,o])=>(o!=null&&(r[i]=o),r),{})}scheduleNavigation(e,r,i,o,s){if(this.disposed)return Promise.resolve(!1);let a,c,u;s?(a=s.resolve,c=s.reject,u=s.promise):u=new Promise((h,m)=>{a=h,c=m});let l=this.pendingTasks.add();return jr(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(l))}),this.navigationTransitions.handleNavigationRequest({source:r,restoredState:i,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:o,resolve:a,reject:c,promise:u,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),u.catch(Promise.reject.bind(Promise))}static \u0275fac=function(r){return new(r||t)};static \u0275prov=y({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Ds(t){for(let n=0;n<t.length;n++)if(t[n]==null)throw new w(4008,!1)}var As=(()=>{class t{router=f(le);stateManager=f(Ft);fragment=E("");queryParams=E({});path=E("");serializer=f(Se);constructor(){this.updateState(),this.router.events?.subscribe(e=>{e instanceof H&&this.updateState()})}updateState(){let{fragment:e,root:r,queryParams:i}=this.stateManager.getCurrentUrlTree();this.fragment.set(e),this.queryParams.set(i),this.path.set(this.serializer.serialize(new D(r)))}static \u0275fac=function(r){return new(r||t)};static \u0275prov=y({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Bt=(()=>{class t{router;route;tabIndexAttribute;renderer;el;locationStrategy;hrefAttributeValue=f(new wn("href"),{optional:!0});reactiveHref=Sn(()=>this.isAnchorElement?this.computeHref(this._urlTree()):this.hrefAttributeValue);get href(){return C(this.reactiveHref)}set href(e){this.reactiveHref.set(e)}set target(e){this._target.set(e)}get target(){return C(this._target)}_target=E(void 0);set queryParams(e){this._queryParams.set(e)}get queryParams(){return C(this._queryParams)}_queryParams=E(void 0,{equal:()=>!1});set fragment(e){this._fragment.set(e)}get fragment(){return C(this._fragment)}_fragment=E(void 0);set queryParamsHandling(e){this._queryParamsHandling.set(e)}get queryParamsHandling(){return C(this._queryParamsHandling)}_queryParamsHandling=E(void 0);set state(e){this._state.set(e)}get state(){return C(this._state)}_state=E(void 0,{equal:()=>!1});set info(e){this._info.set(e)}get info(){return C(this._info)}_info=E(void 0,{equal:()=>!1});set relativeTo(e){this._relativeTo.set(e)}get relativeTo(){return C(this._relativeTo)}_relativeTo=E(void 0);set preserveFragment(e){this._preserveFragment.set(e)}get preserveFragment(){return C(this._preserveFragment)}_preserveFragment=E(!1);set skipLocationChange(e){this._skipLocationChange.set(e)}get skipLocationChange(){return C(this._skipLocationChange)}_skipLocationChange=E(!1);set replaceUrl(e){this._replaceUrl.set(e)}get replaceUrl(){return C(this._replaceUrl)}_replaceUrl=E(!1);isAnchorElement;onChanges=new re;applicationErrorHandler=f(nt);options=f(Ee,{optional:!0});reactiveRouterState=f(As);constructor(e,r,i,o,s,a){this.router=e,this.route=r,this.tabIndexAttribute=i,this.renderer=o,this.el=s,this.locationStrategy=a;let c=s.nativeElement.tagName?.toLowerCase();this.isAnchorElement=c==="a"||c==="area"||!!(typeof customElements=="object"&&customElements.get(c)?.observedAttributes?.includes?.("href"))}setTabIndexIfNotOnNativeEl(e){this.tabIndexAttribute!=null||this.isAnchorElement||this.applyAttributeValue("tabindex",e)}ngOnChanges(e){this.onChanges.next(this)}routerLinkInput=E(null);set routerLink(e){e==null?(this.routerLinkInput.set(null),this.setTabIndexIfNotOnNativeEl(null)):(X(e)?this.routerLinkInput.set(e):this.routerLinkInput.set(Array.isArray(e)?e:[e]),this.setTabIndexIfNotOnNativeEl("0"))}onClick(e,r,i,o,s){let a=this._urlTree();if(a===null||this.isAnchorElement&&(e!==0||r||i||o||s||typeof this.target=="string"&&this.target!="_self"))return!0;let c={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info};return this.router.navigateByUrl(a,c)?.catch(u=>{this.applicationErrorHandler(u)}),!this.isAnchorElement}ngOnDestroy(){}applyAttributeValue(e,r){let i=this.renderer,o=this.el.nativeElement;r!==null?i.setAttribute(o,e,r):i.removeAttribute(o,e)}_urlTree=st(()=>{this.reactiveRouterState.path(),this._preserveFragment()&&this.reactiveRouterState.fragment();let e=i=>i==="preserve"||i==="merge";(e(this._queryParamsHandling())||e(this.options?.defaultQueryParamsHandling))&&this.reactiveRouterState.queryParams();let r=this.routerLinkInput();return r===null||!this.router.createUrlTree?null:X(r)?r:this.router.createUrlTree(r,{relativeTo:this._relativeTo()!==void 0?this._relativeTo():this.route,queryParams:this._queryParams(),fragment:this._fragment(),queryParamsHandling:this._queryParamsHandling(),preserveFragment:this._preserveFragment()})},{equal:(e,r)=>this.computeHref(e)===this.computeHref(r)});get urlTree(){return C(this._urlTree)}computeHref(e){return e!==null&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(e))??"":null}static \u0275fac=function(r){return new(r||t)(F(le),F(Y),Jr("tabindex"),F(tr),F(Jt),F(In))};static \u0275dir=De({type:t,selectors:[["","routerLink",""]],hostVars:2,hostBindings:function(r,i){r&1&&gn("click",function(s){return i.onClick(s.button,s.ctrlKey,s.shiftKey,s.altKey,s.metaKey)}),r&2&&fn("href",i.reactiveHref(),tn)("target",i._target())},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[2,"preserveFragment","preserveFragment",ct],skipLocationChange:[2,"skipLocationChange","skipLocationChange",ct],replaceUrl:[2,"replaceUrl","replaceUrl",ct],routerLink:"routerLink"},features:[Ie]})}return t})(),Os=(()=>{class t{router;element;renderer;cdr;links;classes=[];routerEventsSubscription;linkInputChangesSubscription;_isActive=!1;get isActive(){return this._isActive}routerLinkActiveOptions={exact:!1};ariaCurrentWhenActive;isActiveChange=new ie;link=f(Bt,{optional:!0});constructor(e,r,i,o){this.router=e,this.element=r,this.renderer=i,this.cdr=o,this.routerEventsSubscription=e.events.subscribe(s=>{s instanceof H&&this.update()})}ngAfterContentInit(){g(this.links.changes,g(null)).pipe(Gt()).subscribe(e=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();let e=[...this.links.toArray(),this.link].filter(r=>!!r).map(r=>r.onChanges);this.linkInputChangesSubscription=A(e).pipe(Gt()).subscribe(r=>{this._isActive!==this.isLinkActive(this.router)(r)&&this.update()})}set routerLinkActive(e){let r=Array.isArray(e)?e:e.split(" ");this.classes=r.filter(i=>!!i)}ngOnChanges(e){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){!this.links||!this.router.navigated||queueMicrotask(()=>{let e=this.hasActiveLinks();this.classes.forEach(r=>{e?this.renderer.addClass(this.element.nativeElement,r):this.renderer.removeClass(this.element.nativeElement,r)}),e&&this.ariaCurrentWhenActive!==void 0?this.renderer.setAttribute(this.element.nativeElement,"aria-current",this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,"aria-current"),this._isActive!==e&&(this._isActive=e,this.cdr.markForCheck(),this.isActiveChange.emit(e))})}isLinkActive(e){let r=Ns(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact??!1?d({},_r):d({},He);return i=>{let o=i.urlTree;return o?C(Ar(o,e,r)):!1}}hasActiveLinks(){let e=this.isLinkActive(this.router);return this.link&&e(this.link)||this.links.some(e)}static \u0275fac=function(r){return new(r||t)(F(le),F(Jt),F(tr),F(at))};static \u0275dir=De({type:t,selectors:[["","routerLinkActive",""]],contentQueries:function(r,i,o){if(r&1&&vn(o,Bt,5),r&2){let s;mn(s=yn())&&(i.links=s)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",ariaCurrentWhenActive:"ariaCurrentWhenActive",routerLinkActive:"routerLinkActive"},outputs:{isActiveChange:"isActiveChange"},exportAs:["routerLinkActive"],features:[Ie]})}return t})();function Ns(t){let n=t;return!!(n.paths||n.matrixParams||n.queryParams||n.fragment)}var Ps=new M("");function Us(t,...n){return Qr([{provide:Ke,multi:!0,useValue:t},[],{provide:Y,useFactory:Ls},{provide:dn,multi:!0,useFactory:xs},n.map(e=>e.\u0275providers)])}function Ls(){return f(le).routerState.root}function xs(){let t=f(Yt);return n=>{let e=t.get(hn);if(n!==e.components[0])return;let r=t.get(le),i=t.get(js);t.get(ks)===1&&r.initialNavigation(),t.get(Hs,null,{optional:!0})?.setUpPreloading(),t.get(Ps,null,{optional:!0})?.init(),r.resetRootComponentType(e.componentTypes[0]),i.closed||(i.next(),i.complete(),i.unsubscribe())}}var js=new M("",{factory:()=>new re}),ks=new M("",{factory:()=>1});var Hs=new M("");export{Gi as a,Y as b,Pr as c,le as d,Bt as e,Os as f,Us as g};
@@ -0,0 +1 @@
1
+ import{$ as D,Bb as me,Ca as Y,Cb as Q,Da as u,Ea as h,G as k,Ha as pe,I as m,J as Z,Ja as ge,K as X,M as v,O as g,Qb as ve,Sb as _e,Ya as w,Z as ce,a as l,b as d,da as b,db as K,ea as he,fa as P,g as ae,ha as A,j as le,mb as _,o as ue,tb as f,u as de,ua as fe,ub as F,wa as M,xa as o,zb as J}from"./chunk-W7ZKECPT.js";var Fe=(()=>{class n{_renderer;_elementRef;onChange=t=>{};onTouched=()=>{};constructor(t,i){this._renderer=t,this._elementRef=i}setProperty(t,i){this._renderer.setProperty(this._elementRef.nativeElement,t,i)}registerOnTouched(t){this.onTouched=t}registerOnChange(t){this.onChange=t}setDisabledState(t){this.setProperty("disabled",t)}static \u0275fac=function(i){return new(i||n)(o(M),o(A))};static \u0275dir=u({type:n})}return n})(),ne=(()=>{class n extends Fe{static \u0275fac=(()=>{let t;return function(r){return(t||(t=P(n)))(r||n)}})();static \u0275dir=u({type:n,features:[h]})}return n})(),L=new v("");var qe={provide:L,useExisting:m(()=>Ee),multi:!0};function ze(){let n=Q()?Q().getUserAgent():"";return/android (\d+)/.test(n.toLowerCase())}var Ze=new v(""),Ee=(()=>{class n extends Fe{_compositionMode;_composing=!1;constructor(t,i,r){super(t,i),this._compositionMode=r,this._compositionMode==null&&(this._compositionMode=!ze())}writeValue(t){let i=t??"";this.setProperty("value",i)}_handleInput(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)}_compositionStart(){this._composing=!0}_compositionEnd(t){this._composing=!1,this._compositionMode&&this.onChange(t)}static \u0275fac=function(i){return new(i||n)(o(M),o(A),o(Ze,8))};static \u0275dir=u({type:n,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(i,r){i&1&&w("input",function(a){return r._handleInput(a.target.value)})("blur",function(){return r.onTouched()})("compositionstart",function(){return r._compositionStart()})("compositionend",function(a){return r._compositionEnd(a.target.value)})},standalone:!1,features:[_([qe]),h]})}return n})();var Se=new v(""),Ie=new v("");function Oe(n){return n!=null}function Ne(n){return pe(n)?le(n):n}function Re(n){let e={};return n.forEach(t=>{e=t!=null?l(l({},e),t):e}),Object.keys(e).length===0?null:e}function xe(n,e){return e.map(t=>t(n))}function Xe(n){return!n.validate}function ke(n){return n.map(e=>Xe(e)?e:t=>e.validate(t))}function Ye(n){if(!n)return null;let e=n.filter(Oe);return e.length==0?null:function(t){return Re(xe(t,e))}}function ie(n){return n!=null?Ye(ke(n)):null}function Ke(n){if(!n)return null;let e=n.filter(Oe);return e.length==0?null:function(t){let i=xe(t,e).map(Ne);return de(i).pipe(ue(Re))}}function re(n){return n!=null?Ke(ke(n)):null}function ye(n,e){return n===null?[e]:Array.isArray(n)?[...n,e]:[n,e]}function Je(n){return n._rawValidators}function Qe(n){return n._rawAsyncValidators}function ee(n){return n?Array.isArray(n)?n:[n]:[]}function G(n,e){return Array.isArray(n)?n.includes(e):n===e}function Ce(n,e){let t=ee(e);return ee(n).forEach(r=>{G(t,r)||t.push(r)}),t}function Ve(n,e){return ee(e).filter(t=>!G(n,t))}var T=class{get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators=[];_rawAsyncValidators=[];_setValidators(e){this._rawValidators=e||[],this._composedValidatorFn=ie(this._rawValidators)}_setAsyncValidators(e){this._rawAsyncValidators=e||[],this._composedAsyncValidatorFn=re(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_onDestroyCallbacks=[];_registerOnDestroy(e){this._onDestroyCallbacks.push(e)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(e=>e()),this._onDestroyCallbacks=[]}reset(e=void 0){this.control?.reset(e)}hasError(e,t){return this.control?this.control.hasError(e,t):!1}getError(e,t){return this.control?this.control.getError(e,t):null}},V=class extends T{name;get formDirective(){return null}get path(){return null}},R=class extends T{_parent=null;name=null;valueAccessor=null},B=class{_cd;constructor(e){this._cd=e}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}};var Ht=(()=>{class n extends B{constructor(t){super(t)}static \u0275fac=function(i){return new(i||n)(o(R,2))};static \u0275dir=u({type:n,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(i,r){i&2&&K("ng-untouched",r.isUntouched)("ng-touched",r.isTouched)("ng-pristine",r.isPristine)("ng-dirty",r.isDirty)("ng-valid",r.isValid)("ng-invalid",r.isInvalid)("ng-pending",r.isPending)},standalone:!1,features:[h]})}return n})(),Wt=(()=>{class n extends B{constructor(t){super(t)}static \u0275fac=function(i){return new(i||n)(o(V,10))};static \u0275dir=u({type:n,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["","formArray",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(i,r){i&2&&K("ng-untouched",r.isUntouched)("ng-touched",r.isTouched)("ng-pristine",r.isPristine)("ng-dirty",r.isDirty)("ng-valid",r.isValid)("ng-invalid",r.isInvalid)("ng-pending",r.isPending)("ng-submitted",r.isSubmitted)},standalone:!1,features:[h]})}return n})();var E="VALID",j="INVALID",y="PENDING",S="DISABLED",p=class{},U=class extends p{value;source;constructor(e,t){super(),this.value=e,this.source=t}},O=class extends p{pristine;source;constructor(e,t){super(),this.pristine=e,this.source=t}},N=class extends p{touched;source;constructor(e,t){super(),this.touched=e,this.source=t}},C=class extends p{status;source;constructor(e,t){super(),this.status=e,this.source=t}},te=class extends p{source;constructor(e){super(),this.source=e}},H=class extends p{source;constructor(e){super(),this.source=e}};function Pe(n){return(q(n)?n.validators:n)||null}function et(n){return Array.isArray(n)?ie(n):n||null}function je(n,e){return(q(e)?e.asyncValidators:n)||null}function tt(n){return Array.isArray(n)?re(n):n||null}function q(n){return n!=null&&!Array.isArray(n)&&typeof n=="object"}function nt(n,e,t){let i=n.controls;if(!(e?Object.keys(i):i).length)throw new k(1e3,"");if(!i[t])throw new k(1001,"")}function it(n,e,t){n._forEachChild((i,r)=>{if(t[r]===void 0)throw new k(-1002,"")})}var W=class{_pendingDirty=!1;_hasOwnPendingAsyncValidator=null;_pendingTouched=!1;_onCollectionChange=()=>{};_updateOn;_parent=null;_asyncValidationSubscription;_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators;_rawAsyncValidators;value;constructor(e,t){this._assignValidators(e),this._assignAsyncValidators(t)}get validator(){return this._composedValidatorFn}set validator(e){this._rawValidators=this._composedValidatorFn=e}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(e){this._rawAsyncValidators=this._composedAsyncValidatorFn=e}get parent(){return this._parent}get status(){return f(this.statusReactive)}set status(e){f(()=>this.statusReactive.set(e))}_status=F(()=>this.statusReactive());statusReactive=b(void 0);get valid(){return this.status===E}get invalid(){return this.status===j}get pending(){return this.status===y}get disabled(){return this.status===S}get enabled(){return this.status!==S}errors;get pristine(){return f(this.pristineReactive)}set pristine(e){f(()=>this.pristineReactive.set(e))}_pristine=F(()=>this.pristineReactive());pristineReactive=b(!0);get dirty(){return!this.pristine}get touched(){return f(this.touchedReactive)}set touched(e){f(()=>this.touchedReactive.set(e))}_touched=F(()=>this.touchedReactive());touchedReactive=b(!1);get untouched(){return!this.touched}_events=new ae;events=this._events.asObservable();valueChanges;statusChanges;get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(e){this._assignValidators(e)}setAsyncValidators(e){this._assignAsyncValidators(e)}addValidators(e){this.setValidators(Ce(e,this._rawValidators))}addAsyncValidators(e){this.setAsyncValidators(Ce(e,this._rawAsyncValidators))}removeValidators(e){this.setValidators(Ve(e,this._rawValidators))}removeAsyncValidators(e){this.setAsyncValidators(Ve(e,this._rawAsyncValidators))}hasValidator(e){return G(this._rawValidators,e)}hasAsyncValidator(e){return G(this._rawAsyncValidators,e)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(e={}){let t=this.touched===!1;this.touched=!0;let i=e.sourceControl??this;e.onlySelf||this._parent?.markAsTouched(d(l({},e),{sourceControl:i})),t&&e.emitEvent!==!1&&this._events.next(new N(!0,i))}markAllAsDirty(e={}){this.markAsDirty({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsDirty(e))}markAllAsTouched(e={}){this.markAsTouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsTouched(e))}markAsUntouched(e={}){let t=this.touched===!0;this.touched=!1,this._pendingTouched=!1;let i=e.sourceControl??this;this._forEachChild(r=>{r.markAsUntouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:i})}),e.onlySelf||this._parent?._updateTouched(e,i),t&&e.emitEvent!==!1&&this._events.next(new N(!1,i))}markAsDirty(e={}){let t=this.pristine===!0;this.pristine=!1;let i=e.sourceControl??this;e.onlySelf||this._parent?.markAsDirty(d(l({},e),{sourceControl:i})),t&&e.emitEvent!==!1&&this._events.next(new O(!1,i))}markAsPristine(e={}){let t=this.pristine===!1;this.pristine=!0,this._pendingDirty=!1;let i=e.sourceControl??this;this._forEachChild(r=>{r.markAsPristine({onlySelf:!0,emitEvent:e.emitEvent})}),e.onlySelf||this._parent?._updatePristine(e,i),t&&e.emitEvent!==!1&&this._events.next(new O(!0,i))}markAsPending(e={}){this.status=y;let t=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new C(this.status,t)),this.statusChanges.emit(this.status)),e.onlySelf||this._parent?.markAsPending(d(l({},e),{sourceControl:t}))}disable(e={}){let t=this._parentMarkedDirty(e.onlySelf);this.status=S,this.errors=null,this._forEachChild(r=>{r.disable(d(l({},e),{onlySelf:!0}))}),this._updateValue();let i=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new U(this.value,i)),this._events.next(new C(this.status,i)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(d(l({},e),{skipPristineCheck:t}),this),this._onDisabledChange.forEach(r=>r(!0))}enable(e={}){let t=this._parentMarkedDirty(e.onlySelf);this.status=E,this._forEachChild(i=>{i.enable(d(l({},e),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent}),this._updateAncestors(d(l({},e),{skipPristineCheck:t}),this),this._onDisabledChange.forEach(i=>i(!1))}_updateAncestors(e,t){e.onlySelf||(this._parent?.updateValueAndValidity(e),e.skipPristineCheck||this._parent?._updatePristine({},t),this._parent?._updateTouched({},t))}setParent(e){this._parent=e}getRawValue(){return this.value}updateValueAndValidity(e={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){let i=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===E||this.status===y)&&this._runAsyncValidator(i,e.emitEvent)}let t=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new U(this.value,t)),this._events.next(new C(this.status,t)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),e.onlySelf||this._parent?.updateValueAndValidity(d(l({},e),{sourceControl:t}))}_updateTreeValidity(e={emitEvent:!0}){this._forEachChild(t=>t._updateTreeValidity(e)),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?S:E}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(e,t){if(this.asyncValidator){this.status=y,this._hasOwnPendingAsyncValidator={emitEvent:t!==!1,shouldHaveEmitted:e!==!1};let i=Ne(this.asyncValidator(this));this._asyncValidationSubscription=i.subscribe(r=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(r,{emitEvent:t,shouldHaveEmitted:e})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();let e=(this._hasOwnPendingAsyncValidator?.emitEvent||this._hasOwnPendingAsyncValidator?.shouldHaveEmitted)??!1;return this._hasOwnPendingAsyncValidator=null,e}return!1}setErrors(e,t={}){this.errors=e,this._updateControlsErrors(t.emitEvent!==!1,this,t.shouldHaveEmitted)}get(e){let t=e;return t==null||(Array.isArray(t)||(t=t.split(".")),t.length===0)?null:t.reduce((i,r)=>i&&i._find(r),this)}getError(e,t){let i=t?this.get(t):this;return i?.errors?i.errors[e]:null}hasError(e,t){return!!this.getError(e,t)}get root(){let e=this;for(;e._parent;)e=e._parent;return e}_updateControlsErrors(e,t,i){this.status=this._calculateStatus(),e&&this.statusChanges.emit(this.status),(e||i)&&this._events.next(new C(this.status,t)),this._parent&&this._parent._updateControlsErrors(e,t,i)}_initObservables(){this.valueChanges=new D,this.statusChanges=new D}_calculateStatus(){return this._allControlsDisabled()?S:this.errors?j:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(y)?y:this._anyControlsHaveStatus(j)?j:E}_anyControlsHaveStatus(e){return this._anyControls(t=>t.status===e)}_anyControlsDirty(){return this._anyControls(e=>e.dirty)}_anyControlsTouched(){return this._anyControls(e=>e.touched)}_updatePristine(e,t){let i=!this._anyControlsDirty(),r=this.pristine!==i;this.pristine=i,e.onlySelf||this._parent?._updatePristine(e,t),r&&this._events.next(new O(this.pristine,t))}_updateTouched(e={},t){this.touched=this._anyControlsTouched(),this._events.next(new N(this.touched,t)),e.onlySelf||this._parent?._updateTouched(e,t)}_onDisabledChange=[];_registerOnCollectionChange(e){this._onCollectionChange=e}_setUpdateStrategy(e){q(e)&&e.updateOn!=null&&(this._updateOn=e.updateOn)}_parentMarkedDirty(e){return!e&&!!this._parent?.dirty&&!this._parent._anyControlsDirty()}_find(e){return null}_assignValidators(e){this._rawValidators=Array.isArray(e)?e.slice():e,this._composedValidatorFn=et(this._rawValidators)}_assignAsyncValidators(e){this._rawAsyncValidators=Array.isArray(e)?e.slice():e,this._composedAsyncValidatorFn=tt(this._rawAsyncValidators)}},$=class extends W{constructor(e,t,i){super(Pe(t),je(i,t)),this.controls=e,this._initObservables(),this._setUpdateStrategy(t),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;registerControl(e,t){return this.controls[e]?this.controls[e]:(this.controls[e]=t,t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange),t)}addControl(e,t,i={}){this.registerControl(e,t),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}removeControl(e,t={}){this.controls[e]&&this.controls[e]._registerOnCollectionChange(()=>{}),delete this.controls[e],this.updateValueAndValidity({emitEvent:t.emitEvent}),this._onCollectionChange()}setControl(e,t,i={}){this.controls[e]&&this.controls[e]._registerOnCollectionChange(()=>{}),delete this.controls[e],t&&this.registerControl(e,t),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}contains(e){return this.controls.hasOwnProperty(e)&&this.controls[e].enabled}setValue(e,t={}){it(this,!0,e),Object.keys(e).forEach(i=>{nt(this,!0,i),this.controls[i].setValue(e[i],{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t)}patchValue(e,t={}){e!=null&&(Object.keys(e).forEach(i=>{let r=this.controls[i];r&&r.patchValue(e[i],{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t))}reset(e={},t={}){this._forEachChild((i,r)=>{i.reset(e?e[r]:null,d(l({},t),{onlySelf:!0}))}),this._updatePristine(t,this),this._updateTouched(t,this),this.updateValueAndValidity(t),t?.emitEvent!==!1&&this._events.next(new H(this))}getRawValue(){return this._reduceChildren({},(e,t,i)=>(e[i]=t.getRawValue(),e))}_syncPendingControls(){let e=this._reduceChildren(!1,(t,i)=>i._syncPendingControls()?!0:t);return e&&this.updateValueAndValidity({onlySelf:!0}),e}_forEachChild(e){Object.keys(this.controls).forEach(t=>{let i=this.controls[t];i&&e(i,t)})}_setUpControls(){this._forEachChild(e=>{e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(e){for(let[t,i]of Object.entries(this.controls))if(this.contains(t)&&e(i))return!0;return!1}_reduceValue(){let e={};return this._reduceChildren(e,(t,i,r)=>((i.enabled||this.disabled)&&(t[r]=i.value),t))}_reduceChildren(e,t){let i=e;return this._forEachChild((r,s)=>{i=t(i,r,s)}),i}_allControlsDisabled(){for(let e of Object.keys(this.controls))if(this.controls[e].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(e){return this.controls.hasOwnProperty(e)?this.controls[e]:null}};var se=new v("",{factory:()=>oe}),oe="always";function rt(n,e){return[...e.path,n]}function Ge(n,e,t=oe){Te(n,e),e.valueAccessor.writeValue(n.value),(n.disabled||t==="always")&&e.valueAccessor.setDisabledState?.(n.disabled),ot(n,e),lt(n,e),at(n,e),st(n,e)}function De(n,e){n.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(e)})}function st(n,e){if(e.valueAccessor.setDisabledState){let t=i=>{e.valueAccessor.setDisabledState(i)};n.registerOnDisabledChange(t),e._registerOnDestroy(()=>{n._unregisterOnDisabledChange(t)})}}function Te(n,e){let t=Je(n);e.validator!==null?n.setValidators(ye(t,e.validator)):typeof t=="function"&&n.setValidators([t]);let i=Qe(n);e.asyncValidator!==null?n.setAsyncValidators(ye(i,e.asyncValidator)):typeof i=="function"&&n.setAsyncValidators([i]);let r=()=>n.updateValueAndValidity();De(e._rawValidators,r),De(e._rawAsyncValidators,r)}function ot(n,e){e.valueAccessor.registerOnChange(t=>{n._pendingValue=t,n._pendingChange=!0,n._pendingDirty=!0,n.updateOn==="change"&&Be(n,e)})}function at(n,e){e.valueAccessor.registerOnTouched(()=>{n._pendingTouched=!0,n.updateOn==="blur"&&n._pendingChange&&Be(n,e),n.updateOn!=="submit"&&n.markAsTouched()})}function Be(n,e){n._pendingDirty&&n.markAsDirty(),n.setValue(n._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(n._pendingValue),n._pendingChange=!1}function lt(n,e){let t=(i,r)=>{e.valueAccessor.writeValue(i),r&&e.viewToModelUpdate(i)};n.registerOnChange(t),e._registerOnDestroy(()=>{n._unregisterOnChange(t)})}function ut(n,e){n==null,Te(n,e)}function dt(n,e){if(!n.hasOwnProperty("model"))return!1;let t=n.model;return t.isFirstChange()?!0:!Object.is(e,t.currentValue)}function ct(n){return Object.getPrototypeOf(n.constructor)===ne}function ht(n,e){n._syncPendingControls(),e.forEach(t=>{let i=t.control;i.updateOn==="submit"&&i._pendingChange&&(t.viewToModelUpdate(i._pendingValue),i._pendingChange=!1)})}function ft(n,e){if(!e)return null;Array.isArray(e);let t,i,r;return e.forEach(s=>{s.constructor===Ee?t=s:ct(s)?i=s:r=s}),r||i||t||null}var pt={provide:V,useExisting:m(()=>gt)},I=Promise.resolve(),gt=(()=>{class n extends V{callSetDisabledState;get submitted(){return f(this.submittedReactive)}_submitted=F(()=>this.submittedReactive());submittedReactive=b(!1);_directives=new Set;form;ngSubmit=new D;options;constructor(t,i,r){super(),this.callSetDisabledState=r,this.form=new $({},ie(t),re(i))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(t){I.then(()=>{let i=this._findContainer(t.path);t.control=i.registerControl(t.name,t.control),Ge(t.control,t,this.callSetDisabledState),t.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(t)})}getControl(t){return this.form.get(t.path)}removeControl(t){I.then(()=>{this._findContainer(t.path)?.removeControl(t.name),this._directives.delete(t)})}addFormGroup(t){I.then(()=>{let i=this._findContainer(t.path),r=new $({});ut(r,t),i.registerControl(t.name,r),r.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(t){I.then(()=>{this._findContainer(t.path)?.removeControl?.(t.name)})}getFormGroup(t){return this.form.get(t.path)}updateModel(t,i){I.then(()=>{this.form.get(t.path).setValue(i)})}setValue(t){this.control.setValue(t)}onSubmit(t){return this.submittedReactive.set(!0),ht(this.form,this._directives),this.ngSubmit.emit(t),this.form._events.next(new te(this.control)),t?.target?.method==="dialog"}onReset(){this.resetForm()}resetForm(t=void 0){this.form.reset(t),this.submittedReactive.set(!1)}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.form._updateOn=this.options.updateOn)}_findContainer(t){return t.pop(),t.length?this.form.get(t):this.form}static \u0275fac=function(i){return new(i||n)(o(Se,10),o(Ie,10),o(se,8))};static \u0275dir=u({type:n,selectors:[["form",3,"ngNoForm","",3,"formGroup","",3,"formArray",""],["ng-form"],["","ngForm",""]],hostBindings:function(i,r){i&1&&w("submit",function(a){return r.onSubmit(a)})("reset",function(){return r.onReset()})},inputs:{options:[0,"ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],standalone:!1,features:[_([pt]),h]})}return n})();function be(n,e){let t=n.indexOf(e);t>-1&&n.splice(t,1)}function Ae(n){return typeof n=="object"&&n!==null&&Object.keys(n).length===2&&"value"in n&&"disabled"in n}var mt=class extends W{defaultValue=null;_onChange=[];_pendingValue;_pendingChange=!1;constructor(e=null,t,i){super(Pe(t),je(i,t)),this._applyFormState(e),this._setUpdateStrategy(t),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),q(t)&&(t.nonNullable||t.initialValueIsDefault)&&(Ae(e)?this.defaultValue=e.value:this.defaultValue=e)}setValue(e,t={}){this.value=this._pendingValue=e,this._onChange.length&&t.emitModelToViewChange!==!1&&this._onChange.forEach(i=>i(this.value,t.emitViewToModelChange!==!1)),this.updateValueAndValidity(t)}patchValue(e,t={}){this.setValue(e,t)}reset(e=this.defaultValue,t={}){this._applyFormState(e),this.markAsPristine(t),this.markAsUntouched(t),this.setValue(this.value,t),t.overwriteDefaultValue&&(this.defaultValue=this.value),this._pendingChange=!1,t?.emitEvent!==!1&&this._events.next(new H(this))}_updateValue(){}_anyControls(e){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(e){this._onChange.push(e)}_unregisterOnChange(e){be(this._onChange,e)}registerOnDisabledChange(e){this._onDisabledChange.push(e)}_unregisterOnDisabledChange(e){be(this._onDisabledChange,e)}_forEachChild(e){}_syncPendingControls(){return this.updateOn==="submit"&&(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),this._pendingChange)?(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0):!1}_applyFormState(e){Ae(e)?(this.value=this._pendingValue=e.value,e.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=e}};var vt={provide:R,useExisting:m(()=>_t)},Me=Promise.resolve(),_t=(()=>{class n extends R{_changeDetectorRef;callSetDisabledState;control=new mt;static ngAcceptInputType_isDisabled;_registered=!1;viewModel;name="";isDisabled;model;options;update=new D;constructor(t,i,r,s,a,c){super(),this._changeDetectorRef=a,this.callSetDisabledState=c,this._parent=t,this._setValidators(i),this._setAsyncValidators(r),this.valueAccessor=ft(this,s)}ngOnChanges(t){if(this._checkForErrors(),!this._registered||"name"in t){if(this._registered&&(this._checkName(),this.formDirective)){let i=t.name.previousValue;this.formDirective.removeControl({name:i,path:this._getPath(i)})}this._setUpControl()}"isDisabled"in t&&this._updateDisabled(t),dt(t,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective?.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!!(this.options&&this.options.standalone)}_setUpStandalone(){Ge(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._checkName()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),!this._isStandalone()&&this.name}_updateValue(t){Me.then(()=>{this.control.setValue(t,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(t){let i=t.isDisabled.currentValue,r=i!==0&&me(i);Me.then(()=>{r&&!this.control.disabled?this.control.disable():!r&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(t){return this._parent?rt(t,this._parent):[t]}static \u0275fac=function(i){return new(i||n)(o(V,9),o(Se,10),o(Ie,10),o(L,10),o(J,8),o(se,8))};static \u0275dir=u({type:n,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"],options:[0,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],standalone:!1,features:[_([vt]),h,he]})}return n})();var Lt=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275dir=u({type:n,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""],standalone:!1})}return n})();var yt={provide:L,useExisting:m(()=>He),multi:!0};function Ue(n,e){return n==null?`${e}`:(e&&typeof e=="object"&&(e="Object"),`${n}: ${e}`.slice(0,50))}function Ct(n){return n.split(":")[0]}var He=(()=>{class n extends ne{value;_optionMap=new Map;_idCounter=0;set compareWith(t){this._compareWith=t}_compareWith=Object.is;appRefInjector=g(ge).injector;destroyRef=g(ce);cdr=g(J);_queuedWrite=!1;_writeValueAfterRender(){this._queuedWrite||this.appRefInjector.destroyed||(this._queuedWrite=!0,fe({write:()=>{this.destroyRef.destroyed||(this._queuedWrite=!1,this.writeValue(this.value))}},{injector:this.appRefInjector}))}writeValue(t){this.cdr.markForCheck(),this.value=t;let i=this._getOptionId(t),r=Ue(i,t);this.setProperty("value",r)}registerOnChange(t){this.onChange=i=>{this.value=this._getOptionValue(i),t(this.value)}}_registerOption(){return(this._idCounter++).toString()}_getOptionId(t){for(let i of this._optionMap.keys())if(this._compareWith(this._optionMap.get(i),t))return i;return null}_getOptionValue(t){let i=Ct(t);return this._optionMap.has(i)?this._optionMap.get(i):t}static \u0275fac=(()=>{let t;return function(r){return(t||(t=P(n)))(r||n)}})();static \u0275dir=u({type:n,selectors:[["select","formControlName","",3,"multiple",""],["select","formControl","",3,"multiple",""],["select","ngModel","",3,"multiple",""]],hostBindings:function(i,r){i&1&&w("change",function(a){return r.onChange(a.target.value)})("blur",function(){return r.onTouched()})},inputs:{compareWith:"compareWith"},standalone:!1,features:[_([yt]),h]})}return n})(),qt=(()=>{class n{_element;_renderer;_select;id;constructor(t,i,r){this._element=t,this._renderer=i,this._select=r,this._select&&(this.id=this._select._registerOption())}set ngValue(t){this._select!=null&&(this._select._optionMap.set(this.id,t),this._setElementValue(Ue(this.id,t)),this._select._writeValueAfterRender())}set value(t){this._setElementValue(t),this._select?._writeValueAfterRender()}_setElementValue(t){this._renderer.setProperty(this._element.nativeElement,"value",t)}ngOnDestroy(){this._select?._optionMap.delete(this.id),this._select?._writeValueAfterRender()}static \u0275fac=function(i){return new(i||n)(o(A),o(M),o(He,9))};static \u0275dir=u({type:n,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"},standalone:!1})}return n})(),Vt={provide:L,useExisting:m(()=>We),multi:!0};function we(n,e){return n==null?`${e}`:(typeof e=="string"&&(e=`'${e}'`),e&&typeof e=="object"&&(e="Object"),`${n}: ${e}`.slice(0,50))}function Dt(n){return n.split(":")[0]}var We=(()=>{class n extends ne{value;_optionMap=new Map;_idCounter=0;set compareWith(t){this._compareWith=t}_compareWith=Object.is;writeValue(t){this.value=t;let i;if(Array.isArray(t)){let r=t.map(s=>this._getOptionId(s));i=(s,a)=>{s._setSelected(r.indexOf(a)>-1)}}else i=r=>{r._setSelected(!1)};this._optionMap.forEach(i)}registerOnChange(t){this.onChange=i=>{let r=[],s=i.selectedOptions;if(s!==void 0){let a=s;for(let c=0;c<a.length;c++){let x=a[c],z=this._getOptionValue(x.value);r.push(z)}}else{let a=i.options;for(let c=0;c<a.length;c++){let x=a[c];if(x.selected){let z=this._getOptionValue(x.value);r.push(z)}}}this.value=r,t(r)}}_registerOption(t){let i=(this._idCounter++).toString();return this._optionMap.set(i,t),i}_getOptionId(t){for(let i of this._optionMap.keys())if(this._compareWith(this._optionMap.get(i)._value,t))return i;return null}_getOptionValue(t){let i=Dt(t);return this._optionMap.has(i)?this._optionMap.get(i)._value:t}static \u0275fac=(()=>{let t;return function(r){return(t||(t=P(n)))(r||n)}})();static \u0275dir=u({type:n,selectors:[["select","multiple","","formControlName",""],["select","multiple","","formControl",""],["select","multiple","","ngModel",""]],hostBindings:function(i,r){i&1&&w("change",function(a){return r.onChange(a.target)})("blur",function(){return r.onTouched()})},inputs:{compareWith:"compareWith"},standalone:!1,features:[_([Vt]),h]})}return n})(),zt=(()=>{class n{_element;_renderer;_select;id;_value;constructor(t,i,r){this._element=t,this._renderer=i,this._select=r,this._select&&(this.id=this._select._registerOption(this))}set ngValue(t){this._select!=null&&(this._value=t,this._setElementValue(we(this.id,t)),this._select.writeValue(this._select.value))}set value(t){this._select?(this._value=t,this._setElementValue(we(this.id,t)),this._select.writeValue(this._select.value)):this._setElementValue(t)}_setElementValue(t){this._renderer.setProperty(this._element.nativeElement,"value",t)}_setSelected(t){this._renderer.setProperty(this._element.nativeElement,"selected",t)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}static \u0275fac=function(i){return new(i||n)(o(A),o(M),o(We,9))};static \u0275dir=u({type:n,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"},standalone:!1})}return n})();var bt=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=Y({type:n});static \u0275inj=X({})}return n})();var Zt=(()=>{class n{static withConfig(t){return{ngModule:n,providers:[{provide:se,useValue:t.callSetDisabledState??oe}]}}static \u0275fac=function(i){return new(i||n)};static \u0275mod=Y({type:n});static \u0275inj=X({imports:[bt]})}return n})();var $e=class n{http=g(ve);projectService=g(_e);params(e={}){let t=this.projectService.currentId;return t?d(l({},e),{project:t}):e}getProjects(){return this.http.get("/api/projects")}getProviders(){return this.http.get("/api/providers",{params:this.params()})}getWorkflows(){return this.http.get("/api/workflows",{params:this.params()})}getWorkflowFolders(){return this.http.get("/api/workflows/folders",{params:this.params()})}createWorkflowFolder(e){return this.http.post("/api/workflows/folders",{path:e},{params:this.params()})}getWorkflow(e){return this.http.get("/api/workflows/detail",{params:this.params({id:e})})}getRuns(){return this.http.get("/api/runs",{params:this.params()})}getRun(e){return this.http.get(`/api/runs/${e}`,{params:this.params()})}getNodeOutput(e,t){return this.http.get(`/api/runs/${e}/nodes/${t}/output`,{params:this.params()})}startRun(e,t,i={}){let r={workflow:e,args:t};i.provider&&(r.provider=i.provider),i.model&&(r.model=i.model);let s=this.projectService.currentId;return s&&(r.project=s),this.http.post("/api/runs",r)}saveWorkflow(e,t){return this.http.put("/api/workflows",{id:e,content:t},{params:this.params()})}resumeRun(e,t){return this.http.post(`/api/runs/${e}/resume`,{message:t},{params:this.params()})}approveRun(e,t){let i=t?{response:t}:{};return this.http.post(`/api/runs/${e}/approve`,i,{params:this.params()})}rejectRun(e,t){return this.http.post(`/api/runs/${e}/reject`,{reason:t},{params:this.params()})}runAction(e,t,i){let r=`/api/runs/${e}${t==="delete"?"":`/${t}`}`;return t==="delete"?this.http.delete(r,{params:this.params()}):this.http.post(r,t==="reject"?{reason:i}:{},{params:this.params()})}listConversations(){return this.http.get("/api/conversations",{params:this.params()})}getConversationMessages(e){return this.http.get(`/api/conversations/${encodeURIComponent(e)}/messages`,{params:this.params()})}sendConversationMessage(e,t){return this.http.post(`/api/conversations/${encodeURIComponent(e)}/messages`,{message:t},{params:this.params()})}getConfig(){return this.http.get("/api/config",{params:this.params()})}updateConfig(e){return this.http.put("/api/config",e,{params:this.params()})}static \u0275fac=function(t){return new(t||n)};static \u0275prov=Z({token:n,factory:n.\u0275fac,providedIn:"root"})};export{Ee as a,Ht as b,Wt as c,gt as d,_t as e,Lt as f,He as g,qt as h,zt as i,Zt as j,$e as k};
@@ -0,0 +1 @@
1
+ import{d as A,e as R}from"./chunk-FWLQWWZ3.js";import{a as B,b as j,c as q,d as $,e as D,f as Q,g as G,h as J,i as Y,j as H,k as K}from"./chunk-K4VRVZWF.js";import{Ba as W,Fa as u,Ib as z,Jb as N,Mb as L,O as P,Qa as c,Ra as n,Sa as t,T as m,U as f,Ua as v,Va as M,Xa as x,Ya as _,Za as s,bb as F,cb as I,db as h,fb as o,gb as g,hb as V,ib as y,jb as w,k as O,kb as b,lb as C,ob as k,qa as l,rb as T,u as S,w as E}from"./chunk-W7ZKECPT.js";var X=a=>({folder:a}),Z=a=>({id:a});function te(a,i){a&1&&(n(0,"div",7),o(1,"Loading workflows..."),t())}function ne(a,i){if(a&1&&(n(0,"div",8),o(1),t()),a&2){let e=s();l(),g(e.loadError)}}function oe(a,i){if(a&1&&(n(0,"p"),o(1),t()),a&2){let e=s(3);l(),g(e.folderError)}}function re(a,i){if(a&1){let e=x();n(0,"form",30),_("ngSubmit",function(){m(e);let d=s(2);return f(d.createFolder())}),n(1,"span"),o(2),t(),n(3,"input",31),C("ngModelChange",function(d){m(e);let p=s(2);return b(p.newFolderName,d)||(p.newFolderName=d),f(d)}),t(),n(4,"div")(5,"button",32),o(6,"Create"),t(),n(7,"button",22),_("click",function(){m(e);let d=s(2);return f(d.cancelFolder())}),o(8,"Cancel"),t()(),u(9,oe,2,1,"p",33),t()}if(a&2){let e=s(2);l(2),g(e.selectedFolder?e.selectedFolder+"/":""),l(),w("ngModel",e.newFolderName),l(2),c("disabled",e.creatingFolder),l(4),c("ngIf",e.folderError)}}function ie(a,i){if(a&1){let e=x();n(0,"button",34),_("click",function(){let d=m(e).$implicit,p=s(2);return f(p.selectFolder(d.path))}),n(1,"span",16),o(2,"\u203A"),t(),n(3,"span"),o(4),t(),n(5,"strong"),o(6),t()()}if(a&2){let e=i.$implicit,r=s(2);I("padding-left",14+e.depth*16,"px"),h("active",r.selectedFolder===e.path),l(4),g(e.name),l(2),g(e.count)}}function le(a,i){if(a&1){let e=x();v(0),n(1,"span"),o(2,"/"),t(),n(3,"button",22),_("click",function(){let d=m(e).$implicit,p=s(2);return f(p.selectFolder(d.path))}),o(4),t(),M()}if(a&2){let e=i.$implicit,r=i.last;l(3),h("current",r),l(),g(e.name)}}function ae(a,i){if(a&1){let e=x();n(0,"article",35),_("click",function(){let d=m(e).$implicit,p=s(2);return f(p.selectWorkflow(d))}),n(1,"div",36)(2,"span",37),o(3,"Y"),t(),n(4,"div")(5,"strong"),o(6),t(),n(7,"p"),o(8),t()()(),n(9,"span",38),o(10),t(),n(11,"code"),o(12),t(),n(13,"div",39)(14,"a",40),_("click",function(d){return d.stopPropagation()}),o(15,"Details"),t(),n(16,"button",22),_("click",function(d){let p=m(e).$implicit,ee=s(2);return d.stopPropagation(),f(ee.selectWorkflow(p))}),o(17,"Run"),t()()()}if(a&2){let e=i.$implicit,r=s(2);h("selected",(r.selectedWorkflow==null?null:r.selectedWorkflow.id)===e.id),l(6),g(e.name),l(2),g(e.description||"No description provided."),l(2),g(e.nodeCount),l(2),g(e.file),l(2),c("queryParams",k(7,Z,e.id))}}function de(a,i){a&1&&(n(0,"div",41),o(1,"No workflows match this folder and search."),t())}function ce(a,i){if(a&1&&(n(0,"option",55),o(1),t()),a&2){let e=i.$implicit;c("value",e.name)("disabled",!e.available),l(),y(" ",e.name,"",e.available?"":" \u2014 not available on this machine"," ")}}function se(a,i){if(a&1&&(n(0,"option",56),o(1),t()),a&2){let e=i.$implicit;c("value",e),l(),g(e)}}function pe(a,i){if(a&1){let e=x();v(0),n(1,"label",48),o(2,"Provider"),t(),n(3,"select",49),C("ngModelChange",function(d){m(e);let p=s(3);return b(p.runProvider,d)||(p.runProvider=d),f(d)}),_("ngModelChange",function(){m(e);let d=s(3);return f(d.onRunProviderChange())}),n(4,"option",50),o(5,"(workflow default)"),t(),u(6,ce,2,4,"option",51),t(),n(7,"label",52),o(8,"Model"),t(),n(9,"select",53),C("ngModelChange",function(d){m(e);let p=s(3);return b(p.runModel,d)||(p.runModel=d),f(d)}),n(10,"option",50),o(11,"(workflow default)"),t(),u(12,se,2,2,"option",54),t(),M()}if(a&2){let e=s(3);l(3),w("ngModel",e.runProvider),c("disabled",e.running),l(3),c("ngForOf",e.providers),l(3),w("ngModel",e.runModel),c("disabled",e.running),l(3),c("ngForOf",e.runModelOptions)}}function ge(a,i){if(a&1&&(n(0,"div",57),o(1),t()),a&2){let e=s(3);l(),g(e.runError)}}function me(a,i){if(a&1){let e=x();v(0),n(1,"div",12),o(2,"Run workflow"),t(),n(3,"span",42),o(4),t(),n(5,"h2"),o(6),t(),n(7,"p"),o(8),t(),n(9,"dl")(10,"div")(11,"dt"),o(12,"Nodes"),t(),n(13,"dd"),o(14),t()(),n(15,"div")(16,"dt"),o(17,"File"),t(),n(18,"dd"),o(19),t()()(),n(20,"label",43),o(21,"Arguments"),t(),n(22,"input",44),C("ngModelChange",function(d){m(e);let p=s(2);return b(p.runArgs,d)||(p.runArgs=d),f(d)}),t(),u(23,pe,13,6,"ng-container",33),n(24,"button",45),_("click",function(){m(e);let d=s(2);return f(d.runSelected())}),o(25),t(),n(26,"a",46),o(27,"Open details"),t(),u(28,ge,2,1,"div",47),M()}if(a&2){let e=s(2);l(4),g(e.selectedWorkflow.id),l(2),g(e.selectedWorkflow.name),l(2),g(e.selectedWorkflow.description||"No description provided."),l(6),g(e.selectedWorkflow.nodeCount),l(5),g(e.selectedWorkflow.file),l(3),w("ngModel",e.runArgs),c("disabled",e.running),l(),c("ngIf",e.providers.length),l(),c("disabled",e.running),l(),V(" ",e.running?"Starting...":"Run workflow"," "),l(),c("queryParams",k(12,Z,e.selectedWorkflow.id)),l(2),c("ngIf",e.runError)}}function fe(a,i){a&1&&(n(0,"div",12),o(1,"Inspector"),t(),n(2,"p"),o(3,"Select a workflow to inspect and run it."),t())}function _e(a,i){if(a&1){let e=x();n(0,"div",9)(1,"aside",10)(2,"div",11)(3,"div",12),o(4,"Folders"),t(),n(5,"button",13),_("click",function(){m(e);let d=s();return f(d.showFolderForm=!0)}),o(6,"+"),t()(),u(7,re,10,4,"form",14),n(8,"button",15),_("click",function(){m(e);let d=s();return f(d.selectFolder(""))}),n(9,"span",16),o(10,"\u2302"),t(),n(11,"span"),o(12,".vsaf/workflows"),t(),n(13,"strong"),o(14),t()(),u(15,ie,7,6,"button",17),n(16,"a",18),o(17,"+ Workflow in this folder"),t()(),n(18,"main",19)(19,"div",20)(20,"div")(21,"nav",21)(22,"button",22),_("click",function(){m(e);let d=s();return f(d.selectFolder(""))}),o(23,"workflows"),t(),u(24,le,5,3,"ng-container",23),t(),n(25,"p"),o(26),t()(),n(27,"input",24),C("ngModelChange",function(d){m(e);let p=s();return b(p.searchQuery,d)||(p.searchQuery=d),f(d)}),t()(),n(28,"div",25)(29,"span"),o(30,"Name"),t(),n(31,"span"),o(32,"Nodes"),t(),n(33,"span"),o(34,"Location"),t(),n(35,"span"),o(36,"Actions"),t()(),u(37,ae,18,9,"article",26)(38,de,2,0,"div",27),t(),n(39,"aside",28),u(40,me,29,14,"ng-container",29)(41,fe,4,0,"ng-template",null,0,T),t()()}if(a&2){let e=F(42),r=s();l(7),c("ngIf",r.showFolderForm),l(),h("active",r.selectedFolder===""),l(6),g(r.workflows.length),l(),c("ngForOf",r.folders),l(),c("queryParams",k(15,X,r.selectedFolder||null)),l(8),c("ngForOf",r.breadcrumbs),l(2),y("",r.visibleWorkflows.length," workflow",r.visibleWorkflows.length===1?"":"s"),l(),w("ngModel",r.searchQuery),l(10),c("ngForOf",r.visibleWorkflows)("ngForTrackBy",r.trackWorkflow),l(),c("ngIf",!r.visibleWorkflows.length),l(2),c("ngIf",r.selectedWorkflow)("ngIfElse",e)}}var U=class a{api=P(K);router=P(A);workflows=[];folderPaths=[];providers=[];loading=!0;loadError="";selectedFolder="";selectedWorkflow;searchQuery="";runArgs="";runProvider="";runModel="";running=!1;runError="";showFolderForm=!1;newFolderName="";creatingFolder=!1;folderError="";ngOnInit(){S({workflows:this.api.getWorkflows(),folders:this.api.getWorkflowFolders(),providers:this.api.getProviders().pipe(E(()=>O({providers:[]})))}).subscribe({next:i=>{this.workflows=i.workflows,this.folderPaths=i.folders,this.providers=i.providers.providers??[],this.loading=!1},error:i=>{this.loadError=i?.error?.error??"Failed to load workflows.",this.loading=!1}})}get runModelOptions(){return this.runProvider?this.providers.find(i=>i.name===this.runProvider)?.defaultModels??[]:[...new Set(this.providers.flatMap(i=>i.defaultModels))]}onRunProviderChange(){this.runModel&&!this.runModelOptions.includes(this.runModel)&&(this.runModel="")}get folders(){let i=new Set(this.folderPaths);for(let e of this.workflows){let r=e.directory.split("/").filter(Boolean);r.forEach((d,p)=>i.add(r.slice(0,p+1).join("/")))}return[...i].sort().map(e=>({path:e,name:e.slice(e.lastIndexOf("/")+1),depth:e.split("/").length-1,count:this.workflows.filter(r=>r.directory===e||r.directory.startsWith(`${e}/`)).length}))}get breadcrumbs(){let i=this.selectedFolder.split("/").filter(Boolean);return i.map((e,r)=>({name:e,path:i.slice(0,r+1).join("/")}))}get visibleWorkflows(){let i=this.searchQuery.trim().toLowerCase();return this.workflows.filter(e=>{let r=!this.selectedFolder||e.directory===this.selectedFolder,d=!i||`${e.name} ${e.id} ${e.description}`.toLowerCase().includes(i);return r&&d})}selectFolder(i){this.selectedFolder=i,this.selectedWorkflow=void 0,this.runError=""}createFolder(){let i=this.newFolderName.trim().toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"");if(!i){this.folderError="Enter a valid folder name.";return}let e=this.selectedFolder?`${this.selectedFolder}/${i}`:i;this.creatingFolder=!0,this.folderError="",this.api.createWorkflowFolder(e).subscribe({next:()=>{this.creatingFolder=!1,this.folderPaths=[...new Set([...this.folderPaths,e])].sort(),this.selectFolder(e),this.cancelFolder()},error:r=>{this.creatingFolder=!1,this.folderError=r?.error?.error??"Failed to create folder."}})}cancelFolder(){this.showFolderForm=!1,this.newFolderName="",this.folderError=""}selectWorkflow(i){this.selectedWorkflow=i,this.runError=""}trackWorkflow(i,e){return e.id}runSelected(){!this.selectedWorkflow||this.running||(this.running=!0,this.api.startRun(this.selectedWorkflow.id,this.runArgs,{provider:this.runProvider||void 0,model:this.runModel||void 0}).subscribe({next:i=>this.router.navigate(["/runs",i.runId]),error:i=>{this.running=!1,this.runError=i?.error?.error??"Failed to start workflow."}}))}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=W({type:a,selectors:[["app-workflows"]],decls:14,vars:6,consts:[["noSelection",""],[1,"page"],[1,"page-header"],["routerLink","/workflows/builder",1,"primary-button",3,"queryParams"],["class","state",4,"ngIf"],["class","state error",4,"ngIf"],["class","explorer",4,"ngIf"],[1,"state"],[1,"state","error"],[1,"explorer"],[1,"folder-panel"],[1,"folder-heading"],[1,"panel-heading"],["type","button","title","Create subfolder",3,"click"],["class","folder-form",3,"ngSubmit",4,"ngIf"],["type","button",1,"folder-row","root",3,"click"],[1,"chevron"],["type","button","class","folder-row",3,"active","padding-left","click",4,"ngFor","ngForOf"],["routerLink","/workflows/builder",1,"folder-new-flow",3,"queryParams"],[1,"content-panel"],[1,"content-toolbar"],["aria-label","Workflow folder",1,"breadcrumb"],["type","button",3,"click"],[4,"ngFor","ngForOf"],["type","search","placeholder","Search this workspace",3,"ngModelChange","ngModel"],[1,"column-head"],["class","workflow-row",3,"selected","click",4,"ngFor","ngForOf","ngForTrackBy"],["class","empty",4,"ngIf"],[1,"run-panel"],[4,"ngIf","ngIfElse"],[1,"folder-form",3,"ngSubmit"],["name","folderName","placeholder","folder-name","autofocus","",3,"ngModelChange","ngModel"],["type","submit",3,"disabled"],[4,"ngIf"],["type","button",1,"folder-row",3,"click"],[1,"workflow-row",3,"click"],[1,"workflow-name"],[1,"file-icon"],[1,"node-count"],[1,"row-actions"],["routerLink","/workflows/detail",3,"click","queryParams"],[1,"empty"],[1,"namespace"],["for","run-args"],["id","run-args","placeholder","Optional run args",3,"ngModelChange","ngModel","disabled"],["type","button",1,"run-button",3,"click","disabled"],["routerLink","/workflows/detail",1,"details-button",3,"queryParams"],["class","run-error",4,"ngIf"],["for","run-provider"],["id","run-provider",1,"run-select",3,"ngModelChange","ngModel","disabled"],["value",""],[3,"value","disabled",4,"ngFor","ngForOf"],["for","run-model"],["id","run-model",1,"run-select",3,"ngModelChange","ngModel","disabled"],[3,"value",4,"ngFor","ngForOf"],[3,"value","disabled"],[3,"value"],[1,"run-error"]],template:function(e,r){e&1&&(n(0,"section",1)(1,"header",2)(2,"div")(3,"h1"),o(4,"Workflows"),t(),n(5,"p"),o(6,"Browse workflow definitions by their directory structure."),t()(),n(7,"a",3)(8,"span"),o(9,"+"),t(),o(10," New workflow"),t()(),u(11,te,2,0,"div",4)(12,ne,2,1,"div",5)(13,_e,43,17,"div",6),t()),e&2&&(l(7),c("queryParams",k(4,X,r.selectedFolder||null)),l(4),c("ngIf",r.loading),l(),c("ngIf",r.loadError),l(),c("ngIf",!r.loading&&!r.loadError))},dependencies:[L,z,N,H,Q,J,Y,B,G,j,q,D,$,R],styles:["[_nghost-%COMP%]{display:block;min-height:calc(100vh - 56px);background:#101114;color:#e7e7ea}.page[_ngcontent-%COMP%]{padding:22px;max-width:1600px;margin:auto}.page-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.page-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-size:21px;margin:0}.page-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%], .content-toolbar[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:13px;color:#8f96a3;margin:4px 0 0}.primary-button[_ngcontent-%COMP%], .details-button[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:7px;background:#6366f1;color:#fff;text-decoration:none;padding:9px 12px;border-radius:6px;font-size:13px;font-weight:700}.explorer[_ngcontent-%COMP%]{display:grid;grid-template-columns:240px minmax(500px,1fr) 280px;min-height:620px;border:1px solid #292c34;border-radius:7px;overflow:hidden;background:#15161a}.folder-panel[_ngcontent-%COMP%], .run-panel[_ngcontent-%COMP%]{background:#131419}.folder-panel[_ngcontent-%COMP%]{border-right:1px solid #292c34;padding:12px 8px}.run-panel[_ngcontent-%COMP%]{border-left:1px solid #292c34;padding:14px}.panel-heading[_ngcontent-%COMP%]{font-size:11px;color:#8f96a3;text-transform:uppercase;font-weight:800;margin:3px 7px 12px}.folder-heading[_ngcontent-%COMP%]{display:flex;justify-content:space-between}.folder-heading[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:24px;height:24px;border:1px solid #353842;border-radius:4px;background:#202229;color:#fff;cursor:pointer}.folder-form[_ngcontent-%COMP%]{border:1px solid #383b45;background:#191b20;padding:8px;margin-bottom:8px;border-radius:5px}.folder-form[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;color:#777e8b;font-size:10px;overflow-wrap:anywhere}.folder-form[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{box-sizing:border-box;width:100%;margin:5px 0;border:1px solid #3b3e49;background:#101114;color:#fff;padding:6px;border-radius:4px}.folder-form[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;gap:5px}.folder-form[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{border:1px solid #3b3e49;background:#252731;color:#ddd;padding:4px 6px;border-radius:4px;font-size:10px}.folder-form[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#fca5a5;font-size:10px;margin:6px 0 0}.folder-new-flow[_ngcontent-%COMP%]{display:block;color:#a5b4fc;text-decoration:none;font-size:11px;padding:9px 12px;border-top:1px solid #292c34;margin-top:8px}.folder-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:16px minmax(0,1fr) auto;gap:7px;align-items:center;width:100%;height:34px;border:0;border-radius:5px;background:transparent;color:#b7bbc4;text-align:left;cursor:pointer;padding-right:9px}.folder-row[_ngcontent-%COMP%]:hover, .folder-row.active[_ngcontent-%COMP%]{background:#242630;color:#fff}.folder-row[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.folder-row[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-size:10px;color:#6f7684}.chevron[_ngcontent-%COMP%]{color:#7c83ff}.content-panel[_ngcontent-%COMP%]{min-width:0;padding:0 16px 20px}.content-toolbar[_ngcontent-%COMP%]{min-height:72px;display:flex;justify-content:space-between;align-items:center;gap:20px;border-bottom:1px solid #292c34}.breadcrumb[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px}.breadcrumb[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{border:0;background:transparent;color:#949ba8;padding:0;cursor:pointer;font-weight:600}.breadcrumb[_ngcontent-%COMP%] button.current[_ngcontent-%COMP%]{color:#fff}.breadcrumb[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:#555b67}.content-toolbar[_ngcontent-%COMP%] input[_ngcontent-%COMP%], .run-panel[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{box-sizing:border-box;border:1px solid #343741;background:#101114;color:#eee;border-radius:5px;padding:8px 10px;outline:none}.content-toolbar[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:260px}.content-toolbar[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus, .run-panel[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus{border-color:#6366f1}.column-head[_ngcontent-%COMP%], .workflow-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(220px,1.4fr) 60px minmax(150px,.8fr) 120px;gap:12px;align-items:center}.column-head[_ngcontent-%COMP%]{height:38px;color:#707784;font-size:10px;text-transform:uppercase;font-weight:800}.workflow-row[_ngcontent-%COMP%]{min-height:68px;border-top:1px solid #25272e;padding:10px 0;cursor:pointer}.workflow-row[_ngcontent-%COMP%]:hover, .workflow-row.selected[_ngcontent-%COMP%]{background:#1b1d23}.workflow-name[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:10px;min-width:0;padding-left:8px}.workflow-name[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{min-width:0}.file-icon[_ngcontent-%COMP%]{display:grid;place-items:center;flex:0 0 28px;width:28px;height:32px;border:1px solid #4b4f5c;border-radius:4px;color:#a5b4fc;font-size:11px;font-weight:900}.workflow-name[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{display:block;font-size:13px;overflow-wrap:anywhere}.workflow-name[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:4px 0 0;color:#777e8b;font-size:11px;line-height:1.4;overflow:hidden;overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.node-count[_ngcontent-%COMP%]{color:#aeb4bf;font-size:12px}.workflow-row[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{font-size:10px;color:#777e8b;overflow:hidden;text-overflow:ellipsis}.row-actions[_ngcontent-%COMP%]{display:flex;gap:6px}.row-actions[_ngcontent-%COMP%] a[_ngcontent-%COMP%], .row-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{border:1px solid #383b45;background:#202229;color:#c9ccd3;border-radius:4px;padding:5px 7px;text-decoration:none;font:inherit;font-size:11px;cursor:pointer}.run-panel[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:16px;margin:7px 0}.run-panel[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#9299a5;font-size:12px;line-height:1.5}.namespace[_ngcontent-%COMP%]{font:10px ui-monospace,monospace;color:#818cf8;overflow-wrap:anywhere}.run-panel[_ngcontent-%COMP%] dl[_ngcontent-%COMP%]{border-top:1px solid #292c34;border-bottom:1px solid #292c34;padding:8px 0;margin:14px 0}.run-panel[_ngcontent-%COMP%] dl[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;justify-content:space-between;font-size:11px;padding:4px 0}.run-panel[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{color:#777e8b}.run-panel[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;max-width:170px;overflow-wrap:anywhere;text-align:right}.run-panel[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:block;font-size:10px;text-transform:uppercase;color:#8f96a3;font-weight:700;margin:12px 0 6px}.run-panel[_ngcontent-%COMP%] label[_ngcontent-%COMP%]:first-of-type{margin-top:0}.run-panel[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:100%}.run-select[_ngcontent-%COMP%]{display:block;width:100%;box-sizing:border-box;border:1px solid #343741;background:#101114;color:#eee;border-radius:5px;padding:8px 10px;outline:none}.run-select[_ngcontent-%COMP%]:focus{border-color:#6366f1}.run-select[_ngcontent-%COMP%]:disabled{opacity:.55}.run-button[_ngcontent-%COMP%], .details-button[_ngcontent-%COMP%]{width:100%;justify-content:center;box-sizing:border-box;margin-top:9px;border:0}.run-button[_ngcontent-%COMP%]{background:#059669;color:#fff;padding:9px;border-radius:5px;font-weight:700;cursor:pointer}.run-button[_ngcontent-%COMP%]:disabled{opacity:.5}.details-button[_ngcontent-%COMP%]{background:#242630}.run-error[_ngcontent-%COMP%], .state.error[_ngcontent-%COMP%]{color:#fecaca}.run-error[_ngcontent-%COMP%]{font-size:11px;margin-top:10px}.state[_ngcontent-%COMP%], .empty[_ngcontent-%COMP%]{border:1px solid #292c34;padding:18px;color:#949ba8;border-radius:6px}.empty[_ngcontent-%COMP%]{text-align:center;margin-top:12px}.state[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{background:#0b0c0f;padding:2px 5px}@media(max-width:1100px){.explorer[_ngcontent-%COMP%]{grid-template-columns:210px 1fr}.run-panel[_ngcontent-%COMP%]{display:none}}@media(max-width:720px){.page[_ngcontent-%COMP%]{padding:14px}.page-header[_ngcontent-%COMP%]{align-items:flex-start}.explorer[_ngcontent-%COMP%]{display:block}.folder-panel[_ngcontent-%COMP%]{border-right:0;border-bottom:1px solid #292c34}.content-toolbar[_ngcontent-%COMP%]{align-items:flex-start;flex-direction:column;padding:14px 0}.content-toolbar[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:100%}.column-head[_ngcontent-%COMP%]{display:none}.workflow-row[_ngcontent-%COMP%]{grid-template-columns:1fr auto}.workflow-row[_ngcontent-%COMP%] > code[_ngcontent-%COMP%], .node-count[_ngcontent-%COMP%]{display:none}}"]})};export{U as WorkflowsComponent};
@@ -0,0 +1 @@
1
+ import{b as T,e as L}from"./chunk-FWLQWWZ3.js";import{a as R,b as F,c as V,d as A,e as H,f as K,j as z,k as W}from"./chunk-K4VRVZWF.js";import{Ba as M,Ka as x,La as p,Ma as g,Mb as D,O as C,Oa as u,Pa as f,Qa as v,Ra as i,Sa as o,T as _,U as y,Xa as S,Ya as w,Za as l,da as d,db as O,fb as r,gb as m,ib as k,jb as P,kb as I,lb as E,ob as N,qa as a}from"./chunk-W7ZKECPT.js";function B(t){let n=t.metadata?.category;return n==="gate"?"gate":n==="workflow_status"?"status":"text"}function $(t){return t.title?t.title:t.runs.length>0?t.runs[0].workflow_name:t.id}var G=t=>["/conversations",t],h=(t,n)=>n.id;function q(t,n){t&1&&(i(0,"p",2),r(1,"No conversations yet. Start a run or send a message."),o())}function J(t,n){if(t&1&&(i(0,"span",8),r(1),o()),t&2){let e=n.$implicit;x("data-status",e.status),a(),k("",e.workflow_name," \xB7 ",e.status)}}function Q(t,n){if(t&1&&(i(0,"a",5)(1,"span",6),r(2),o(),i(3,"span",7),u(4,J,2,3,"span",8,h),o()()),t&2){let e=n.$implicit,s=l();O("active",e.id===s.selectedId()),v("routerLink",N(4,G,e.id)),a(2),m(s.label(e)),a(2),f(e.runs)}}function U(t,n){t&1&&(i(0,"p",2),r(1,"Select a conversation to view its messages."),o())}function X(t,n){if(t&1&&(i(0,"div",10)(1,"span",15),r(2),o(),i(3,"p",16),r(4),o()()),t&2){let e=n.$implicit,s=l(2);x("data-role",e.role)("data-kind",s.kind(e)),a(2),m(e.role),a(2),m(e.content)}}function Y(t,n){if(t&1&&(i(0,"p",14),r(1),o()),t&2){let e=l(2);a(),m(e.lastReply())}}function Z(t,n){if(t&1){let e=S();i(0,"div",9),u(1,X,5,4,"div",10,h),o(),i(3,"form",11),w("ngSubmit",function(){_(e);let c=l();return y(c.send())}),i(4,"input",12),E("ngModelChange",function(c){_(e);let b=l();return I(b.draft,c)||(b.draft=c),y(c)}),o(),i(5,"button",13),r(6,"Send"),o()(),p(7,Y,2,1,"p",14)}if(t&2){let e=l();a(),f(e.messages()),a(3),P("ngModel",e.draft),v("disabled",e.sending()),a(),v("disabled",e.sending()||!e.draft.trim()),a(2),g(e.lastReply()?7:-1)}}var j=class t{api=C(W);route=C(T);pollHandle;paramSub;conversations=d([]);messages=d([]);selectedId=d(null);sending=d(!1);lastReply=d("");draft="";ngOnInit(){this.paramSub=this.route.paramMap.subscribe(n=>{this.selectedId.set(n.get("conversationId")),this.refresh()}),this.pollHandle=setInterval(()=>this.refreshMessages(),4e3)}ngOnDestroy(){this.pollHandle&&clearInterval(this.pollHandle),this.paramSub?.unsubscribe()}label=$;kind=B;refresh(){this.api.listConversations().subscribe(n=>this.conversations.set(n.conversations)),this.refreshMessages()}refreshMessages(){let n=this.selectedId();n&&this.api.getConversationMessages(n).subscribe({next:e=>this.messages.set(e.messages),error:()=>this.messages.set([])})}send(){let n=this.selectedId(),e=this.draft.trim();!n||!e||(this.sending.set(!0),this.api.sendConversationMessage(n,e).subscribe({next:s=>{this.lastReply.set(s.reply),this.draft="",this.sending.set(!1),this.refresh()},error:()=>this.sending.set(!1)}))}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=M({type:t,selectors:[["app-conversations"]],decls:10,vars:2,consts:[[1,"conversations-layout"],[1,"conversations-sidebar"],[1,"empty"],[1,"conversation-item",3,"active","routerLink"],[1,"chat-panel"],[1,"conversation-item",3,"routerLink"],[1,"conversation-title"],[1,"conversation-meta"],[1,"run-chip"],[1,"message-list"],[1,"message"],[1,"message-input",3,"ngSubmit"],["type","text","name","draft","placeholder","Reply to the paused run or leave a note\u2026","aria-label","Message",3,"ngModelChange","ngModel","disabled"],["type","submit",3,"disabled"],[1,"chat-hint"],[1,"message-role"],[1,"message-content"]],template:function(e,s){e&1&&(i(0,"div",0)(1,"aside",1)(2,"h2"),r(3,"Conversations"),o(),p(4,q,2,0,"p",2),u(5,Q,6,6,"a",3,h),o(),i(7,"section",4),p(8,U,2,0,"p",2)(9,Z,8,4),o()()),e&2&&(a(4),g(s.conversations().length===0?4:-1),a(),f(s.conversations()),a(3),g(s.selectedId()?9:8))},dependencies:[D,z,K,R,F,V,H,A,L],styles:[".conversations-layout[_ngcontent-%COMP%]{display:flex;gap:1rem;min-height:70vh}.conversations-sidebar[_ngcontent-%COMP%]{width:280px;border-right:1px solid var(--border-color, #333);padding-right:1rem}.conversation-item[_ngcontent-%COMP%]{display:block;padding:.5rem;border-radius:6px;text-decoration:none;color:inherit}.conversation-item.active[_ngcontent-%COMP%]{background:#8080ff1f}.conversation-title[_ngcontent-%COMP%]{display:block;font-weight:600}.run-chip[_ngcontent-%COMP%]{font-size:.75rem;opacity:.75;margin-right:.5rem}.chat-panel[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column}.message-list[_ngcontent-%COMP%]{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:.5rem}.message[_ngcontent-%COMP%]{max-width:70%;padding:.5rem .75rem;border-radius:8px;background:#8080801f}.message[data-role=user][_ngcontent-%COMP%]{align-self:flex-end;background:#5078ff2e}.message[data-kind=gate][_ngcontent-%COMP%]{border-left:3px solid orange}.message[data-kind=status][_ngcontent-%COMP%]{opacity:.8;font-style:italic}.message-role[_ngcontent-%COMP%]{font-size:.7rem;text-transform:uppercase;opacity:.6}.message-content[_ngcontent-%COMP%]{margin:.25rem 0 0;white-space:pre-wrap}.message-input[_ngcontent-%COMP%]{display:flex;gap:.5rem;margin-top:1rem}.message-input[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{flex:1}.empty[_ngcontent-%COMP%]{opacity:.7;padding:1rem 0}.chat-hint[_ngcontent-%COMP%]{opacity:.7;font-size:.85rem}"]})};export{j as ConversationsComponent};