daimon 0.8.1 → 0.10.0
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.
- package/CHANGELOG.md +152 -0
- package/README.md +48 -1
- package/dist/cli.js +100 -85
- package/dist/dashboard/browser/chunk-2LMH5KDX.js +5 -0
- package/dist/dashboard/browser/chunk-2QORICNU.js +1 -0
- package/dist/dashboard/browser/chunk-36JZZZCV.js +3 -0
- package/dist/dashboard/browser/{chunk-QSBOKS53.js → chunk-3S7OJ77P.js} +1 -1
- package/dist/dashboard/browser/chunk-42QQHEGP.js +2 -0
- package/dist/dashboard/browser/chunk-4L223A7A.js +1 -0
- package/dist/dashboard/browser/chunk-532NB4ME.js +1 -0
- package/dist/dashboard/browser/chunk-6CP6NCA6.js +4 -0
- package/dist/dashboard/browser/chunk-6OMBXV4F.js +1 -0
- package/dist/dashboard/browser/chunk-6YXOOFGY.js +1 -0
- package/dist/dashboard/browser/{chunk-6WZJCF24.js → chunk-AHO3BCLI.js} +1 -1
- package/dist/dashboard/browser/chunk-ASK7FG27.js +1 -0
- package/dist/dashboard/browser/{chunk-OHX55ZU4.js → chunk-BCGQJHY3.js} +1 -1
- package/dist/dashboard/browser/chunk-BDTAVYPH.js +1 -0
- package/dist/dashboard/browser/chunk-BFBXHJEF.js +1 -0
- package/dist/dashboard/browser/chunk-BKYXU3OY.js +1 -0
- package/dist/dashboard/browser/chunk-BPUIUSAU.js +2 -0
- package/dist/dashboard/browser/chunk-C6SNIY22.js +2 -0
- package/dist/dashboard/browser/{chunk-PJPGLT4T.js → chunk-CCRYWDXZ.js} +1 -1
- package/dist/dashboard/browser/chunk-DNHNU64I.js +2 -0
- package/dist/dashboard/browser/chunk-DRBVSI3B.js +1 -0
- package/dist/dashboard/browser/{chunk-7NRE3SNA.js → chunk-EXOJOB6H.js} +2 -2
- package/dist/dashboard/browser/chunk-EYOED3X7.js +2 -0
- package/dist/dashboard/browser/chunk-G3IBZZQH.js +2 -0
- package/dist/dashboard/browser/chunk-H3HRZLHG.js +4 -0
- package/dist/dashboard/browser/chunk-H5GKWN4K.js +1 -0
- package/dist/dashboard/browser/{chunk-NDSAQ2HK.js → chunk-HVK4GEK7.js} +1 -1
- package/dist/dashboard/browser/{chunk-7NPLP3QD.js → chunk-HYIZY5FQ.js} +1 -1
- package/dist/dashboard/browser/chunk-ITSOVQEA.js +1 -0
- package/dist/dashboard/browser/{chunk-Q772THBA.js → chunk-JODWQVMA.js} +1 -2
- package/dist/dashboard/browser/chunk-LAMOHX23.js +1 -0
- package/dist/dashboard/browser/chunk-NMKAKRON.js +1 -0
- package/dist/dashboard/browser/{chunk-LBRCWYRN.js → chunk-NY5IR366.js} +1 -1
- package/dist/dashboard/browser/chunk-OOQPWG6B.js +1 -0
- package/dist/dashboard/browser/chunk-P3Q7RWT5.js +2 -0
- package/dist/dashboard/browser/{chunk-P5IU57TV.js → chunk-PVPELZPO.js} +1 -1
- package/dist/dashboard/browser/{chunk-V2KNRAE4.js → chunk-QHXOUNPA.js} +1 -1
- package/dist/dashboard/browser/chunk-RMV7CR6Y.js +2 -0
- package/dist/dashboard/browser/chunk-RQSDQXNY.js +1 -0
- package/dist/dashboard/browser/chunk-RWX5JIT4.js +1 -0
- package/dist/dashboard/browser/{chunk-UC3XMN2Y.js → chunk-SXE7REUK.js} +1 -1
- package/dist/dashboard/browser/chunk-TLCLILNG.js +4 -0
- package/dist/dashboard/browser/chunk-UAIWZYHN.js +1 -0
- package/dist/dashboard/browser/chunk-UFTWVSEC.js +2 -0
- package/dist/dashboard/browser/{chunk-2BXIFQGQ.js → chunk-UXLEE3F2.js} +1 -1
- package/dist/dashboard/browser/chunk-XPP3TYS2.js +2 -0
- package/dist/dashboard/browser/{chunk-EIWOTZT3.js → chunk-YFYMS5EE.js} +1 -1
- package/dist/dashboard/browser/chunk-YPVVBWNF.js +1 -0
- package/dist/dashboard/browser/{chunk-3WKRVGPT.js → chunk-Z3XFJOYG.js} +1 -1
- package/dist/dashboard/browser/index.html +2 -2
- package/dist/dashboard/browser/main-EENULCI5.js +1 -0
- package/dist/main.js +55 -50
- package/dist/mcp.js +3 -3
- package/package.json +8 -3
- package/dist/dashboard/browser/chunk-44JIQO3X.js +0 -1
- package/dist/dashboard/browser/chunk-4BAKWDAV.js +0 -1
- package/dist/dashboard/browser/chunk-4OCNYL7T.js +0 -1
- package/dist/dashboard/browser/chunk-7C772RJ3.js +0 -3
- package/dist/dashboard/browser/chunk-A4BNXJUT.js +0 -1
- package/dist/dashboard/browser/chunk-CILFSVSP.js +0 -2
- package/dist/dashboard/browser/chunk-CM4RQF3A.js +0 -5
- package/dist/dashboard/browser/chunk-CY5YRTQK.js +0 -1
- package/dist/dashboard/browser/chunk-GYWEXV2L.js +0 -3
- package/dist/dashboard/browser/chunk-H2N3RBHF.js +0 -1
- package/dist/dashboard/browser/chunk-H3L4MTG4.js +0 -5
- package/dist/dashboard/browser/chunk-I65I7J5Q.js +0 -2
- package/dist/dashboard/browser/chunk-K43KW4K2.js +0 -4
- package/dist/dashboard/browser/chunk-K7S4ITPJ.js +0 -2
- package/dist/dashboard/browser/chunk-KL6X73FV.js +0 -1
- package/dist/dashboard/browser/chunk-KLH6B22T.js +0 -1
- package/dist/dashboard/browser/chunk-LBL7Z5BE.js +0 -5
- package/dist/dashboard/browser/chunk-LHAMBNO6.js +0 -1
- package/dist/dashboard/browser/chunk-NX6DTO32.js +0 -1
- package/dist/dashboard/browser/chunk-P5IE6DI6.js +0 -2
- package/dist/dashboard/browser/chunk-PMAG4W5W.js +0 -1
- package/dist/dashboard/browser/chunk-VM2FOT77.js +0 -1
- package/dist/dashboard/browser/chunk-Y6B6X4Y6.js +0 -2
- package/dist/dashboard/browser/chunk-YYAZGY5M.js +0 -1
- package/dist/dashboard/browser/main-O76X7RMS.js +0 -1
package/dist/mcp.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{McpServer as
|
|
2
|
-
`,"utf8"),{kind:"stub-created",path:
|
|
3
|
-
`);
|
|
1
|
+
import{McpServer as st}from"@modelcontextprotocol/sdk/server/mcp.js";import{StdioServerTransport as it}from"@modelcontextprotocol/sdk/server/stdio.js";import{z as p}from"zod";import v from"node:fs";import w from"node:path";import A from"node:os";import{fileURLToPath as H}from"node:url";var V=H(import.meta.url),O=w.dirname(V);function T(){return{searchRoots:[],portRange:[4200,4299],apiPort:4999,overrides:{},autoStart:[],profiles:{},tags:{},autoRestart:{enabled:!1,maxAttempts:5,windowMs:3e5},healthProbe:{enabled:!0,intervalMs:3e4,timeoutMs:2e3,path:"/",host:null,scheme:null,rejectUnauthorized:!1,fallbackHosts:["127.0.0.1","::1"]},logs:{enabled:!1,dir:w.join(A.homedir(),".daimon","logs"),maxFiles:5,maxBytesPerFile:1e7},depends:{},cascadeRestart:!1,history:{enabled:!0,path:w.join(A.homedir(),".daimon","history.db"),retentionDays:30},notifications:{enabled:!0,onError:!0,onUnhealthy:!0,tray:!1},staleDetect:{enabled:!0,silentMs:3e4},headless:!1,envFiles:{},requestLog:{enabled:!1,portOffset:1e3},metrics:{enabled:!1},editor:{scheme:"vscode"},apiToken:null,output:{format:"compact",ndjson:!1},doctor:{autoFix:{onInit:!1,permitted:["orphan-daemon","stale-lock","missing-search-root","corrupt-history-db","port-conflict-pred","node-version-mismatch","orphan-node-modules","orphan-venv","orphan-bundler-cache","orphan-cargo-target","dead-search-root"]}},dashboard:{theme:"auto",density:"comfortable"},errorRetention:{maxAgeMs:864e5},plugins:{dir:null},webhooks:[]}}function P(n){return n.startsWith("~/")||n.startsWith("~\\")?w.join(A.homedir(),n.slice(2)):n==="~"?A.homedir():n}function j(n,a){if(!n||typeof n!="object")throw new Error(`Config at ${a} is not a JSON object`);let t=n,s=T();if(t.searchRoots!==void 0){if(!Array.isArray(t.searchRoots)||!t.searchRoots.every(e=>typeof e=="string"||e&&typeof e=="object"&&typeof e.path=="string"))throw new Error(`Config "searchRoots" must be an array of strings or { path, viteSubfolders? } objects (${a})`);s.searchRoots=t.searchRoots}if(t.portRange!==void 0){if(!Array.isArray(t.portRange)||t.portRange.length!==2||typeof t.portRange[0]!="number"||typeof t.portRange[1]!="number"||t.portRange[0]>t.portRange[1])throw new Error(`Config "portRange" must be [min, max] numbers (${a})`);s.portRange=[t.portRange[0],t.portRange[1]]}if(t.apiPort!==void 0){if(typeof t.apiPort!="number")throw new Error(`Config "apiPort" must be a number (${a})`);s.apiPort=t.apiPort}if(t.overrides!==void 0){if(typeof t.overrides!="object"||t.overrides===null||Array.isArray(t.overrides))throw new Error(`Config "overrides" must be an object (${a})`);s.overrides=t.overrides}if(t.autoStart!==void 0){if(!Array.isArray(t.autoStart)||!t.autoStart.every(e=>typeof e=="string"))throw new Error(`Config "autoStart" must be an array of strings (${a})`);s.autoStart=t.autoStart}if(t.profiles!==void 0){if(typeof t.profiles!="object"||t.profiles===null||Array.isArray(t.profiles))throw new Error(`Config "profiles" must be an object (${a})`);for(let[e,c]of Object.entries(t.profiles))if(!Array.isArray(c)||!c.every(i=>typeof i=="string"))throw new Error(`Config "profiles.${e}" must be an array of strings (${a})`);s.profiles=t.profiles}if(t.tags!==void 0){if(typeof t.tags!="object"||t.tags===null||Array.isArray(t.tags))throw new Error(`Config "tags" must be an object (${a})`);s.tags=t.tags}if(t.autoRestart&&typeof t.autoRestart=="object"&&(s.autoRestart={...s.autoRestart,...t.autoRestart}),t.healthProbe&&typeof t.healthProbe=="object"&&(s.healthProbe={...s.healthProbe,...t.healthProbe}),t.logs&&typeof t.logs=="object"&&(s.logs={...s.logs,...t.logs},s.logs.dir=P(s.logs.dir)),t.depends&&typeof t.depends=="object"&&!Array.isArray(t.depends)){for(let[e,c]of Object.entries(t.depends))if(!Array.isArray(c)||!c.every(i=>typeof i=="string"))throw new Error(`Config "depends.${e}" must be an array of strings (${a})`);s.depends=t.depends}if(typeof t.cascadeRestart=="boolean"&&(s.cascadeRestart=t.cascadeRestart),t.history&&typeof t.history=="object"&&(s.history={...s.history,...t.history},s.history.path=P(s.history.path)),t.notifications&&typeof t.notifications=="object"&&(s.notifications={...s.notifications,...t.notifications}),t.staleDetect&&typeof t.staleDetect=="object"&&(s.staleDetect={...s.staleDetect,...t.staleDetect}),typeof t.headless=="boolean"&&(s.headless=t.headless),t.envFiles&&typeof t.envFiles=="object"&&!Array.isArray(t.envFiles)&&(s.envFiles=t.envFiles),t.requestLog&&typeof t.requestLog=="object"&&(s.requestLog={...s.requestLog,...t.requestLog}),t.metrics&&typeof t.metrics=="object"&&(s.metrics={...s.metrics,...t.metrics}),t.editor&&typeof t.editor=="object"){let e=t.editor.scheme;typeof e=="string"&&e.trim()&&(s.editor={scheme:e.trim()})}if((typeof t.apiToken=="string"||t.apiToken===null)&&(s.apiToken=t.apiToken),t.output&&typeof t.output=="object"){let e=t.output;(e.format==="compact"||e.format==="full")&&(s.output.format=e.format),typeof e.ndjson=="boolean"&&(s.output.ndjson=e.ndjson)}if(t.doctor&&typeof t.doctor=="object"){let e=t.doctor.autoFix;e&&typeof e=="object"&&(typeof e.onInit=="boolean"&&(s.doctor.autoFix.onInit=e.onInit),Array.isArray(e.permitted)&&(s.doctor.autoFix.permitted=e.permitted.filter(c=>typeof c=="string")))}if(t.dashboard&&typeof t.dashboard=="object"){let e=t.dashboard;(e.theme==="auto"||e.theme==="light"||e.theme==="dark")&&(s.dashboard.theme=e.theme),(e.density==="comfortable"||e.density==="compact")&&(s.dashboard.density=e.density)}if(t.errorRetention&&typeof t.errorRetention=="object"){let e=t.errorRetention;typeof e.maxAgeMs=="number"&&e.maxAgeMs>0&&(s.errorRetention.maxAgeMs=e.maxAgeMs)}if(t.plugins&&typeof t.plugins=="object"){let e=t.plugins;typeof e.dir=="string"&&e.dir.trim()?s.plugins.dir=P(e.dir):e.dir===null&&(s.plugins.dir=null)}if(Array.isArray(t.webhooks)){let e=[];for(let c of t.webhooks){if(!c||typeof c!="object")continue;let i=c;if(typeof i.url!="string"||!i.url.trim())continue;let r={url:i.url};if(Array.isArray(i.events)&&(r.events=i.events.filter(o=>typeof o=="string")),i.headers&&typeof i.headers=="object"){let o={};for(let[f,u]of Object.entries(i.headers))typeof u=="string"&&(o[f]=u);r.headers=o}if(i.filter&&typeof i.filter=="object"){let o={};for(let f of["to","from","app"])Array.isArray(i.filter[f])&&(o[f]=i.filter[f].filter(u=>typeof u=="string"));r.filter=o}e.push(r)}s.webhooks=e}return s}function z(){return{local:w.join(process.cwd(),"daimon.config.json"),user:w.join(A.homedir(),".daimon","config.json")}}function I(){let{local:n,user:a}=z();if(v.existsSync(n)){let e=JSON.parse(v.readFileSync(n,"utf8"));return{kind:"loaded",config:j(e,n),path:n}}if(v.existsSync(a)){let e=JSON.parse(v.readFileSync(a,"utf8"));return{kind:"loaded",config:j(e,a),path:a}}let s=[w.resolve(O,"..","daimon.config.example.json"),w.resolve(O,"..","..","daimon.config.example.json")].find(e=>v.existsSync(e));return v.mkdirSync(w.dirname(a),{recursive:!0}),s?v.copyFileSync(s,a):v.writeFileSync(a,JSON.stringify(T(),null,2)+`
|
|
2
|
+
`,"utf8"),{kind:"stub-created",path:a}}import $ from"node:fs";import R from"node:path";import X from"node:os";import{spawn as Y}from"node:child_process";import{fileURLToPath as Z}from"node:url";import W from"node:fs";import C from"node:path";import{fileURLToPath as K}from"node:url";var D=C.dirname(K(import.meta.url));function Q(){let n=[C.resolve(D,"..","package.json"),C.resolve(D,"..","..","package.json")];for(let a of n)try{return JSON.parse(W.readFileSync(a,"utf8"))}catch{}return{}}var M=Q().version||"0.0.0";var tt=R.join(X.homedir(),".daimon"),N=R.join(tt,"daemon.lock");function et(n){try{return process.kill(n,0),!0}catch(a){return a&&a.code==="EPERM"}}function x(){try{let n=$.readFileSync(N,"utf8"),a=JSON.parse(n);if(!a||typeof a.pid!="number")return null;if(!et(a.pid)){try{$.unlinkSync(N)}catch{}return null}return a}catch{return null}}function rt(){let n=R.dirname(Z(import.meta.url));return R.join(n,"main.js")}async function U(n={}){let a={...process.env};n.port&&(a.DAIMON_PORT=String(n.port)),Y(process.execPath,[rt(),"--headless"],{detached:!0,stdio:"ignore",env:a,windowsHide:!0}).unref();let s=Date.now();for(;Date.now()-s<5e3;){let e=x();if(e&&(!n.port||e.apiPort===n.port))return e;await new Promise(c=>setTimeout(c,100))}throw new Error("daemon failed to start within 5s")}import nt from"node:os";import ot from"node:crypto";var Ct=5*6e4;function E(){let n=process.env.DAIMON_AGENT_ID;if(n&&n.trim())return n.trim();let a=(nt.hostname()||"unknown").split(".")[0].toLowerCase().replace(/[^a-z0-9-]/g,"").slice(0,24)||"host",t=process.pid,s=ot.randomBytes(2).toString("hex"),e=`${a}-${t}-${s}`;return process.env.DAIMON_AGENT_ID=e,e}var at=E();function F(){return{"x-daimon-agent":at,"x-daimon-cwd":process.cwd()}}function ct(){if(process.env.DAIMON_PORT){let a=Number(process.env.DAIMON_PORT);if(Number.isFinite(a)&&a>0)return a}let n=x();if(n)return n.apiPort;try{let a=I();if(a.kind==="loaded")return a.config.apiPort}catch{}return 4999}var J=()=>`http://127.0.0.1:${ct()}`,q=!1;async function G(){if(!q&&(q=!0,process.env.DAIMON_NO_SPAWN!=="1"&&!x()))try{let n=process.env.DAIMON_PORT?Number(process.env.DAIMON_PORT):void 0;await U({port:Number.isFinite(n)&&n>0?n:void 0})}catch{}}async function h(n,a="GET"){await G();try{let t=await fetch(J()+n,{method:a,headers:F()}),s=await t.text();try{return{status:t.status,body:JSON.parse(s)}}catch{return{status:t.status,body:s}}}catch{return{status:0,body:{error:"daimon is not running \u2014 start it with: daimon daemon start --detach"}}}}function g(n){return{content:[{type:"text",text:JSON.stringify(n)}]}}function l(n){return{content:[{type:"text",text:JSON.stringify({error:n})}],isError:!0}}async function pt(){let n=new st({name:"daimon",version:M});n.registerTool("list_apps",{description:"List apps in compact form: name, status, port, health, errCount, lastChangeMs. Use list_apps_full for the verbose v0.4 shape.",inputSchema:{}},async()=>{let e=await h("/api/apps?format=compact");return e.status===0?l(e.body?.error||"unknown"):g(e.body)}),n.registerTool("list_apps_full",{description:"List apps in the verbose v0.4 form (uptimeMs, lastCompileMs, metrics, etc.). Heavier \u2014 prefer list_apps unless you need extra fields.",inputSchema:{}},async()=>{let e=await h("/api/apps?format=full");return e.status===0?l(e.body?.error||"unknown"):g(e.body)});let a=process.cwd(),t=p.string().optional().describe("Workspace cwd for name disambiguation; defaults to the MCP server cwd. Use an explicit value when invoking from a different workspace.");n.registerTool("get_status",{description:"Compact status: name, status, port, url, health, errCount, lastChangeMs, uptime. Use get_status_full for the verbose v0.4 shape.",inputSchema:{name:p.string(),cwd:t}},async({name:e,cwd:c})=>{let i=new URLSearchParams({format:"compact",cwd:c??a}),r=await h(`/api/apps/${encodeURIComponent(e)}?${i.toString()}`);return r.status===0?l(r.body?.error||"unknown"):r.status===412?l(JSON.stringify(r.body)):r.status===404?l("unknown app"):g(r.body)}),n.registerTool("get_status_full",{description:"Verbose v0.4 status form including events, compile history, metrics. Prefer get_status unless you need extra fields.",inputSchema:{name:p.string(),cwd:t}},async({name:e,cwd:c})=>{let i=new URLSearchParams({format:"full",cwd:c??a}),r=await h(`/api/apps/${encodeURIComponent(e)}?${i.toString()}`);return r.status===0?l(r.body?.error||"unknown"):r.status===412?l(JSON.stringify(r.body)):r.status===404?l("unknown app"):g(r.body)}),n.registerTool("get_errors",{description:"Get errors for an app. Supports --since duration, --since-last cursor, optional structured form, and --level (error|warning|lint|all).",inputSchema:{name:p.string(),since:p.string().optional(),sinceLast:p.boolean().optional(),client:p.string().optional(),structured:p.boolean().optional(),level:p.enum(["error","warning","lint","all"]).optional(),cwd:t}},async({name:e,since:c,sinceLast:i,client:r,structured:o,level:f,cwd:u})=>{let y=`/api/apps/${encodeURIComponent(e)}/errors`,d=new URLSearchParams;d.set("cwd",u??a),i?(y+="/since-last",r&&d.set("client",r)):c&&d.set("since",c),f&&d.set("level",f);let b=d.toString(),m=await h(y+(b?"?"+b:""));if(m.status===0)return l(m.body?.error||"unknown");if(m.status===412)return l(JSON.stringify(m.body));if(m.status===404)return l("unknown app");let S=m.body;return o&&Array.isArray(S)&&(S=S.map(k=>k.parsed??{message:k.message})),g(S)}),n.registerTool("get_logs",{description:"Get recent log lines for an app.",inputSchema:{name:p.string(),tail:p.number().int().positive().optional(),since:p.string().optional(),cwd:t}},async({name:e,tail:c,since:i,cwd:r})=>{let o=new URLSearchParams;o.set("cwd",r??a),c&&o.set("tail",String(c)),i&&o.set("since",i);let f=o.toString(),u=await h(`/api/apps/${encodeURIComponent(e)}/logs${f?"?"+f:""}`);return u.status===0?l(u.body?.error||"unknown"):u.status===412?l(JSON.stringify(u.body)):u.status===404?l("unknown app"):g(u.body)});for(let e of["start","stop","restart"])n.registerTool(`${e}_app`,{description:`${e} an app.`,inputSchema:{name:p.string(),cwd:t}},async({name:c,cwd:i})=>{let r=new URLSearchParams({cwd:i??a}),o=await h(`/api/apps/${encodeURIComponent(c)}/${e}?${r.toString()}`,"POST");return o.status===0?l(o.body?.error||"unknown"):o.status===412?l(JSON.stringify(o.body)):g(o.body)});n.registerTool("overview",{description:'Decision-ready snapshot of the workspace: totals, byStatus, needsAttention (with first parsed error per failing app), recentlyChanged. The recommended first call in a session \u2014 answers "what is going on right now?" in one round-trip. Pass `budget` (tokens) to cap response size; overflow collapses to _meta.omitted.',inputSchema:{workspace:p.string().optional(),profile:p.string().optional(),budget:p.number().int().positive().max(5e4).optional()}},async({workspace:e,profile:c,budget:i})=>{let r=new URLSearchParams;e&&r.set("workspace",e),c&&r.set("profile",c),i&&r.set("budget",String(i));let o=r.toString(),f=await h("/api/overview"+(o?"?"+o:""));return f.status===0?l(f.body?.error||"unknown"):g(f.body)}),n.registerTool("diff_errors",{description:'Errors that appeared since the last call by this client. Compact list of {file,line,col,code,message,tool}; bounded by `budget` tokens \u2014 overflow collapses to {omitted:N}. Use this as the "did my last change introduce new errors?" round-trip.',inputSchema:{name:p.string(),client:p.string().optional(),budget:p.number().int().positive().max(5e4).optional()}},async({name:e,client:c,budget:i})=>{let r=new URLSearchParams;r.set("client",c||"mcp-default");let o=await h(`/api/apps/${encodeURIComponent(e)}/errors/since-last?${r.toString()}`);if(o.status===0)return l(o.body?.error||"unknown");if(o.status===404)return l("unknown app");let u=(Array.isArray(o.body)?o.body:[]).map(m=>({file:m.file??null,line:m.line??null,col:m.col??null,code:m.code??null,tool:m.tool??null,message:m.message??""})),y=(i??800)*4,d=0,b=u;for(;JSON.stringify(b).length>y&&b.length>0;)b.pop(),d++;return g({errors:b,_meta:{omitted:d,total:u.length,budget:i??800}})}),n.registerTool("try_fix",{description:"Composite remediation: run doctor --auto-fix for permitted rules, restart the named app, wait for the target state, return {before, after, fixed:[ruleName], stillFailing:[\u2026parsed first 5]}. Never edits user source code, only daemon state. Pair with `focus` for narration; use this for the action.",inputSchema:{name:p.string(),until:p.enum(["serving","healthy"]).optional(),timeoutMs:p.number().int().positive().max(6e5).optional()}},async({name:e,until:c,timeoutMs:i})=>{let r=new URLSearchParams;r.set("until",c||"healthy"),r.set("timeoutMs",String(Math.min(i??18e4,6e5)));let o=await h(`/api/apps/${encodeURIComponent(e)}/try-fix?${r.toString()}`,"POST");return o.status===0?l(o.body?.error||"unknown"):o.status===404?l("unknown app"):g(o.body)}),n.registerTool("focus",{description:'Single round-trip "subscribe-then-act" snapshot for one app: starts the app if stopped, then narrates status/error/health events until target state (serving|healthy|stable) or timeout. Returns the captured event list plus final state. Use as a coherent narrative instead of polling.',inputSchema:{name:p.string(),until:p.enum(["serving","healthy","stable"]).optional(),timeoutMs:p.number().int().positive().max(6e5).optional()}},async({name:e,until:c,timeoutMs:i})=>{let r=new URLSearchParams;r.set("until",c||"healthy"),r.set("timeoutMs",String(Math.min(i??18e4,6e5))),await G();try{let o=await fetch(J()+`/api/apps/${encodeURIComponent(e)}/focus?${r.toString()}`,{method:"POST",headers:F()});if(o.status===404)return l("unknown app");if(!o.body)return l("no response body");let f=o.body.getReader(),u=new TextDecoder,y=[],d=null,b="";for(;;){let{done:m,value:S}=await f.read();if(m)break;b+=u.decode(S,{stream:!0});let k=b.split(`
|
|
3
|
+
`);b=k.pop()??"";for(let B of k){let L=B.trim();if(L)try{let _=JSON.parse(L);_.kind==="done"?d=_:y.push(_)}catch{}}}return g({events:y,final:d})}catch(o){return l(o?.message||String(o))}}),n.registerTool("ensure",{description:'One-call lifecycle: if the app is stopped/crashed/error, start it; then block until it reaches the target state. Idempotent \u2014 returns immediately on already-terminal apps. Replaces the list\u2192status\u2192start\u2192wait\u2192status sequence. Returns compact AppSummary plus _meta.startedFromState / waitedMs. On timeout the body is { error: "timeout", state, _meta: { timedOut: true } } \u2014 treat as exit 2 equivalent.',inputSchema:{name:p.string(),until:p.enum(["serving","healthy"]).optional(),timeoutMs:p.number().int().positive().max(6e5).optional()}},async({name:e,until:c,timeoutMs:i})=>{let r=new URLSearchParams;r.set("until",c||"healthy"),r.set("timeoutMs",String(Math.min(i??18e4,6e5)));let o=await h(`/api/apps/${encodeURIComponent(e)}/ensure?${r.toString()}`,"POST");return o.status===0?l(o.body?.error||"unknown"):o.status===404?l("unknown app"):g(o.body)}),n.registerTool("orchestrate",{description:'Bring up an entire profile in one MCP call: cascade-start every app via depends-order, wait until each reaches the goal, and run ONE round of try-fix on stragglers. Returns { profile, goal, perApp:[{name, reached, tries, fixed?, stillFailing?}], totalMs, allReached }. goal=stable means serving+healthy+5s idle. Honors --budget (drops stillFailing first when over-budget). --dryRun reports planned order + currently-unhealthy apps without starting anything. Recommended way to "bring up my whole workspace" in one call.',inputSchema:{profile:p.string(),goal:p.enum(["serving","healthy","stable"]).optional(),timeoutMs:p.number().int().positive().max(12e5).optional(),dryRun:p.boolean().optional(),budget:p.number().int().positive().optional()}},async({profile:e,goal:c,timeoutMs:i,dryRun:r,budget:o})=>{let f=new URLSearchParams;f.set("profile",e),f.set("goal",c||"healthy"),f.set("timeoutMs",String(Math.min(i??3e5,12e5))),r&&f.set("dryRun","true"),typeof o=="number"&&f.set("budget",String(o));let u=await h(`/api/orchestrate?${f.toString()}`,"POST");return u.status===0?l(u.body?.error||"unknown"):u.status===404?l(u.body?.error||"unknown profile"):g(u.body)}),n.registerTool("ensure_up",{description:"One-call profile bring-up: cascade-start every app in the profile (resolving deps) and block until each reaches the target. Returns per-app terminal state plus _meta.totalMs. Use this instead of daimon up + per-app waits.",inputSchema:{profile:p.string(),until:p.enum(["serving","healthy"]).optional(),timeoutMs:p.number().int().positive().max(12e5).optional()}},async({profile:e,until:c,timeoutMs:i})=>{let r=new URLSearchParams;r.set("until",c||"healthy"),r.set("timeoutMs",String(Math.min(i??3e5,12e5)));let o=await h(`/api/profiles/${encodeURIComponent(e)}/ensure-up?${r.toString()}`,"POST");return o.status===0?l(o.body?.error||"unknown"):o.status===404?l("unknown profile"):g(o.body)}),n.registerTool("wait_for_app",{description:"Block until app reaches the given state or timeout (max 600s).",inputSchema:{name:p.string(),until:p.enum(["serving","healthy","stopped","error"]).optional(),timeout:p.number().int().positive().max(600).optional()}},async({name:e,until:c,timeout:i})=>{let r=new URLSearchParams;r.set("until",c||"serving"),r.set("timeout",String(Math.min(i??120,600)));let o=await h(`/api/apps/${encodeURIComponent(e)}/wait?${r.toString()}`);return o.status===0?l(o.body?.error||"unknown"):o.status===404?l("unknown app"):g(o.body)}),n.registerTool("daimon_who_owns",{description:"Return the current soft-lock holder for an app (if any) and the last 3 agents who interacted with it. Use before start/stop/restart to avoid stepping on another agent.",inputSchema:{name:p.string(),cwd:t}},async({name:e,cwd:c})=>{let i=new URLSearchParams({cwd:c??a}),r=await h(`/api/apps/${encodeURIComponent(e)}/lock?${i.toString()}`);return r.status===0?l(r.body?.error||"unknown"):r.status===404?l("unknown app"):g(r.body)}),n.registerTool("daimon_subscribe_events",{description:"Long-poll for new daimon events. Returns events newer than `sinceMs` (default 60s) for `app` (or all apps), filtered by `kinds` (status, error, warning, lint, health, restart, bundle, task). Use to react to errors / status changes without sleeping.",inputSchema:{app:p.string().optional(),kinds:p.array(p.string()).optional(),sinceMs:p.number().int().positive().max(864e5).optional()}},async({app:e,kinds:c,sinceMs:i})=>{let r=new URLSearchParams;r.set("since",String(i??6e4)+"ms"),e&&r.set("app",e);let o=await h(`/api/events?${r.toString()}`);if(o.status===0)return l(o.body?.error||"unknown");let f=Array.isArray(o.body)?o.body:[];if(c&&c.length){let u=new Set(c);f=f.filter(y=>{let d=y.type??"";return!!(d==="status"&&u.has("status")||(d==="error-new"||d==="error-recur")&&u.has("error")||(d==="warning-new"||d==="warning-recur")&&u.has("warning")||(d==="lint-new"||d==="lint-recur")&&u.has("lint")||d==="health"&&u.has("health")||(d==="restart-scheduled"||d==="compile-regression"||d==="bundle-regression")&&u.has("restart")||d==="bundle"&&u.has("bundle")||d==="task-run"&&u.has("task")||d==="regression-detected"&&u.has("regression"))})}return g(f)}),n.registerTool("daimon_notify_on_error",{description:'Block (up to `timeoutMs`) until the next error-new event for `app`. Convenience wrapper around daimon_subscribe_events for the common "tell me when this app errors" pattern. Returns { error, ts } on hit, { timedOut: true } on timeout.',inputSchema:{app:p.string(),timeoutMs:p.number().int().positive().max(6e5).optional()}},async({app:e,timeoutMs:c})=>{let i=Math.min(c??6e4,6e5),r=Date.now(),o=1500;for(;Date.now()-r<i;){let f=Math.max(500,Date.now()-r),u=new URLSearchParams({since:f+"ms",app:e}),y=await h(`/api/events?${u.toString()}`);if(y.status===0)return l(y.body?.error||"unknown");let b=(Array.isArray(y.body)?y.body:[]).find(m=>m.type==="error-new");if(b)return g({error:b,waitedMs:Date.now()-r});await new Promise(m=>setTimeout(m,o))}return g({timedOut:!0,waitedMs:Date.now()-r})});let s=new it;await n.connect(s)}pt().catch(n=>{process.stderr.write(`[daimon-mcp] fatal: ${n?.stack||n}
|
|
4
4
|
`),process.exit(1)});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "daimon",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "Local dev-server manager for Angular/Nx/Vite/Storybook — TUI, loopback HTTP API, JSON CLI, and MCP server for Claude Code",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": "Yosi Azulay (https://flycotech.com)",
|
|
@@ -41,11 +41,16 @@
|
|
|
41
41
|
"start": "npm run build && node dist/main.js",
|
|
42
42
|
"cli": "node dist/cli.js",
|
|
43
43
|
"mcp": "node dist/mcp.js",
|
|
44
|
-
"test": "node --test test/depends.test.mjs test/bundle.test.mjs test/notifier.test.mjs test/regression.test.mjs test/parser-corpus.test.mjs test/overview-budget.test.mjs test/autofix-rules.test.mjs test/history-trends.test.mjs test/orchestrate.test.mjs test/polyglot-discovery.test.mjs test/tui-ribbon.test.mjs test/cli-surface.test.mjs test/parser-fuzz.test.mjs test/history-stress.test.mjs test/lock-contention.test.mjs test/reliability.test.mjs test/self-metrics.test.mjs test/plugins.test.mjs test/task-summary.test.mjs",
|
|
44
|
+
"test": "node --test test/depends.test.mjs test/bundle.test.mjs test/notifier.test.mjs test/regression.test.mjs test/parser-corpus.test.mjs test/overview-budget.test.mjs test/autofix-rules.test.mjs test/history-trends.test.mjs test/orchestrate.test.mjs test/polyglot-discovery.test.mjs test/tui-ribbon.test.mjs test/cli-surface.test.mjs test/parser-fuzz.test.mjs test/history-stress.test.mjs test/lock-contention.test.mjs test/reliability.test.mjs test/self-metrics.test.mjs test/plugins.test.mjs test/task-summary.test.mjs test/path-scope.test.mjs test/health-profiles.test.mjs test/timeline.test.mjs test/agents.test.mjs test/audit.test.mjs test/regressions.test.mjs test/webhooks.test.mjs test/recovery.test.mjs test/perf-50apps.test.mjs test/history-property.test.mjs test/scope-property.test.mjs test/mcp-contract.test.mjs test/profiles.test.mjs",
|
|
45
45
|
"clean:dist": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
46
46
|
"build:bundle": "npm run clean:dist && esbuild src/cli.ts src/main.ts src/mcp.ts --bundle --platform=node --target=node20 --format=esm --minify --legal-comments=none --outdir=dist --packages=external",
|
|
47
47
|
"build:dashboard": "node -e \"const fs=require('fs');if(fs.existsSync('dashboard/node_modules')){require('child_process').execSync('npm run build',{cwd:'dashboard',stdio:'inherit'});}else{console.log('[daimon] dashboard/node_modules missing — skipping ng build. Run: (cd dashboard && npm install) to enable the Angular SPA bundle.');}\"",
|
|
48
|
-
"
|
|
48
|
+
"build:vscode": "node -e \"const fs=require('fs');if(fs.existsSync('vscode-extension/node_modules')){require('child_process').execSync('npm run package',{cwd:'vscode-extension',stdio:'inherit'});}else{console.log('[daimon] vscode-extension/node_modules missing — run: (cd vscode-extension && npm install) to enable the VS Code extension build.');}\"",
|
|
49
|
+
"build:docs": "node scripts/build-docs.mjs",
|
|
50
|
+
"prepublishOnly": "npm run build && npm test && npm run build:bundle && npm run build:dashboard",
|
|
51
|
+
"dev:install": "node scripts/dev-install.mjs",
|
|
52
|
+
"dev:install:fast": "node scripts/dev-install.mjs --no-dashboard",
|
|
53
|
+
"dev:unlink": "npm rm -g daimon && npm i -g daimon"
|
|
49
54
|
},
|
|
50
55
|
"engines": {
|
|
51
56
|
"node": ">=20"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as Q}from"./chunk-A4BNXJUT.js";import{a as J,b as B,c as H,d as V,e as q}from"./chunk-3WKRVGPT.js";import{g as G}from"./chunk-7NRE3SNA.js";import"./chunk-NDSAQ2HK.js";import{b as N,d as z}from"./chunk-H3L4MTG4.js";import"./chunk-OHX55ZU4.js";import{c as L,d as U,e as K}from"./chunk-Q772THBA.js";import"./chunk-YNQPX5G6.js";import"./chunk-6WZJCF24.js";import"./chunk-KLH6B22T.js";import{c as I,h as D,i as A,j}from"./chunk-LBL7Z5BE.js";import{h as R}from"./chunk-Y6B6X4Y6.js";import{Db as v,Eb as c,Fb as p,Ib as g,Jb as _,Kb as k,Lb as r,Mb as a,Nb as u,Ub as E,Wa as O,Wb as m,_a as o,ea as h,ic as s,jc as x,kc as P,lc as F,pb as $,s as w,ta as b}from"./chunk-K43KW4K2.js";function M(n){if(!n)return null;try{return JSON.parse(n)}catch{return null}}function W(n,e){return`vscode://file/${encodeURI(n.replace(/\\/g,"/"))}${typeof e=="number"?`:${e}`:""}`}function X(n,e){if(!e)return n?`exit ${n.exit_code??"?"}`:"no runs";let t=e.total??(e.passed??0)+(e.failed??0);return`${e.passed??0}/${t}${(e.failed??0)>0?` \xB7 ${e.failed} failed`:""}`}function Y(n,e){return n?(e?.failed??0)>0||n.exit_code!==0?"fail":"ok":"neutral"}var te=(n,e)=>e.app,ne=(n,e)=>e.ts,ae=(n,e)=>e.name+(e.file??"");function ie(n,e){n&1&&u(0,"dm-skeleton",3)}function re(n,e){n&1&&u(0,"dm-empty",4)}function oe(n,e){if(n&1&&u(0,"span",12),n&2){let t=e.$implicit,i=m(3);v("data-kind",t.failed>0?"fail":"pass")("title",i.trendLabel(t))}}function se(n,e){if(n&1&&(r(0,"a",17)(1,"dm-mono"),s(2),a(),r(3,"mat-icon",18),s(4,"launch"),a()()),n&2){let t=m().$implicit,i=m(4);k("href",i.vscodeJump(t.file,t.line),O),o(2),F("",t.file,"",t.line?":"+t.line:"")}}function le(n,e){if(n&1&&(r(0,"li")(1,"span",16),s(2),a(),c(3,se,5,3,"a",17),a()),n&2){let t=e.$implicit;o(2),x(t.name),o(),p(t.file?3:-1)}}function me(n,e){if(n&1&&(r(0,"h4",14),s(1,"Failed tests"),a(),r(2,"ul",15),g(3,le,4,2,"li",null,ae),a()),n&2){let t=m().$implicit;o(3),_(t.latestSummary.failedTests)}}function de(n,e){n&1&&(r(0,"div",13),s(1,"No failed tests in the most recent run."),a())}function ce(n,e){if(n&1&&(r(0,"div",13),s(1),a()),n&2){let t=m().$implicit;o(),P("The task exited with code ",t.latest.exit_code," but no structured failures were parsed \u2014 check raw logs.")}}function pe(n,e){if(n&1&&(r(0,"mat-expansion-panel",6)(1,"mat-expansion-panel-header")(2,"mat-panel-title")(3,"span",7),u(4,"span",8),s(5),a(),r(6,"dm-mono",9),s(7),a()(),r(8,"mat-panel-description")(9,"span",10),s(10),a()()(),r(11,"div",11),g(12,oe,1,2,"span",12,ne),a(),c(14,me,5,0),c(15,de,2,0,"div",13),c(16,ce,2,1,"div",13),a()),n&2){let t=e.$implicit,i=m(2);k("expanded",!1),o(3),v("data-kind",i.pillKindFor(t)),o(2),P("",i.summaryFor(t)," "),o(2),x(t.app),o(3),x(i.subtitleFor(t)),o(2),_(t.trend),o(2),p(t.latest&&(!(t.latestSummary==null||t.latestSummary.failedTests==null)&&t.latestSummary.failedTests.length)?14:-1),o(),p(t.latest&&!(!(t.latestSummary==null||t.latestSummary.failedTests==null)&&t.latestSummary.failedTests.length)&&t.latest.exit_code===0?15:-1),o(),p(t.latest&&t.latest.exit_code!==null&&t.latest.exit_code!==0&&!(!(t.latestSummary==null||t.latestSummary.failedTests==null)&&t.latestSummary.failedTests.length)?16:-1)}}function ue(n,e){if(n&1&&(r(0,"div",5),g(1,pe,17,8,"mat-expansion-panel",6,te),a()),n&2){let t=m();o(),_(t.cards())}}var Z=class n{api=h(j);http=h(I);loading=b(!0);cards=b([]);pillKindFor(e){return Y(e.latest,e.latestSummary)}summaryFor(e){return X(e.latest,e.latestSummary)}subtitleFor(e){if(!e.latest)return"";let t=e.latestSummary?.framework??"unknown",i=e.latest.duration_ms!=null?` \xB7 ${(e.latest.duration_ms/1e3).toFixed(1)}s`:"",d=Math.max(0,Math.round((Date.now()-e.latest.ts)/6e4));return`${t}${i} \xB7 ${d}m ago \xB7 ${e.runs.length} runs in last 30d`}trendLabel(e){return`${new Date(e.ts).toLocaleString()} \u2014 ${e.passed} passed${e.failed>0?", "+e.failed+" failed":""}`}vscodeJump(e,t){return W(e,t)}async ngOnInit(){await this.refresh()}async refresh(){this.loading.set(!0);try{await this.api.refresh();let e=this.api.apps().map(d=>d.name),t=[],i=Date.now()-720*3600*1e3;for(let d of e){let S=await this.fetchTaskRuns(d,i);if(!S.length)continue;let T=S.filter(l=>/test/i.test(l.task));if(!T.length)continue;let y=[...T].sort((l,f)=>f.ts-l.ts),C=y[0]??null,ee=y.slice(0,30).reverse().map(l=>{let f=M(l.summary);return{ts:l.ts,passed:f?.passed??(l.exit_code===0?1:0),failed:f?.failed??(l.exit_code===0?0:1)}});t.push({app:d,runs:y,latest:C,latestSummary:C?M(C.summary):null,trend:ee})}this.cards.set(t)}finally{this.loading.set(!1)}}async fetchTaskRuns(e,t){try{let i=await w(this.http.get(`/api/history/tasks?app=${encodeURIComponent(e)}&since=${Math.round((Date.now()-t)/1e3)}s&limit=200`));return Array.isArray(i)?i:[]}catch{return[]}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=$({type:n,selectors:[["dm-tests-page"]],decls:15,vars:1,consts:[[1,"dm-page-header"],[1,"dm-page-sub"],["mat-icon-button","","aria-label","Refresh",3,"click"],["height","14rem"],["icon","science","title","No test runs recorded yet","hint","Run daimon run NAME test (or any task whose name contains 'test') to populate this page."],[1,"dm-grid"],[1,"dm-card",3,"expanded"],[1,"dm-pill"],[1,"dm-dot"],[1,"dm-app"],[1,"dm-sub"],["aria-label","Recent pass/fail history",1,"dm-trend-row"],[1,"dm-tick"],[1,"dm-muted"],[1,"dm-h4"],[1,"dm-fail-list"],[1,"dm-fail-name"],["target","_blank","rel","noopener",1,"dm-fail-jump",3,"href"],[1,"dm-jump-icon"]],template:function(t,i){t&1&&(r(0,"div",0)(1,"div")(2,"h1"),s(3,"Tests"),a(),r(4,"div",1),s(5,"Pass/fail trends per app from "),r(6,"dm-mono"),s(7,"task_runs"),a(),s(8," (last 30d). Click a card to inspect the most recent run."),a()(),r(9,"button",2),E("click",function(){return i.refresh()}),r(10,"mat-icon"),s(11,"refresh"),a()()(),c(12,ie,1,0,"dm-skeleton",3)(13,re,1,0,"dm-empty",4)(14,ue,3,0,"div",5)),t&2&&(o(12),p(i.loading()?12:i.cards().length===0?13:14))},dependencies:[R,G,z,N,A,D,q,J,B,V,H,Q,U,L,K],styles:["[_nghost-%COMP%]{display:block;max-width:1200px;margin:0 auto}.dm-page-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}.dm-page-sub[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font-size:.875rem}.dm-grid[_ngcontent-%COMP%]{display:grid;gap:.75rem}.dm-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container-low)}.dm-app[_ngcontent-%COMP%]{margin-left:.75rem}.dm-sub[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font-size:.8125rem}.dm-pill[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.4rem;padding:2px 10px;border-radius:999px;border:1px solid var(--mat-sys-outline-variant);background:var(--mat-sys-surface-container);color:var(--mat-sys-on-surface);font:500 .75rem/1rem Roboto}.dm-pill[_ngcontent-%COMP%] .dm-dot[_ngcontent-%COMP%]{width:8px;height:8px;border-radius:999px;background:var(--mat-sys-outline)}.dm-pill[data-kind=ok][_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-primary) 12%,transparent);border-color:color-mix(in oklch,var(--mat-sys-primary) 28%,transparent)}.dm-pill[data-kind=ok][_ngcontent-%COMP%] .dm-dot[_ngcontent-%COMP%]{background:var(--mat-sys-primary)}.dm-pill[data-kind=fail][_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-error) 14%,transparent);border-color:color-mix(in oklch,var(--mat-sys-error) 30%,transparent);color:var(--mat-sys-error)}.dm-pill[data-kind=fail][_ngcontent-%COMP%] .dm-dot[_ngcontent-%COMP%]{background:var(--mat-sys-error)}.dm-trend-row[_ngcontent-%COMP%]{display:flex;gap:2px;margin:.5rem 0}.dm-tick[_ngcontent-%COMP%]{width:6px;height:16px;border-radius:2px;background:var(--mat-sys-outline-variant)}.dm-tick[data-kind=pass][_ngcontent-%COMP%]{background:var(--mat-sys-primary)}.dm-tick[data-kind=fail][_ngcontent-%COMP%]{background:var(--mat-sys-error)}.dm-h4[_ngcontent-%COMP%]{margin:.75rem 0 .35rem;font:500 .8125rem/1rem Roboto;color:var(--mat-sys-on-surface-variant)}.dm-fail-list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.dm-fail-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{padding:.35rem .6rem;border-radius:6px;background:var(--mat-sys-surface-container);display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.dm-fail-name[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface);font-size:.875rem;overflow-wrap:anywhere}.dm-fail-jump[_ngcontent-%COMP%]{color:var(--mat-sys-primary);text-decoration:none;display:inline-flex;align-items:center;gap:.35rem;font-size:.8125rem}.dm-fail-jump[_ngcontent-%COMP%]:hover{text-decoration:underline}.dm-jump-icon[_ngcontent-%COMP%]{font-size:14px;width:14px;height:14px}.dm-muted[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font-size:.875rem}"],changeDetection:0})};export{Z as TestsPageComponent};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as te}from"./chunk-A4BNXJUT.js";import{a as U,b as G,c as J,d as X,e as Y,f as Z,g as ee}from"./chunk-7NRE3SNA.js";import{a as j,b as K}from"./chunk-CILFSVSP.js";import{a as L,b as q}from"./chunk-7NPLP3QD.js";import{b as z,c as B,d as V}from"./chunk-H3L4MTG4.js";import"./chunk-OHX55ZU4.js";import{c as H,d as Q,e as W}from"./chunk-Q772THBA.js";import"./chunk-YNQPX5G6.js";import"./chunk-7C772RJ3.js";import"./chunk-6WZJCF24.js";import"./chunk-KLH6B22T.js";import{c as I}from"./chunk-EIWOTZT3.js";import{c as F,h as R,i as N,j as $}from"./chunk-LBL7Z5BE.js";import"./chunk-Y6B6X4Y6.js";import{Db as k,Eb as g,Fb as f,Hb as O,Ib as C,Jb as h,Kb as y,Lb as o,Mb as i,Nb as v,Sb as T,Ub as b,Wb as c,_a as d,ea as M,ic as r,ja as E,jc as m,ka as D,kc as P,pb as A,s as w,ta as _,xc as S}from"./chunk-K43KW4K2.js";var ie=(n,t)=>t.name,ae=(n,t)=>t.reason,re=(n,t)=>t.id;function de(n,t){n&1&&(o(0,"div",7),v(1,"dm-skeleton",24)(2,"dm-skeleton",25)(3,"dm-skeleton",26),i())}function le(n,t){if(n&1&&(o(0,"div",27)(1,"span",28),r(2,"Connection"),i(),o(3,"span",29)(4,"span",30),v(5,"span",31),r(6),i()()(),o(7,"div",27)(8,"span",28),r(9,"Version"),i(),o(10,"span",29)(11,"dm-mono"),r(12),i()()(),o(13,"div",27)(14,"span",28),r(15,"API port"),i(),o(16,"span",29)(17,"dm-mono"),r(18),i()()(),o(19,"div",27)(20,"span",28),r(21,"Apps tracked"),i(),o(22,"span",29)(23,"dm-mono"),r(24),i()()()),n&2){let e=c();d(4),k("data-kind",e.api.connected()?"ok":"err"),d(2),P("",e.api.connected()?"connected":"disconnected"," "),d(6),m(e.daemonVersion()||"unknown"),d(6),m(e.daemonPort()||"-"),d(6),m(e.api.apps().length)}}function se(n,t){n&1&&(o(0,"div",7),v(1,"dm-skeleton",32)(2,"dm-skeleton",26)(3,"dm-skeleton",33),i())}function me(n,t){if(n&1&&(o(0,"dm-empty",8)(1,"dm-mono"),r(2,"daimon init --auto"),i()()),n&2){let e=c();y("title","No apps discovered")("hint",e.discovery().suggestion||"Run daimon init --auto in your workspace")}}function ce(n,t){if(n&1&&(o(0,"li")(1,"dm-mono"),r(2),i()()),n&2){let e=t.$implicit;d(2),m(e)}}function pe(n,t){if(n&1&&(o(0,"tr")(1,"td")(2,"dm-mono"),r(3),i()(),o(4,"td",38)(5,"dm-mono"),r(6),i()()()),n&2){let e=t.$implicit;d(3),m(e.reason),d(3),m(e.count)}}function ue(n,t){if(n&1&&(o(0,"div",34)(1,"div",28),r(2,"Rejected"),i(),o(3,"table",37)(4,"tbody"),C(5,pe,7,2,"tr",null,ae),i()()()),n&2){let e=c(2);d(5),h(e.rejectedRows())}}function ge(n,t){if(n&1&&(o(0,"li")(1,"dm-mono"),r(2),i()()),n&2){let e=t.$implicit;d(2),m(e)}}function fe(n,t){if(n&1&&(o(0,"div",34)(1,"div",28),r(2,"Warnings"),i(),o(3,"ul",39),C(4,ge,3,1,"li",null,O),i()()),n&2){let e=c(2);d(4),h(e.discovery().warnings)}}function _e(n,t){if(n&1&&(o(0,"div",36),r(1),i()),n&2){let e=c(2);d(),m(e.discovery().suggestion)}}function xe(n,t){if(n&1&&(o(0,"div",27)(1,"span",28),r(2,"Apps found"),i(),o(3,"span",29)(4,"dm-mono"),r(5),i()()(),o(6,"div",27)(7,"span",28),r(8,"Scanned"),i(),o(9,"span",29)(10,"dm-mono"),r(11),i()()(),o(12,"div",34)(13,"div",28),r(14,"Search roots"),i(),o(15,"ul",35),C(16,ce,3,1,"li",null,O),i()(),g(18,ue,7,0,"div",34),g(19,fe,6,0,"div",34),g(20,_e,2,1,"div",36)),n&2){let e=c();d(5),m(e.discovery().appsFound),d(6),m(e.discovery().scanned),d(5),h(e.discovery().searchRoots),d(2),f(e.rejectedRows().length?18:-1),d(),f(e.discovery().warnings.length?19:-1),d(),f(e.discovery().suggestion?20:-1)}}function ve(n,t){n&1&&(o(0,"div",9),r(1,"Discovery info unavailable."),i())}function ye(n,t){n&1&&v(0,"mat-spinner",14)}function Ce(n,t){n&1&&(o(0,"mat-icon"),r(1,"play_arrow"),i())}function he(n,t){n&1&&v(0,"mat-spinner",14)}function be(n,t){n&1&&(o(0,"mat-icon"),r(1,"build"),i())}function ke(n,t){if(n&1&&(o(0,"dm-mono"),r(1),i()),n&2){let e=c(2).$implicit,a=c();d(),m(a.state(e.name).detail)}}function Pe(n,t){if(n&1&&(o(0,"span"),r(1),i()),n&2){let e=c(2).$implicit,a=c();d(),m(a.state(e.name).detail)}}function Me(n,t){if(n&1&&(o(0,"div",42),g(1,ke,2,1,"dm-mono")(2,Pe,2,1,"span"),i()),n&2){let e=c().$implicit,a=c();d(),f(a.state(e.name).isPath?1:2)}}function Se(n,t){n&1&&v(0,"mat-spinner",14)}function we(n,t){n&1&&(o(0,"mat-icon"),r(1,"search"),i())}function Ee(n,t){n&1&&v(0,"mat-spinner",14)}function De(n,t){n&1&&(o(0,"mat-icon"),r(1,"build"),i())}function Oe(n,t){if(n&1){let e=T();o(0,"mat-card",6)(1,"mat-card-header")(2,"mat-card-title"),r(3),i()(),o(4,"mat-card-content")(5,"div",40)(6,"div",41),r(7),i(),o(8,"span",30),v(9,"span",31),r(10),i()(),g(11,Me,3,1,"div",42),i(),o(12,"mat-card-actions",43)(13,"button",13),b("click",function(){let l=E(e).$implicit,p=c();return D(p.runOne(l.name,!0))}),g(14,Se,1,0,"mat-spinner",14)(15,we,2,0,"mat-icon"),r(16," Dry-run "),i(),o(17,"button",44),b("click",function(){let l=E(e).$implicit,p=c();return D(p.runOne(l.name,!1))}),g(18,Ee,1,0,"mat-spinner",14)(19,De,2,0,"mat-icon"),r(20," Fix "),i()()()}if(n&2){let e=t.$implicit,a=c();d(3),m(e.title),d(4),m(e.description),d(),k("data-kind",a.state(e.name).status),d(2),P("",a.state(e.name).status," "),d(),f(a.state(e.name).detail?11:-1),d(2),y("disabled",a.busy(e.name)||a.busyAll()),d(),f(a.busy(e.name)==="dry"?14:15),d(3),y("disabled",a.busy(e.name)||a.busyAll()),d(),f(a.busy(e.name)==="fix"?18:19)}}function Ae(n,t){n&1&&v(0,"dm-skeleton",16)}function Te(n,t){n&1&&(o(0,"div",9),r(1,"No plug-ins installed. Drop a "),o(2,"dm-mono"),r(3,"doctor-*.mjs"),i(),r(4," file into "),o(5,"dm-mono"),r(6,"~/.daimon/plugins/"),i(),r(7," and restart the daemon."),i())}function Fe(n,t){if(n&1&&(o(0,"mat-card-subtitle"),r(1),i()),n&2){let e=c().$implicit;d(),m(e.description)}}function Ie(n,t){if(n&1&&(o(0,"div",45),r(1),i()),n&2){let e=c().$implicit;d(),m(e.error)}}function Re(n,t){if(n&1&&(o(0,"li")(1,"span",30),v(2,"span",31),r(3),i(),o(4,"span"),r(5),i()()),n&2){let e=t.$implicit;d(),k("data-kind",e.severity==="error"?"err":e.severity==="warn"?"warn":"ok"),d(2),m(e.severity||"info"),d(2),m(e.message)}}function Ne(n,t){if(n&1&&(o(0,"ul",35),C(1,Re,6,3,"li",null,re),i()),n&2){let e=c().$implicit;d(),h(e.findings)}}function $e(n,t){n&1&&(o(0,"div",9),r(1,"No findings."),i())}function je(n,t){if(n&1&&(o(0,"mat-card",6)(1,"mat-card-header")(2,"mat-card-title")(3,"span",30),v(4,"span",31),r(5),i(),o(6,"dm-mono"),r(7),i()(),g(8,Fe,2,1,"mat-card-subtitle"),i(),o(9,"mat-card-content"),g(10,Ie,2,1,"div",45),g(11,Ne,3,0,"ul",35)(12,$e,2,0,"div",9),o(13,"div",46)(14,"dm-mono"),r(15),i()()()()),n&2){let e=t.$implicit;d(3),k("data-kind",e.status==="ok"?"ok":"err"),d(2),P("",e.status," "),d(2),m(e.name),d(),f(e.description?8:-1),d(2),f(e.error?10:-1),d(),f(e.findings.length?11:12),d(4),m(e.file)}}function Ke(n,t){if(n&1&&(o(0,"div",5),C(1,je,16,7,"mat-card",6,ie),i()),n&2){let e=c();d(),h(e.plugins())}}function ze(n,t){n&1&&v(0,"mat-spinner",14)}function Be(n,t){n&1&&(o(0,"mat-icon"),r(1,"refresh"),i())}var Ve=[{name:"orphan-daemon",title:"Orphan daemon",description:"Daemon may be running from the wrong cwd, ignoring your local daimon.config.json"},{name:"stale-lock",title:"Stale lock",description:"Lock file exists but the daemon process is dead"},{name:"missing-search-root",title:"Missing search root",description:"Current cwd has an nx/angular/vite project but isn\u2019t configured"},{name:"corrupt-history-db",title:"Corrupt history DB",description:"History SQLite DB failed quickCheck()"}],ne=class n{api=M($);http=M(F);snack=M(L);routines=Ve;results=_(new Map);results_lastIntent=_(new Map);errored=_(new Set);loading=_(!0);discovery=_(null);daemonVersion=_("");daemonPort=_(null);configLoaded=_(!1);overview=_(null);plugins=_(null);busyMap=_(new Map);busyAll=_(!1);busyAllKind=_(null);reloading=_(!1);rejectedRows=S(()=>{let t=this.discovery();return t?Object.entries(t.rejected||{}).map(([e,a])=>({reason:e,count:a})).sort((e,a)=>a.count-e.count):[]});subtitle=S(()=>{let t=this.results(),e=0;for(let a of t.values())a.detected&&e++;return this.loading()&&t.size===0?"Checking system health\u2026":t.size===0?"Run diagnostics to see if any routines need fixing.":e===0?"All checked routines look clean.":`${e} routine${e===1?"":"s"} need${e===1?"s":""} fixing`});tokenEstimate=S(()=>120+this.api.apps().length*34);async ngOnInit(){await this.refreshAll()}async refreshAll(){this.loading.set(!0);try{let[t,e,a]=await Promise.all([this.api.getConfig().catch(()=>null),this.api.discoveryExplain().catch(()=>null),w(this.http.get("/api/overview")).catch(()=>null)]);t&&t.config&&(this.configLoaded.set(!0),this.daemonPort.set(t.config.apiPort??t.config.api?.port??null)),this.discovery.set(e),this.overview.set(a),a?.version&&this.daemonVersion.set(a.version),this.api.apps().length||await this.api.refresh();try{let l=await w(this.http.get("/api/plugins"));this.plugins.set(Array.isArray(l)?l:[])}catch{this.plugins.set([])}}finally{this.loading.set(!1)}}state(t){let e=this.results().get(t),a=this.results_lastIntent().get(t),l=this.errored().has(t);if(!e)return{status:"unknown",detail:"",isPath:!1};let p;l?p="error":a==="fix"?p=e.detected?"fixed":"clean":p=e.detected?"detected":"clean";let x=e.description||"",u=/[\\/]/.test(x)||x.includes(":\\")||x.startsWith("/");return{status:p,detail:x,isPath:u}}busy(t){return this.busyMap().get(t)}async runOne(t,e){if(!e&&!window.confirm(`Run fix for "${t}"? This will modify daemon state.`))return;let a=e?"dry":"fix";this.setBusy(t,a);try{let l=await this.api.runAutoFix({dryRun:e,permitted:[t]});this.ingestResults(l,a);let p=this.results().get(t);p?this.snack.open(e?p.detected?`${t}: issue detected`:`${t}: clean`:p.detected?`${t}: fix applied`:`${t}: no action needed`,"OK",{duration:3500}):this.snack.open(`${t}: no result returned`,"OK",{duration:3e3})}catch(l){this.markError(t,l?.message||String(l)),this.snack.open(`${t} failed: ${l?.message||l}`,"Dismiss",{duration:5e3})}finally{this.setBusy(t,null)}}async runAllDry(){this.busyAll.set(!0),this.busyAllKind.set("dry");try{let t=await this.api.runAutoFix({dryRun:!0});this.ingestResults(t,"dry"),this.snack.open("Dry-run complete","OK",{duration:2500})}catch(t){this.snack.open(`Dry-run failed: ${t?.message||t}`,"Dismiss",{duration:5e3})}finally{this.busyAll.set(!1),this.busyAllKind.set(null)}}async fixAll(){if(window.confirm("Run every fix routine without dry-run? This will modify daemon state.")){this.busyAll.set(!0),this.busyAllKind.set("fix");try{let e=await this.api.runAutoFix({dryRun:!1});this.ingestResults(e,"fix"),this.snack.open("Fix-all complete","OK",{duration:2500})}catch(e){this.snack.open(`Fix-all failed: ${e?.message||e}`,"Dismiss",{duration:5e3})}finally{this.busyAll.set(!1),this.busyAllKind.set(null)}}}async reloadConfig(){this.reloading.set(!0);try{await this.api.reloadConfig(),this.snack.open("Config reloaded","OK",{duration:2500}),await this.refreshAll()}catch(t){this.snack.open(`Reload failed: ${t?.message||t}`,"Dismiss",{duration:5e3})}finally{this.reloading.set(!1)}}setBusy(t,e){this.busyMap.update(a=>{let l=new Map(a);return e===null?l.delete(t):l.set(t,e),l})}ingestResults(t,e){let a=Array.isArray(t?.ran)?t.ran:[],l=Array.isArray(t?.skipped)?t.skipped:[],p=Array.isArray(t?.errors)?t.errors:[];if(this.results.update(x=>{let u=new Map(x);for(let s of a)u.set(s.name,s);for(let s of l)u.set(s.name,s);for(let s of p){let oe=u.get(s.name);u.set(s.name,{name:s.name,detected:oe?.detected??!1,description:s.error||"error"})}return u}),this.errored.update(x=>{let u=new Set(x);for(let s of a)u.delete(s.name);for(let s of l)u.delete(s.name);for(let s of p)u.add(s.name);return u}),this.results_lastIntent.update(x=>{let u=new Map(x);for(let s of a)u.set(s.name,e);for(let s of l)u.set(s.name,e);for(let s of p)u.set(s.name,"fix");return u}),p.length)for(let x of p)this.markError(x.name,x.error)}markError(t,e){this.results.update(a=>{let l=new Map(a);return l.set(t,{name:t,detected:!1,description:e||"error"}),l}),this.results_lastIntent.update(a=>{let l=new Map(a);return l.set(t,"fix"),l}),this.errored.update(a=>{let l=new Set(a);return l.add(t),l})}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=A({type:n,selectors:[["dm-doctor-page"]],decls:80,vars:12,consts:[[1,"dm-page-header"],[1,"dm-page-sub"],["mat-icon-button","","aria-label","Refresh",3,"click","disabled"],[1,"dm-section"],[1,"dm-section-title"],[1,"dm-grid-2"],[1,"dm-card"],[1,"dm-stack"],["icon","search_off",3,"title","hint"],[1,"dm-muted"],[1,"dm-banner"],[1,"dm-banner-text"],[1,"dm-banner-actions"],["mat-stroked-button","",3,"click","disabled"],["diameter","16"],["mat-flat-button","","color","warn",3,"click","disabled"],["height","2rem","width","40%"],[1,"dm-quick"],["mat-stroked-button","","routerLink","/config"],["mat-stroked-button","","routerLink","/events"],[1,"dm-stat"],[1,"dm-stat-icon"],[1,"dm-stat-label"],[1,"dm-stat-value"],["height","1.25rem","width","60%"],["height","1rem","width","40%"],["height","1rem","width","50%"],[1,"dm-kv"],[1,"dm-k"],[1,"dm-v"],[1,"dm-pill"],[1,"dm-dot"],["height","1rem","width","70%"],["height","1rem","width","80%"],[1,"dm-block"],[1,"dm-list"],[1,"dm-callout"],[1,"dm-table"],[1,"dm-num"],[1,"dm-list","dm-warn"],[1,"dm-row-between"],[1,"dm-routine-desc"],[1,"dm-detail"],["align","end"],["mat-flat-button","","color","primary",3,"click","disabled"],[1,"dm-detail","dm-warn"],[1,"dm-detail","dm-muted"]],template:function(e,a){e&1&&(o(0,"div",0)(1,"div")(2,"h1"),r(3,"Doctor"),i(),o(4,"div",1),r(5),i()(),o(6,"button",2),b("click",function(){return a.refreshAll()}),o(7,"mat-icon"),r(8,"refresh"),i()()(),o(9,"section",3)(10,"h2",4),r(11,"System overview"),i(),o(12,"div",5)(13,"mat-card",6)(14,"mat-card-header")(15,"mat-card-title"),r(16,"Daemon"),i()(),o(17,"mat-card-content"),g(18,de,4,0,"div",7)(19,le,25,5),i()(),o(20,"mat-card",6)(21,"mat-card-header")(22,"mat-card-title"),r(23,"Discovery"),i()(),o(24,"mat-card-content"),g(25,se,4,0,"div",7)(26,me,3,2,"dm-empty",8)(27,xe,21,5)(28,ve,2,0,"div",9),i()()()(),o(29,"section",3)(30,"h2",4),r(31,"Auto-fix routines"),i(),o(32,"div",10)(33,"div",11),r(34,"Run diagnostics across every routine, or attempt all fixes in one go."),i(),o(35,"div",12)(36,"button",13),b("click",function(){return a.runAllDry()}),g(37,ye,1,0,"mat-spinner",14)(38,Ce,2,0,"mat-icon"),r(39," Run all dry-run "),i(),o(40,"button",15),b("click",function(){return a.fixAll()}),g(41,he,1,0,"mat-spinner",14)(42,be,2,0,"mat-icon"),r(43," Fix everything (be careful) "),i()()(),o(44,"div",5),C(45,Oe,21,9,"mat-card",6,ie),i()(),o(47,"section",3)(48,"h2",4),r(49,"Custom rules"),i(),g(50,Ae,1,0,"dm-skeleton",16)(51,Te,8,0,"div",9)(52,Ke,3,0,"div",5),i(),o(53,"section",3)(54,"h2",4),r(55,"Quick links"),i(),o(56,"div",17)(57,"button",18)(58,"mat-icon"),r(59,"tune"),i(),r(60," Open Config editor "),i(),o(61,"button",19)(62,"mat-icon"),r(63,"timeline"),i(),r(64," View Events "),i(),o(65,"button",13),b("click",function(){return a.reloadConfig()}),g(66,ze,1,0,"mat-spinner",14)(67,Be,2,0,"mat-icon"),r(68," Reload config "),i(),o(69,"div",20)(70,"div",21)(71,"mat-icon"),r(72,"token"),i()(),o(73,"div")(74,"div",22),r(75,"API token footprint"),i(),o(76,"div",23)(77,"dm-mono"),r(78),i(),r(79," per Claude session"),i()()()()()),e&2&&(d(5),m(a.subtitle()),d(),y("disabled",a.loading()),d(12),f(a.loading()&&!a.configLoaded()?18:19),d(7),f(a.loading()&&!a.discovery()?25:a.discovery()&&a.discovery().appsFound===0?26:a.discovery()?27:28),d(11),y("disabled",a.busyAll()),d(),f(a.busyAll()&&a.busyAllKind()==="dry"?37:38),d(3),y("disabled",a.busyAll()),d(),f(a.busyAll()&&a.busyAllKind()==="fix"?41:42),d(4),h(a.routines),d(5),f(a.plugins()===null?50:a.plugins().length===0?51:52),d(15),y("disabled",a.reloading()),d(),f(a.reloading()?66:67),d(12),P("~ ",a.tokenEstimate()," tokens"))},dependencies:[I,ee,U,Y,J,Z,X,G,V,B,z,N,R,K,j,q,te,H,Q,W],styles:["[_nghost-%COMP%]{display:block;max-width:1200px;margin:0 auto}.dm-section[_ngcontent-%COMP%]{margin-bottom:1.25rem}.dm-section-title[_ngcontent-%COMP%]{margin:0 0 .5rem;font:500 .6875rem/1rem Roboto;color:var(--mat-sys-on-surface-variant);letter-spacing:.06em;text-transform:uppercase}.dm-grid-2[_ngcontent-%COMP%]{display:grid;gap:.75rem;grid-template-columns:repeat(2,minmax(0,1fr))}@media(max-width:800px){.dm-grid-2[_ngcontent-%COMP%]{grid-template-columns:1fr}}.dm-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container-low)}.dm-stack[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.dm-kv[_ngcontent-%COMP%]{display:flex;align-items:baseline;justify-content:space-between;padding:.35rem 0;border-bottom:1px solid var(--mat-sys-outline-variant)}.dm-kv[_ngcontent-%COMP%]:last-child{border-bottom:0}.dm-k[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font-size:.8125rem}.dm-v[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface)}.dm-block[_ngcontent-%COMP%]{margin-top:.75rem}.dm-block[_ngcontent-%COMP%] .dm-k[_ngcontent-%COMP%]{display:block;margin-bottom:.35rem}.dm-list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}.dm-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{padding:.25rem .5rem;background:var(--mat-sys-surface-container);border-radius:6px;overflow-wrap:anywhere}.dm-warn[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{color:var(--mat-sys-error)}.dm-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;font-size:.8125rem}.dm-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:.25rem .5rem;border-bottom:1px solid var(--mat-sys-outline-variant)}.dm-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%]{border-bottom:0}.dm-num[_ngcontent-%COMP%]{text-align:right;color:var(--mat-sys-on-surface-variant)}.dm-callout[_ngcontent-%COMP%]{margin-top:.75rem;padding:.65rem .85rem;border-radius:10px;background:color-mix(in oklch,var(--mat-sys-tertiary) 12%,transparent);border:1px solid color-mix(in oklch,var(--mat-sys-tertiary) 28%,transparent);color:var(--mat-sys-on-surface);font-size:.875rem}.dm-muted[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font-size:.875rem}.dm-pill[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.4rem;padding:2px 10px;border-radius:999px;border:1px solid var(--mat-sys-outline-variant);background:var(--mat-sys-surface-container);color:var(--mat-sys-on-surface);font:500 .75rem/1rem Roboto;letter-spacing:.025rem}.dm-pill[_ngcontent-%COMP%] .dm-dot[_ngcontent-%COMP%]{width:8px;height:8px;border-radius:999px;background:var(--mat-sys-outline)}.dm-pill[data-kind=ok][_ngcontent-%COMP%], .dm-pill[data-kind=clean][_ngcontent-%COMP%], .dm-pill[data-kind=fixed][_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-primary) 12%,transparent);border-color:color-mix(in oklch,var(--mat-sys-primary) 28%,transparent)}.dm-pill[data-kind=ok][_ngcontent-%COMP%] .dm-dot[_ngcontent-%COMP%], .dm-pill[data-kind=clean][_ngcontent-%COMP%] .dm-dot[_ngcontent-%COMP%], .dm-pill[data-kind=fixed][_ngcontent-%COMP%] .dm-dot[_ngcontent-%COMP%]{background:var(--mat-sys-primary)}.dm-pill[data-kind=detected][_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-tertiary) 14%,transparent);border-color:color-mix(in oklch,var(--mat-sys-tertiary) 28%,transparent)}.dm-pill[data-kind=detected][_ngcontent-%COMP%] .dm-dot[_ngcontent-%COMP%]{background:var(--mat-sys-tertiary)}.dm-pill[data-kind=err][_ngcontent-%COMP%], .dm-pill[data-kind=error][_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-error) 14%,transparent);border-color:color-mix(in oklch,var(--mat-sys-error) 30%,transparent);color:var(--mat-sys-error)}.dm-pill[data-kind=err][_ngcontent-%COMP%] .dm-dot[_ngcontent-%COMP%], .dm-pill[data-kind=error][_ngcontent-%COMP%] .dm-dot[_ngcontent-%COMP%]{background:var(--mat-sys-error)}.dm-banner[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.5rem .85rem;margin-bottom:.75rem;background:var(--mat-sys-surface-container);border:1px solid var(--mat-sys-outline-variant);border-radius:10px}.dm-banner-text[_ngcontent-%COMP%]{font-size:.875rem;color:var(--mat-sys-on-surface-variant)}.dm-banner-actions[_ngcontent-%COMP%]{display:flex;gap:.5rem}@media(max-width:700px){.dm-banner[_ngcontent-%COMP%]{flex-direction:column;align-items:stretch}.dm-banner-actions[_ngcontent-%COMP%]{flex-wrap:wrap}}.dm-row-between[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.dm-routine-desc[_ngcontent-%COMP%]{font-size:.875rem;color:var(--mat-sys-on-surface-variant);flex:1}.dm-detail[_ngcontent-%COMP%]{margin-top:.75rem;padding:.5rem .65rem;background:var(--mat-sys-surface-container);border-radius:8px;font-size:.8125rem;overflow-wrap:anywhere}.dm-quick[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem}.dm-quick[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{justify-content:flex-start;padding:.5rem .75rem;height:auto;min-height:40px}.dm-stat[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.625rem;padding:.5rem .75rem;border:1px solid var(--mat-sys-outline-variant);border-radius:10px;background:var(--mat-sys-surface-container-low)}.dm-stat-icon[_ngcontent-%COMP%]{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:8px;background:color-mix(in oklch,var(--mat-sys-primary) 14%,transparent);color:var(--mat-sys-primary)}.dm-stat-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px}.dm-stat-label[_ngcontent-%COMP%]{font-size:.75rem;color:var(--mat-sys-on-surface-variant);text-transform:uppercase;letter-spacing:.025rem}.dm-stat-value[_ngcontent-%COMP%]{font-size:.875rem;color:var(--mat-sys-on-surface)}mat-spinner[_ngcontent-%COMP%]{display:inline-block;margin-right:.35rem}"],changeDetection:0})};export{ne as DoctorPageComponent};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as mt,b as lt,c as dt,f as ct,g as pt}from"./chunk-7NRE3SNA.js";import{a as w,b as st}from"./chunk-LBRCWYRN.js";import{d as nt}from"./chunk-H3L4MTG4.js";import"./chunk-OHX55ZU4.js";import{b as it,c as at,d as ot,e as rt}from"./chunk-Q772THBA.js";import{a as Y,b as tt}from"./chunk-K7S4ITPJ.js";import"./chunk-YNQPX5G6.js";import"./chunk-7C772RJ3.js";import"./chunk-6WZJCF24.js";import"./chunk-KLH6B22T.js";import{b as J,c as K}from"./chunk-EIWOTZT3.js";import{h as U,i as X,j as et}from"./chunk-LBL7Z5BE.js";import{h as G}from"./chunk-Y6B6X4Y6.js";import{$b as S,Db as H,Eb as d,Fb as c,Gb as j,Ib as b,Jb as M,Kb as h,Lb as a,Mb as i,Nb as g,Ob as z,Pb as B,Qb as V,Wb as l,_a as s,_b as P,ac as E,ea as x,fb as $,ic as r,jc as p,kc as f,lc as q,na as W,pb as k,sc as Z,ta as _,xc as y,za as T}from"./chunk-K43KW4K2.js";var ht=["canvas"],ut=["chart"],Ct=e=>["/history",e],yt=(e,n)=>n.name,vt=(e,n)=>n.ts;function xt(e,n){if(e&1&&g(0,"dm-status-pill",7),e&2){let t=n;h("status",t.status)("health",t.health)}}function bt(e,n){if(e&1&&(a(0,"span",5),r(1,"\xB7"),i(),a(2,"dm-mono")(3,"span",6),r(4),i()(),d(5,xt,1,2,"dm-status-pill",7)),e&2){let t,o=l();s(4),p(o.name),s(),c((t=o.currentApp())?5:-1,t)}}function Mt(e,n){e&1&&(a(0,"a",3)(1,"mat-icon"),r(2,"arrow_back"),i(),r(3," All apps "),i())}function Pt(e,n){e&1&&(a(0,"span"),r(1,"Compile-time history across all apps"),i())}function St(e,n){e&1&&(a(0,"div",4),g(1,"dm-skeleton",8)(2,"dm-skeleton",8)(3,"dm-skeleton",8),i())}function Et(e,n){e&1&&g(0,"dm-empty",9)}function wt(e,n){if(e&1&&g(0,"dm-status-pill",7),e&2){let t=n;h("status",t.status)("health",t.health)}}function Ot(e,n){if(e&1&&(g(0,"dm-history-spark",15),a(1,"div",16)(2,"span",17)(3,"span",18),r(4,"count"),i(),a(5,"span",19)(6,"dm-mono"),r(7),i()()(),a(8,"span",17)(9,"span",18),r(10,"p50"),i(),a(11,"span",19)(12,"dm-mono"),r(13),i()()(),a(14,"span",17)(15,"span",18),r(16,"p95"),i(),a(17,"span",19)(18,"dm-mono"),r(19),i()()()()),e&2){let t=l().$implicit;h("samples",t.samples),s(7),p(t.stats.count),s(6),f("",t.stats.p50," ms"),s(6),f("",t.stats.p95," ms")}}function Tt(e,n){e&1&&(a(0,"div",14),r(1,"no data"),i())}function kt(e,n){if(e&1&&(a(0,"a",11)(1,"div",12)(2,"dm-mono")(3,"span",13),r(4),i()(),d(5,wt,1,2,"dm-status-pill",7),i(),d(6,Ot,20,4)(7,Tt,2,0,"div",14),i()),e&2){let t,o=n.$implicit,m=l(3);h("routerLink",Z(4,Ct,o.name)),s(4),p(o.name),s(),c((t=m.byName(o.name))?5:-1,t),s(),c(o.samples.length?6:7)}}function Ht(e,n){if(e&1&&(a(0,"div",10),b(1,kt,8,6,"a",11,yt),i()),e&2){let t=l(2);s(),M(t.overview())}}function It(e,n){if(e&1&&d(0,Et,1,0,"dm-empty",9)(1,Ht,3,0,"div",10),e&2){let t=l();c(t.overview().length===0?0:1)}}function Dt(e,n){e&1&&g(0,"dm-empty",9)}function Rt(e,n){if(e&1&&(a(0,"tr")(1,"td")(2,"span",32),r(3),i()(),a(4,"td",31)(5,"dm-mono"),r(6),i()()()),e&2){let t=n.$implicit,o=l(3);s(2),h("matTooltip",o.absTime(t.ts)),s(),p(o.relTime(t.ts)),s(3),f("",t.ms," ms")}}function Nt(e,n){if(e&1&&(a(0,"div",23)(1,"div",24)(2,"div",25),r(3,"count"),i(),a(4,"div",26)(5,"dm-mono"),r(6),i()()(),a(7,"div",24)(8,"div",25),r(9,"p50"),i(),a(10,"div",26)(11,"dm-mono"),r(12),i()()(),a(13,"div",24)(14,"div",25),r(15,"p95"),i(),a(16,"div",26)(17,"dm-mono"),r(18),i()()(),a(19,"div",24)(20,"div",25),r(21,"slowest"),i(),a(22,"div",26)(23,"dm-mono"),r(24),i()()(),a(25,"div",24)(26,"div",25),r(27,"fastest"),i(),a(28,"div",26)(29,"dm-mono"),r(30),i()()()(),a(31,"mat-card",27)(32,"mat-card-header")(33,"mat-card-title"),r(34,"Compile time (ms)"),i()(),a(35,"mat-card-content")(36,"div",28),g(37,"canvas",null,0),i()()(),a(39,"mat-card",29)(40,"mat-card-header")(41,"mat-card-title"),r(42,"Recent compiles"),i()(),a(43,"mat-card-content")(44,"table",30)(45,"thead")(46,"tr")(47,"th"),r(48,"time"),i(),a(49,"th",31),r(50,"duration"),i()()(),a(51,"tbody"),b(52,Rt,7,3,"tr",null,vt),i()()()()),e&2){let t=l(2);s(6),p(t.stats().count),s(6),f("",t.stats().p50," ms"),s(6),f("",t.stats().p95," ms"),s(6),f("",t.stats().slowest," ms"),s(6),f("",t.stats().fastest," ms"),s(22),M(t.recent())}}function Lt(e,n){e&1&&g(0,"dm-skeleton",21)}function At(e,n){e&1&&(a(0,"div",22),r(1,"No state transitions recorded."),i())}function Ft(e,n){if(e&1&&(a(0,"span",5),r(1,"\xB7"),i(),a(2,"span",40),r(3),i()),e&2){let t=l();s(3),p(t.message)}}function Qt(e,n){if(e&1&&(a(0,"div",33)(1,"div",35)(2,"span",36),r(3),i(),a(4,"mat-icon",37),r(5,"arrow_forward"),i(),a(6,"span",38),r(7),i()(),a(8,"div",39)(9,"dm-mono"),r(10),i(),d(11,Ft,4,1),i()()),e&2){let t=n,o=l(3);s(3),p(t.from||"\u2014"),s(3),H("data-to",t.to),s(),p(t.to||"\u2014"),s(3),p(o.fmtTs(t.ts)),s(),c(t.message?11:-1)}}function Wt(e,n){if(e&1&&(a(0,"span",5),r(1,"\xB7"),i(),a(2,"span")(3,"dm-mono"),r(4),i()()),e&2){let t=l().$implicit;s(4),q("",t.from||"\u2014"," \u2192 ",t.to||"\u2014")}}function $t(e,n){if(e&1&&(a(0,"span",5),r(1,"\xB7"),i(),a(2,"span"),r(3),i()),e&2){let t=l().$implicit;s(3),p(t.message)}}function jt(e,n){if(e&1&&(a(0,"li"),g(1,"span",41),a(2,"div",42)(3,"div",43)(4,"strong"),r(5),i(),d(6,Wt,5,2),i(),a(7,"div",44)(8,"dm-mono"),r(9),i(),d(10,$t,4,1),i()()()),e&2){let t=n.$implicit,o=l(4);s(),H("data-kind",t.type),s(4),p(t.type),s(),c(t.from||t.to?6:-1),s(3),p(o.fmtTs(t.ts)),s(),c(t.message?10:-1)}}function zt(e,n){if(e&1&&(a(0,"ol",34),b(1,jt,11,5,"li",null,j),i()),e&2){let t=l(3);s(),M(t.priorEvents())}}function Bt(e,n){if(e&1&&(d(0,Qt,12,5,"div",33),d(1,zt,3,0,"ol",34)),e&2){let t,o=l(2);c((t=(t=o.why())==null?null:t.lastTransition)?0:-1,t),s(),c(o.priorEvents().length?1:-1)}}function Vt(e,n){if(e&1&&(d(0,Dt,1,0,"dm-empty",9)(1,Nt,54,5),a(2,"mat-card",20)(3,"mat-card-header")(4,"mat-card-title"),r(5,"Why"),i()(),a(6,"mat-card-content"),d(7,Lt,1,0,"dm-skeleton",21)(8,At,2,0,"div",22)(9,Bt,2,2),i()()),e&2){let t=l();c(t.samples().length===0?0:1),s(7),c(t.whyLoading()?7:t.why()?9:8)}}w.register(...st);function gt(e,n){if(e.length===0)return 0;let t=Math.min(e.length-1,Math.max(0,Math.floor(n/100*(e.length-1))));return e[t]}function I(e){if(e.length===0)return{count:0,p50:0,p95:0,slowest:0,fastest:0};let n=e.map(t=>t.ms).slice().sort((t,o)=>t-o);return{count:e.length,p50:gt(n,50),p95:gt(n,95),slowest:n[n.length-1],fastest:n[0]}}function qt(e,n=Date.now()){let t=Math.max(0,n-e),o=Math.floor(t/1e3);if(o<5)return"just now";if(o<60)return o+"s ago";let m=Math.floor(o/60);if(m<60)return m+"m ago";let u=Math.floor(m/60);return u<24?u+"h ago":Math.floor(u/24)+"d ago"}function Zt(e){return e?new Date(e).toLocaleString():"\u2014"}function v(e){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()}var D=class e{samples=[];canvasRef;chart;ngAfterViewInit(){let n=matchMedia("(prefers-reduced-motion: reduce)").matches,t=v("--mat-sys-primary")||"var(--mat-sys-primary)",o={type:"line",data:{labels:this.samples.map((m,u)=>u),datasets:[{data:this.samples.map(m=>m.ms),borderColor:t,backgroundColor:"transparent",borderWidth:1.4,tension:.3,pointRadius:0,fill:!1}]},options:{responsive:!0,maintainAspectRatio:!1,animation:n?!1:{duration:200},plugins:{legend:{display:!1},tooltip:{enabled:!1}},scales:{x:{display:!1},y:{display:!1}}}};this.chart=new w(this.canvasRef.nativeElement,o)}ngOnChanges(n){n.samples&&this.chart&&(this.chart.data.labels=this.samples.map((t,o)=>o),this.chart.data.datasets[0].data=this.samples.map(t=>t.ms),this.chart.update("none"))}ngOnDestroy(){this.chart?.destroy()}static \u0275fac=function(t){return new(t||e)};static \u0275cmp=k({type:e,selectors:[["dm-history-spark"]],viewQuery:function(t,o){if(t&1&&P(ht,7),t&2){let m;S(m=E())&&(o.canvasRef=m.first)}},inputs:{samples:"samples"},features:[T],decls:3,vars:0,consts:[["canvas",""],[1,"dm-spark-box"]],template:function(t,o){t&1&&(z(0,"div",1),V(1,"canvas",null,0),B())},styles:["[_nghost-%COMP%]{display:block}.dm-spark-box[_ngcontent-%COMP%]{position:relative;height:56px}"],changeDetection:0})},ft=class e{name="";api=x(et);router=x(J);injector=x(W);chartCanvas;chartCanvases;loading=_(!0);samples=_([]);overview=_([]);why=_(null);whyLoading=_(!1);stats=y(()=>I(this.samples()));recent=y(()=>this.samples().slice().sort((n,t)=>t.ts-n.ts).slice(0,20));priorEvents=y(()=>{let n=this.why();return Array.isArray(n?.priorEvents)?n.priorEvents:[]});currentApp=y(()=>this.name?this.api.byName(this.name):void 0);chart;refreshTimer;nowTick;tick=_(0);byName(n){return this.api.byName(n)}ngOnInit(){this.load(),this.refreshTimer=setInterval(()=>{this.load(!0)},1e4),this.nowTick=setInterval(()=>this.tick.update(n=>n+1),3e4)}ngOnChanges(n){"name"in n&&!n.name.firstChange&&(this.destroyChart(),this.load())}ngOnDestroy(){this.destroyChart(),this.refreshTimer&&clearInterval(this.refreshTimer),this.nowTick&&clearInterval(this.nowTick)}destroyChart(){this.chart?.destroy(),this.chart=void 0}async load(n=!1){n||this.loading.set(!0);try{if(this.name){let[t,o]=await Promise.all([this.api.getCompileTimes(this.name,200),this.fetchWhy(this.name)]);this.samples.set(Array.isArray(t)?t:[]),this.why.set(o),$(()=>this.renderChart(),{injector:this.injector})}else{this.api.apps().length===0&&await this.api.refresh();let o=this.api.apps(),m=await Promise.all(o.map(async u=>{let C=await this.api.getCompileTimes(u.name,100);return{name:u.name,samples:C,stats:I(C)}}));this.overview.set(m)}}finally{n||this.loading.set(!1)}}async fetchWhy(n){this.whyLoading.set(!0);try{return await this.api.getHistoryWhy(n)}finally{this.whyLoading.set(!1)}}renderChart(){let n=this.chartCanvas?.nativeElement??this.chartCanvases?.first?.nativeElement;if(!n)return;let t=this.samples();if(t.length===0){this.destroyChart();return}let o=matchMedia("(prefers-reduced-motion: reduce)").matches,m=v("--mat-sys-primary")||"var(--mat-sys-primary)",u=v("--mat-sys-tertiary")||"var(--mat-sys-tertiary)",C=v("--mat-sys-error")||"var(--mat-sys-error)",R=v("--mat-sys-outline-variant")||"rgba(120,120,120,0.3)",N=t.map(O=>new Date(O.ts).toLocaleTimeString()),L=t.map(O=>O.ms),A=I(t),F=new Array(t.length).fill(A.p50),Q=new Array(t.length).fill(A.p95);if(this.chart){this.chart.data.labels=N,this.chart.data.datasets[0].data=L,this.chart.data.datasets[1].data=F,this.chart.data.datasets[2].data=Q,this.chart.update("none");return}let _t={type:"line",data:{labels:N,datasets:[{label:"ms",data:L,borderColor:m,backgroundColor:"transparent",borderWidth:1.6,tension:.25,pointRadius:0,fill:!1},{label:"p50",data:F,borderColor:u,borderDash:[4,4],borderWidth:1,pointRadius:0,fill:!1},{label:"p95",data:Q,borderColor:C,borderDash:[4,4],borderWidth:1,pointRadius:0,fill:!1}]},options:{responsive:!0,maintainAspectRatio:!1,animation:o?!1:{duration:200},plugins:{legend:{position:"bottom",labels:{boxWidth:12}}},scales:{x:{ticks:{maxTicksLimit:6,autoSkip:!0},grid:{color:R}},y:{beginAtZero:!0,title:{display:!0,text:"ms"},grid:{color:R}}}}};this.chart=new w(n,_t)}relTime(n){return this.tick(),qt(n)}absTime(n){return new Date(n).toLocaleString()}fmtTs(n){return Zt(n)}static \u0275fac=function(t){return new(t||e)};static \u0275cmp=k({type:e,selectors:[["dm-history-page"]],viewQuery:function(t,o){if(t&1&&(P(ut,5),P(ut,5)),t&2){let m;S(m=E())&&(o.chartCanvas=m.first),S(m=E())&&(o.chartCanvases=m)}},inputs:{name:"name"},features:[T],decls:11,vars:3,consts:[["chart",""],[1,"dm-page-header"],[1,"dm-page-sub"],["routerLink","/history",1,"dm-back"],[1,"dm-skel-grid"],[1,"dm-sep"],[1,"dm-app"],[3,"status","health"],["height","8rem"],["icon","query_stats","title","No compile data yet","hint","Compile times appear here as the app builds"],[1,"dm-grid"],[1,"dm-card",3,"routerLink"],[1,"dm-card-head"],[1,"dm-card-name"],[1,"dm-card-empty"],[3,"samples"],[1,"dm-card-foot"],[1,"dm-foot-cell"],[1,"dm-foot-label"],[1,"dm-foot-value"],[1,"dm-why-card"],["height","3rem"],[1,"dm-why-empty"],[1,"dm-stats"],[1,"dm-tile"],[1,"dm-tile-label"],[1,"dm-tile-value"],[1,"dm-chart-card"],[1,"dm-chart-box"],[1,"dm-table-card"],[1,"dm-table"],[1,"dm-num"],[3,"matTooltip"],[1,"dm-transition"],[1,"dm-timeline"],[1,"dm-transition-arrow"],[1,"dm-transition-from"],[1,"dm-transition-icon"],[1,"dm-transition-to"],[1,"dm-transition-meta"],[1,"dm-transition-msg"],[1,"dm-timeline-dot"],[1,"dm-timeline-body"],[1,"dm-timeline-head"],[1,"dm-timeline-meta"]],template:function(t,o){t&1&&(a(0,"div",1)(1,"div")(2,"h1"),r(3," History "),d(4,bt,6,2),i(),a(5,"div",2),d(6,Mt,4,0,"a",3)(7,Pt,2,0,"span"),i()()(),d(8,St,4,0,"div",4)(9,It,2,1)(10,Vt,10,2)),t&2&&(s(4),c(o.name?4:-1),s(2),c(o.name?6:7),s(2),c(o.loading()?8:o.name?10:9))},dependencies:[G,K,pt,mt,dt,ct,lt,nt,X,U,tt,Y,it,ot,at,rt,D],styles:["[_nghost-%COMP%]{display:block}.dm-page-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.dm-sep[_ngcontent-%COMP%]{color:var(--mat-sys-outline);margin:0 .15rem}.dm-app[_ngcontent-%COMP%]{color:var(--mat-sys-primary);font-weight:500}.dm-back[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.25rem;color:var(--mat-sys-primary);text-decoration:none}.dm-back[_ngcontent-%COMP%]:hover{text-decoration:underline}.dm-skel-grid[_ngcontent-%COMP%], .dm-grid[_ngcontent-%COMP%]{display:grid;gap:1rem}.dm-skel-grid[_ngcontent-%COMP%]{grid-template-columns:repeat(auto-fill,minmax(18rem,1fr))}.dm-grid[_ngcontent-%COMP%]{grid-template-columns:repeat(auto-fill,minmax(20rem,1fr))}.dm-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.75rem;padding:1rem;border-radius:14px;border:1px solid var(--mat-sys-outline-variant);background:var(--mat-sys-surface-container-lowest);color:inherit;text-decoration:none;transition:box-shadow .15s ease,border-color .15s ease,transform .15s ease}.dm-card[_ngcontent-%COMP%]:hover{border-color:color-mix(in oklch,var(--mat-sys-primary) 40%,var(--mat-sys-outline-variant));box-shadow:var(--mat-sys-level1)}.dm-card-head[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.dm-card-name[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface);font-weight:500}.dm-card-foot[_ngcontent-%COMP%]{display:flex;gap:1rem}.dm-foot-cell[_ngcontent-%COMP%]{display:flex;flex-direction:column}.dm-foot-label[_ngcontent-%COMP%], .dm-tile-label[_ngcontent-%COMP%], .dm-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{font:500 .6875rem/1rem Roboto;text-transform:uppercase;letter-spacing:.04rem;color:var(--mat-sys-on-surface-variant)}.dm-foot-value[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface)}.dm-card-empty[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font-size:.875rem;padding:1rem 0}.dm-stats[_ngcontent-%COMP%]{display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));margin-bottom:1rem}.dm-tile[_ngcontent-%COMP%]{padding:.85rem 1rem;border-radius:12px;border:1px solid var(--mat-sys-outline-variant);background:var(--mat-sys-surface-container-lowest)}.dm-tile-value[_ngcontent-%COMP%]{font:400 1.5rem/2rem Roboto;color:var(--mat-sys-on-surface);margin-top:.25rem}.dm-chart-card[_ngcontent-%COMP%]{margin-bottom:1rem}.dm-chart-box[_ngcontent-%COMP%]{position:relative;height:320px}.dm-table-card[_ngcontent-%COMP%]{margin-bottom:1rem}.dm-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse}.dm-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .dm-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{text-align:left;padding:.55rem .75rem;border-bottom:1px solid var(--mat-sys-outline-variant);font-size:.875rem}.dm-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover{background:color-mix(in oklch,var(--mat-sys-primary) 6%,transparent)}.dm-num[_ngcontent-%COMP%]{text-align:right}.dm-why-empty[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font-size:.875rem}.dm-transition[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.35rem;padding:.75rem 1rem;border-radius:10px;background:var(--mat-sys-surface-container);margin-bottom:1rem}.dm-transition-arrow[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;font:500 1rem/1.5rem Roboto}.dm-transition-from[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.dm-transition-icon[_ngcontent-%COMP%]{font-size:18px;height:18px;width:18px;color:var(--mat-sys-outline)}.dm-transition-to[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.dm-transition-to[data-to=error][_ngcontent-%COMP%]{color:var(--mat-sys-error)}.dm-transition-to[data-to=stopped][_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.dm-transition-meta[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font-size:.8125rem}.dm-transition-msg[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface)}.dm-timeline[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0 0 0 1rem;border-left:2px solid var(--mat-sys-outline-variant)}.dm-timeline[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{position:relative;padding:.5rem 0 .5rem .75rem}.dm-timeline-dot[_ngcontent-%COMP%]{position:absolute;left:-1.42rem;top:.9rem;width:10px;height:10px;border-radius:999px;background:var(--mat-sys-outline);box-shadow:0 0 0 3px var(--mat-sys-surface)}.dm-timeline-dot[data-kind=status][_ngcontent-%COMP%]{background:var(--mat-sys-primary)}.dm-timeline-dot[data-kind=error][_ngcontent-%COMP%]{background:var(--mat-sys-error)}.dm-timeline-dot[data-kind=health][_ngcontent-%COMP%]{background:var(--mat-sys-tertiary)}.dm-timeline-head[_ngcontent-%COMP%]{font-size:.875rem;color:var(--mat-sys-on-surface)}.dm-timeline-meta[_ngcontent-%COMP%]{font-size:.75rem;color:var(--mat-sys-on-surface-variant);margin-top:.15rem}"],changeDetection:0})};export{ft as HistoryPageComponent,D as HistorySparkComponent};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{b as pe,d as _e,g as ge}from"./chunk-6WZJCF24.js";import{a as u,c as M,d as nt,e as V,f as yt,g as de,h as fe,i as bt,j as ue}from"./chunk-KLH6B22T.js";import{G as he,H as ce,N as L,O as N,e as le,o as it,p as O,r as I,s as ae,v as mt,x as vt}from"./chunk-Y6B6X4Y6.js";import{$ as v,$b as Jt,Aa as _t,C as j,Ca as x,D as Z,Ec as se,Fc as oe,Hc as C,Ia as jt,J as Ft,O as At,Ob as Gt,Pb as Ut,Qb as $t,R as zt,T as pt,U as It,V as G,W as Lt,Xb as Kt,Yb as qt,_ as Nt,_a as Zt,_b as Qt,a as H,aa as T,ac as te,b as Bt,ca as F,d as w,db as E,ea as h,eb as m,f as ft,fb as A,fc as ee,gb as K,gc as ie,ha as Yt,hb as D,i as p,ib as q,k as Mt,l as Vt,lb as Q,na as S,o as ut,oa as k,pa as Wt,pb as J,q as Tt,qb as z,rb as R,rc as et,sb as gt,ta as U,wc as ne,xa as Xt,ya as Ht,yc as re,za as $,zb as tt}from"./chunk-K43KW4K2.js";var Ye=["contentWrapper"],We=["*"],ye=new F("VIRTUAL_SCROLL_STRATEGY"),wt=class{_scrolledIndexChange=new p;scrolledIndexChange=this._scrolledIndexChange.pipe(Ft());_viewport=null;_itemSize;_minBufferPx;_maxBufferPx;constructor(i,t,e){this._itemSize=i,this._minBufferPx=t,this._maxBufferPx=e}attach(i){this._viewport=i,this._updateTotalContentSize(),this._updateRenderedRange()}detach(){this._scrolledIndexChange.complete(),this._viewport=null}updateItemAndBufferSize(i,t,e){e<t,this._itemSize=i,this._minBufferPx=t,this._maxBufferPx=e,this._updateTotalContentSize(),this._updateRenderedRange()}onContentScrolled(){this._updateRenderedRange()}onDataLengthChanged(){this._updateTotalContentSize(),this._updateRenderedRange()}onContentRendered(){}onRenderedOffsetChanged(){}scrollToIndex(i,t){this._viewport&&this._viewport.scrollToOffset(i*this._itemSize,t)}_updateTotalContentSize(){this._viewport&&this._viewport.setTotalContentSize(this._viewport.getDataLength()*this._itemSize)}_updateRenderedRange(){if(!this._viewport)return;let i=this._viewport.getRenderedRange(),t={start:i.start,end:i.end},e=this._viewport.getViewportSize(),n=this._viewport.getDataLength(),s=this._viewport.measureScrollOffset(),o=this._itemSize>0?s/this._itemSize:0;if(t.end>n){let a=Math.ceil(e/this._itemSize),c=Math.max(0,Math.min(o,n-a));o!=c&&(o=c,s=c*this._itemSize,t.start=Math.floor(o)),t.end=Math.max(0,Math.min(n,t.start+a))}let l=s-t.start*this._itemSize;if(l<this._minBufferPx&&t.start!=0){let a=Math.ceil((this._maxBufferPx-l)/this._itemSize);t.start=Math.max(0,t.start-a),t.end=Math.min(n,Math.ceil(o+(e+this._minBufferPx)/this._itemSize))}else{let a=t.end*this._itemSize-(s+e);if(a<this._minBufferPx&&t.end!=n){let c=Math.ceil((this._maxBufferPx-a)/this._itemSize);c>0&&(t.end=Math.min(n,t.end+c),t.start=Math.max(0,Math.floor(o-this._minBufferPx/this._itemSize)))}}this._viewport.setRenderedRange(t),this._viewport.setRenderedContentOffset(Math.round(this._itemSize*t.start)),this._scrolledIndexChange.next(Math.floor(o))}};function Xe(r){return r._scrollStrategy}var He=(()=>{class r{get itemSize(){return this._itemSize}set itemSize(t){this._itemSize=I(t)}_itemSize=20;get minBufferPx(){return this._minBufferPx}set minBufferPx(t){this._minBufferPx=I(t)}_minBufferPx=100;get maxBufferPx(){return this._maxBufferPx}set maxBufferPx(t){this._maxBufferPx=I(t)}_maxBufferPx=200;_scrollStrategy=new wt(this.itemSize,this.minBufferPx,this.maxBufferPx);ngOnChanges(){this._scrollStrategy.updateItemAndBufferSize(this.itemSize,this.minBufferPx,this.maxBufferPx)}static \u0275fac=function(e){return new(e||r)};static \u0275dir=R({type:r,selectors:[["cdk-virtual-scroll-viewport","itemSize",""]],inputs:{itemSize:"itemSize",minBufferPx:"minBufferPx",maxBufferPx:"maxBufferPx"},features:[et([{provide:ye,useFactory:Xe,deps:[Nt(()=>r)]}]),$]})}return r})(),je=20,Y=(()=>{class r{_ngZone=h(m);_platform=h(O);_renderer=h(D).createRenderer(null,null);_cleanupGlobalListener;constructor(){}_scrolled=new p;_scrolledCount=0;scrollContainers=new Map;register(t){this.scrollContainers.has(t)||this.scrollContainers.set(t,t.elementScrolled().subscribe(()=>this._scrolled.next(t)))}deregister(t){let e=this.scrollContainers.get(t);e&&(e.unsubscribe(),this.scrollContainers.delete(t))}scrolled(t=je){return this._platform.isBrowser?new ft(e=>{this._cleanupGlobalListener||(this._cleanupGlobalListener=this._ngZone.runOutsideAngular(()=>this._renderer.listen("document","scroll",()=>this._scrolled.next())));let n=t>0?this._scrolled.pipe(Z(t)).subscribe(e):this._scrolled.subscribe(e);return this._scrolledCount++,()=>{n.unsubscribe(),this._scrolledCount--,this._scrolledCount||(this._cleanupGlobalListener?.(),this._cleanupGlobalListener=void 0)}}):ut()}ngOnDestroy(){this._cleanupGlobalListener?.(),this._cleanupGlobalListener=void 0,this.scrollContainers.forEach((t,e)=>this.deregister(e)),this._scrolled.complete()}ancestorScrolled(t,e){let n=this.getAncestorScrollContainers(t);return this.scrolled(e).pipe(j(s=>!s||n.indexOf(s)>-1))}getAncestorScrollContainers(t){let e=[];return this.scrollContainers.forEach((n,s)=>{this._scrollableContainsElement(s,t)&&e.push(s)}),e}_scrollableContainsElement(t,e){let n=ae(e),s=t.getElementRef().nativeElement;do if(n==s)return!0;while(n=n.parentElement);return!1}static \u0275fac=function(e){return new(e||r)};static \u0275prov=v({token:r,factory:r.\u0275fac,providedIn:"root"})}return r})(),Ct=(()=>{class r{elementRef=h(x);scrollDispatcher=h(Y);ngZone=h(m);dir=h(L,{optional:!0});_scrollElement=this.elementRef.nativeElement;_destroyed=new p;_renderer=h(q);_cleanupScroll;_elementScrolled=new p;constructor(){}ngOnInit(){this._cleanupScroll=this.ngZone.runOutsideAngular(()=>this._renderer.listen(this._scrollElement,"scroll",t=>this._elementScrolled.next(t))),this.scrollDispatcher.register(this)}ngOnDestroy(){this._cleanupScroll?.(),this._elementScrolled.complete(),this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(t){let e=this.elementRef.nativeElement,n=this.dir&&this.dir.value=="rtl";t.left==null&&(t.left=n?t.end:t.start),t.right==null&&(t.right=n?t.start:t.end),t.bottom!=null&&(t.top=e.scrollHeight-e.clientHeight-t.bottom),n&&V()!=M.NORMAL?(t.left!=null&&(t.right=e.scrollWidth-e.clientWidth-t.left),V()==M.INVERTED?t.left=t.right:V()==M.NEGATED&&(t.left=t.right?-t.right:t.right)):t.right!=null&&(t.left=e.scrollWidth-e.clientWidth-t.right),this._applyScrollToOptions(t)}_applyScrollToOptions(t){let e=this.elementRef.nativeElement;nt()?e.scrollTo(t):(t.top!=null&&(e.scrollTop=t.top),t.left!=null&&(e.scrollLeft=t.left))}measureScrollOffset(t){let e="left",n="right",s=this.elementRef.nativeElement;if(t=="top")return s.scrollTop;if(t=="bottom")return s.scrollHeight-s.clientHeight-s.scrollTop;let o=this.dir&&this.dir.value=="rtl";return t=="start"?t=o?n:e:t=="end"&&(t=o?e:n),o&&V()==M.INVERTED?t==e?s.scrollWidth-s.clientWidth-s.scrollLeft:s.scrollLeft:o&&V()==M.NEGATED?t==e?s.scrollLeft+s.scrollWidth-s.clientWidth:-s.scrollLeft:t==e?s.scrollLeft:s.scrollWidth-s.clientWidth-s.scrollLeft}static \u0275fac=function(e){return new(e||r)};static \u0275dir=R({type:r,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]]})}return r})(),Ze=20,P=(()=>{class r{_platform=h(O);_listeners;_viewportSize;_change=new p;_document=h(k);constructor(){let t=h(m),e=h(D).createRenderer(null,null);t.runOutsideAngular(()=>{if(this._platform.isBrowser){let n=s=>this._change.next(s);this._listeners=[e.listen("window","resize",n),e.listen("window","orientationchange",n)]}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){this._listeners?.forEach(t=>t()),this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();let t={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),t}getViewportRect(){let t=this.getViewportScrollPosition(),{width:e,height:n}=this.getViewportSize();return{top:t.top,left:t.left,bottom:t.top+n,right:t.left+e,height:n,width:e}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};let t=this._document,e=this._getWindow(),n=t.documentElement,s=n.getBoundingClientRect(),o=-s.top||t.body.scrollTop||e.scrollY||n.scrollTop||0,l=-s.left||t.body.scrollLeft||e.scrollX||n.scrollLeft||0;return{top:o,left:l}}change(t=Ze){return t>0?this._change.pipe(Z(t)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){let t=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:t.innerWidth,height:t.innerHeight}:{width:0,height:0}}static \u0275fac=function(e){return new(e||r)};static \u0275prov=v({token:r,factory:r.\u0275fac,providedIn:"root"})}return r})(),me=new F("VIRTUAL_SCROLLABLE"),Ge=(()=>{class r extends Ct{constructor(){super()}measureViewportSize(t){let e=this.elementRef.nativeElement;return t==="horizontal"?e.clientWidth:e.clientHeight}static \u0275fac=function(e){return new(e||r)};static \u0275dir=R({type:r,features:[gt]})}return r})();function Ue(r,i){return r.start==i.start&&r.end==i.end}var $e=typeof requestAnimationFrame<"u"?Vt:Mt,be=(()=>{class r extends Ge{elementRef=h(x);_changeDetectorRef=h(se);_scrollStrategy=h(ye,{optional:!0});scrollable=h(me,{optional:!0});_platform=h(O);_detachedSubject=new p;_renderedRangeSubject=new p;get orientation(){return this._orientation}set orientation(t){this._orientation!==t&&(this._orientation=t,this._calculateSpacerSize())}_orientation="vertical";appendOnly=!1;scrolledIndexChange=new ft(t=>this._scrollStrategy.scrolledIndexChange.subscribe(e=>Promise.resolve().then(()=>this.ngZone.run(()=>t.next(e)))));_contentWrapper;renderedRangeStream=this._renderedRangeSubject;_totalContentSize=0;_totalContentWidth=U("");_totalContentHeight=U("");_renderedContentTransform;_renderedRange={start:0,end:0};_dataLength=0;_viewportSize=0;_forOf;_renderedContentOffset=0;_renderedContentOffsetNeedsRewrite=!1;_changeDetectionNeeded=U(!1);_runAfterChangeDetection=[];_viewportChanges=w.EMPTY;_injector=h(S);_isDestroyed=!1;constructor(){super();let t=h(P);this._scrollStrategy,this._viewportChanges=t.change().subscribe(()=>{this.checkViewportSize()}),this.scrollable||(this.elementRef.nativeElement.classList.add("cdk-virtual-scrollable"),this.scrollable=this);let e=re(()=>{this._changeDetectionNeeded()&&this._doChangeDetection()},{injector:h(tt).injector});h(Wt).onDestroy(()=>{e.destroy()})}ngOnInit(){this._platform.isBrowser&&(this.scrollable===this&&super.ngOnInit(),this.ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>{this._measureViewportSize(),this._scrollStrategy.attach(this),this.scrollable.elementScrolled().pipe(pt(null),Z(0,$e),G(this._destroyed)).subscribe(()=>this._scrollStrategy.onContentScrolled()),this._markChangeDetectionNeeded()})))}ngOnDestroy(){this.detach(),this._scrollStrategy.detach(),this._renderedRangeSubject.complete(),this._detachedSubject.complete(),this._viewportChanges.unsubscribe(),this._isDestroyed=!0,super.ngOnDestroy()}attach(t){this._forOf,this.ngZone.runOutsideAngular(()=>{this._forOf=t,this._forOf.dataStream.pipe(G(this._detachedSubject)).subscribe(e=>{let n=e.length;n!==this._dataLength&&(this._dataLength=n,this._scrollStrategy.onDataLengthChanged()),this._doChangeDetection()})})}detach(){this._forOf=null,this._detachedSubject.next()}getDataLength(){return this._dataLength}getViewportSize(){return this._viewportSize}getRenderedRange(){return this._renderedRange}measureBoundingClientRectWithScrollOffset(t){return this.getElementRef().nativeElement.getBoundingClientRect()[t]}setTotalContentSize(t){this._totalContentSize!==t&&(this._totalContentSize=t,this._calculateSpacerSize(),this._markChangeDetectionNeeded())}setRenderedRange(t){Ue(this._renderedRange,t)||(this.appendOnly&&(t={start:0,end:Math.max(this._renderedRange.end,t.end)}),this._renderedRangeSubject.next(this._renderedRange=t),this._markChangeDetectionNeeded(()=>this._scrollStrategy.onContentRendered()))}getOffsetToRenderedContentStart(){return this._renderedContentOffsetNeedsRewrite?null:this._renderedContentOffset}setRenderedContentOffset(t,e="to-start"){t=this.appendOnly&&e==="to-start"?0:t;let n=this.dir&&this.dir.value=="rtl",s=this.orientation=="horizontal",o=s?"X":"Y",a=`translate${o}(${Number((s&&n?-1:1)*t)}px)`;this._renderedContentOffset=t,e==="to-end"&&(a+=` translate${o}(-100%)`,this._renderedContentOffsetNeedsRewrite=!0),this._renderedContentTransform!=a&&(this._renderedContentTransform=a,this._markChangeDetectionNeeded(()=>{this._renderedContentOffsetNeedsRewrite?(this._renderedContentOffset-=this.measureRenderedContentSize(),this._renderedContentOffsetNeedsRewrite=!1,this.setRenderedContentOffset(this._renderedContentOffset)):this._scrollStrategy.onRenderedOffsetChanged()}))}scrollToOffset(t,e="auto"){let n={behavior:e};this.orientation==="horizontal"?n.start=t:n.top=t,this.scrollable.scrollTo(n)}scrollToIndex(t,e="auto"){this._scrollStrategy.scrollToIndex(t,e)}measureScrollOffset(t){let e;return this.scrollable==this?e=n=>super.measureScrollOffset(n):e=n=>this.scrollable.measureScrollOffset(n),Math.max(0,e(t??(this.orientation==="horizontal"?"start":"top"))-this.measureViewportOffset())}measureViewportOffset(t){let e,n="left",s="right",o=this.dir?.value=="rtl";t=="start"?e=o?s:n:t=="end"?e=o?n:s:t?e=t:e=this.orientation==="horizontal"?"left":"top";let l=this.scrollable.measureBoundingClientRectWithScrollOffset(e);return this.elementRef.nativeElement.getBoundingClientRect()[e]-l}measureRenderedContentSize(){let t=this._contentWrapper.nativeElement;return this.orientation==="horizontal"?t.offsetWidth:t.offsetHeight}measureRangeSize(t){return this._forOf?this._forOf.measureRangeSize(t,this.orientation):0}checkViewportSize(){this._measureViewportSize(),this._scrollStrategy.onDataLengthChanged()}_measureViewportSize(){this._viewportSize=this.scrollable.measureViewportSize(this.orientation)}_markChangeDetectionNeeded(t){t&&this._runAfterChangeDetection.push(t),!ne(this._changeDetectionNeeded)&&this.ngZone.runOutsideAngular(()=>{Promise.resolve().then(()=>{this.ngZone.run(()=>{this._changeDetectionNeeded.set(!0)})})})}_doChangeDetection(){this._isDestroyed||this.ngZone.run(()=>{this._changeDetectorRef.markForCheck(),this._contentWrapper.nativeElement.style.transform=this._renderedContentTransform,A(()=>{this._changeDetectionNeeded.set(!1);let t=this._runAfterChangeDetection;this._runAfterChangeDetection=[];for(let e of t)e()},{injector:this._injector})})}_calculateSpacerSize(){this._totalContentHeight.set(this.orientation==="horizontal"?"":`${this._totalContentSize}px`),this._totalContentWidth.set(this.orientation==="horizontal"?`${this._totalContentSize}px`:"")}static \u0275fac=function(e){return new(e||r)};static \u0275cmp=J({type:r,selectors:[["cdk-virtual-scroll-viewport"]],viewQuery:function(e,n){if(e&1&&Qt(Ye,7),e&2){let s;Jt(s=te())&&(n._contentWrapper=s.first)}},hostAttrs:[1,"cdk-virtual-scroll-viewport"],hostVars:4,hostBindings:function(e,n){e&2&&ie("cdk-virtual-scroll-orientation-horizontal",n.orientation==="horizontal")("cdk-virtual-scroll-orientation-vertical",n.orientation!=="horizontal")},inputs:{orientation:"orientation",appendOnly:[2,"appendOnly","appendOnly",C]},outputs:{scrolledIndexChange:"scrolledIndexChange"},features:[et([{provide:Ct,useFactory:(t,e)=>t||e,deps:[[new Ht,new Xt(me)],r]}]),gt],ngContentSelectors:We,decls:4,vars:4,consts:[["contentWrapper",""],[1,"cdk-virtual-scroll-content-wrapper"],[1,"cdk-virtual-scroll-spacer"]],template:function(e,n){e&1&&(Kt(),Gt(0,"div",1,0),qt(2),Ut(),$t(3,"div",2)),e&2&&(Zt(3),ee("width",n._totalContentWidth())("height",n._totalContentHeight()))},styles:[`cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}
|
|
2
|
-
`],encapsulation:2,changeDetection:0})}return r})();function ve(r,i,t){let e=t;if(!e.getBoundingClientRect)return 0;let n=e.getBoundingClientRect();return r==="horizontal"?i==="start"?n.left:n.right:i==="start"?n.top:n.bottom}var Ke=(()=>{class r{_viewContainerRef=h(Q);_template=h(K);_differs=h(oe);_viewRepeater=h(bt);_viewport=h(be,{skipSelf:!0});viewChange=new p;_dataSourceChanges=new p;get cdkVirtualForOf(){return this._cdkVirtualForOf}set cdkVirtualForOf(t){this._cdkVirtualForOf=t,de(t)?this._dataSourceChanges.next(t):this._dataSourceChanges.next(new fe(Tt(t)?t:Array.from(t||[])))}_cdkVirtualForOf;get cdkVirtualForTrackBy(){return this._cdkVirtualForTrackBy}set cdkVirtualForTrackBy(t){this._needsUpdate=!0,this._cdkVirtualForTrackBy=t?(e,n)=>t(e+(this._renderedRange?this._renderedRange.start:0),n):void 0}_cdkVirtualForTrackBy;set cdkVirtualForTemplate(t){t&&(this._needsUpdate=!0,this._template=t)}get cdkVirtualForTemplateCacheSize(){return this._viewRepeater.viewCacheSize}set cdkVirtualForTemplateCacheSize(t){this._viewRepeater.viewCacheSize=I(t)}dataStream=this._dataSourceChanges.pipe(pt(null),At(),It(([t,e])=>this._changeDataSource(t,e)),zt(1));_differ=null;_data;_renderedItems;_renderedRange;_needsUpdate=!1;_destroyed=new p;constructor(){let t=h(m);this.dataStream.subscribe(e=>{this._data=e,this._onRenderedDataChange()}),this._viewport.renderedRangeStream.pipe(G(this._destroyed)).subscribe(e=>{this._renderedRange=e,this.viewChange.observers.length&&t.run(()=>this.viewChange.next(this._renderedRange)),this._onRenderedDataChange()}),this._viewport.attach(this)}measureRangeSize(t,e){if(t.start>=t.end)return 0;t.start<this._renderedRange.start||t.end>this._renderedRange.end;let n=t.start-this._renderedRange.start,s=t.end-t.start,o,l;for(let a=0;a<s;a++){let c=this._viewContainerRef.get(a+n);if(c&&c.rootNodes.length){o=l=c.rootNodes[0];break}}for(let a=s-1;a>-1;a--){let c=this._viewContainerRef.get(a+n);if(c&&c.rootNodes.length){l=c.rootNodes[c.rootNodes.length-1];break}}return o&&l?ve(e,"end",l)-ve(e,"start",o):0}ngDoCheck(){if(this._differ&&this._needsUpdate){let t=this._differ.diff(this._renderedItems);t?this._applyChanges(t):this._updateContext(),this._needsUpdate=!1}}ngOnDestroy(){this._viewport.detach(),this._dataSourceChanges.next(void 0),this._dataSourceChanges.complete(),this.viewChange.complete(),this._destroyed.next(),this._destroyed.complete(),this._viewRepeater.detach()}_onRenderedDataChange(){this._renderedRange&&(this._renderedItems=this._data.slice(this._renderedRange.start,this._renderedRange.end),this._differ||(this._differ=this._differs.find(this._renderedItems).create((t,e)=>this.cdkVirtualForTrackBy?this.cdkVirtualForTrackBy(t,e):e)),this._needsUpdate=!0)}_changeDataSource(t,e){return t&&t.disconnect(this),this._needsUpdate=!0,e?e.connect(this):ut()}_updateContext(){let t=this._data.length,e=this._viewContainerRef.length;for(;e--;){let n=this._viewContainerRef.get(e);n.context.index=this._renderedRange.start+e,n.context.count=t,this._updateComputedContextProperties(n.context),n.detectChanges()}}_applyChanges(t){this._viewRepeater.applyChanges(t,this._viewContainerRef,(s,o,l)=>this._getEmbeddedViewArgs(s,l),s=>s.item),t.forEachIdentityChange(s=>{let o=this._viewContainerRef.get(s.currentIndex);o.context.$implicit=s.item});let e=this._data.length,n=this._viewContainerRef.length;for(;n--;){let s=this._viewContainerRef.get(n);s.context.index=this._renderedRange.start+n,s.context.count=e,this._updateComputedContextProperties(s.context)}}_updateComputedContextProperties(t){t.first=t.index===0,t.last=t.index===t.count-1,t.even=t.index%2===0,t.odd=!t.even}_getEmbeddedViewArgs(t,e){return{templateRef:this._template,context:{$implicit:t.item,cdkVirtualForOf:this._cdkVirtualForOf,index:-1,count:-1,first:!1,last:!1,odd:!1,even:!1},index:e}}static ngTemplateContextGuard(t,e){return!0}static \u0275fac=function(e){return new(e||r)};static \u0275dir=R({type:r,selectors:[["","cdkVirtualFor","","cdkVirtualForOf",""]],inputs:{cdkVirtualForOf:"cdkVirtualForOf",cdkVirtualForTrackBy:"cdkVirtualForTrackBy",cdkVirtualForTemplate:"cdkVirtualForTemplate",cdkVirtualForTemplateCacheSize:"cdkVirtualForTemplateCacheSize"},features:[et([{provide:bt,useClass:ue}])]})}return r})();var St=(()=>{class r{static \u0275fac=function(e){return new(e||r)};static \u0275mod=z({type:r});static \u0275inj=T({})}return r})(),kt=(()=>{class r{static \u0275fac=function(e){return new(e||r)};static \u0275mod=z({type:r});static \u0275inj=T({imports:[N,St,N,St]})}return r})();var we=nt();function Ee(r){return new rt(r.get(P),r.get(k))}var rt=class{_viewportRuler;_previousHTMLStyles={top:"",left:""};_previousScrollPosition;_isEnabled=!1;_document;constructor(i,t){this._viewportRuler=i,this._document=t}attach(){}enable(){if(this._canBeEnabled()){let i=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=i.style.left||"",this._previousHTMLStyles.top=i.style.top||"",i.style.left=u(-this._previousScrollPosition.left),i.style.top=u(-this._previousScrollPosition.top),i.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){let i=this._document.documentElement,t=this._document.body,e=i.style,n=t.style,s=e.scrollBehavior||"",o=n.scrollBehavior||"";this._isEnabled=!1,e.left=this._previousHTMLStyles.left,e.top=this._previousHTMLStyles.top,i.classList.remove("cdk-global-scrollblock"),we&&(e.scrollBehavior=n.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),we&&(e.scrollBehavior=s,n.scrollBehavior=o)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;let t=this._document.documentElement,e=this._viewportRuler.getViewportSize();return t.scrollHeight>e.height||t.scrollWidth>e.width}};function De(r,i){return new st(r.get(Y),r.get(m),r.get(P),i)}var st=class{_scrollDispatcher;_ngZone;_viewportRuler;_config;_scrollSubscription=null;_overlayRef;_initialScrollPosition;constructor(i,t,e,n){this._scrollDispatcher=i,this._ngZone=t,this._viewportRuler=e,this._config=n}attach(i){this._overlayRef,this._overlayRef=i}enable(){if(this._scrollSubscription)return;let i=this._scrollDispatcher.scrolled(0).pipe(j(t=>!t||!this._overlayRef.overlayElement.contains(t.getElementRef().nativeElement)));this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=i.subscribe(()=>{let t=this._viewportRuler.getViewportScrollPosition().top;Math.abs(t-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=i.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}_detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}};var W=class{enable(){}disable(){}attach(){}};function Rt(r,i){return i.some(t=>{let e=r.bottom<t.top,n=r.top>t.bottom,s=r.right<t.left,o=r.left>t.right;return e||n||s||o})}function Se(r,i){return i.some(t=>{let e=r.top<t.top,n=r.bottom>t.bottom,s=r.left<t.left,o=r.right>t.right;return e||n||s||o})}function dt(r,i){return new ot(r.get(Y),r.get(P),r.get(m),i)}var ot=class{_scrollDispatcher;_viewportRuler;_ngZone;_config;_scrollSubscription=null;_overlayRef;constructor(i,t,e,n){this._scrollDispatcher=i,this._viewportRuler=t,this._ngZone=e,this._config=n}attach(i){this._overlayRef,this._overlayRef=i}enable(){if(!this._scrollSubscription){let i=this._config?this._config.scrollThrottle:0;this._scrollSubscription=this._scrollDispatcher.scrolled(i).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){let t=this._overlayRef.overlayElement.getBoundingClientRect(),{width:e,height:n}=this._viewportRuler.getViewportSize();Rt(t,[{width:e,height:n,bottom:n,right:e,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}})}}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}},Pe=(()=>{class r{_injector=h(S);constructor(){}noop=()=>new W;close=t=>De(this._injector,t);block=()=>Ee(this._injector);reposition=t=>dt(this._injector,t);static \u0275fac=function(e){return new(e||r)};static \u0275prov=v({token:r,factory:r.\u0275fac,providedIn:"root"})}return r})(),X=class{positionStrategy;scrollStrategy=new W;panelClass="";hasBackdrop=!1;backdropClass="cdk-overlay-dark-backdrop";disableAnimations;width;height;minWidth;minHeight;maxWidth;maxHeight;direction;disposeOnNavigation=!1;constructor(i){if(i){let t=Object.keys(i);for(let e of t)i[e]!==void 0&&(this[e]=i[e])}}};var lt=class{connectionPair;scrollableViewProperties;constructor(i,t){this.connectionPair=i,this.scrollableViewProperties=t}};var Be=(()=>{class r{_attachedOverlays=[];_document=h(k);_isAttached;constructor(){}ngOnDestroy(){this.detach()}add(t){this.remove(t),this._attachedOverlays.push(t)}remove(t){let e=this._attachedOverlays.indexOf(t);e>-1&&this._attachedOverlays.splice(e,1),this._attachedOverlays.length===0&&this.detach()}static \u0275fac=function(e){return new(e||r)};static \u0275prov=v({token:r,factory:r.\u0275fac,providedIn:"root"})}return r})(),Me=(()=>{class r extends Be{_ngZone=h(m);_renderer=h(D).createRenderer(null,null);_cleanupKeydown;add(t){super.add(t),this._isAttached||(this._ngZone.runOutsideAngular(()=>{this._cleanupKeydown=this._renderer.listen("body","keydown",this._keydownListener)}),this._isAttached=!0)}detach(){this._isAttached&&(this._cleanupKeydown?.(),this._isAttached=!1)}_keydownListener=t=>{let e=this._attachedOverlays;for(let n=e.length-1;n>-1;n--)if(e[n]._keydownEvents.observers.length>0){this._ngZone.run(()=>e[n]._keydownEvents.next(t));break}};static \u0275fac=(()=>{let t;return function(n){return(t||(t=_t(r)))(n||r)}})();static \u0275prov=v({token:r,factory:r.\u0275fac,providedIn:"root"})}return r})(),Ve=(()=>{class r extends Be{_platform=h(O);_ngZone=h(m);_renderer=h(D).createRenderer(null,null);_cursorOriginalValue;_cursorStyleIsSet=!1;_pointerDownEventTarget;_cleanups;add(t){if(super.add(t),!this._isAttached){let e=this._document.body,n={capture:!0},s=this._renderer;this._cleanups=this._ngZone.runOutsideAngular(()=>[s.listen(e,"pointerdown",this._pointerDownListener,n),s.listen(e,"click",this._clickListener,n),s.listen(e,"auxclick",this._clickListener,n),s.listen(e,"contextmenu",this._clickListener,n)]),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=e.style.cursor,e.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){this._isAttached&&(this._cleanups?.forEach(t=>t()),this._cleanups=void 0,this._platform.IOS&&this._cursorStyleIsSet&&(this._document.body.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1)}_pointerDownListener=t=>{this._pointerDownEventTarget=it(t)};_clickListener=t=>{let e=it(t),n=t.type==="click"&&this._pointerDownEventTarget?this._pointerDownEventTarget:e;this._pointerDownEventTarget=null;let s=this._attachedOverlays.slice();for(let o=s.length-1;o>-1;o--){let l=s[o];if(l._outsidePointerEvents.observers.length<1||!l.hasAttached())continue;if(Ce(l.overlayElement,e)||Ce(l.overlayElement,n))break;let a=l._outsidePointerEvents;this._ngZone?this._ngZone.run(()=>a.next(t)):a.next(t)}};static \u0275fac=(()=>{let t;return function(n){return(t||(t=_t(r)))(n||r)}})();static \u0275prov=v({token:r,factory:r.\u0275fac,providedIn:"root"})}return r})();function Ce(r,i){let t=typeof ShadowRoot<"u"&&ShadowRoot,e=i;for(;e;){if(e===r)return!0;e=t&&e instanceof ShadowRoot?e.host:e.parentNode}return!1}var Te=(()=>{class r{static \u0275fac=function(e){return new(e||r)};static \u0275cmp=J({type:r,selectors:[["ng-component"]],hostAttrs:["cdk-overlay-style-loader",""],decls:0,vars:0,template:function(e,n){},styles:[`.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed}@layer cdk-overlay{.cdk-overlay-container{z-index:1000}}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute}@layer cdk-overlay{.cdk-global-overlay-wrapper{z-index:1000}}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%}@layer cdk-overlay{.cdk-overlay-pane{z-index:1000}}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);opacity:0;touch-action:manipulation}@layer cdk-overlay{.cdk-overlay-backdrop{z-index:1000;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}}@media(prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.cdk-overlay-backdrop-showing{opacity:1}@media(forced-colors: active){.cdk-overlay-backdrop-showing{opacity:.6}}@layer cdk-overlay{.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px}@layer cdk-overlay{.cdk-overlay-connected-position-bounding-box{z-index:1000}}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}
|
|
3
|
-
`],encapsulation:2,changeDetection:0})}return r})(),Fe=(()=>{class r{_platform=h(O);_containerElement;_document=h(k);_styleLoader=h(mt);constructor(){}ngOnDestroy(){this._containerElement?.remove()}getContainerElement(){return this._loadStyles(),this._containerElement||this._createContainer(),this._containerElement}_createContainer(){let t="cdk-overlay-container";if(this._platform.isBrowser||yt()){let n=this._document.querySelectorAll(`.${t}[platform="server"], .${t}[platform="test"]`);for(let s=0;s<n.length;s++)n[s].remove()}let e=this._document.createElement("div");e.classList.add(t),yt()?e.setAttribute("platform","test"):this._platform.isBrowser||e.setAttribute("platform","server"),this._document.body.appendChild(e),this._containerElement=e}_loadStyles(){this._styleLoader.load(Te)}static \u0275fac=function(e){return new(e||r)};static \u0275prov=v({token:r,factory:r.\u0275fac,providedIn:"root"})}return r})(),Ot=class{_renderer;_ngZone;element;_cleanupClick;_cleanupTransitionEnd;_fallbackTimeout;constructor(i,t,e,n){this._renderer=t,this._ngZone=e,this.element=i.createElement("div"),this.element.classList.add("cdk-overlay-backdrop"),this._cleanupClick=t.listen(this.element,"click",n)}detach(){this._ngZone.runOutsideAngular(()=>{let i=this.element;clearTimeout(this._fallbackTimeout),this._cleanupTransitionEnd?.(),this._cleanupTransitionEnd=this._renderer.listen(i,"transitionend",this.dispose),this._fallbackTimeout=setTimeout(this.dispose,500),i.style.pointerEvents="none",i.classList.remove("cdk-overlay-backdrop-showing")})}dispose=()=>{clearTimeout(this._fallbackTimeout),this._cleanupClick?.(),this._cleanupTransitionEnd?.(),this._cleanupClick=this._cleanupTransitionEnd=this._fallbackTimeout=void 0,this.element.remove()}},at=class{_portalOutlet;_host;_pane;_config;_ngZone;_keyboardDispatcher;_document;_location;_outsideClickDispatcher;_animationsDisabled;_injector;_renderer;_backdropClick=new p;_attachments=new p;_detachments=new p;_positionStrategy;_scrollStrategy;_locationChanges=w.EMPTY;_backdropRef=null;_detachContentMutationObserver;_detachContentAfterRenderRef;_previousHostParent;_keydownEvents=new p;_outsidePointerEvents=new p;_afterNextRenderRef;constructor(i,t,e,n,s,o,l,a,c,d=!1,f,b){this._portalOutlet=i,this._host=t,this._pane=e,this._config=n,this._ngZone=s,this._keyboardDispatcher=o,this._document=l,this._location=a,this._outsideClickDispatcher=c,this._animationsDisabled=d,this._injector=f,this._renderer=b,n.scrollStrategy&&(this._scrollStrategy=n.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=n.positionStrategy}get overlayElement(){return this._pane}get backdropElement(){return this._backdropRef?.element||null}get hostElement(){return this._host}attach(i){!this._host.parentElement&&this._previousHostParent&&this._previousHostParent.appendChild(this._host);let t=this._portalOutlet.attach(i);return this._positionStrategy&&this._positionStrategy.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._afterNextRenderRef?.destroy(),this._afterNextRenderRef=A(()=>{this.hasAttached()&&this.updatePosition()},{injector:this._injector}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._completeDetachContent(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),typeof t?.onDestroy=="function"&&t.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),t}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();let i=this._portalOutlet.detach();return this._detachments.next(),this._completeDetachContent(),this._keyboardDispatcher.remove(this),this._detachContentWhenEmpty(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),i}dispose(){let i=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._backdropRef?.dispose(),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),this._host?.remove(),this._afterNextRenderRef?.destroy(),this._previousHostParent=this._pane=this._host=this._backdropRef=null,i&&this._detachments.next(),this._detachments.complete(),this._completeDetachContent()}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(i){i!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=i,this.hasAttached()&&(i.attach(this),this.updatePosition()))}updateSize(i){this._config=H(H({},this._config),i),this._updateElementSize()}setDirection(i){this._config=Bt(H({},this._config),{direction:i}),this._updateElementDirection()}addPanelClass(i){this._pane&&this._toggleClasses(this._pane,i,!0)}removePanelClass(i){this._pane&&this._toggleClasses(this._pane,i,!1)}getDirection(){let i=this._config.direction;return i?typeof i=="string"?i:i.value:"ltr"}updateScrollStrategy(i){i!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=i,this.hasAttached()&&(i.attach(this),i.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;let i=this._pane.style;i.width=u(this._config.width),i.height=u(this._config.height),i.minWidth=u(this._config.minWidth),i.minHeight=u(this._config.minHeight),i.maxWidth=u(this._config.maxWidth),i.maxHeight=u(this._config.maxHeight)}_togglePointerEvents(i){this._pane.style.pointerEvents=i?"":"none"}_attachBackdrop(){let i="cdk-overlay-backdrop-showing";this._backdropRef?.dispose(),this._backdropRef=new Ot(this._document,this._renderer,this._ngZone,t=>{this._backdropClick.next(t)}),this._animationsDisabled&&this._backdropRef.element.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropRef.element,this._config.backdropClass,!0),this._host.parentElement.insertBefore(this._backdropRef.element,this._host),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>this._backdropRef?.element.classList.add(i))}):this._backdropRef.element.classList.add(i)}_updateStackingOrder(){this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){this._animationsDisabled?(this._backdropRef?.dispose(),this._backdropRef=null):this._backdropRef?.detach()}_toggleClasses(i,t,e){let n=vt(t||[]).filter(s=>!!s);n.length&&(e?i.classList.add(...n):i.classList.remove(...n))}_detachContentWhenEmpty(){let i=!1;try{this._detachContentAfterRenderRef=A(()=>{i=!0,this._detachContent()},{injector:this._injector})}catch(t){if(i)throw t;this._detachContent()}globalThis.MutationObserver&&this._pane&&(this._detachContentMutationObserver||=new globalThis.MutationObserver(()=>{this._detachContent()}),this._detachContentMutationObserver.observe(this._pane,{childList:!0}))}_detachContent(){(!this._pane||!this._host||this._pane.children.length===0)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),this._completeDetachContent())}_completeDetachContent(){this._detachContentAfterRenderRef?.destroy(),this._detachContentAfterRenderRef=void 0,this._detachContentMutationObserver?.disconnect()}_disposeScrollStrategy(){let i=this._scrollStrategy;i?.disable(),i?.detach?.()}},ke="cdk-overlay-connected-position-bounding-box",qe=/([A-Za-z%]+)$/;function Et(r,i){return new ht(i,r.get(P),r.get(k),r.get(O),r.get(Fe))}var ht=class{_viewportRuler;_document;_platform;_overlayContainer;_overlayRef;_isInitialRender;_lastBoundingBoxSize={width:0,height:0};_isPushed=!1;_canPush=!0;_growAfterOpen=!1;_hasFlexibleDimensions=!0;_positionLocked=!1;_originRect;_overlayRect;_viewportRect;_containerRect;_viewportMargin=0;_scrollables=[];_preferredPositions=[];_origin;_pane;_isDisposed;_boundingBox;_lastPosition;_lastScrollVisibility;_positionChanges=new p;_resizeSubscription=w.EMPTY;_offsetX=0;_offsetY=0;_transformOriginSelector;_appliedPanelClasses=[];_previousPushAmount;positionChanges=this._positionChanges;get positions(){return this._preferredPositions}constructor(i,t,e,n,s){this._viewportRuler=t,this._document=e,this._platform=n,this._overlayContainer=s,this.setOrigin(i)}attach(i){this._overlayRef&&this._overlayRef,this._validatePositions(),i.hostElement.classList.add(ke),this._overlayRef=i,this._boundingBox=i.hostElement,this._pane=i.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition){this.reapplyLastPosition();return}this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();let i=this._originRect,t=this._overlayRect,e=this._viewportRect,n=this._containerRect,s=[],o;for(let l of this._preferredPositions){let a=this._getOriginPoint(i,n,l),c=this._getOverlayPoint(a,t,l),d=this._getOverlayFit(c,t,e,l);if(d.isCompletelyWithinViewport){this._isPushed=!1,this._applyPosition(l,a);return}if(this._canFitWithFlexibleDimensions(d,c,e)){s.push({position:l,origin:a,overlayRect:t,boundingBoxRect:this._calculateBoundingBoxRect(a,l)});continue}(!o||o.overlayFit.visibleArea<d.visibleArea)&&(o={overlayFit:d,overlayPoint:c,originPoint:a,position:l,overlayRect:t})}if(s.length){let l=null,a=-1;for(let c of s){let d=c.boundingBoxRect.width*c.boundingBoxRect.height*(c.position.weight||1);d>a&&(a=d,l=c)}this._isPushed=!1,this._applyPosition(l.position,l.origin);return}if(this._canPush){this._isPushed=!0,this._applyPosition(o.position,o.originPoint);return}this._applyPosition(o.position,o.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&B(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(ke),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;let i=this._lastPosition;if(i){this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();let t=this._getOriginPoint(this._originRect,this._containerRect,i);this._applyPosition(i,t)}else this.apply()}withScrollableContainers(i){return this._scrollables=i,this}withPositions(i){return this._preferredPositions=i,i.indexOf(this._lastPosition)===-1&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(i){return this._viewportMargin=i,this}withFlexibleDimensions(i=!0){return this._hasFlexibleDimensions=i,this}withGrowAfterOpen(i=!0){return this._growAfterOpen=i,this}withPush(i=!0){return this._canPush=i,this}withLockedPosition(i=!0){return this._positionLocked=i,this}setOrigin(i){return this._origin=i,this}withDefaultOffsetX(i){return this._offsetX=i,this}withDefaultOffsetY(i){return this._offsetY=i,this}withTransformOriginOn(i){return this._transformOriginSelector=i,this}_getOriginPoint(i,t,e){let n;if(e.originX=="center")n=i.left+i.width/2;else{let o=this._isRtl()?i.right:i.left,l=this._isRtl()?i.left:i.right;n=e.originX=="start"?o:l}t.left<0&&(n-=t.left);let s;return e.originY=="center"?s=i.top+i.height/2:s=e.originY=="top"?i.top:i.bottom,t.top<0&&(s-=t.top),{x:n,y:s}}_getOverlayPoint(i,t,e){let n;e.overlayX=="center"?n=-t.width/2:e.overlayX==="start"?n=this._isRtl()?-t.width:0:n=this._isRtl()?0:-t.width;let s;return e.overlayY=="center"?s=-t.height/2:s=e.overlayY=="top"?0:-t.height,{x:i.x+n,y:i.y+s}}_getOverlayFit(i,t,e,n){let s=Oe(t),{x:o,y:l}=i,a=this._getOffset(n,"x"),c=this._getOffset(n,"y");a&&(o+=a),c&&(l+=c);let d=0-o,f=o+s.width-e.width,b=0-l,g=l+s.height-e.height,_=this._subtractOverflows(s.width,d,f),y=this._subtractOverflows(s.height,b,g),Pt=_*y;return{visibleArea:Pt,isCompletelyWithinViewport:s.width*s.height===Pt,fitsInViewportVertically:y===s.height,fitsInViewportHorizontally:_==s.width}}_canFitWithFlexibleDimensions(i,t,e){if(this._hasFlexibleDimensions){let n=e.bottom-t.y,s=e.right-t.x,o=Re(this._overlayRef.getConfig().minHeight),l=Re(this._overlayRef.getConfig().minWidth),a=i.fitsInViewportVertically||o!=null&&o<=n,c=i.fitsInViewportHorizontally||l!=null&&l<=s;return a&&c}return!1}_pushOverlayOnScreen(i,t,e){if(this._previousPushAmount&&this._positionLocked)return{x:i.x+this._previousPushAmount.x,y:i.y+this._previousPushAmount.y};let n=Oe(t),s=this._viewportRect,o=Math.max(i.x+n.width-s.width,0),l=Math.max(i.y+n.height-s.height,0),a=Math.max(s.top-e.top-i.y,0),c=Math.max(s.left-e.left-i.x,0),d=0,f=0;return n.width<=s.width?d=c||-o:d=i.x<this._viewportMargin?s.left-e.left-i.x:0,n.height<=s.height?f=a||-l:f=i.y<this._viewportMargin?s.top-e.top-i.y:0,this._previousPushAmount={x:d,y:f},{x:i.x+d,y:i.y+f}}_applyPosition(i,t){if(this._setTransformOrigin(i),this._setOverlayElementStyles(t,i),this._setBoundingBoxStyles(t,i),i.panelClass&&this._addPanelClasses(i.panelClass),this._positionChanges.observers.length){let e=this._getScrollVisibility();if(i!==this._lastPosition||!this._lastScrollVisibility||!Qe(this._lastScrollVisibility,e)){let n=new lt(i,e);this._positionChanges.next(n)}this._lastScrollVisibility=e}this._lastPosition=i,this._isInitialRender=!1}_setTransformOrigin(i){if(!this._transformOriginSelector)return;let t=this._boundingBox.querySelectorAll(this._transformOriginSelector),e,n=i.overlayY;i.overlayX==="center"?e="center":this._isRtl()?e=i.overlayX==="start"?"right":"left":e=i.overlayX==="start"?"left":"right";for(let s=0;s<t.length;s++)t[s].style.transformOrigin=`${e} ${n}`}_calculateBoundingBoxRect(i,t){let e=this._viewportRect,n=this._isRtl(),s,o,l;if(t.overlayY==="top")o=i.y,s=e.height-o+this._viewportMargin;else if(t.overlayY==="bottom")l=e.height-i.y+this._viewportMargin*2,s=e.height-l+this._viewportMargin;else{let g=Math.min(e.bottom-i.y+e.top,i.y),_=this._lastBoundingBoxSize.height;s=g*2,o=i.y-g,s>_&&!this._isInitialRender&&!this._growAfterOpen&&(o=i.y-_/2)}let a=t.overlayX==="start"&&!n||t.overlayX==="end"&&n,c=t.overlayX==="end"&&!n||t.overlayX==="start"&&n,d,f,b;if(c)b=e.width-i.x+this._viewportMargin*2,d=i.x-this._viewportMargin;else if(a)f=i.x,d=e.right-i.x;else{let g=Math.min(e.right-i.x+e.left,i.x),_=this._lastBoundingBoxSize.width;d=g*2,f=i.x-g,d>_&&!this._isInitialRender&&!this._growAfterOpen&&(f=i.x-_/2)}return{top:o,left:f,bottom:l,right:b,width:d,height:s}}_setBoundingBoxStyles(i,t){let e=this._calculateBoundingBoxRect(i,t);!this._isInitialRender&&!this._growAfterOpen&&(e.height=Math.min(e.height,this._lastBoundingBoxSize.height),e.width=Math.min(e.width,this._lastBoundingBoxSize.width));let n={};if(this._hasExactPosition())n.top=n.left="0",n.bottom=n.right=n.maxHeight=n.maxWidth="",n.width=n.height="100%";else{let s=this._overlayRef.getConfig().maxHeight,o=this._overlayRef.getConfig().maxWidth;n.height=u(e.height),n.top=u(e.top),n.bottom=u(e.bottom),n.width=u(e.width),n.left=u(e.left),n.right=u(e.right),t.overlayX==="center"?n.alignItems="center":n.alignItems=t.overlayX==="end"?"flex-end":"flex-start",t.overlayY==="center"?n.justifyContent="center":n.justifyContent=t.overlayY==="bottom"?"flex-end":"flex-start",s&&(n.maxHeight=u(s)),o&&(n.maxWidth=u(o))}this._lastBoundingBoxSize=e,B(this._boundingBox.style,n)}_resetBoundingBoxStyles(){B(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){B(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(i,t){let e={},n=this._hasExactPosition(),s=this._hasFlexibleDimensions,o=this._overlayRef.getConfig();if(n){let d=this._viewportRuler.getViewportScrollPosition();B(e,this._getExactOverlayY(t,i,d)),B(e,this._getExactOverlayX(t,i,d))}else e.position="static";let l="",a=this._getOffset(t,"x"),c=this._getOffset(t,"y");a&&(l+=`translateX(${a}px) `),c&&(l+=`translateY(${c}px)`),e.transform=l.trim(),o.maxHeight&&(n?e.maxHeight=u(o.maxHeight):s&&(e.maxHeight="")),o.maxWidth&&(n?e.maxWidth=u(o.maxWidth):s&&(e.maxWidth="")),B(this._pane.style,e)}_getExactOverlayY(i,t,e){let n={top:"",bottom:""},s=this._getOverlayPoint(t,this._overlayRect,i);if(this._isPushed&&(s=this._pushOverlayOnScreen(s,this._overlayRect,e)),i.overlayY==="bottom"){let o=this._document.documentElement.clientHeight;n.bottom=`${o-(s.y+this._overlayRect.height)}px`}else n.top=u(s.y);return n}_getExactOverlayX(i,t,e){let n={left:"",right:""},s=this._getOverlayPoint(t,this._overlayRect,i);this._isPushed&&(s=this._pushOverlayOnScreen(s,this._overlayRect,e));let o;if(this._isRtl()?o=i.overlayX==="end"?"left":"right":o=i.overlayX==="end"?"right":"left",o==="right"){let l=this._document.documentElement.clientWidth;n.right=`${l-(s.x+this._overlayRect.width)}px`}else n.left=u(s.x);return n}_getScrollVisibility(){let i=this._getOriginRect(),t=this._pane.getBoundingClientRect(),e=this._scrollables.map(n=>n.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:Se(i,e),isOriginOutsideView:Rt(i,e),isOverlayClipped:Se(t,e),isOverlayOutsideView:Rt(t,e)}}_subtractOverflows(i,...t){return t.reduce((e,n)=>e-Math.max(n,0),i)}_getNarrowedViewportRect(){let i=this._document.documentElement.clientWidth,t=this._document.documentElement.clientHeight,e=this._viewportRuler.getViewportScrollPosition();return{top:e.top+this._viewportMargin,left:e.left+this._viewportMargin,right:e.left+i-this._viewportMargin,bottom:e.top+t-this._viewportMargin,width:i-2*this._viewportMargin,height:t-2*this._viewportMargin}}_isRtl(){return this._overlayRef.getDirection()==="rtl"}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(i,t){return t==="x"?i.offsetX==null?this._offsetX:i.offsetX:i.offsetY==null?this._offsetY:i.offsetY}_validatePositions(){}_addPanelClasses(i){this._pane&&vt(i).forEach(t=>{t!==""&&this._appliedPanelClasses.indexOf(t)===-1&&(this._appliedPanelClasses.push(t),this._pane.classList.add(t))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(i=>{this._pane.classList.remove(i)}),this._appliedPanelClasses=[])}_getOriginRect(){let i=this._origin;if(i instanceof x)return i.nativeElement.getBoundingClientRect();if(i instanceof Element)return i.getBoundingClientRect();let t=i.width||0,e=i.height||0;return{top:i.y,bottom:i.y+e,left:i.x,right:i.x+t,height:e,width:t}}};function B(r,i){for(let t in i)i.hasOwnProperty(t)&&(r[t]=i[t]);return r}function Re(r){if(typeof r!="number"&&r!=null){let[i,t]=r.split(qe);return!t||t==="px"?parseFloat(i):null}return r||null}function Oe(r){return{top:Math.floor(r.top),right:Math.floor(r.right),bottom:Math.floor(r.bottom),left:Math.floor(r.left),width:Math.floor(r.width),height:Math.floor(r.height)}}function Qe(r,i){return r===i?!0:r.isOriginClipped===i.isOriginClipped&&r.isOriginOutsideView===i.isOriginOutsideView&&r.isOverlayClipped===i.isOverlayClipped&&r.isOverlayOutsideView===i.isOverlayOutsideView}var xe="cdk-global-overlay-wrapper";function Ae(r){return new ct}var ct=class{_overlayRef;_cssPosition="static";_topOffset="";_bottomOffset="";_alignItems="";_xPosition="";_xOffset="";_width="";_height="";_isDisposed=!1;attach(i){let t=i.getConfig();this._overlayRef=i,this._width&&!t.width&&i.updateSize({width:this._width}),this._height&&!t.height&&i.updateSize({height:this._height}),i.hostElement.classList.add(xe),this._isDisposed=!1}top(i=""){return this._bottomOffset="",this._topOffset=i,this._alignItems="flex-start",this}left(i=""){return this._xOffset=i,this._xPosition="left",this}bottom(i=""){return this._topOffset="",this._bottomOffset=i,this._alignItems="flex-end",this}right(i=""){return this._xOffset=i,this._xPosition="right",this}start(i=""){return this._xOffset=i,this._xPosition="start",this}end(i=""){return this._xOffset=i,this._xPosition="end",this}width(i=""){return this._overlayRef?this._overlayRef.updateSize({width:i}):this._width=i,this}height(i=""){return this._overlayRef?this._overlayRef.updateSize({height:i}):this._height=i,this}centerHorizontally(i=""){return this.left(i),this._xPosition="center",this}centerVertically(i=""){return this.top(i),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;let i=this._overlayRef.overlayElement.style,t=this._overlayRef.hostElement.style,e=this._overlayRef.getConfig(),{width:n,height:s,maxWidth:o,maxHeight:l}=e,a=(n==="100%"||n==="100vw")&&(!o||o==="100%"||o==="100vw"),c=(s==="100%"||s==="100vh")&&(!l||l==="100%"||l==="100vh"),d=this._xPosition,f=this._xOffset,b=this._overlayRef.getConfig().direction==="rtl",g="",_="",y="";a?y="flex-start":d==="center"?(y="center",b?_=f:g=f):b?d==="left"||d==="end"?(y="flex-end",g=f):(d==="right"||d==="start")&&(y="flex-start",_=f):d==="left"||d==="start"?(y="flex-start",g=f):(d==="right"||d==="end")&&(y="flex-end",_=f),i.position=this._cssPosition,i.marginLeft=a?"0":g,i.marginTop=c?"0":this._topOffset,i.marginBottom=this._bottomOffset,i.marginRight=a?"0":_,t.justifyContent=y,t.alignItems=c?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;let i=this._overlayRef.overlayElement.style,t=this._overlayRef.hostElement,e=t.style;t.classList.remove(xe),e.justifyContent=e.alignItems=i.marginTop=i.marginBottom=i.marginLeft=i.marginRight=i.position="",this._overlayRef=null,this._isDisposed=!0}},ze=(()=>{class r{_injector=h(S);constructor(){}global(){return Ae()}flexibleConnectedTo(t){return Et(this._injector,t)}static \u0275fac=function(e){return new(e||r)};static \u0275prov=v({token:r,factory:r.\u0275fac,providedIn:"root"})}return r})();function Dt(r,i){r.get(mt).load(Te);let t=r.get(Fe),e=r.get(k),n=r.get(he),s=r.get(tt),o=r.get(L),l=e.createElement("div"),a=e.createElement("div");a.id=n.getId("cdk-overlay-"),a.classList.add("cdk-overlay-pane"),l.appendChild(a),t.getContainerElement().appendChild(l);let c=new _e(a,s,r),d=new X(i),f=r.get(q,null,{optional:!0})||r.get(D).createRenderer(null,null);return d.direction=d.direction||o.value,new at(c,l,a,d,r.get(m),r.get(Me),e,r.get(le),r.get(Ve),i?.disableAnimations??r.get(jt,null,{optional:!0})==="NoopAnimations",r.get(Yt),f)}var Ie=(()=>{class r{scrollStrategies=h(Pe);_positionBuilder=h(ze);_injector=h(S);constructor(){}create(t){return Dt(this._injector,t)}position(){return this._positionBuilder}static \u0275fac=function(e){return new(e||r)};static \u0275prov=v({token:r,factory:r.\u0275fac,providedIn:"root"})}return r})(),Je=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],Le=new F("cdk-connected-overlay-scroll-strategy",{providedIn:"root",factory:()=>{let r=h(S);return()=>dt(r)}}),xt=(()=>{class r{elementRef=h(x);constructor(){}static \u0275fac=function(e){return new(e||r)};static \u0275dir=R({type:r,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"]})}return r})(),ti=(()=>{class r{_dir=h(L,{optional:!0});_injector=h(S);_overlayRef;_templatePortal;_backdropSubscription=w.EMPTY;_attachSubscription=w.EMPTY;_detachSubscription=w.EMPTY;_positionSubscription=w.EMPTY;_offsetX;_offsetY;_position;_scrollStrategyFactory=h(Le);_disposeOnNavigation=!1;_ngZone=h(m);origin;positions;positionStrategy;get offsetX(){return this._offsetX}set offsetX(t){this._offsetX=t,this._position&&this._updatePositionStrategy(this._position)}get offsetY(){return this._offsetY}set offsetY(t){this._offsetY=t,this._position&&this._updatePositionStrategy(this._position)}width;height;minWidth;minHeight;backdropClass;panelClass;viewportMargin=0;scrollStrategy;open=!1;disableClose=!1;transformOriginSelector;hasBackdrop=!1;lockPosition=!1;flexibleDimensions=!1;growAfterOpen=!1;push=!1;get disposeOnNavigation(){return this._disposeOnNavigation}set disposeOnNavigation(t){this._disposeOnNavigation=t}backdropClick=new E;positionChange=new E;attach=new E;detach=new E;overlayKeydown=new E;overlayOutsideClick=new E;constructor(){let t=h(K),e=h(Q);this._templatePortal=new pe(t,e),this.scrollStrategy=this._scrollStrategyFactory()}get overlayRef(){return this._overlayRef}get dir(){return this._dir?this._dir.value:"ltr"}ngOnDestroy(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this._overlayRef?.dispose()}ngOnChanges(t){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef?.updateSize({width:this.width,minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),t.origin&&this.open&&this._position.apply()),t.open&&(this.open?this.attachOverlay():this.detachOverlay())}_createOverlay(){(!this.positions||!this.positions.length)&&(this.positions=Je);let t=this._overlayRef=Dt(this._injector,this._buildConfig());this._attachSubscription=t.attachments().subscribe(()=>this.attach.emit()),this._detachSubscription=t.detachments().subscribe(()=>this.detach.emit()),t.keydownEvents().subscribe(e=>{this.overlayKeydown.next(e),e.keyCode===27&&!this.disableClose&&!ce(e)&&(e.preventDefault(),this.detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(e=>{let n=this._getOriginElement(),s=it(e);(!n||n!==s&&!n.contains(s))&&this.overlayOutsideClick.next(e)})}_buildConfig(){let t=this._position=this.positionStrategy||this._createPositionStrategy(),e=new X({direction:this._dir||"ltr",positionStrategy:t,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop,disposeOnNavigation:this.disposeOnNavigation});return(this.width||this.width===0)&&(e.width=this.width),(this.height||this.height===0)&&(e.height=this.height),(this.minWidth||this.minWidth===0)&&(e.minWidth=this.minWidth),(this.minHeight||this.minHeight===0)&&(e.minHeight=this.minHeight),this.backdropClass&&(e.backdropClass=this.backdropClass),this.panelClass&&(e.panelClass=this.panelClass),e}_updatePositionStrategy(t){let e=this.positions.map(n=>({originX:n.originX,originY:n.originY,overlayX:n.overlayX,overlayY:n.overlayY,offsetX:n.offsetX||this.offsetX,offsetY:n.offsetY||this.offsetY,panelClass:n.panelClass||void 0}));return t.setOrigin(this._getOrigin()).withPositions(e).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector)}_createPositionStrategy(){let t=Et(this._injector,this._getOrigin());return this._updatePositionStrategy(t),t}_getOrigin(){return this.origin instanceof xt?this.origin.elementRef:this.origin}_getOriginElement(){return this.origin instanceof xt?this.origin.elementRef.nativeElement:this.origin instanceof x?this.origin.nativeElement:typeof Element<"u"&&this.origin instanceof Element?this.origin:null}attachOverlay(){this._overlayRef?this._overlayRef.getConfig().hasBackdrop=this.hasBackdrop:this._createOverlay(),this._overlayRef.hasAttached()||this._overlayRef.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=this._overlayRef.backdropClick().subscribe(t=>{this.backdropClick.emit(t)}):this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.positionChange.observers.length>0&&(this._positionSubscription=this._position.positionChanges.pipe(Lt(()=>this.positionChange.observers.length>0)).subscribe(t=>{this._ngZone.run(()=>this.positionChange.emit(t)),this.positionChange.observers.length===0&&this._positionSubscription.unsubscribe()})),this.open=!0}detachOverlay(){this._overlayRef?.detach(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.open=!1}static \u0275fac=function(e){return new(e||r)};static \u0275dir=R({type:r,selectors:[["","cdk-connected-overlay",""],["","connected-overlay",""],["","cdkConnectedOverlay",""]],inputs:{origin:[0,"cdkConnectedOverlayOrigin","origin"],positions:[0,"cdkConnectedOverlayPositions","positions"],positionStrategy:[0,"cdkConnectedOverlayPositionStrategy","positionStrategy"],offsetX:[0,"cdkConnectedOverlayOffsetX","offsetX"],offsetY:[0,"cdkConnectedOverlayOffsetY","offsetY"],width:[0,"cdkConnectedOverlayWidth","width"],height:[0,"cdkConnectedOverlayHeight","height"],minWidth:[0,"cdkConnectedOverlayMinWidth","minWidth"],minHeight:[0,"cdkConnectedOverlayMinHeight","minHeight"],backdropClass:[0,"cdkConnectedOverlayBackdropClass","backdropClass"],panelClass:[0,"cdkConnectedOverlayPanelClass","panelClass"],viewportMargin:[0,"cdkConnectedOverlayViewportMargin","viewportMargin"],scrollStrategy:[0,"cdkConnectedOverlayScrollStrategy","scrollStrategy"],open:[0,"cdkConnectedOverlayOpen","open"],disableClose:[0,"cdkConnectedOverlayDisableClose","disableClose"],transformOriginSelector:[0,"cdkConnectedOverlayTransformOriginOn","transformOriginSelector"],hasBackdrop:[2,"cdkConnectedOverlayHasBackdrop","hasBackdrop",C],lockPosition:[2,"cdkConnectedOverlayLockPosition","lockPosition",C],flexibleDimensions:[2,"cdkConnectedOverlayFlexibleDimensions","flexibleDimensions",C],growAfterOpen:[2,"cdkConnectedOverlayGrowAfterOpen","growAfterOpen",C],push:[2,"cdkConnectedOverlayPush","push",C],disposeOnNavigation:[2,"cdkConnectedOverlayDisposeOnNavigation","disposeOnNavigation",C]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],features:[$]})}return r})();function ei(r){let i=h(S);return()=>dt(i)}var ii={provide:Le,useFactory:ei},ni=(()=>{class r{static \u0275fac=function(e){return new(e||r)};static \u0275mod=z({type:r});static \u0275inj=T({providers:[Ie,ii],imports:[N,ge,kt,kt]})}return r})();export{He as a,Y as b,Ct as c,P as d,be as e,Ke as f,St as g,kt as h,Ee as i,dt as j,X as k,Fe as l,at as m,Et as n,Ae as o,Dt as p,xt as q,ti as r,ni as s};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{P as i}from"./chunk-Y6B6X4Y6.js";import{aa as e,qb as r}from"./chunk-K43KW4K2.js";var c=(()=>{class t{static \u0275fac=function(a){return new(a||t)};static \u0275mod=r({type:t});static \u0275inj=e({imports:[i,i]})}return t})();export{c as a};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{l as O}from"./chunk-KLH6B22T.js";import{P as A,g as W}from"./chunk-Y6B6X4Y6.js";import{$b as M,Ca as y,Db as o,Ic as p,Kb as m,Lb as n,Mb as c,Nb as u,Rb as d,Wb as S,_a as a,_b as C,aa as h,ac as x,ca as f,ea as g,ec as T,fc as l,gc as E,hc as P,la as _,ma as v,pb as k,qb as b,tc as R,ub as w}from"./chunk-K43KW4K2.js";var I=["determinateSpinner"];function B(t,L){if(t&1&&(_(),n(0,"svg",11),u(1,"circle",12),c()),t&2){let e=S();o("viewBox",e._viewBox()),a(),l("stroke-dasharray",e._strokeCircumference(),"px")("stroke-dashoffset",e._strokeCircumference()/2,"px")("stroke-width",e._circleStrokeWidth(),"%"),o("r",e._circleRadius())}}var N=new f("mat-progress-spinner-default-options",{providedIn:"root",factory:z});function z(){return{diameter:D}}var D=100,F=10,J=(()=>{class t{_elementRef=g(y);_noopAnimations;get color(){return this._color||this._defaultColor}set color(e){this._color=e}_color;_defaultColor="primary";_determinateCircle;constructor(){let e=g(N),i=O(),r=this._elementRef.nativeElement;this._noopAnimations=i==="di-disabled"&&!!e&&!e._forceAnimations,this.mode=r.nodeName.toLowerCase()==="mat-spinner"?"indeterminate":"determinate",!this._noopAnimations&&i==="reduced-motion"&&r.classList.add("mat-progress-spinner-reduced-motion"),e&&(e.color&&(this.color=this._defaultColor=e.color),e.diameter&&(this.diameter=e.diameter),e.strokeWidth&&(this.strokeWidth=e.strokeWidth))}mode;get value(){return this.mode==="determinate"?this._value:0}set value(e){this._value=Math.max(0,Math.min(100,e||0))}_value=0;get diameter(){return this._diameter}set diameter(e){this._diameter=e||0}_diameter=D;get strokeWidth(){return this._strokeWidth??this.diameter/10}set strokeWidth(e){this._strokeWidth=e||0}_strokeWidth;_circleRadius(){return(this.diameter-F)/2}_viewBox(){let e=this._circleRadius()*2+this.strokeWidth;return`0 0 ${e} ${e}`}_strokeCircumference(){return 2*Math.PI*this._circleRadius()}_strokeDashOffset(){return this.mode==="determinate"?this._strokeCircumference()*(100-this._value)/100:null}_circleStrokeWidth(){return this.strokeWidth/this.diameter*100}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=k({type:t,selectors:[["mat-progress-spinner"],["mat-spinner"]],viewQuery:function(i,r){if(i&1&&C(I,5),i&2){let s;M(s=x())&&(r._determinateCircle=s.first)}},hostAttrs:["role","progressbar","tabindex","-1",1,"mat-mdc-progress-spinner","mdc-circular-progress"],hostVars:18,hostBindings:function(i,r){i&2&&(o("aria-valuemin",0)("aria-valuemax",100)("aria-valuenow",r.mode==="determinate"?r.value:null)("mode",r.mode),P("mat-"+r.color),l("width",r.diameter,"px")("height",r.diameter,"px")("--mat-progress-spinner-size",r.diameter+"px")("--mat-progress-spinner-active-indicator-width",r.diameter+"px"),E("_mat-animation-noopable",r._noopAnimations)("mdc-circular-progress--indeterminate",r.mode==="indeterminate"))},inputs:{color:"color",mode:"mode",value:[2,"value","value",p],diameter:[2,"diameter","diameter",p],strokeWidth:[2,"strokeWidth","strokeWidth",p]},exportAs:["matProgressSpinner"],decls:14,vars:11,consts:[["circle",""],["determinateSpinner",""],["aria-hidden","true",1,"mdc-circular-progress__determinate-container"],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__determinate-circle-graphic"],["cx","50%","cy","50%",1,"mdc-circular-progress__determinate-circle"],["aria-hidden","true",1,"mdc-circular-progress__indeterminate-container"],[1,"mdc-circular-progress__spinner-layer"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-left"],[3,"ngTemplateOutlet"],[1,"mdc-circular-progress__gap-patch"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-right"],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__indeterminate-circle-graphic"],["cx","50%","cy","50%"]],template:function(i,r){if(i&1&&(w(0,B,2,8,"ng-template",null,0,R),n(2,"div",2,1),_(),n(4,"svg",3),u(5,"circle",4),c()(),v(),n(6,"div",5)(7,"div",6)(8,"div",7),d(9,8),c(),n(10,"div",9),d(11,8),c(),n(12,"div",10),d(13,8),c()()()),i&2){let s=T(1);a(4),o("viewBox",r._viewBox()),a(),l("stroke-dasharray",r._strokeCircumference(),"px")("stroke-dashoffset",r._strokeDashOffset(),"px")("stroke-width",r._circleStrokeWidth(),"%"),o("r",r._circleRadius()),a(4),m("ngTemplateOutlet",s),a(2),m("ngTemplateOutlet",s),a(2),m("ngTemplateOutlet",s)}},dependencies:[W],styles:[`.mat-mdc-progress-spinner{--mat-progress-spinner-animation-multiplier: 1;display:block;overflow:hidden;line-height:0;position:relative;direction:ltr;transition:opacity 250ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-progress-spinner circle{stroke-width:var(--mat-progress-spinner-active-indicator-width, 4px)}.mat-mdc-progress-spinner._mat-animation-noopable,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__determinate-circle{transition:none !important}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__spinner-layer,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container{animation:none !important}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container circle{stroke-dasharray:0 !important}@media(forced-colors: active){.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle{stroke:currentColor;stroke:CanvasText}}.mat-progress-spinner-reduced-motion{--mat-progress-spinner-animation-multiplier: 1.25}.mdc-circular-progress__determinate-container,.mdc-circular-progress__indeterminate-circle-graphic,.mdc-circular-progress__indeterminate-container,.mdc-circular-progress__spinner-layer{position:absolute;width:100%;height:100%}.mdc-circular-progress__determinate-container{transform:rotate(-90deg)}.mdc-circular-progress--indeterminate .mdc-circular-progress__determinate-container{opacity:0}.mdc-circular-progress__indeterminate-container{font-size:0;letter-spacing:0;white-space:nowrap;opacity:0}.mdc-circular-progress--indeterminate .mdc-circular-progress__indeterminate-container{opacity:1;animation:mdc-circular-progress-container-rotate calc(1568.2352941176ms*var(--mat-progress-spinner-animation-multiplier)) linear infinite}.mdc-circular-progress__determinate-circle-graphic,.mdc-circular-progress__indeterminate-circle-graphic{fill:rgba(0,0,0,0)}.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:var(--mat-progress-spinner-active-indicator-color, var(--mat-sys-primary))}@media(forced-colors: active){.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}.mdc-circular-progress__determinate-circle{transition:stroke-dashoffset 500ms cubic-bezier(0, 0, 0.2, 1)}.mdc-circular-progress__gap-patch{position:absolute;top:0;left:47.5%;box-sizing:border-box;width:5%;height:100%;overflow:hidden}.mdc-circular-progress__gap-patch .mdc-circular-progress__indeterminate-circle-graphic{left:-900%;width:2000%;transform:rotate(180deg)}.mdc-circular-progress__circle-clipper .mdc-circular-progress__indeterminate-circle-graphic{width:200%}.mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{left:-100%}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-left .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-left-spin calc(1333ms*var(--mat-progress-spinner-animation-multiplier)) cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-right-spin calc(1333ms*var(--mat-progress-spinner-animation-multiplier)) cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress__circle-clipper{display:inline-flex;position:relative;width:50%;height:100%;overflow:hidden}.mdc-circular-progress--indeterminate .mdc-circular-progress__spinner-layer{animation:mdc-circular-progress-spinner-layer-rotate calc(5332ms*var(--mat-progress-spinner-animation-multiplier)) cubic-bezier(0.4, 0, 0.2, 1) infinite both}@keyframes mdc-circular-progress-container-rotate{to{transform:rotate(360deg)}}@keyframes mdc-circular-progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}@keyframes mdc-circular-progress-left-spin{from{transform:rotate(265deg)}50%{transform:rotate(130deg)}to{transform:rotate(265deg)}}@keyframes mdc-circular-progress-right-spin{from{transform:rotate(-265deg)}50%{transform:rotate(-130deg)}to{transform:rotate(-265deg)}}
|
|
2
|
-
`],encapsulation:2,changeDetection:0})}return t})();var X=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=b({type:t});static \u0275inj=h({imports:[A]})}return t})();export{J as a,X as b};
|