daimon 0.7.0 → 0.8.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 +57 -0
- package/dist/cli.js +178 -74
- package/dist/dashboard/browser/{chunk-YNCTXEXX.js → chunk-2BXIFQGQ.js} +1 -1
- package/dist/dashboard/browser/{chunk-6BDWIJ3G.js → chunk-3WKRVGPT.js} +1 -1
- package/dist/dashboard/browser/chunk-44JIQO3X.js +1 -0
- package/dist/dashboard/browser/chunk-4BAKWDAV.js +1 -0
- package/dist/dashboard/browser/chunk-4OCNYL7T.js +1 -0
- package/dist/dashboard/browser/chunk-6WZJCF24.js +1 -0
- package/dist/dashboard/browser/chunk-7C772RJ3.js +3 -0
- package/dist/dashboard/browser/{chunk-25VLDASM.js → chunk-7NPLP3QD.js} +1 -1
- package/dist/dashboard/browser/chunk-A4BNXJUT.js +1 -0
- package/dist/dashboard/browser/{chunk-YA4AZONZ.js → chunk-CM4RQF3A.js} +1 -1
- package/dist/dashboard/browser/chunk-CNSXWFDX.js +1 -0
- package/dist/dashboard/browser/chunk-CY5YRTQK.js +1 -0
- package/dist/dashboard/browser/{chunk-5PAHWCG5.js → chunk-EIWOTZT3.js} +1 -1
- package/dist/dashboard/browser/{chunk-ZEO5YLWG.js → chunk-GYWEXV2L.js} +1 -1
- package/dist/dashboard/browser/chunk-H2N3RBHF.js +1 -0
- package/dist/dashboard/browser/{chunk-RIDV4B55.js → chunk-H3L4MTG4.js} +1 -1
- package/dist/dashboard/browser/{chunk-ZVUH3ISD.js → chunk-I65I7J5Q.js} +1 -1
- package/dist/dashboard/browser/chunk-K7S4ITPJ.js +2 -0
- package/dist/dashboard/browser/chunk-KL6X73FV.js +1 -0
- package/dist/dashboard/browser/{chunk-Q3N4MMWW.js → chunk-LBL7Z5BE.js} +4 -4
- package/dist/dashboard/browser/chunk-LHAMBNO6.js +1 -0
- package/dist/dashboard/browser/chunk-NX6DTO32.js +1 -0
- package/dist/dashboard/browser/chunk-P5IE6DI6.js +2 -0
- package/dist/dashboard/browser/{chunk-SR5JAOLW.js → chunk-Q772THBA.js} +1 -1
- package/dist/dashboard/browser/{chunk-OUXULJ3Z.js → chunk-QSBOKS53.js} +1 -1
- package/dist/dashboard/browser/{chunk-HYGMRGYR.js → chunk-V2KNRAE4.js} +1 -1
- package/dist/dashboard/browser/{chunk-GDJOSLWM.js → chunk-VM2FOT77.js} +1 -1
- package/dist/dashboard/browser/index.html +1 -1
- package/dist/dashboard/browser/main-4CQTBXSB.js +1 -0
- package/dist/main.js +58 -48
- package/dist/mcp.js +3 -3
- package/package.json +2 -2
- package/src/templates/claude/skill.md.tmpl +4 -1
- package/src/templates/plugins/example-doctor.mjs +45 -0
- package/dist/dashboard/browser/chunk-6C6GHU3A.js +0 -1
- package/dist/dashboard/browser/chunk-BDYOKQF3.js +0 -1
- package/dist/dashboard/browser/chunk-HYIZMKSF.js +0 -1
- package/dist/dashboard/browser/chunk-IQZZO5IM.js +0 -3
- package/dist/dashboard/browser/chunk-J5UK77OJ.js +0 -1
- package/dist/dashboard/browser/chunk-JI63U3KC.js +0 -2
- package/dist/dashboard/browser/chunk-L2PHC6DL.js +0 -1
- package/dist/dashboard/browser/chunk-MHYQENOC.js +0 -1
- package/dist/dashboard/browser/chunk-UU5K6ZPO.js +0 -1
- package/dist/dashboard/browser/chunk-XXIJQBCQ.js +0 -2
- package/dist/dashboard/browser/chunk-ZDNBWNU5.js +0 -1
- package/dist/dashboard/browser/main-IDF27PFI.js +0 -1
package/dist/mcp.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{McpServer as Z}from"@modelcontextprotocol/sdk/server/mcp.js";import{StdioServerTransport as tt}from"@modelcontextprotocol/sdk/server/stdio.js";import{z as
|
|
2
|
-
`,"utf8"),{kind:"stub-created",path:
|
|
3
|
-
`);d=x.pop()??"";for(let E of x){let
|
|
1
|
+
import{McpServer as Z}from"@modelcontextprotocol/sdk/server/mcp.js";import{StdioServerTransport as tt}from"@modelcontextprotocol/sdk/server/stdio.js";import{z as a}from"zod";import y from"node:fs";import h from"node:path";import w from"node:os";import{fileURLToPath as q}from"node:url";var J=q(import.meta.url),_=h.dirname(J);function O(){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:h.join(w.homedir(),".daimon","logs"),maxFiles:5,maxBytesPerFile:1e7},depends:{},cascadeRestart:!1,history:{enabled:!0,path:h.join(w.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}}}function k(n){return n.startsWith("~/")||n.startsWith("~\\")?h.join(w.homedir(),n.slice(2)):n==="~"?w.homedir():n}function j(n,s){if(!n||typeof n!="object")throw new Error(`Config at ${s} is not a JSON object`);let t=n,e=O();if(t.searchRoots!==void 0){if(!Array.isArray(t.searchRoots)||!t.searchRoots.every(r=>typeof r=="string"||r&&typeof r=="object"&&typeof r.path=="string"))throw new Error(`Config "searchRoots" must be an array of strings or { path, viteSubfolders? } objects (${s})`);e.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 (${s})`);e.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 (${s})`);e.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 (${s})`);e.overrides=t.overrides}if(t.autoStart!==void 0){if(!Array.isArray(t.autoStart)||!t.autoStart.every(r=>typeof r=="string"))throw new Error(`Config "autoStart" must be an array of strings (${s})`);e.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 (${s})`);for(let[r,i]of Object.entries(t.profiles))if(!Array.isArray(i)||!i.every(o=>typeof o=="string"))throw new Error(`Config "profiles.${r}" must be an array of strings (${s})`);e.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 (${s})`);e.tags=t.tags}if(t.autoRestart&&typeof t.autoRestart=="object"&&(e.autoRestart={...e.autoRestart,...t.autoRestart}),t.healthProbe&&typeof t.healthProbe=="object"&&(e.healthProbe={...e.healthProbe,...t.healthProbe}),t.logs&&typeof t.logs=="object"&&(e.logs={...e.logs,...t.logs},e.logs.dir=k(e.logs.dir)),t.depends&&typeof t.depends=="object"&&!Array.isArray(t.depends)){for(let[r,i]of Object.entries(t.depends))if(!Array.isArray(i)||!i.every(o=>typeof o=="string"))throw new Error(`Config "depends.${r}" must be an array of strings (${s})`);e.depends=t.depends}if(typeof t.cascadeRestart=="boolean"&&(e.cascadeRestart=t.cascadeRestart),t.history&&typeof t.history=="object"&&(e.history={...e.history,...t.history},e.history.path=k(e.history.path)),t.notifications&&typeof t.notifications=="object"&&(e.notifications={...e.notifications,...t.notifications}),t.staleDetect&&typeof t.staleDetect=="object"&&(e.staleDetect={...e.staleDetect,...t.staleDetect}),typeof t.headless=="boolean"&&(e.headless=t.headless),t.envFiles&&typeof t.envFiles=="object"&&!Array.isArray(t.envFiles)&&(e.envFiles=t.envFiles),t.requestLog&&typeof t.requestLog=="object"&&(e.requestLog={...e.requestLog,...t.requestLog}),t.metrics&&typeof t.metrics=="object"&&(e.metrics={...e.metrics,...t.metrics}),t.editor&&typeof t.editor=="object"){let r=t.editor.scheme;typeof r=="string"&&r.trim()&&(e.editor={scheme:r.trim()})}if((typeof t.apiToken=="string"||t.apiToken===null)&&(e.apiToken=t.apiToken),t.output&&typeof t.output=="object"){let r=t.output;(r.format==="compact"||r.format==="full")&&(e.output.format=r.format),typeof r.ndjson=="boolean"&&(e.output.ndjson=r.ndjson)}if(t.doctor&&typeof t.doctor=="object"){let r=t.doctor.autoFix;r&&typeof r=="object"&&(typeof r.onInit=="boolean"&&(e.doctor.autoFix.onInit=r.onInit),Array.isArray(r.permitted)&&(e.doctor.autoFix.permitted=r.permitted.filter(i=>typeof i=="string")))}if(t.dashboard&&typeof t.dashboard=="object"){let r=t.dashboard;(r.theme==="auto"||r.theme==="light"||r.theme==="dark")&&(e.dashboard.theme=r.theme),(r.density==="comfortable"||r.density==="compact")&&(e.dashboard.density=r.density)}if(t.errorRetention&&typeof t.errorRetention=="object"){let r=t.errorRetention;typeof r.maxAgeMs=="number"&&r.maxAgeMs>0&&(e.errorRetention.maxAgeMs=r.maxAgeMs)}if(t.plugins&&typeof t.plugins=="object"){let r=t.plugins;typeof r.dir=="string"&&r.dir.trim()?e.plugins.dir=k(r.dir):r.dir===null&&(e.plugins.dir=null)}return e}function H(){return{local:h.join(process.cwd(),"daimon.config.json"),user:h.join(w.homedir(),".daimon","config.json")}}function M(){let{local:n,user:s}=H();if(y.existsSync(n)){let r=JSON.parse(y.readFileSync(n,"utf8"));return{kind:"loaded",config:j(r,n),path:n}}if(y.existsSync(s)){let r=JSON.parse(y.readFileSync(s,"utf8"));return{kind:"loaded",config:j(r,s),path:s}}let e=[h.resolve(_,"..","daimon.config.example.json"),h.resolve(_,"..","..","daimon.config.example.json")].find(r=>y.existsSync(r));return y.mkdirSync(h.dirname(s),{recursive:!0}),e?y.copyFileSync(e,s):y.writeFileSync(s,JSON.stringify(O(),null,2)+`
|
|
2
|
+
`,"utf8"),{kind:"stub-created",path:s}}import I from"node:fs";import v from"node:path";import z from"node:os";import{spawn as W}from"node:child_process";import{fileURLToPath as K}from"node:url";import B from"node:fs";import P from"node:path";import{fileURLToPath as G}from"node:url";var T=P.dirname(G(import.meta.url));function V(){let n=[P.resolve(T,"..","package.json"),P.resolve(T,"..","..","package.json")];for(let s of n)try{return JSON.parse(B.readFileSync(s,"utf8"))}catch{}return{}}var A=V().version||"0.0.0";var Q=v.join(z.homedir(),".daimon"),L=v.join(Q,"daemon.lock");function X(n){try{return process.kill(n,0),!0}catch(s){return s&&s.code==="EPERM"}}function S(){try{let n=I.readFileSync(L,"utf8"),s=JSON.parse(n);if(!s||typeof s.pid!="number")return null;if(!X(s.pid)){try{I.unlinkSync(L)}catch{}return null}return s}catch{return null}}function Y(){let n=v.dirname(K(import.meta.url));return v.join(n,"main.js")}async function $(n={}){let s={...process.env};n.port&&(s.DAIMON_PORT=String(n.port)),W(process.execPath,[Y(),"--headless"],{detached:!0,stdio:"ignore",env:s,windowsHide:!0}).unref();let e=Date.now();for(;Date.now()-e<5e3;){let r=S();if(r&&(!n.port||r.apiPort===n.port))return r;await new Promise(i=>setTimeout(i,100))}throw new Error("daemon failed to start within 5s")}function et(){if(process.env.DAIMON_PORT){let s=Number(process.env.DAIMON_PORT);if(Number.isFinite(s)&&s>0)return s}let n=S();if(n)return n.apiPort;try{let s=M();if(s.kind==="loaded")return s.config.apiPort}catch{}return 4999}var U=()=>`http://127.0.0.1:${et()}`,N=!1;async function D(){if(!N&&(N=!0,process.env.DAIMON_NO_SPAWN!=="1"&&!S()))try{let n=process.env.DAIMON_PORT?Number(process.env.DAIMON_PORT):void 0;await $({port:Number.isFinite(n)&&n>0?n:void 0})}catch{}}async function f(n,s="GET"){await D();try{let t=await fetch(U()+n,{method:s}),e=await t.text();try{return{status:t.status,body:JSON.parse(e)}}catch{return{status:t.status,body:e}}}catch{return{status:0,body:{error:"daimon is not running \u2014 start it with: daimon daemon start --detach"}}}}function u(n){return{content:[{type:"text",text:JSON.stringify(n)}]}}function p(n){return{content:[{type:"text",text:JSON.stringify({error:n})}],isError:!0}}async function rt(){let n=new Z({name:"daimon",version:A});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 t=await f("/api/apps?format=compact");return t.status===0?p(t.body?.error||"unknown"):u(t.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 t=await f("/api/apps?format=full");return t.status===0?p(t.body?.error||"unknown"):u(t.body)}),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:a.string()}},async({name:t})=>{let e=await f(`/api/apps/${encodeURIComponent(t)}?format=compact`);return e.status===0?p(e.body?.error||"unknown"):e.status===404?p("unknown app"):u(e.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:a.string()}},async({name:t})=>{let e=await f(`/api/apps/${encodeURIComponent(t)}?format=full`);return e.status===0?p(e.body?.error||"unknown"):e.status===404?p("unknown app"):u(e.body)}),n.registerTool("get_errors",{description:"Get errors for an app. Supports --since duration, --since-last cursor, optional structured form.",inputSchema:{name:a.string(),since:a.string().optional(),sinceLast:a.boolean().optional(),client:a.string().optional(),structured:a.boolean().optional()}},async({name:t,since:e,sinceLast:r,client:i,structured:o})=>{let c=`/api/apps/${encodeURIComponent(t)}/errors`,l=new URLSearchParams;r?(c+="/since-last",i&&l.set("client",i)):e&&l.set("since",e);let b=l.toString(),g=await f(c+(b?"?"+b:""));if(g.status===0)return p(g.body?.error||"unknown");if(g.status===404)return p("unknown app");let d=g.body;return o&&Array.isArray(d)&&(d=d.map(m=>m.parsed??{message:m.message})),u(d)}),n.registerTool("get_logs",{description:"Get recent log lines for an app.",inputSchema:{name:a.string(),tail:a.number().int().positive().optional(),since:a.string().optional()}},async({name:t,tail:e,since:r})=>{let i=new URLSearchParams;e&&i.set("tail",String(e)),r&&i.set("since",r);let o=i.toString(),c=await f(`/api/apps/${encodeURIComponent(t)}/logs${o?"?"+o:""}`);return c.status===0?p(c.body?.error||"unknown"):c.status===404?p("unknown app"):u(c.body)});for(let t of["start","stop","restart"])n.registerTool(`${t}_app`,{description:`${t} an app.`,inputSchema:{name:a.string()}},async({name:e})=>{let r=await f(`/api/apps/${encodeURIComponent(e)}/${t}`,"POST");return r.status===0?p(r.body?.error||"unknown"):u(r.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:a.string().optional(),profile:a.string().optional(),budget:a.number().int().positive().max(5e4).optional()}},async({workspace:t,profile:e,budget:r})=>{let i=new URLSearchParams;t&&i.set("workspace",t),e&&i.set("profile",e),r&&i.set("budget",String(r));let o=i.toString(),c=await f("/api/overview"+(o?"?"+o:""));return c.status===0?p(c.body?.error||"unknown"):u(c.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:a.string(),client:a.string().optional(),budget:a.number().int().positive().max(5e4).optional()}},async({name:t,client:e,budget:r})=>{let i=new URLSearchParams;i.set("client",e||"mcp-default");let o=await f(`/api/apps/${encodeURIComponent(t)}/errors/since-last?${i.toString()}`);if(o.status===0)return p(o.body?.error||"unknown");if(o.status===404)return p("unknown app");let l=(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??""})),b=(r??800)*4,g=0,d=l;for(;JSON.stringify(d).length>b&&d.length>0;)d.pop(),g++;return u({errors:d,_meta:{omitted:g,total:l.length,budget:r??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:a.string(),until:a.enum(["serving","healthy"]).optional(),timeoutMs:a.number().int().positive().max(6e5).optional()}},async({name:t,until:e,timeoutMs:r})=>{let i=new URLSearchParams;i.set("until",e||"healthy"),i.set("timeoutMs",String(Math.min(r??18e4,6e5)));let o=await f(`/api/apps/${encodeURIComponent(t)}/try-fix?${i.toString()}`,"POST");return o.status===0?p(o.body?.error||"unknown"):o.status===404?p("unknown app"):u(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:a.string(),until:a.enum(["serving","healthy","stable"]).optional(),timeoutMs:a.number().int().positive().max(6e5).optional()}},async({name:t,until:e,timeoutMs:r})=>{let i=new URLSearchParams;i.set("until",e||"healthy"),i.set("timeoutMs",String(Math.min(r??18e4,6e5))),await D();try{let o=await fetch(U()+`/api/apps/${encodeURIComponent(t)}/focus?${i.toString()}`,{method:"POST"});if(o.status===404)return p("unknown app");if(!o.body)return p("no response body");let c=o.body.getReader(),l=new TextDecoder,b=[],g=null,d="";for(;;){let{done:m,value:F}=await c.read();if(m)break;d+=l.decode(F,{stream:!0});let x=d.split(`
|
|
3
|
+
`);d=x.pop()??"";for(let E of x){let C=E.trim();if(C)try{let R=JSON.parse(C);R.kind==="done"?g=R:b.push(R)}catch{}}}return u({events:b,final:g})}catch(o){return p(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:a.string(),until:a.enum(["serving","healthy"]).optional(),timeoutMs:a.number().int().positive().max(6e5).optional()}},async({name:t,until:e,timeoutMs:r})=>{let i=new URLSearchParams;i.set("until",e||"healthy"),i.set("timeoutMs",String(Math.min(r??18e4,6e5)));let o=await f(`/api/apps/${encodeURIComponent(t)}/ensure?${i.toString()}`,"POST");return o.status===0?p(o.body?.error||"unknown"):o.status===404?p("unknown app"):u(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:a.string(),goal:a.enum(["serving","healthy","stable"]).optional(),timeoutMs:a.number().int().positive().max(12e5).optional(),dryRun:a.boolean().optional(),budget:a.number().int().positive().optional()}},async({profile:t,goal:e,timeoutMs:r,dryRun:i,budget:o})=>{let c=new URLSearchParams;c.set("profile",t),c.set("goal",e||"healthy"),c.set("timeoutMs",String(Math.min(r??3e5,12e5))),i&&c.set("dryRun","true"),typeof o=="number"&&c.set("budget",String(o));let l=await f(`/api/orchestrate?${c.toString()}`,"POST");return l.status===0?p(l.body?.error||"unknown"):l.status===404?p(l.body?.error||"unknown profile"):u(l.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:a.string(),until:a.enum(["serving","healthy"]).optional(),timeoutMs:a.number().int().positive().max(12e5).optional()}},async({profile:t,until:e,timeoutMs:r})=>{let i=new URLSearchParams;i.set("until",e||"healthy"),i.set("timeoutMs",String(Math.min(r??3e5,12e5)));let o=await f(`/api/profiles/${encodeURIComponent(t)}/ensure-up?${i.toString()}`,"POST");return o.status===0?p(o.body?.error||"unknown"):o.status===404?p("unknown profile"):u(o.body)}),n.registerTool("wait_for_app",{description:"Block until app reaches the given state or timeout (max 600s).",inputSchema:{name:a.string(),until:a.enum(["serving","healthy","stopped","error"]).optional(),timeout:a.number().int().positive().max(600).optional()}},async({name:t,until:e,timeout:r})=>{let i=new URLSearchParams;i.set("until",e||"serving"),i.set("timeout",String(Math.min(r??120,600)));let o=await f(`/api/apps/${encodeURIComponent(t)}/wait?${i.toString()}`);return o.status===0?p(o.body?.error||"unknown"):o.status===404?p("unknown app"):u(o.body)});let s=new tt;await n.connect(s)}rt().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.8.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,7 +41,7 @@
|
|
|
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",
|
|
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",
|
|
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.');}\"",
|
|
@@ -20,7 +20,10 @@ Loopback CLI at `http://127.0.0.1:{{api_port}}`. Compact JSON on stdout, errors
|
|
|
20
20
|
- `daimon logs <name> [--tail N] [--since 30s]` → recent log lines.
|
|
21
21
|
- `daimon start|stop|restart <name>` · `daimon up|down [<profile>]` · `daimon wait <name> --until healthy --timeout 60s`.
|
|
22
22
|
- `daimon why <name>` → last status transition + 5 events. `daimon why-empty` → explain an empty `list`.
|
|
23
|
-
- `daimon doctor [--auto-fix] [--dry-run]` → config + env sanity check; auto-fix repairs orphan daemon, stale lock, missing search root, corrupt history DB.
|
|
23
|
+
- `daimon doctor [--auto-fix] [--dry-run] [--self]` → config + env sanity check; `--auto-fix` repairs orphan daemon, stale lock, missing search root, corrupt history DB; `--self` runs daimon's own heap / event-loop-lag / history-db query checks.
|
|
24
|
+
- `daimon self` → daimon's own runtime metrics (pid, version, uptime, rss, heap, event-loop lag, history-db p95). Useful in bug reports.
|
|
25
|
+
- `daimon plugin list|show <name>|validate <path>` → manage doctor plug-ins. Plug-ins live at `~/.daimon/plugins/doctor-*.mjs` and are inert until their `name` is added to `doctor.autoFix.permitted` — the same opt-in gate built-in rules use. If a plug-in is enabled in this workspace it will appear in `daimon plugin list` with `status:"ok"` and a `findings` array.
|
|
26
|
+
- `daimon completion <bash|zsh|fish|powershell>` → emit shell-completion script. Verbs and (when the daemon is up) app names autocomplete.
|
|
24
27
|
|
|
25
28
|
## Patterns
|
|
26
29
|
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// Sample doctor plug-in for daimon v0.8+.
|
|
2
|
+
//
|
|
3
|
+
// Drop this file (or a copy renamed `doctor-<your-name>.mjs`) into
|
|
4
|
+
// ~/.daimon/plugins/ and restart the daemon. `daimon plugin list` will then show
|
|
5
|
+
// it. The plug-in is **inert** until its `name` ("example-doctor" below) is
|
|
6
|
+
// added to `doctor.autoFix.permitted` in daimon.config.json — this is the same
|
|
7
|
+
// opt-in gate built-in rules use, applied uniformly to the bundled sample and
|
|
8
|
+
// to user-authored plug-ins. Auditable in one sentence: if a plug-in's name
|
|
9
|
+
// isn't in `permitted`, its `fix` never runs.
|
|
10
|
+
//
|
|
11
|
+
// The DoctorContext exposes only the M36 mutation primitives — plug-ins cannot
|
|
12
|
+
// shell out to `npm`/`pip`/`bundle`/`cargo`/`go mod`. Edits to user source code
|
|
13
|
+
// are not allowed; state is confined to ~/.daimon/* and daimon.config.json.
|
|
14
|
+
|
|
15
|
+
export default {
|
|
16
|
+
name: 'example-doctor',
|
|
17
|
+
description: 'No-op example plug-in that demonstrates the v0.8 doctor surface.',
|
|
18
|
+
requires: ['apps'],
|
|
19
|
+
|
|
20
|
+
async scan(ctx) {
|
|
21
|
+
// `ctx.apps` is the read-only list of discovered apps; `ctx.config` is the
|
|
22
|
+
// active AppmanConfig; `ctx.history` exposes self-metrics queries.
|
|
23
|
+
const findings = [];
|
|
24
|
+
for (const app of ctx.apps) {
|
|
25
|
+
if (app.name.length > 32) {
|
|
26
|
+
findings.push({
|
|
27
|
+
pluginName: 'example-doctor',
|
|
28
|
+
id: `app-name-long:${app.name}`,
|
|
29
|
+
severity: 'info',
|
|
30
|
+
message: `app name "${app.name}" is longer than 32 characters`,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return findings;
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
// `fix` is optional. When absent, the plug-in is read-only. When present, it
|
|
38
|
+
// will be invoked only if `doctor.autoFix.permitted` contains "example-doctor".
|
|
39
|
+
async fix(_finding, _ctx) {
|
|
40
|
+
return {
|
|
41
|
+
ok: true,
|
|
42
|
+
description: 'example-doctor has no real fix; this is a teaching sample.',
|
|
43
|
+
};
|
|
44
|
+
},
|
|
45
|
+
};
|
|
@@ -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-RIDV4B55.js";import"./chunk-OHX55ZU4.js";import{b as it,c as at,d as ot,e as rt}from"./chunk-SR5JAOLW.js";import{a as Y,b as tt}from"./chunk-XXIJQBCQ.js";import"./chunk-YNQPX5G6.js";import"./chunk-IQZZO5IM.js";import"./chunk-KLH6B22T.js";import{b as J,c as K}from"./chunk-5PAHWCG5.js";import{h as U,i as X,j as et}from"./chunk-Q3N4MMWW.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 +0,0 @@
|
|
|
1
|
-
import{a as J,b as X,c as Z,d as ee,e as te}from"./chunk-6BDWIJ3G.js";import{a as Y}from"./chunk-WAN7TQQW.js";import"./chunk-NDSAQ2HK.js";import{b as H,c as W,d as Q,e as K}from"./chunk-SR5JAOLW.js";import{a as G,b as U}from"./chunk-XXIJQBCQ.js";import"./chunk-YNQPX5G6.js";import"./chunk-IQZZO5IM.js";import"./chunk-KLH6B22T.js";import{c as z}from"./chunk-5PAHWCG5.js";import{i as j,j as q}from"./chunk-Q3N4MMWW.js";import"./chunk-Y6B6X4Y6.js";import{Db as O,Eb as p,Fb as d,Gb as F,Hb as B,Ib as v,Jb as h,Kb as u,Lb as r,Mb as a,Nb as E,Sb as b,Ub as x,Wa as M,Wb as c,Ya as V,_a as o,ea as $,fc as N,gc as T,ic as s,ja as f,jc as m,ka as g,kc as y,mc as L,pa as D,pb as R,sc as S,ta as k,xc as P,yc as A}from"./chunk-K43KW4K2.js";var I=t=>["/apps",t],w=(t,n)=>n.key;function oe(t,n){t&1&&E(0,"dm-skeleton",3)}function re(t,n){if(t&1&&(s(0," \xB7 workspace "),r(1,"dm-mono"),s(2),a()),t&2){let e=c(2);o(2),m(e.workspace())}}function ae(t,n){if(t&1&&(s(0),p(1,re,3,1)),t&2){let e=c();L(" ",e.totalErrors()," ",e.totalErrors()===1?"error":"errors"," across ",e.appsWithErrors()," ",e.appsWithErrors()===1?"app":"apps"," "),o(),d(e.workspace()?1:-1)}}function le(t,n){if(t&1){let e=b();r(0,"button",20),x("click",function(){f(e);let l=c();return g(l.onQuery(""))}),r(1,"span",6),s(2,"close"),a()()}}function se(t,n){if(t&1){let e=b();r(0,"button",21),x("click",function(){let l=f(e).$implicit,_=c();return g(_.setSeverity(l.key))}),s(1),a()}if(t&2){let e=n.$implicit,i=c();T("active",i.severity()===e.key),O("aria-selected",i.severity()===e.key),o(),m(e.label)}}function ce(t,n){if(t&1){let e=b();r(0,"button",21),x("click",function(){let l=f(e).$implicit,_=c();return g(_.setGroupBy(l.key))}),s(1),a()}if(t&2){let e=n.$implicit,i=c();T("active",i.groupBy()===e.key),O("aria-selected",i.groupBy()===e.key),o(),m(e.label)}}function pe(t,n){t&1&&(r(0,"article",22),E(1,"div",23),r(2,"div",24),E(3,"dm-skeleton",25)(4,"dm-skeleton",26)(5,"dm-skeleton",27),a()())}function de(t,n){if(t&1&&(r(0,"div",16),v(1,pe,6,0,"article",22,B),a()),t&2){let e=c();o(),h(e.skeletonItems)}}function me(t,n){t&1&&(r(0,"dm-empty",17)(1,"div",28)(2,"a",29)(3,"span",6),s(4,"home"),a(),s(5,"Go home "),a()()())}function _e(t,n){if(t&1&&E(0,"dm-empty",18),t&2){let e=c();u("title","Clean \u2014 0 errors across "+e.api.apps().length+" apps")}}function ue(t,n){t&1&&E(0,"dm-empty",19)}function Ce(t,n){if(t&1){let e=b();r(0,"div",30)(1,"span",6),s(2,"info"),a(),r(3,"span"),s(4,"None of these errors include a file path on the same line as the error. Try "),r(5,"button",31),x("click",function(){f(e);let l=c(2);return g(l.setGroupBy("app"))}),s(6,"group by app"),a(),s(7,"."),a()()}}function xe(t,n){if(t&1&&E(0,"dm-status-pill",35),t&2){let e=c().$implicit;u("status",e.app.status)("health",e.app.health)}}function fe(t,n){if(t&1&&s(0),t&2){let e=c(3).$implicit;y(":",e.col)}}function ge(t,n){if(t&1&&(r(0,"span",46),s(1),p(2,fe,1,1),a()),t&2){let e=c(2).$implicit;o(),y(":",e.line),o(),d(e.col?2:-1)}}function ye(t,n){if(t&1){let e=b();r(0,"a",45),x("click",function(l){f(e);let _=c().$implicit,C=c(4);return g(C.openEditor(l,_))}),r(1,"dm-mono"),s(2),p(3,ge,3,2,"span",46),a()()}if(t&2){let e=c().$implicit,i=c(4);u("href",i.editorUrl(e),M)("matTooltip",e.file),o(2),m(i.shortPath(e.file)),o(),d(e.line?3:-1)}}function ve(t,n){t&1&&(r(0,"span",41)(1,"dm-mono"),s(2,"\u2014"),a()())}function he(t,n){if(t&1&&(r(0,"span",42)(1,"dm-mono"),s(2),a()()),t&2){let e=c().$implicit;o(2),m(e.code)}}function be(t,n){if(t&1&&(r(0,"span",44),s(1),a()),t&2){let e=c().$implicit;o(),y("\xD7",e.count)}}function Pe(t,n){if(t&1&&(r(0,"div",39),p(1,ye,4,4,"a",40)(2,ve,3,0,"span",41),p(3,he,3,1,"span",42),r(4,"span",43),s(5),a(),p(6,be,2,1,"span",44),a()),t&2){let e=n.$implicit,i=c().$implicit;o(),d(e.file?1:i.allMissingFile?-1:2),o(2),d(e.code?3:-1),o(),u("matTooltip",e.message),o(),m(e.message),o(),d(e.count>1?6:-1)}}function Ee(t,n){if(t&1){let e=b();r(0,"mat-expansion-panel",32)(1,"mat-expansion-panel-header")(2,"mat-panel-title"),E(3,"div",33),r(4,"span",34)(5,"dm-mono"),s(6),a()(),p(7,xe,1,2,"dm-status-pill",35),r(8,"span",36),s(9),a()(),r(10,"mat-panel-description")(11,"a",37),x("click",function(l){return f(e),g(l.stopPropagation())}),s(12," Open app"),r(13,"span",6),s(14,"chevron_right"),a()()()(),r(15,"div",38),v(16,Pe,7,5,"div",39,F),a()()}if(t&2){let e=n.$implicit,i=c(3);o(3),N("background",i.tone(e.workspaceLabel)),o(3),m(e.key),o(),d(e.app?7:-1),o(2),m(e.errors.length),o(2),u("routerLink",S(8,I,e.key)),o(4),T("rows-nofile",e.allMissingFile),o(),h(e.errors)}}function ke(t,n){if(t&1&&v(0,Ee,18,10,"mat-expansion-panel",32,w),t&2){let e=c(2);h(e.byApp())}}function we(t,n){if(t&1&&(r(0,"span",42)(1,"dm-mono"),s(2),a()()),t&2){let e=c().$implicit;o(2),m(e.code)}}function Me(t,n){if(t&1&&s(0),t&2){let e=c(2).$implicit;y(":",e.col)}}function Fe(t,n){if(t&1){let e=b();r(0,"a",49),x("click",function(l){f(e);let _=c().$implicit,C=c(4);return g(C.openEditor(l,_))}),r(1,"dm-mono"),s(2),p(3,Me,1,1),a()()}if(t&2){let e=c().$implicit,i=c(4);u("href",i.editorUrl(e),M),o(2),y(":",e.line),o(),d(e.col?3:-1)}}function Te(t,n){if(t&1&&(r(0,"span",44),s(1),a()),t&2){let e=c().$implicit;o(),y("\xD7",e.count)}}function Se(t,n){if(t&1){let e=b();r(0,"div",39)(1,"a",47),x("click",function(l){return f(e),g(l.stopPropagation())}),r(2,"dm-mono"),s(3),a()(),p(4,we,3,1,"span",42),r(5,"span",43),s(6),a(),p(7,Fe,4,3,"a",48),p(8,Te,2,1,"span",44),a()}if(t&2){let e=n.$implicit;o(),u("routerLink",S(7,I,e.app)),o(2),m(e.app),o(),d(e.code?4:-1),o(),u("matTooltip",e.message),o(),m(e.message),o(),d(e.line?7:-1),o(),d(e.count>1?8:-1)}}function Oe(t,n){if(t&1&&(r(0,"mat-expansion-panel",32)(1,"mat-expansion-panel-header")(2,"mat-panel-title")(3,"span",34)(4,"dm-mono"),s(5),a()(),r(6,"span",36),s(7),a()()(),r(8,"div",38),v(9,Se,9,9,"div",39,F),a()()),t&2){let e=n.$implicit,i=c(3);o(5),m(i.shortPath(e.key)),o(2),m(e.errors.length),o(2),h(e.errors)}}function Ie(t,n){if(t&1&&v(0,Oe,11,2,"mat-expansion-panel",32,w),t&2){let e=c(2);h(e.byFile())}}function $e(t,n){t&1&&(r(0,"span",50),s(1),a()),t&2&&(o(),m(n))}function De(t,n){if(t&1&&s(0),t&2){let e=c(2).$implicit;y(":",e.col)}}function Ve(t,n){if(t&1&&(r(0,"span",46),s(1),p(2,De,1,1),a()),t&2){let e=c().$implicit;o(),y(":",e.line),o(),d(e.col?2:-1)}}function Re(t,n){if(t&1&&(r(0,"span",44),s(1),a()),t&2){let e=c().$implicit;o(),y("\xD7",e.count)}}function Be(t,n){if(t&1){let e=b();r(0,"div",39)(1,"a",47),x("click",function(l){return f(e),g(l.stopPropagation())}),r(2,"dm-mono"),s(3),a()(),r(4,"a",45),x("click",function(l){let _=f(e).$implicit,C=c(4);return g(C.openEditor(l,_))}),r(5,"dm-mono"),s(6),p(7,Ve,3,2,"span",46),a()(),r(8,"span",43),s(9),a(),p(10,Re,2,1,"span",44),a()}if(t&2){let e=n.$implicit,i=c(4);o(),u("routerLink",S(9,I,e.app)),o(2),m(e.app),o(),u("href",i.editorUrl(e),M)("matTooltip",e.file),o(2),m(i.shortPath(e.file)),o(),d(e.line?7:-1),o(),u("matTooltip",e.message),o(),m(e.message),o(),d(e.count>1?10:-1)}}function Ne(t,n){if(t&1&&(r(0,"mat-expansion-panel",32)(1,"mat-expansion-panel-header")(2,"mat-panel-title")(3,"span",34)(4,"dm-mono"),s(5),a()(),p(6,$e,2,1,"span",50),r(7,"span",36),s(8),a()()(),r(9,"div",38),v(10,Be,11,11,"div",39,F),a()()),t&2){let e,i=n.$implicit,l=c(3);o(5),m(i.key),o(),d((e=l.codeHint(i.key))?6:-1,e),o(2),m(i.errors.length),o(2),h(i.errors)}}function Le(t,n){if(t&1&&v(0,Ne,12,3,"mat-expansion-panel",32,w),t&2){let e=c(2);h(e.byCode())}}function Ae(t,n){if(t&1&&s(0),t&2){let e=c(3).$implicit;y(":",e.col)}}function ze(t,n){if(t&1&&(r(0,"span",46),s(1),p(2,Ae,1,1),a()),t&2){let e=c(2).$implicit;o(),y(":",e.line),o(),d(e.col?2:-1)}}function je(t,n){if(t&1){let e=b();r(0,"a",45),x("click",function(l){f(e);let _=c().$implicit,C=c(4);return g(C.openEditor(l,_))}),r(1,"dm-mono"),s(2),p(3,ze,3,2,"span",46),a()()}if(t&2){let e=c().$implicit,i=c(4);u("href",i.editorUrl(e),M)("matTooltip",e.file),o(2),m(i.shortPath(e.file)),o(),d(e.line?3:-1)}}function Ge(t,n){t&1&&(r(0,"span",41)(1,"dm-mono"),s(2,"\u2014"),a()())}function Ue(t,n){if(t&1&&(r(0,"span",42)(1,"dm-mono"),s(2),a()()),t&2){let e=c().$implicit;o(2),m(e.code)}}function qe(t,n){if(t&1&&(r(0,"span",44),s(1),a()),t&2){let e=c().$implicit;o(),y("\xD7",e.count)}}function He(t,n){if(t&1){let e=b();r(0,"div",39)(1,"a",47),x("click",function(l){return f(e),g(l.stopPropagation())}),r(2,"dm-mono"),s(3),a()(),p(4,je,4,4,"a",40)(5,Ge,3,0,"span",41),p(6,Ue,3,1,"span",42),r(7,"span",43),s(8),a(),p(9,qe,2,1,"span",44),a()}if(t&2){let e=n.$implicit;o(),u("routerLink",S(7,I,e.app)),o(2),m(e.app),o(),d(e.file?4:5),o(2),d(e.code?6:-1),o(),u("matTooltip",e.message),o(),m(e.message),o(),d(e.count>1?9:-1)}}function We(t,n){if(t&1&&(r(0,"mat-expansion-panel",32)(1,"mat-expansion-panel-header")(2,"mat-panel-title")(3,"span",51),s(4),a(),r(5,"span",36),s(6),a()()(),r(7,"div",38),v(8,He,10,9,"div",39,F),a()()),t&2){let e=n.$implicit;o(3),O("data-tool",e.key),o(),m(e.key),o(2),m(e.errors.length),o(2),h(e.errors)}}function Qe(t,n){if(t&1&&v(0,We,10,3,"mat-expansion-panel",32,w),t&2){let e=c(2);h(e.byTool())}}function Ke(t,n){if(t&1&&(p(0,Ce,8,0,"div",30),r(1,"div",16),p(2,ke,2,0)(3,Ie,2,0)(4,Le,2,0)(5,Qe,2,0),a()),t&2){let e,i=c();d(i.groupBy()==="file"&&i.allFilesMissing()?0:-1),o(2),d((e=i.groupBy())==="app"?2:e==="file"?3:e==="code"?4:e==="tool"?5:-1)}}var ne="daimon.workspace",Ye={TS2322:"Type is not assignable to target type",TS2345:"Argument type mismatch",TS2339:"Property does not exist on type",TS18046:"Variable is of type unknown",TS2304:"Cannot find name",TS7006:"Parameter implicitly has an any type",TS6133:"Declared but never used",TS2769:"No overload matches this call"},ie=class t{api=$(q);destroyRef=$(D);raw=k(new Map);loading=k(!1);query=k("");severity=k("with-errors");groupBy=k("app");workspace=k(null);skeletonItems=[0,1,2];severityFilters=[{key:"all",label:"all"},{key:"with-errors",label:"with-errors"},{key:"code:TS",label:"code:TS*"},{key:"code:other",label:"code:other"}];groupOptions=[{key:"app",label:"app"},{key:"file",label:"file"},{key:"code",label:"code"},{key:"tool",label:"tool"}];tone=Y;appsByName=P(()=>{let n=new Map;for(let e of this.api.apps())n.set(e.name,e);return n});flat=P(()=>{let n=[],e=this.appsByName();for(let[i,l]of this.raw()){let _=e.get(i);for(let C of l)n.push({app:i,workspaceLabel:_?.workspaceLabel??null,file:C.parsed?.file??"",line:C.parsed?.line??null,col:C.parsed?.col??null,code:C.parsed?.code??"",message:C.parsed?.message??C.message??"",count:C.count??1,tool:C.parsed?.tool??""})}return n});totalErrors=P(()=>this.flat().reduce((n,e)=>n+e.count,0));appsWithErrors=P(()=>{let n=new Set;for(let e of this.flat())n.add(e.app);return n.size});filteredFlat=P(()=>{let n=this.query().trim().toLowerCase(),e=this.severity(),i=this.workspace();return this.flat().filter(l=>!(i&&l.workspaceLabel!==i||(e==="with-errors"&&!l.code&&l.file,e==="code:TS"&&!/^TS\d+/i.test(l.code))||e==="code:other"&&/^TS\d+/i.test(l.code)||n&&!`${l.file} ${l.code} ${l.message}`.toLowerCase().includes(n)))});byApp=P(()=>{let n=new Map;for(let i of this.filteredFlat()){let l=n.get(i.app);l?l.push(i):n.set(i.app,[i])}let e=this.appsByName();return Array.from(n.entries()).map(([i,l])=>({key:i,app:e.get(i)??null,workspaceLabel:e.get(i)?.workspaceLabel??null,errors:l,allMissingFile:l.every(_=>!_.file)})).sort((i,l)=>l.errors.length-i.errors.length)});byFile=P(()=>{let n=new Map;for(let e of this.filteredFlat()){let i=e.file||"(no file detected)",l=n.get(i);l?l.push(e):n.set(i,[e])}return Array.from(n.entries()).map(([e,i])=>({key:e,errors:i})).sort((e,i)=>i.errors.length-e.errors.length)});allFilesMissing=P(()=>{let n=this.filteredFlat();return n.length?n.every(e=>!e.file):!1});byCode=P(()=>{let n=new Map;for(let e of this.filteredFlat()){let i=e.code||"(no-code)",l=n.get(i);l?l.push(e):n.set(i,[e])}return Array.from(n.entries()).map(([e,i])=>({key:e,errors:i})).sort((e,i)=>i.errors.length-e.errors.length)});byTool=P(()=>{let n=new Map;for(let e of this.filteredFlat()){let i=e.tool||"(unknown)",l=n.get(i);l?l.push(e):n.set(i,[e])}return Array.from(n.entries()).map(([e,i])=>({key:e,errors:i})).sort((e,i)=>i.errors.length-e.errors.length)});constructor(){this.workspace.set(localStorage.getItem(ne));let n=e=>this.workspace.set(e.detail??null);window.addEventListener("daimon:workspace",n),this.destroyRef.onDestroy(()=>window.removeEventListener("daimon:workspace",n)),A(()=>{this.api.apps().map(i=>i.name).sort().join("|")&&this.fetchAll()})}async ngOnInit(){this.api.apps().length===0&&!this.api.ready()?await this.api.refresh():await this.fetchAll()}ngOnDestroy(){}onStorage(n){n.key===ne&&this.workspace.set(n.newValue)}refresh(){this.fetchAll()}onQuery(n){this.query.set(n)}setSeverity(n){this.severity.set(n)}setGroupBy(n){this.groupBy.set(n)}codeHint(n){return Ye[n]??""}shortPath(n){if(!n)return"\u2014";let e=n.split(/[\\/]/);return e.length<=3?n:"\u2026/"+e.slice(-2).join("/")}editorUrl(n){if(!n.file)return"#";let e=n.line??1,i=n.col??1;return`vscode://file/${n.file}:${e}:${i}`}openEditor(n,e){if(!e.file){n.preventDefault();return}n.preventDefault(),window.open(this.editorUrl(e),"_self")}async fetchAll(){if(!this.loading()){this.loading.set(!0);try{let n=this.api.apps(),e=await Promise.all(n.map(async l=>[l.name,await this.api.appErrors(l.name)])),i=new Map;for(let[l,_]of e)i.set(l,_);this.raw.set(i)}finally{this.loading.set(!1)}}}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=R({type:t,selectors:[["dm-errors-panel"]],hostBindings:function(e,i){e&1&&x("storage",function(_){return i.onStorage(_)},V)},decls:31,vars:7,consts:[[1,"dm-page"],[1,"dm-page-header"],[1,"dm-page-sub"],["width","14rem","height",".875rem"],[1,"dm-header-actions"],["type","button","matTooltip","Refresh","aria-label","Refresh",1,"ib",3,"click","disabled"],[1,"material-symbols-outlined"],[1,"dm-filterbar"],[1,"dm-search"],[1,"material-symbols-outlined","dm-search-icon"],["type","search","placeholder","Filter by file, code, or message\u2026","aria-label","Filter errors",3,"input","value"],["type","button","aria-label","Clear",1,"dm-search-clear"],["role","tablist","aria-label","Severity filter",1,"dm-chips"],["type","button","role","tab",1,"dm-chip",3,"active"],["role","tablist","aria-label","Group by",1,"dm-chips"],[1,"dm-chips-label"],[1,"dm-cards"],["icon","error","title","No apps to scan","hint","Discover some apps first"],["icon","check_circle","hint","The last build was clean. Keep going.",3,"title"],["icon","filter_alt_off","title","No matches","hint","Try clearing the search or severity filter"],["type","button","aria-label","Clear",1,"dm-search-clear",3,"click"],["type","button","role","tab",1,"dm-chip",3,"click"],[1,"dm-card-sk"],[1,"dm-sk-accent"],[1,"dm-sk-body"],["width","40%","height","1.125rem"],["width","70%","height",".875rem"],["width","55%","height",".875rem"],[1,"dm-empty-actions"],["routerLink","/",1,"dm-link-btn"],[1,"dm-hint"],["type","button",1,"dm-link",3,"click"],["expanded","",1,"dm-panel"],[1,"ac"],[1,"ttl"],[3,"status","health"],[1,"eb"],[1,"lnk",3,"click","routerLink"],[1,"rows"],[1,"row"],[1,"loc",3,"href","matTooltip"],[1,"loc","dim"],[1,"code"],[1,"msg",3,"matTooltip"],[1,"cnt"],[1,"loc",3,"click","href","matTooltip"],[1,"dim"],[1,"loc",3,"click","routerLink"],[1,"dim","ln",3,"href"],[1,"dim","ln",3,"click","href"],[1,"hint"],[1,"tool-chip"]],template:function(e,i){e&1&&(r(0,"div",0)(1,"header",1)(2,"div")(3,"h1"),s(4,"Errors"),a(),r(5,"div",2),p(6,oe,1,0,"dm-skeleton",3)(7,ae,2,5),a()(),r(8,"div",4)(9,"button",5),x("click",function(){return i.refresh()}),r(10,"span",6),s(11,"refresh"),a()()()(),r(12,"div",7)(13,"div",8)(14,"span",9),s(15,"search"),a(),r(16,"input",10),x("input",function(_){return i.onQuery(_.target.value)}),a(),p(17,le,3,0,"button",11),a(),r(18,"div",12),v(19,se,2,4,"button",13,w),a(),r(21,"div",14)(22,"span",15),s(23,"Group by"),a(),v(24,ce,2,4,"button",13,w),a()(),p(26,de,3,0,"div",16)(27,me,6,0,"dm-empty",17)(28,_e,1,1,"dm-empty",18)(29,ue,1,0,"dm-empty",19)(30,Ke,6,2),a()),e&2&&(o(6),d(i.loading()?6:7),o(3),u("disabled",i.loading()),o(),T("spin",i.loading()),o(6),u("value",i.query()),o(),d(i.query()?17:-1),o(2),h(i.severityFilters),o(5),h(i.groupOptions),o(2),d(i.loading()&&!i.raw().size?26:i.api.apps().length===0?27:i.totalErrors()===0?28:i.filteredFlat().length===0?29:30))},dependencies:[z,te,J,X,ee,Z,j,U,G,H,W,Q,K],styles:["[_nghost-%COMP%]{display:block}.dm-page[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.dm-page-header[_ngcontent-%COMP%]{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem}.dm-page-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{margin:0;font:400 1.5rem/2rem Roboto}.dm-page-sub[_ngcontent-%COMP%]{font:400 .8125rem/1.25rem Roboto;color:var(--mat-sys-on-surface-variant);margin-top:.25rem;display:flex;gap:.25rem;flex-wrap:wrap;align-items:center}.dm-header-actions[_ngcontent-%COMP%]{display:flex;gap:.5rem}.ib[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;background:transparent;border:1px solid var(--mat-sys-outline-variant);border-radius:10px;color:var(--mat-sys-on-surface-variant);cursor:pointer}.ib[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--mat-sys-surface-container-high);color:var(--mat-sys-on-surface)}.ib[_ngcontent-%COMP%]:disabled{opacity:.55;cursor:not-allowed}.ib[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:20px}.spin[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_dm-spin 1s linear infinite}@keyframes _ngcontent-%COMP%_dm-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spin[_ngcontent-%COMP%]{animation:none}}.dm-filterbar[_ngcontent-%COMP%]{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;padding:.5rem;background:var(--mat-sys-surface);border:1px solid var(--mat-sys-outline-variant);border-radius:12px}.dm-search[_ngcontent-%COMP%]{position:relative;flex:1;min-width:220px;display:inline-flex;align-items:center;background:var(--mat-sys-surface-container);border:1px solid var(--mat-sys-outline-variant);border-radius:10px}.dm-search[_ngcontent-%COMP%]:focus-within{border-color:var(--mat-sys-primary)}.dm-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{flex:1;border:0;outline:0;background:transparent;padding:8px 36px;font:400 .875rem/1.25rem Roboto;color:var(--mat-sys-on-surface)}.dm-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder{color:var(--mat-sys-on-surface-variant)}.dm-search-icon[_ngcontent-%COMP%]{position:absolute;left:10px;pointer-events:none;font-size:18px;color:var(--mat-sys-on-surface-variant)}.dm-search-clear[_ngcontent-%COMP%]{position:absolute;right:6px;background:transparent;border:0;cursor:pointer;color:var(--mat-sys-on-surface-variant);width:24px;height:24px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center}.dm-search-clear[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container-high)}.dm-search-clear[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:16px}.dm-chips[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:2px;border-radius:10px;background:var(--mat-sys-surface-container);border:1px solid var(--mat-sys-outline-variant);gap:2px}.dm-chips-label[_ngcontent-%COMP%]{font:500 .6875rem/1rem Roboto;text-transform:uppercase;letter-spacing:.04rem;color:var(--mat-sys-on-surface-variant);padding:0 .5rem 0 .25rem}.dm-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;padding:5px 10px;border-radius:8px;background:transparent;border:0;color:var(--mat-sys-on-surface-variant);cursor:pointer;font:500 .8125rem/1rem Roboto}.dm-chip[_ngcontent-%COMP%]:hover{color:var(--mat-sys-on-surface)}.dm-chip.active[_ngcontent-%COMP%]{background:var(--mat-sys-surface);color:var(--mat-sys-primary);box-shadow:var(--mat-sys-level1)}.dm-cards[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.75rem}.dm-hint[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:10px;background:color-mix(in oklch,var(--mat-sys-tertiary) 10%,transparent);border:1px solid color-mix(in oklch,var(--mat-sys-tertiary) 24%,transparent);color:var(--mat-sys-on-surface);font:400 .8125rem/1.25rem Roboto}.dm-hint[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:18px;color:var(--mat-sys-tertiary)}.dm-hint[_ngcontent-%COMP%] .dm-link[_ngcontent-%COMP%]{background:transparent;border:0;padding:0;color:var(--mat-sys-primary);cursor:pointer;font:500 .8125rem/1.25rem Roboto;text-decoration:underline}.dm-panel[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container-low)!important;border:1px solid var(--mat-sys-outline-variant);border-radius:14px!important;overflow:hidden;box-shadow:none!important}.dm-panel.mat-expanded[_ngcontent-%COMP%]{box-shadow:var(--mat-sys-level1)!important} .dm-panel .mat-expansion-panel-header{padding:0 1rem;height:56px;background:var(--mat-sys-surface-container-low)} .dm-panel .mat-expansion-panel-header:hover{background:var(--mat-sys-surface-container)!important} .dm-panel .mat-expansion-panel-body{padding:0 1rem 1rem} .dm-panel .mat-expansion-panel-content{background:var(--mat-sys-surface-container-low)}.ac[_ngcontent-%COMP%]{width:4px;height:24px;border-radius:2px;margin-right:.5rem}.ttl[_ngcontent-%COMP%]{font:500 .9375rem/1.25rem Roboto;display:inline-flex;align-items:center;gap:.5rem}.hint[_ngcontent-%COMP%]{font:400 .75rem/1rem Roboto;color:var(--mat-sys-on-surface-variant);margin-left:.5rem}mat-panel-title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}mat-panel-description[_ngcontent-%COMP%]{justify-content:flex-end;color:var(--mat-sys-on-surface-variant)}.eb[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:1px 8px;border-radius:999px;font:600 .75rem/1rem Roboto;background:color-mix(in oklch,var(--mat-sys-error) 14%,transparent);color:var(--mat-sys-error);border:1px solid color-mix(in oklch,var(--mat-sys-error) 30%,transparent);margin-left:.25rem}.lnk[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.125rem;color:var(--mat-sys-primary);text-decoration:none;font:500 .8125rem/1.25rem Roboto}.lnk[_ngcontent-%COMP%]:hover{text-decoration:underline}.lnk[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:16px}.rows[_ngcontent-%COMP%]{display:flex;flex-direction:column}.row[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(0,1.4fr) auto minmax(0,2fr) auto;align-items:center;gap:.75rem;padding:.5rem .25rem;border-bottom:1px solid var(--mat-sys-outline-variant)}.rows-nofile[_ngcontent-%COMP%] .row[_ngcontent-%COMP%]{grid-template-columns:auto minmax(0,1fr) auto}.row[_ngcontent-%COMP%]:last-child{border-bottom:0}.row[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container)}.loc[_ngcontent-%COMP%]{color:var(--mat-sys-primary);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.loc[_ngcontent-%COMP%]:hover{text-decoration:underline}.dim[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.ln[_ngcontent-%COMP%]{justify-self:end}.code[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:1px 8px;border-radius:6px;background:color-mix(in oklch,var(--mat-sys-tertiary) 14%,transparent);color:var(--mat-sys-tertiary);border:1px solid color-mix(in oklch,var(--mat-sys-tertiary) 28%,transparent);font-weight:500}.tool-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:2px 10px;border-radius:6px;background:var(--mat-sys-surface-container-high);color:var(--mat-sys-on-surface);border:1px solid var(--mat-sys-outline-variant);font:600 .8125rem/1.125rem Roboto;text-transform:lowercase;letter-spacing:.02rem}.tool-chip[data-tool=esbuild][_ngcontent-%COMP%], .tool-chip[data-tool=vite][_ngcontent-%COMP%]{color:var(--mat-sys-primary);border-color:color-mix(in oklch,var(--mat-sys-primary) 36%,transparent)}.tool-chip[data-tool=jest][_ngcontent-%COMP%], .tool-chip[data-tool=nx][_ngcontent-%COMP%]{color:var(--mat-sys-secondary);border-color:color-mix(in oklch,var(--mat-sys-secondary) 36%,transparent)}.tool-chip[data-tool=storybook][_ngcontent-%COMP%], .tool-chip[data-tool=webpack][_ngcontent-%COMP%]{color:var(--mat-sys-tertiary);border-color:color-mix(in oklch,var(--mat-sys-tertiary) 36%,transparent)}.tool-chip[data-tool=node][_ngcontent-%COMP%], .tool-chip[data-tool=typescript][_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.msg[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface);font-size:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.cnt[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font:500 .75rem/1rem Roboto;justify-self:end}.dm-card-sk[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container-low);border:1px solid var(--mat-sys-outline-variant);border-radius:14px;overflow:hidden}.dm-sk-accent[_ngcontent-%COMP%]{height:4px;background:var(--mat-sys-surface-container)}.dm-sk-body[_ngcontent-%COMP%]{padding:1rem;display:flex;flex-direction:column;gap:.5rem}.dm-empty-actions[_ngcontent-%COMP%]{margin-top:.75rem}.dm-link-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;padding:6px 14px;border-radius:10px;background:var(--mat-sys-primary);color:var(--mat-sys-on-primary);text-decoration:none;font:500 .875rem/1.25rem Roboto}.dm-link-btn[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:18px}@media(max-width:760px){.row[_ngcontent-%COMP%]{grid-template-columns:1fr;gap:.25rem}.ln[_ngcontent-%COMP%], .cnt[_ngcontent-%COMP%]{justify-self:start}}"],changeDetection:0})};export{ie as ErrorsPanelComponent};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as de}from"./chunk-ZEO5YLWG.js";import{a as ee,b as te,c as ne,d as ie,e as oe,g as ae,h as re,k as se,l as le}from"./chunk-YA4AZONZ.js";import"./chunk-P5IU57TV.js";import"./chunk-NDSAQ2HK.js";import{b as Y,f as Q,h as q,j as G}from"./chunk-YYAZGY5M.js";import"./chunk-PJPGLT4T.js";import{b as H,c as J,d as U}from"./chunk-RIDV4B55.js";import"./chunk-OHX55ZU4.js";import{d as X,e as Z}from"./chunk-SR5JAOLW.js";import{a as z,b as K}from"./chunk-XXIJQBCQ.js";import"./chunk-YNQPX5G6.js";import"./chunk-IQZZO5IM.js";import"./chunk-KLH6B22T.js";import{c as B}from"./chunk-5PAHWCG5.js";import{h as j,i as A,j as W}from"./chunk-Q3N4MMWW.js";import{h as V}from"./chunk-Y6B6X4Y6.js";import{Db as b,Eb as c,Fb as p,Hb as L,Ib as E,Jb as k,Kb as _,Lb as a,Mb as r,Nb as F,Sb as T,Ub as h,Wb as m,_a as o,ea as D,gc as w,ic as s,ja as x,jc as u,ka as M,kc as y,pb as N,sc as R,ta as g,xc as P}from"./chunk-K43KW4K2.js";var ce=t=>["/apps",t],pe=(t,n)=>n.name,ue=(t,n)=>n.key;function ve(t,n){t&1&&(a(0,"span",18),s(1,"\xB7"),r(),a(2,"span",19),s(3,"paused"),r())}function ge(t,n){if(t&1&&(a(0,"span",18),s(1,"\xB7"),r(),a(2,"span"),s(3),r()),t&2){let e=m();o(3),y("",e.pendingCount()," new while paused")}}function _e(t,n){if(t&1&&(a(0,"mat-option",10),s(1),r()),t&2){let e=n.$implicit;_("value",e.name),o(),u(e.name)}}function fe(t,n){if(t&1){let e=T();a(0,"button",20),h("click",function(){x(e);let d=m();return M(d.textFilter.set(""))}),a(1,"mat-icon"),s(2,"close"),r()()}}function he(t,n){if(t&1){let e=T();a(0,"button",21),h("click",function(){let d=x(e).$implicit,v=m();return M(v.toggleType(d))}),s(1),r()}if(t&2){let e=n.$implicit,i=m();w("dm-chip-active",i.typeFilter().has(e)),b("data-kind",e),o(),y(" ",e," ")}}function ye(t,n){if(t&1){let e=T();a(0,"button",22),h("click",function(){x(e);let d=m();return M(d.clearTypes())}),a(1,"mat-icon"),s(2,"close"),r()()}}function Ce(t,n){t&1&&F(0,"dm-empty",23)}function xe(t,n){t&1&&F(0,"dm-empty",24)}function Me(t,n){if(t&1&&c(0,Ce,1,0,"dm-empty",23)(1,xe,1,0,"dm-empty",24),t&2){let e=m();p(e.liveEvents().length===0?0:1)}}function be(t,n){if(t&1&&(a(0,"li",25)(1,"span",32),s(2),r()()),t&2){let e=m().$implicit;o(2),u(e.gapLabel)}}function Ee(t,n){if(t&1&&(a(0,"a",29)(1,"dm-mono"),s(2),r()()),t&2){let e=m().$implicit;_("routerLink",R(2,ce,e.ev.app)),o(2),u(e.ev.app)}}function ke(t,n){t&1&&(a(0,"span",30),s(1,"\u2014"),r())}function Fe(t,n){if(t&1&&(a(0,"dm-mono"),s(1),r(),a(2,"span",33),s(3,"\u2192"),r(),a(4,"dm-mono"),s(5),r()),t&2){let e=m().$implicit;o(),u(e.ev.from??"?"),o(4),u(e.ev.to??"?")}}function Te(t,n){if(t&1&&s(0),t&2){let e=m().$implicit;y(" ",e.ev.message??""," ")}}function we(t,n){if(t&1&&(c(0,be,3,1,"li",25),a(1,"li",26)(2,"span",27)(3,"dm-mono"),s(4),r()(),a(5,"span",28),s(6),r(),c(7,Ee,3,4,"a",29)(8,ke,2,0,"span",30),a(9,"span",31),c(10,Fe,6,2)(11,Te,1,1),r()()),t&2){let e=n.$implicit,i=m(2);p(e.divider?0:-1),o(),w("dm-flash",e.flash),b("data-kind",e.ev.type),o(),_("matTooltip",i.absTime(e.ev.ts)),o(2),u(i.rel(e.ev.ts)),o(),b("data-kind",e.ev.type),o(),u(e.ev.type),o(),p(e.ev.app?7:8),o(3),p(e.ev.type==="status"&&(e.ev.from||e.ev.to)?10:11)}}function Pe(t,n){if(t&1&&(a(0,"ol",17),E(1,we,12,10,null,null,ue),r()),t&2){let e=m();o(),k(e.rendered())}}var Oe=["status","health","error","compile","log"];function Se(t,n){let e=Math.max(0,Math.floor((n-t)/1e3));if(e<1)return"just now";if(e<60)return`${e}s ago`;let i=Math.floor(e/60),d=e%60;return i<60?d?`${i}m ${d}s ago`:`${i}m ago`:`${Math.floor(i/60)}h ${i%60}m ago`}var me=class t{api=D(W);types=Oe;paused=g(!1);appFilter=g("");textFilter=g("");typeFilter=g(new Set);now=g(Date.now());snapshot=g(null);lastSeenTs=g(0);tickTimer;liveEvents=P(()=>this.snapshot()??this.api.events());pendingCount=P(()=>{let n=this.snapshot();if(!n)return 0;let e=this.api.events();return Math.max(0,e.length-n.length)});rendered=P(()=>{let n=this.liveEvents(),e=this.appFilter(),i=this.textFilter().toLowerCase(),d=this.typeFilter(),v=this.lastSeenTs(),C=[];for(let l of n)e&&l.app!==e||d.size&&!d.has(l.type)||i&&!`${l.app??""} ${l.type} ${l.message??""} ${l.from??""} ${l.to??""}`.toLowerCase().includes(i)||C.push(l);let S=[];for(let l=0;l<C.length;l++){let f=C[l],O=C[l+1],I=O?f.ts-O.ts:0,$=!!O&&I>3e4;S.push({key:`${f.ts}:${l}`,ev:f,divider:$,gapLabel:$?Ie(I):"",flash:f.ts>v})}return S.sort((l,f)=>f.ev.ts-l.ev.ts)});ngOnInit(){this.lastSeenTs.set(Date.now()),this.tickTimer=setInterval(()=>{this.now.set(Date.now());let n=this.api.events();n.length&&this.lastSeenTs.set(n[n.length-1].ts)},1e3)}ngOnDestroy(){this.tickTimer&&clearInterval(this.tickTimer)}togglePause(){this.paused()?(this.paused.set(!1),this.snapshot.set(null)):(this.snapshot.set(this.api.events().slice()),this.paused.set(!0))}toggleType(n){this.typeFilter.update(e=>{let i=new Set(e);return i.has(n)?i.delete(n):i.add(n),i})}clearTypes(){this.typeFilter.set(new Set)}rel(n){return Se(n,this.now())}absTime(n){return new Date(n).toLocaleString()}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=N({type:t,selectors:[["dm-events-feed"]],decls:37,vars:15,consts:[[1,"dm-page-header"],[1,"dm-count"],[1,"dm-page-sub"],[1,"dm-conn"],[1,"dm-conn-dot"],[1,"dm-header-actions"],["mat-stroked-button","",3,"click","matTooltip"],[1,"dm-toolbar"],["appearance","outline",1,"dm-app-filter"],[3,"ngModelChange","ngModel"],[3,"value"],["appearance","outline",1,"dm-text-filter"],["matInput","","placeholder","filter message / app",3,"ngModelChange","ngModel"],["matSuffix","","mat-icon-button",""],[1,"dm-type-chips"],[1,"dm-chip",3,"dm-chip-active"],[1,"dm-chip","dm-chip-clear"],[1,"dm-list"],[1,"dm-sep"],[1,"dm-paused-tag"],["matSuffix","","mat-icon-button","",3,"click"],[1,"dm-chip",3,"click"],[1,"dm-chip","dm-chip-clear",3,"click"],["icon","timeline","title","Quiet","hint","No events in this session \u2014 start an app to see status transitions, errors, and compiles"],["icon","filter_alt_off","title","No matches","hint","Adjust filters to see events"],[1,"dm-divider"],[1,"dm-event"],[1,"dm-time",3,"matTooltip"],[1,"dm-type"],[1,"dm-app",3,"routerLink"],[1,"dm-app","dm-app-empty"],[1,"dm-msg"],[1,"dm-divider-label"],[1,"dm-arrow"]],template:function(e,i){e&1&&(a(0,"div",0)(1,"div")(2,"h1"),s(3,"Events "),a(4,"span",1),s(5),r()(),a(6,"div",2)(7,"span",3),F(8,"span",4),s(9),r(),c(10,ve,4,0),c(11,ge,4,1),r()(),a(12,"div",5)(13,"button",6),h("click",function(){return i.togglePause()}),a(14,"mat-icon"),s(15),r(),s(16),r()()(),a(17,"div",7)(18,"mat-form-field",8)(19,"mat-label"),s(20,"App"),r(),a(21,"mat-select",9),h("ngModelChange",function(v){return i.appFilter.set(v)}),a(22,"mat-option",10),s(23,"All apps"),r(),E(24,_e,2,2,"mat-option",10,pe),r()(),a(26,"mat-form-field",11)(27,"mat-label"),s(28,"Search"),r(),a(29,"input",12),h("ngModelChange",function(v){return i.textFilter.set(v)}),r(),c(30,fe,3,0,"button",13),r(),a(31,"div",14),E(32,he,2,4,"button",15,L),c(34,ye,3,0,"button",16),r()(),c(35,Me,2,1)(36,Pe,3,0,"ol",17)),e&2&&(o(5),y("\xB7 ",i.liveEvents().length),o(2),w("dm-conn-on",i.api.connected()),o(2),y(" ",i.api.connected()?"live":"disconnected"," "),o(),p(i.paused()?10:-1),o(),p(i.paused()&&i.pendingCount()>0?11:-1),o(2),_("matTooltip",i.paused()?"Resume feed":"Pause feed"),o(2),u(i.paused()?"play_arrow":"pause"),o(),y(" ",i.paused()?"Resume":"Pause"," "),o(5),_("ngModel",i.appFilter()),o(),_("value",""),o(2),k(i.api.apps()),o(5),_("ngModel",i.textFilter()),o(),p(i.textFilter()?30:-1),o(2),k(i.types),o(2),p(i.typeFilter().size>0?34:-1),o(),p(i.rendered().length===0?35:36))},dependencies:[V,G,Y,Q,q,B,ie,ne,ee,te,re,ae,oe,le,se,de,U,J,H,A,j,K,z,X,Z],styles:["[_nghost-%COMP%]{display:block}.dm-count[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font-weight:400}.dm-conn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.35rem}.dm-conn-dot[_ngcontent-%COMP%]{width:7px;height:7px;border-radius:999px;background:var(--mat-sys-outline)}.dm-conn-on[_ngcontent-%COMP%] .dm-conn-dot[_ngcontent-%COMP%]{background:var(--mat-sys-primary);box-shadow:0 0 0 3px color-mix(in oklch,var(--mat-sys-primary) 24%,transparent)}.dm-sep[_ngcontent-%COMP%]{color:var(--mat-sys-outline);margin:0 .15rem}.dm-paused-tag[_ngcontent-%COMP%]{color:var(--mat-sys-tertiary);font-weight:500}.dm-toolbar[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;margin-bottom:.5rem}.dm-app-filter[_ngcontent-%COMP%]{width:12rem}.dm-text-filter[_ngcontent-%COMP%]{flex:1;min-width:14rem;max-width:28rem}.dm-type-chips[_ngcontent-%COMP%]{display:flex;gap:.35rem;flex-wrap:wrap}.dm-chip[_ngcontent-%COMP%]{border:1px solid var(--mat-sys-outline-variant);background:var(--mat-sys-surface-container);color:var(--mat-sys-on-surface-variant);border-radius:999px;padding:4px 12px;font:500 .75rem/1rem Roboto;cursor:pointer;letter-spacing:.025rem}.dm-chip[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container-high)}.dm-chip-active[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface)}.dm-chip-clear[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:2px 8px}.dm-chip-clear[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px}.dm-list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;border:1px solid var(--mat-sys-outline-variant);border-radius:10px;background:var(--mat-sys-surface-container-lowest);overflow:hidden}.dm-event[_ngcontent-%COMP%]{display:grid;grid-template-columns:7.5rem max-content 10rem 1fr;gap:.75rem;align-items:center;height:28px;padding:0 .75rem;border-top:1px solid var(--mat-sys-outline-variant);font-size:.8125rem;color:var(--mat-sys-on-surface)}.dm-event[_ngcontent-%COMP%]:first-child{border-top:0}.dm-time[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.dm-type[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;padding:1px 8px;border-radius:999px;font:500 .6875rem/1rem Roboto;letter-spacing:.03rem;border:1px solid var(--mat-sys-outline-variant);text-transform:lowercase;white-space:nowrap}.dm-type[data-kind=status][_ngcontent-%COMP%], .dm-chip[data-kind=status].dm-chip-active[_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-primary) 14%,transparent);border-color:color-mix(in oklch,var(--mat-sys-primary) 30%,transparent);color:var(--mat-sys-primary)}.dm-type[data-kind=health][_ngcontent-%COMP%], .dm-chip[data-kind=health].dm-chip-active[_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-secondary) 14%,transparent);border-color:color-mix(in oklch,var(--mat-sys-secondary) 30%,transparent);color:var(--mat-sys-secondary)}.dm-type[data-kind=error][_ngcontent-%COMP%], .dm-chip[data-kind=error].dm-chip-active[_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-error) 14%,transparent);border-color:color-mix(in oklch,var(--mat-sys-error) 32%,transparent);color:var(--mat-sys-error)}.dm-type[data-kind=compile][_ngcontent-%COMP%], .dm-chip[data-kind=compile].dm-chip-active[_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-tertiary) 14%,transparent);border-color:color-mix(in oklch,var(--mat-sys-tertiary) 30%,transparent);color:var(--mat-sys-tertiary)}.dm-type[data-kind=log][_ngcontent-%COMP%], .dm-chip[data-kind=log].dm-chip-active[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container);color:var(--mat-sys-on-surface-variant)}.dm-app[_ngcontent-%COMP%]{text-decoration:none;color:var(--mat-sys-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dm-app[_ngcontent-%COMP%]:hover{text-decoration:underline}.dm-app-empty[_ngcontent-%COMP%]{color:var(--mat-sys-outline)}.dm-msg[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:.35rem}.dm-arrow[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.dm-divider[_ngcontent-%COMP%]{height:18px;display:flex;align-items:center;justify-content:center;border-top:1px solid var(--mat-sys-outline-variant);background:var(--mat-sys-surface-container)}.dm-divider-label[_ngcontent-%COMP%]{font:400 .6875rem/1rem Roboto;color:var(--mat-sys-on-surface-variant);letter-spacing:.04rem}.dm-flash[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_dm-event-pulse .6s var(--dm-motion-easing)}@keyframes _ngcontent-%COMP%_dm-event-pulse{0%{background:color-mix(in oklch,var(--mat-sys-primary) 24%,transparent)}to{background:transparent}}@media(prefers-reduced-motion:reduce){.dm-flash[_ngcontent-%COMP%]{animation:none}}"],changeDetection:0})};function Ie(t){let n=Math.floor(t/1e3);if(n<60)return`${n}s gap`;let e=Math.floor(n/60);return e<60?`${e}m gap`:`${Math.floor(e/60)}h ${e%60}m gap`}export{me as EventsFeedComponent};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{a as u,c as I,d as lt,e as z,f as kt,g as ye,h as we,i as Ot,j as be}from"./chunk-KLH6B22T.js";import{G as me,H as ve,N as W,O as X,e as _e,o as at,p as E,r as H,s as ge,v as St,x as Rt}from"./chunk-Y6B6X4Y6.js";import{$ as v,$b as se,Aa as ot,C as q,Ca as k,D as Q,Ec as fe,Fc as ue,Hc as x,Ia as Qt,J as Ht,Kc as pe,O as Wt,Ob as te,Pb as ee,Qb as ie,R as Xt,T as bt,U as Zt,V as J,W as Gt,Xb as oe,Yb as ne,_ as Ut,_a as Jt,_b as re,a as K,aa as D,ac as ae,b as Nt,ca as L,d as R,db as O,ea as l,eb as m,f as yt,fb as Y,fc as le,gb as V,gc as he,ha as tt,hb as P,i as p,ib as nt,k as Lt,l as Yt,lb as M,mb as Ct,na as y,o as wt,oa as C,pa as $t,pb as rt,q as jt,qb as B,rb as w,rc as j,sb as T,ta as et,wc as ce,xa as Kt,ya as qt,yc as de,za as it,zb as st}from"./chunk-K43KW4K2.js";var Ge=["contentWrapper"],Ue=["*"],ke=new L("VIRTUAL_SCROLL_STRATEGY"),xt=class{_scrolledIndexChange=new p;scrolledIndexChange=this._scrolledIndexChange.pipe(Ht());_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(),o=this._viewport.getDataLength(),r=this._viewport.measureScrollOffset(),s=this._itemSize>0?r/this._itemSize:0;if(t.end>o){let h=Math.ceil(e/this._itemSize),c=Math.max(0,Math.min(s,o-h));s!=c&&(s=c,r=c*this._itemSize,t.start=Math.floor(s)),t.end=Math.max(0,Math.min(o,t.start+h))}let a=r-t.start*this._itemSize;if(a<this._minBufferPx&&t.start!=0){let h=Math.ceil((this._maxBufferPx-a)/this._itemSize);t.start=Math.max(0,t.start-h),t.end=Math.min(o,Math.ceil(s+(e+this._minBufferPx)/this._itemSize))}else{let h=t.end*this._itemSize-(r+e);if(h<this._minBufferPx&&t.end!=o){let c=Math.ceil((this._maxBufferPx-h)/this._itemSize);c>0&&(t.end=Math.min(o,t.end+c),t.start=Math.max(0,Math.floor(s-this._minBufferPx/this._itemSize)))}}this._viewport.setRenderedRange(t),this._viewport.setRenderedContentOffset(Math.round(this._itemSize*t.start)),this._scrolledIndexChange.next(Math.floor(s))}};function $e(n){return n._scrollStrategy}var Ke=(()=>{class n{get itemSize(){return this._itemSize}set itemSize(t){this._itemSize=H(t)}_itemSize=20;get minBufferPx(){return this._minBufferPx}set minBufferPx(t){this._minBufferPx=H(t)}_minBufferPx=100;get maxBufferPx(){return this._maxBufferPx}set maxBufferPx(t){this._maxBufferPx=H(t)}_maxBufferPx=200;_scrollStrategy=new xt(this.itemSize,this.minBufferPx,this.maxBufferPx);ngOnChanges(){this._scrollStrategy.updateItemAndBufferSize(this.itemSize,this.minBufferPx,this.maxBufferPx)}static \u0275fac=function(e){return new(e||n)};static \u0275dir=w({type:n,selectors:[["cdk-virtual-scroll-viewport","itemSize",""]],inputs:{itemSize:"itemSize",minBufferPx:"minBufferPx",maxBufferPx:"maxBufferPx"},features:[j([{provide:ke,useFactory:$e,deps:[Ut(()=>n)]}]),it]})}return n})(),qe=20,Z=(()=>{class n{_ngZone=l(m);_platform=l(E);_renderer=l(P).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=qe){return this._platform.isBrowser?new yt(e=>{this._cleanupGlobalListener||(this._cleanupGlobalListener=this._ngZone.runOutsideAngular(()=>this._renderer.listen("document","scroll",()=>this._scrolled.next())));let o=t>0?this._scrolled.pipe(Q(t)).subscribe(e):this._scrolled.subscribe(e);return this._scrolledCount++,()=>{o.unsubscribe(),this._scrolledCount--,this._scrolledCount||(this._cleanupGlobalListener?.(),this._cleanupGlobalListener=void 0)}}):wt()}ngOnDestroy(){this._cleanupGlobalListener?.(),this._cleanupGlobalListener=void 0,this.scrollContainers.forEach((t,e)=>this.deregister(e)),this._scrolled.complete()}ancestorScrolled(t,e){let o=this.getAncestorScrollContainers(t);return this.scrolled(e).pipe(q(r=>!r||o.indexOf(r)>-1))}getAncestorScrollContainers(t){let e=[];return this.scrollContainers.forEach((o,r)=>{this._scrollableContainsElement(r,t)&&e.push(r)}),e}_scrollableContainsElement(t,e){let o=ge(e),r=t.getElementRef().nativeElement;do if(o==r)return!0;while(o=o.parentElement);return!1}static \u0275fac=function(e){return new(e||n)};static \u0275prov=v({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})(),Dt=(()=>{class n{elementRef=l(k);scrollDispatcher=l(Z);ngZone=l(m);dir=l(W,{optional:!0});_scrollElement=this.elementRef.nativeElement;_destroyed=new p;_renderer=l(nt);_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,o=this.dir&&this.dir.value=="rtl";t.left==null&&(t.left=o?t.end:t.start),t.right==null&&(t.right=o?t.start:t.end),t.bottom!=null&&(t.top=e.scrollHeight-e.clientHeight-t.bottom),o&&z()!=I.NORMAL?(t.left!=null&&(t.right=e.scrollWidth-e.clientWidth-t.left),z()==I.INVERTED?t.left=t.right:z()==I.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;lt()?e.scrollTo(t):(t.top!=null&&(e.scrollTop=t.top),t.left!=null&&(e.scrollLeft=t.left))}measureScrollOffset(t){let e="left",o="right",r=this.elementRef.nativeElement;if(t=="top")return r.scrollTop;if(t=="bottom")return r.scrollHeight-r.clientHeight-r.scrollTop;let s=this.dir&&this.dir.value=="rtl";return t=="start"?t=s?o:e:t=="end"&&(t=s?e:o),s&&z()==I.INVERTED?t==e?r.scrollWidth-r.clientWidth-r.scrollLeft:r.scrollLeft:s&&z()==I.NEGATED?t==e?r.scrollLeft+r.scrollWidth-r.clientWidth:-r.scrollLeft:t==e?r.scrollLeft:r.scrollWidth-r.clientWidth-r.scrollLeft}static \u0275fac=function(e){return new(e||n)};static \u0275dir=w({type:n,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]]})}return n})(),Qe=20,F=(()=>{class n{_platform=l(E);_listeners;_viewportSize;_change=new p;_document=l(C);constructor(){let t=l(m),e=l(P).createRenderer(null,null);t.runOutsideAngular(()=>{if(this._platform.isBrowser){let o=r=>this._change.next(r);this._listeners=[e.listen("window","resize",o),e.listen("window","orientationchange",o)]}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:o}=this.getViewportSize();return{top:t.top,left:t.left,bottom:t.top+o,right:t.left+e,height:o,width:e}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};let t=this._document,e=this._getWindow(),o=t.documentElement,r=o.getBoundingClientRect(),s=-r.top||t.body.scrollTop||e.scrollY||o.scrollTop||0,a=-r.left||t.body.scrollLeft||e.scrollX||o.scrollLeft||0;return{top:s,left:a}}change(t=Qe){return t>0?this._change.pipe(Q(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||n)};static \u0275prov=v({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})(),Ce=new L("VIRTUAL_SCROLLABLE"),Je=(()=>{class n extends Dt{constructor(){super()}measureViewportSize(t){let e=this.elementRef.nativeElement;return t==="horizontal"?e.clientWidth:e.clientHeight}static \u0275fac=function(e){return new(e||n)};static \u0275dir=w({type:n,features:[T]})}return n})();function ti(n,i){return n.start==i.start&&n.end==i.end}var ei=typeof requestAnimationFrame<"u"?Yt:Lt,Oe=(()=>{class n extends Je{elementRef=l(k);_changeDetectorRef=l(fe);_scrollStrategy=l(ke,{optional:!0});scrollable=l(Ce,{optional:!0});_platform=l(E);_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 yt(t=>this._scrollStrategy.scrolledIndexChange.subscribe(e=>Promise.resolve().then(()=>this.ngZone.run(()=>t.next(e)))));_contentWrapper;renderedRangeStream=this._renderedRangeSubject;_totalContentSize=0;_totalContentWidth=et("");_totalContentHeight=et("");_renderedContentTransform;_renderedRange={start:0,end:0};_dataLength=0;_viewportSize=0;_forOf;_renderedContentOffset=0;_renderedContentOffsetNeedsRewrite=!1;_changeDetectionNeeded=et(!1);_runAfterChangeDetection=[];_viewportChanges=R.EMPTY;_injector=l(y);_isDestroyed=!1;constructor(){super();let t=l(F);this._scrollStrategy,this._viewportChanges=t.change().subscribe(()=>{this.checkViewportSize()}),this.scrollable||(this.elementRef.nativeElement.classList.add("cdk-virtual-scrollable"),this.scrollable=this);let e=de(()=>{this._changeDetectionNeeded()&&this._doChangeDetection()},{injector:l(st).injector});l($t).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(bt(null),Q(0,ei),J(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(J(this._detachedSubject)).subscribe(e=>{let o=e.length;o!==this._dataLength&&(this._dataLength=o,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){ti(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 o=this.dir&&this.dir.value=="rtl",r=this.orientation=="horizontal",s=r?"X":"Y",h=`translate${s}(${Number((r&&o?-1:1)*t)}px)`;this._renderedContentOffset=t,e==="to-end"&&(h+=` translate${s}(-100%)`,this._renderedContentOffsetNeedsRewrite=!0),this._renderedContentTransform!=h&&(this._renderedContentTransform=h,this._markChangeDetectionNeeded(()=>{this._renderedContentOffsetNeedsRewrite?(this._renderedContentOffset-=this.measureRenderedContentSize(),this._renderedContentOffsetNeedsRewrite=!1,this.setRenderedContentOffset(this._renderedContentOffset)):this._scrollStrategy.onRenderedOffsetChanged()}))}scrollToOffset(t,e="auto"){let o={behavior:e};this.orientation==="horizontal"?o.start=t:o.top=t,this.scrollable.scrollTo(o)}scrollToIndex(t,e="auto"){this._scrollStrategy.scrollToIndex(t,e)}measureScrollOffset(t){let e;return this.scrollable==this?e=o=>super.measureScrollOffset(o):e=o=>this.scrollable.measureScrollOffset(o),Math.max(0,e(t??(this.orientation==="horizontal"?"start":"top"))-this.measureViewportOffset())}measureViewportOffset(t){let e,o="left",r="right",s=this.dir?.value=="rtl";t=="start"?e=s?r:o:t=="end"?e=s?o:r:t?e=t:e=this.orientation==="horizontal"?"left":"top";let a=this.scrollable.measureBoundingClientRectWithScrollOffset(e);return this.elementRef.nativeElement.getBoundingClientRect()[e]-a}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),!ce(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,Y(()=>{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||n)};static \u0275cmp=rt({type:n,selectors:[["cdk-virtual-scroll-viewport"]],viewQuery:function(e,o){if(e&1&&re(Ge,7),e&2){let r;se(r=ae())&&(o._contentWrapper=r.first)}},hostAttrs:[1,"cdk-virtual-scroll-viewport"],hostVars:4,hostBindings:function(e,o){e&2&&he("cdk-virtual-scroll-orientation-horizontal",o.orientation==="horizontal")("cdk-virtual-scroll-orientation-vertical",o.orientation!=="horizontal")},inputs:{orientation:"orientation",appendOnly:[2,"appendOnly","appendOnly",x]},outputs:{scrolledIndexChange:"scrolledIndexChange"},features:[j([{provide:Dt,useFactory:(t,e)=>t||e,deps:[[new qt,new Kt(Ce)],n]}]),T],ngContentSelectors:Ue,decls:4,vars:4,consts:[["contentWrapper",""],[1,"cdk-virtual-scroll-content-wrapper"],[1,"cdk-virtual-scroll-spacer"]],template:function(e,o){e&1&&(oe(),te(0,"div",1,0),ne(2),ee(),ie(3,"div",2)),e&2&&(Jt(3),le("width",o._totalContentWidth())("height",o._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 n})();function Se(n,i,t){let e=t;if(!e.getBoundingClientRect)return 0;let o=e.getBoundingClientRect();return n==="horizontal"?i==="start"?o.left:o.right:i==="start"?o.top:o.bottom}var ii=(()=>{class n{_viewContainerRef=l(M);_template=l(V);_differs=l(ue);_viewRepeater=l(Ot);_viewport=l(Oe,{skipSelf:!0});viewChange=new p;_dataSourceChanges=new p;get cdkVirtualForOf(){return this._cdkVirtualForOf}set cdkVirtualForOf(t){this._cdkVirtualForOf=t,ye(t)?this._dataSourceChanges.next(t):this._dataSourceChanges.next(new we(jt(t)?t:Array.from(t||[])))}_cdkVirtualForOf;get cdkVirtualForTrackBy(){return this._cdkVirtualForTrackBy}set cdkVirtualForTrackBy(t){this._needsUpdate=!0,this._cdkVirtualForTrackBy=t?(e,o)=>t(e+(this._renderedRange?this._renderedRange.start:0),o):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=H(t)}dataStream=this._dataSourceChanges.pipe(bt(null),Wt(),Zt(([t,e])=>this._changeDataSource(t,e)),Xt(1));_differ=null;_data;_renderedItems;_renderedRange;_needsUpdate=!1;_destroyed=new p;constructor(){let t=l(m);this.dataStream.subscribe(e=>{this._data=e,this._onRenderedDataChange()}),this._viewport.renderedRangeStream.pipe(J(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 o=t.start-this._renderedRange.start,r=t.end-t.start,s,a;for(let h=0;h<r;h++){let c=this._viewContainerRef.get(h+o);if(c&&c.rootNodes.length){s=a=c.rootNodes[0];break}}for(let h=r-1;h>-1;h--){let c=this._viewContainerRef.get(h+o);if(c&&c.rootNodes.length){a=c.rootNodes[c.rootNodes.length-1];break}}return s&&a?Se(e,"end",a)-Se(e,"start",s):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):wt()}_updateContext(){let t=this._data.length,e=this._viewContainerRef.length;for(;e--;){let o=this._viewContainerRef.get(e);o.context.index=this._renderedRange.start+e,o.context.count=t,this._updateComputedContextProperties(o.context),o.detectChanges()}}_applyChanges(t){this._viewRepeater.applyChanges(t,this._viewContainerRef,(r,s,a)=>this._getEmbeddedViewArgs(r,a),r=>r.item),t.forEachIdentityChange(r=>{let s=this._viewContainerRef.get(r.currentIndex);s.context.$implicit=r.item});let e=this._data.length,o=this._viewContainerRef.length;for(;o--;){let r=this._viewContainerRef.get(o);r.context.index=this._renderedRange.start+o,r.context.count=e,this._updateComputedContextProperties(r.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||n)};static \u0275dir=w({type:n,selectors:[["","cdkVirtualFor","","cdkVirtualForOf",""]],inputs:{cdkVirtualForOf:"cdkVirtualForOf",cdkVirtualForTrackBy:"cdkVirtualForTrackBy",cdkVirtualForTemplate:"cdkVirtualForTemplate",cdkVirtualForTemplateCacheSize:"cdkVirtualForTemplateCacheSize"},features:[j([{provide:Ot,useClass:be}])]})}return n})();var Et=(()=>{class n{static \u0275fac=function(e){return new(e||n)};static \u0275mod=B({type:n});static \u0275inj=D({})}return n})(),Pt=(()=>{class n{static \u0275fac=function(e){return new(e||n)};static \u0275mod=B({type:n});static \u0275inj=D({imports:[X,Et,X,Et]})}return n})();var G=class{_attachedHost;attach(i){return this._attachedHost=i,i.attach(this)}detach(){let i=this._attachedHost;i!=null&&(this._attachedHost=null,i.detach())}get isAttached(){return this._attachedHost!=null}setAttachedHost(i){this._attachedHost=i}},Mt=class extends G{component;viewContainerRef;injector;projectableNodes;constructor(i,t,e,o){super(),this.component=i,this.viewContainerRef=t,this.injector=e,this.projectableNodes=o}},N=class extends G{templateRef;viewContainerRef;context;injector;constructor(i,t,e,o){super(),this.templateRef=i,this.viewContainerRef=t,this.context=e,this.injector=o}get origin(){return this.templateRef.elementRef}attach(i,t=this.context){return this.context=t,super.attach(i)}detach(){return this.context=void 0,super.detach()}},Bt=class extends G{element;constructor(i){super(),this.element=i instanceof k?i.nativeElement:i}},ht=class{_attachedPortal;_disposeFn;_isDisposed=!1;hasAttached(){return!!this._attachedPortal}attach(i){if(i instanceof Mt)return this._attachedPortal=i,this.attachComponentPortal(i);if(i instanceof N)return this._attachedPortal=i,this.attachTemplatePortal(i);if(this.attachDomPortal&&i instanceof Bt)return this._attachedPortal=i,this.attachDomPortal(i)}attachDomPortal=null;detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(i){this._disposeFn=i}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}},ct=class extends ht{outletElement;_appRef;_defaultInjector;constructor(i,t,e){super(),this.outletElement=i,this._appRef=t,this._defaultInjector=e}attachComponentPortal(i){let t;if(i.viewContainerRef){let e=i.injector||i.viewContainerRef.injector,o=e.get(Ct,null,{optional:!0})||void 0;t=i.viewContainerRef.createComponent(i.component,{index:i.viewContainerRef.length,injector:e,ngModuleRef:o,projectableNodes:i.projectableNodes||void 0}),this.setDisposeFn(()=>t.destroy())}else{let e=this._appRef,o=i.injector||this._defaultInjector||y.NULL,r=o.get(tt,e.injector);t=pe(i.component,{elementInjector:o,environmentInjector:r,projectableNodes:i.projectableNodes||void 0}),e.attachView(t.hostView),this.setDisposeFn(()=>{e.viewCount>0&&e.detachView(t.hostView),t.destroy()})}return this.outletElement.appendChild(this._getComponentRootNode(t)),this._attachedPortal=i,t}attachTemplatePortal(i){let t=i.viewContainerRef,e=t.createEmbeddedView(i.templateRef,i.context,{injector:i.injector});return e.rootNodes.forEach(o=>this.outletElement.appendChild(o)),e.detectChanges(),this.setDisposeFn(()=>{let o=t.indexOf(e);o!==-1&&t.remove(o)}),this._attachedPortal=i,e}attachDomPortal=i=>{let t=i.element;t.parentNode;let e=this.outletElement.ownerDocument.createComment("dom-portal");t.parentNode.insertBefore(e,t),this.outletElement.appendChild(t),this._attachedPortal=i,super.setDisposeFn(()=>{e.parentNode&&e.parentNode.replaceChild(t,e)})};dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(i){return i.hostView.rootNodes[0]}},Vi=(()=>{class n extends N{constructor(){let t=l(V),e=l(M);super(t,e)}static \u0275fac=function(e){return new(e||n)};static \u0275dir=w({type:n,selectors:[["","cdkPortal",""]],exportAs:["cdkPortal"],features:[T]})}return n})();var Ti=(()=>{class n extends ht{_moduleRef=l(Ct,{optional:!0});_document=l(C);_viewContainerRef=l(M);_isInitialized=!1;_attachedRef;constructor(){super()}get portal(){return this._attachedPortal}set portal(t){this.hasAttached()&&!t&&!this._isInitialized||(this.hasAttached()&&super.detach(),t&&super.attach(t),this._attachedPortal=t||null)}attached=new O;get attachedRef(){return this._attachedRef}ngOnInit(){this._isInitialized=!0}ngOnDestroy(){super.dispose(),this._attachedRef=this._attachedPortal=null}attachComponentPortal(t){t.setAttachedHost(this);let e=t.viewContainerRef!=null?t.viewContainerRef:this._viewContainerRef,o=e.createComponent(t.component,{index:e.length,injector:t.injector||e.injector,projectableNodes:t.projectableNodes||void 0,ngModuleRef:this._moduleRef||void 0});return e!==this._viewContainerRef&&this._getRootNode().appendChild(o.hostView.rootNodes[0]),super.setDisposeFn(()=>o.destroy()),this._attachedPortal=t,this._attachedRef=o,this.attached.emit(o),o}attachTemplatePortal(t){t.setAttachedHost(this);let e=this._viewContainerRef.createEmbeddedView(t.templateRef,t.context,{injector:t.injector});return super.setDisposeFn(()=>this._viewContainerRef.clear()),this._attachedPortal=t,this._attachedRef=e,this.attached.emit(e),e}attachDomPortal=t=>{let e=t.element;e.parentNode;let o=this._document.createComment("dom-portal");t.setAttachedHost(this),e.parentNode.insertBefore(o,e),this._getRootNode().appendChild(e),this._attachedPortal=t,super.setDisposeFn(()=>{o.parentNode&&o.parentNode.replaceChild(e,o)})};_getRootNode(){let t=this._viewContainerRef.element.nativeElement;return t.nodeType===t.ELEMENT_NODE?t:t.parentNode}static \u0275fac=function(e){return new(e||n)};static \u0275dir=w({type:n,selectors:[["","cdkPortalOutlet",""]],inputs:{portal:[0,"cdkPortalOutlet","portal"]},outputs:{attached:"attached"},exportAs:["cdkPortalOutlet"],features:[T]})}return n})();var xe=(()=>{class n{static \u0275fac=function(e){return new(e||n)};static \u0275mod=B({type:n});static \u0275inj=D({})}return n})();var Ee=lt();function Ve(n){return new dt(n.get(F),n.get(C))}var dt=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,o=t.style,r=e.scrollBehavior||"",s=o.scrollBehavior||"";this._isEnabled=!1,e.left=this._previousHTMLStyles.left,e.top=this._previousHTMLStyles.top,i.classList.remove("cdk-global-scrollblock"),Ee&&(e.scrollBehavior=o.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),Ee&&(e.scrollBehavior=r,o.scrollBehavior=s)}}_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 Te(n,i){return new ft(n.get(Z),n.get(m),n.get(F),i)}var ft=class{_scrollDispatcher;_ngZone;_viewportRuler;_config;_scrollSubscription=null;_overlayRef;_initialScrollPosition;constructor(i,t,e,o){this._scrollDispatcher=i,this._ngZone=t,this._viewportRuler=e,this._config=o}attach(i){this._overlayRef,this._overlayRef=i}enable(){if(this._scrollSubscription)return;let i=this._scrollDispatcher.scrolled(0).pipe(q(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 U=class{enable(){}disable(){}attach(){}};function Ft(n,i){return i.some(t=>{let e=n.bottom<t.top,o=n.top>t.bottom,r=n.right<t.left,s=n.left>t.right;return e||o||r||s})}function De(n,i){return i.some(t=>{let e=n.top<t.top,o=n.bottom>t.bottom,r=n.left<t.left,s=n.right>t.right;return e||o||r||s})}function vt(n,i){return new ut(n.get(Z),n.get(F),n.get(m),i)}var ut=class{_scrollDispatcher;_viewportRuler;_ngZone;_config;_scrollSubscription=null;_overlayRef;constructor(i,t,e,o){this._scrollDispatcher=i,this._viewportRuler=t,this._ngZone=e,this._config=o}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:o}=this._viewportRuler.getViewportSize();Ft(t,[{width:e,height:o,bottom:o,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}},Ie=(()=>{class n{_injector=l(y);constructor(){}noop=()=>new U;close=t=>Te(this._injector,t);block=()=>Ve(this._injector);reposition=t=>vt(this._injector,t);static \u0275fac=function(e){return new(e||n)};static \u0275prov=v({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})(),$=class{positionStrategy;scrollStrategy=new U;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 pt=class{connectionPair;scrollableViewProperties;constructor(i,t){this.connectionPair=i,this.scrollableViewProperties=t}};var ze=(()=>{class n{_attachedOverlays=[];_document=l(C);_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||n)};static \u0275prov=v({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})(),Ne=(()=>{class n extends ze{_ngZone=l(m);_renderer=l(P).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 o=e.length-1;o>-1;o--)if(e[o]._keydownEvents.observers.length>0){this._ngZone.run(()=>e[o]._keydownEvents.next(t));break}};static \u0275fac=(()=>{let t;return function(o){return(t||(t=ot(n)))(o||n)}})();static \u0275prov=v({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})(),Le=(()=>{class n extends ze{_platform=l(E);_ngZone=l(m);_renderer=l(P).createRenderer(null,null);_cursorOriginalValue;_cursorStyleIsSet=!1;_pointerDownEventTarget;_cleanups;add(t){if(super.add(t),!this._isAttached){let e=this._document.body,o={capture:!0},r=this._renderer;this._cleanups=this._ngZone.runOutsideAngular(()=>[r.listen(e,"pointerdown",this._pointerDownListener,o),r.listen(e,"click",this._clickListener,o),r.listen(e,"auxclick",this._clickListener,o),r.listen(e,"contextmenu",this._clickListener,o)]),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=at(t)};_clickListener=t=>{let e=at(t),o=t.type==="click"&&this._pointerDownEventTarget?this._pointerDownEventTarget:e;this._pointerDownEventTarget=null;let r=this._attachedOverlays.slice();for(let s=r.length-1;s>-1;s--){let a=r[s];if(a._outsidePointerEvents.observers.length<1||!a.hasAttached())continue;if(Pe(a.overlayElement,e)||Pe(a.overlayElement,o))break;let h=a._outsidePointerEvents;this._ngZone?this._ngZone.run(()=>h.next(t)):h.next(t)}};static \u0275fac=(()=>{let t;return function(o){return(t||(t=ot(n)))(o||n)}})();static \u0275prov=v({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();function Pe(n,i){let t=typeof ShadowRoot<"u"&&ShadowRoot,e=i;for(;e;){if(e===n)return!0;e=t&&e instanceof ShadowRoot?e.host:e.parentNode}return!1}var Ye=(()=>{class n{static \u0275fac=function(e){return new(e||n)};static \u0275cmp=rt({type:n,selectors:[["ng-component"]],hostAttrs:["cdk-overlay-style-loader",""],decls:0,vars:0,template:function(e,o){},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 n})(),je=(()=>{class n{_platform=l(E);_containerElement;_document=l(C);_styleLoader=l(St);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||kt()){let o=this._document.querySelectorAll(`.${t}[platform="server"], .${t}[platform="test"]`);for(let r=0;r<o.length;r++)o[r].remove()}let e=this._document.createElement("div");e.classList.add(t),kt()?e.setAttribute("platform","test"):this._platform.isBrowser||e.setAttribute("platform","server"),this._document.body.appendChild(e),this._containerElement=e}_loadStyles(){this._styleLoader.load(Ye)}static \u0275fac=function(e){return new(e||n)};static \u0275prov=v({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})(),At=class{_renderer;_ngZone;element;_cleanupClick;_cleanupTransitionEnd;_fallbackTimeout;constructor(i,t,e,o){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",o)}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()}},_t=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=R.EMPTY;_backdropRef=null;_detachContentMutationObserver;_detachContentAfterRenderRef;_previousHostParent;_keydownEvents=new p;_outsidePointerEvents=new p;_afterNextRenderRef;constructor(i,t,e,o,r,s,a,h,c,d=!1,f,S){this._portalOutlet=i,this._host=t,this._pane=e,this._config=o,this._ngZone=r,this._keyboardDispatcher=s,this._document=a,this._location=h,this._outsideClickDispatcher=c,this._animationsDisabled=d,this._injector=f,this._renderer=S,o.scrollStrategy&&(this._scrollStrategy=o.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=o.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=Y(()=>{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=K(K({},this._config),i),this._updateElementSize()}setDirection(i){this._config=Nt(K({},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 At(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 o=Rt(t||[]).filter(r=>!!r);o.length&&(e?i.classList.add(...o):i.classList.remove(...o))}_detachContentWhenEmpty(){let i=!1;try{this._detachContentAfterRenderRef=Y(()=>{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?.()}},Me="cdk-overlay-connected-position-bounding-box",oi=/([A-Za-z%]+)$/;function Tt(n,i){return new gt(i,n.get(F),n.get(C),n.get(E),n.get(je))}var gt=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=R.EMPTY;_offsetX=0;_offsetY=0;_transformOriginSelector;_appliedPanelClasses=[];_previousPushAmount;positionChanges=this._positionChanges;get positions(){return this._preferredPositions}constructor(i,t,e,o,r){this._viewportRuler=t,this._document=e,this._platform=o,this._overlayContainer=r,this.setOrigin(i)}attach(i){this._overlayRef&&this._overlayRef,this._validatePositions(),i.hostElement.classList.add(Me),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,o=this._containerRect,r=[],s;for(let a of this._preferredPositions){let h=this._getOriginPoint(i,o,a),c=this._getOverlayPoint(h,t,a),d=this._getOverlayFit(c,t,e,a);if(d.isCompletelyWithinViewport){this._isPushed=!1,this._applyPosition(a,h);return}if(this._canFitWithFlexibleDimensions(d,c,e)){r.push({position:a,origin:h,overlayRect:t,boundingBoxRect:this._calculateBoundingBoxRect(h,a)});continue}(!s||s.overlayFit.visibleArea<d.visibleArea)&&(s={overlayFit:d,overlayPoint:c,originPoint:h,position:a,overlayRect:t})}if(r.length){let a=null,h=-1;for(let c of r){let d=c.boundingBoxRect.width*c.boundingBoxRect.height*(c.position.weight||1);d>h&&(h=d,a=c)}this._isPushed=!1,this._applyPosition(a.position,a.origin);return}if(this._canPush){this._isPushed=!0,this._applyPosition(s.position,s.originPoint);return}this._applyPosition(s.position,s.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&A(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(Me),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 o;if(e.originX=="center")o=i.left+i.width/2;else{let s=this._isRtl()?i.right:i.left,a=this._isRtl()?i.left:i.right;o=e.originX=="start"?s:a}t.left<0&&(o-=t.left);let r;return e.originY=="center"?r=i.top+i.height/2:r=e.originY=="top"?i.top:i.bottom,t.top<0&&(r-=t.top),{x:o,y:r}}_getOverlayPoint(i,t,e){let o;e.overlayX=="center"?o=-t.width/2:e.overlayX==="start"?o=this._isRtl()?-t.width:0:o=this._isRtl()?0:-t.width;let r;return e.overlayY=="center"?r=-t.height/2:r=e.overlayY=="top"?0:-t.height,{x:i.x+o,y:i.y+r}}_getOverlayFit(i,t,e,o){let r=Fe(t),{x:s,y:a}=i,h=this._getOffset(o,"x"),c=this._getOffset(o,"y");h&&(s+=h),c&&(a+=c);let d=0-s,f=s+r.width-e.width,S=0-a,g=a+r.height-e.height,_=this._subtractOverflows(r.width,d,f),b=this._subtractOverflows(r.height,S,g),zt=_*b;return{visibleArea:zt,isCompletelyWithinViewport:r.width*r.height===zt,fitsInViewportVertically:b===r.height,fitsInViewportHorizontally:_==r.width}}_canFitWithFlexibleDimensions(i,t,e){if(this._hasFlexibleDimensions){let o=e.bottom-t.y,r=e.right-t.x,s=Be(this._overlayRef.getConfig().minHeight),a=Be(this._overlayRef.getConfig().minWidth),h=i.fitsInViewportVertically||s!=null&&s<=o,c=i.fitsInViewportHorizontally||a!=null&&a<=r;return h&&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 o=Fe(t),r=this._viewportRect,s=Math.max(i.x+o.width-r.width,0),a=Math.max(i.y+o.height-r.height,0),h=Math.max(r.top-e.top-i.y,0),c=Math.max(r.left-e.left-i.x,0),d=0,f=0;return o.width<=r.width?d=c||-s:d=i.x<this._viewportMargin?r.left-e.left-i.x:0,o.height<=r.height?f=h||-a:f=i.y<this._viewportMargin?r.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||!ni(this._lastScrollVisibility,e)){let o=new pt(i,e);this._positionChanges.next(o)}this._lastScrollVisibility=e}this._lastPosition=i,this._isInitialRender=!1}_setTransformOrigin(i){if(!this._transformOriginSelector)return;let t=this._boundingBox.querySelectorAll(this._transformOriginSelector),e,o=i.overlayY;i.overlayX==="center"?e="center":this._isRtl()?e=i.overlayX==="start"?"right":"left":e=i.overlayX==="start"?"left":"right";for(let r=0;r<t.length;r++)t[r].style.transformOrigin=`${e} ${o}`}_calculateBoundingBoxRect(i,t){let e=this._viewportRect,o=this._isRtl(),r,s,a;if(t.overlayY==="top")s=i.y,r=e.height-s+this._viewportMargin;else if(t.overlayY==="bottom")a=e.height-i.y+this._viewportMargin*2,r=e.height-a+this._viewportMargin;else{let g=Math.min(e.bottom-i.y+e.top,i.y),_=this._lastBoundingBoxSize.height;r=g*2,s=i.y-g,r>_&&!this._isInitialRender&&!this._growAfterOpen&&(s=i.y-_/2)}let h=t.overlayX==="start"&&!o||t.overlayX==="end"&&o,c=t.overlayX==="end"&&!o||t.overlayX==="start"&&o,d,f,S;if(c)S=e.width-i.x+this._viewportMargin*2,d=i.x-this._viewportMargin;else if(h)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:s,left:f,bottom:a,right:S,width:d,height:r}}_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 o={};if(this._hasExactPosition())o.top=o.left="0",o.bottom=o.right=o.maxHeight=o.maxWidth="",o.width=o.height="100%";else{let r=this._overlayRef.getConfig().maxHeight,s=this._overlayRef.getConfig().maxWidth;o.height=u(e.height),o.top=u(e.top),o.bottom=u(e.bottom),o.width=u(e.width),o.left=u(e.left),o.right=u(e.right),t.overlayX==="center"?o.alignItems="center":o.alignItems=t.overlayX==="end"?"flex-end":"flex-start",t.overlayY==="center"?o.justifyContent="center":o.justifyContent=t.overlayY==="bottom"?"flex-end":"flex-start",r&&(o.maxHeight=u(r)),s&&(o.maxWidth=u(s))}this._lastBoundingBoxSize=e,A(this._boundingBox.style,o)}_resetBoundingBoxStyles(){A(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){A(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(i,t){let e={},o=this._hasExactPosition(),r=this._hasFlexibleDimensions,s=this._overlayRef.getConfig();if(o){let d=this._viewportRuler.getViewportScrollPosition();A(e,this._getExactOverlayY(t,i,d)),A(e,this._getExactOverlayX(t,i,d))}else e.position="static";let a="",h=this._getOffset(t,"x"),c=this._getOffset(t,"y");h&&(a+=`translateX(${h}px) `),c&&(a+=`translateY(${c}px)`),e.transform=a.trim(),s.maxHeight&&(o?e.maxHeight=u(s.maxHeight):r&&(e.maxHeight="")),s.maxWidth&&(o?e.maxWidth=u(s.maxWidth):r&&(e.maxWidth="")),A(this._pane.style,e)}_getExactOverlayY(i,t,e){let o={top:"",bottom:""},r=this._getOverlayPoint(t,this._overlayRect,i);if(this._isPushed&&(r=this._pushOverlayOnScreen(r,this._overlayRect,e)),i.overlayY==="bottom"){let s=this._document.documentElement.clientHeight;o.bottom=`${s-(r.y+this._overlayRect.height)}px`}else o.top=u(r.y);return o}_getExactOverlayX(i,t,e){let o={left:"",right:""},r=this._getOverlayPoint(t,this._overlayRect,i);this._isPushed&&(r=this._pushOverlayOnScreen(r,this._overlayRect,e));let s;if(this._isRtl()?s=i.overlayX==="end"?"left":"right":s=i.overlayX==="end"?"right":"left",s==="right"){let a=this._document.documentElement.clientWidth;o.right=`${a-(r.x+this._overlayRect.width)}px`}else o.left=u(r.x);return o}_getScrollVisibility(){let i=this._getOriginRect(),t=this._pane.getBoundingClientRect(),e=this._scrollables.map(o=>o.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:De(i,e),isOriginOutsideView:Ft(i,e),isOverlayClipped:De(t,e),isOverlayOutsideView:Ft(t,e)}}_subtractOverflows(i,...t){return t.reduce((e,o)=>e-Math.max(o,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&&Rt(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 k)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 A(n,i){for(let t in i)i.hasOwnProperty(t)&&(n[t]=i[t]);return n}function Be(n){if(typeof n!="number"&&n!=null){let[i,t]=n.split(oi);return!t||t==="px"?parseFloat(i):null}return n||null}function Fe(n){return{top:Math.floor(n.top),right:Math.floor(n.right),bottom:Math.floor(n.bottom),left:Math.floor(n.left),width:Math.floor(n.width),height:Math.floor(n.height)}}function ni(n,i){return n===i?!0:n.isOriginClipped===i.isOriginClipped&&n.isOriginOutsideView===i.isOriginOutsideView&&n.isOverlayClipped===i.isOverlayClipped&&n.isOverlayOutsideView===i.isOverlayOutsideView}var Ae="cdk-global-overlay-wrapper";function He(n){return new mt}var mt=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(Ae),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:o,height:r,maxWidth:s,maxHeight:a}=e,h=(o==="100%"||o==="100vw")&&(!s||s==="100%"||s==="100vw"),c=(r==="100%"||r==="100vh")&&(!a||a==="100%"||a==="100vh"),d=this._xPosition,f=this._xOffset,S=this._overlayRef.getConfig().direction==="rtl",g="",_="",b="";h?b="flex-start":d==="center"?(b="center",S?_=f:g=f):S?d==="left"||d==="end"?(b="flex-end",g=f):(d==="right"||d==="start")&&(b="flex-start",_=f):d==="left"||d==="start"?(b="flex-start",g=f):(d==="right"||d==="end")&&(b="flex-end",_=f),i.position=this._cssPosition,i.marginLeft=h?"0":g,i.marginTop=c?"0":this._topOffset,i.marginBottom=this._bottomOffset,i.marginRight=h?"0":_,t.justifyContent=b,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(Ae),e.justifyContent=e.alignItems=i.marginTop=i.marginBottom=i.marginLeft=i.marginRight=i.position="",this._overlayRef=null,this._isDisposed=!0}},We=(()=>{class n{_injector=l(y);constructor(){}global(){return He()}flexibleConnectedTo(t){return Tt(this._injector,t)}static \u0275fac=function(e){return new(e||n)};static \u0275prov=v({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();function It(n,i){n.get(St).load(Ye);let t=n.get(je),e=n.get(C),o=n.get(me),r=n.get(st),s=n.get(W),a=e.createElement("div"),h=e.createElement("div");h.id=o.getId("cdk-overlay-"),h.classList.add("cdk-overlay-pane"),a.appendChild(h),t.getContainerElement().appendChild(a);let c=new ct(h,r,n),d=new $(i),f=n.get(nt,null,{optional:!0})||n.get(P).createRenderer(null,null);return d.direction=d.direction||s.value,new _t(c,a,h,d,n.get(m),n.get(Ne),e,n.get(_e),n.get(Le),i?.disableAnimations??n.get(Qt,null,{optional:!0})==="NoopAnimations",n.get(tt),f)}var Xe=(()=>{class n{scrollStrategies=l(Ie);_positionBuilder=l(We);_injector=l(y);constructor(){}create(t){return It(this._injector,t)}position(){return this._positionBuilder}static \u0275fac=function(e){return new(e||n)};static \u0275prov=v({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})(),ri=[{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"}],Ze=new L("cdk-connected-overlay-scroll-strategy",{providedIn:"root",factory:()=>{let n=l(y);return()=>vt(n)}}),Vt=(()=>{class n{elementRef=l(k);constructor(){}static \u0275fac=function(e){return new(e||n)};static \u0275dir=w({type:n,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"]})}return n})(),si=(()=>{class n{_dir=l(W,{optional:!0});_injector=l(y);_overlayRef;_templatePortal;_backdropSubscription=R.EMPTY;_attachSubscription=R.EMPTY;_detachSubscription=R.EMPTY;_positionSubscription=R.EMPTY;_offsetX;_offsetY;_position;_scrollStrategyFactory=l(Ze);_disposeOnNavigation=!1;_ngZone=l(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 O;positionChange=new O;attach=new O;detach=new O;overlayKeydown=new O;overlayOutsideClick=new O;constructor(){let t=l(V),e=l(M);this._templatePortal=new N(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=ri);let t=this._overlayRef=It(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&&!ve(e)&&(e.preventDefault(),this.detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(e=>{let o=this._getOriginElement(),r=at(e);(!o||o!==r&&!o.contains(r))&&this.overlayOutsideClick.next(e)})}_buildConfig(){let t=this._position=this.positionStrategy||this._createPositionStrategy(),e=new $({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(o=>({originX:o.originX,originY:o.originY,overlayX:o.overlayX,overlayY:o.overlayY,offsetX:o.offsetX||this.offsetX,offsetY:o.offsetY||this.offsetY,panelClass:o.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=Tt(this._injector,this._getOrigin());return this._updatePositionStrategy(t),t}_getOrigin(){return this.origin instanceof Vt?this.origin.elementRef:this.origin}_getOriginElement(){return this.origin instanceof Vt?this.origin.elementRef.nativeElement:this.origin instanceof k?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(Gt(()=>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||n)};static \u0275dir=w({type:n,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",x],lockPosition:[2,"cdkConnectedOverlayLockPosition","lockPosition",x],flexibleDimensions:[2,"cdkConnectedOverlayFlexibleDimensions","flexibleDimensions",x],growAfterOpen:[2,"cdkConnectedOverlayGrowAfterOpen","growAfterOpen",x],push:[2,"cdkConnectedOverlayPush","push",x],disposeOnNavigation:[2,"cdkConnectedOverlayDisposeOnNavigation","disposeOnNavigation",x]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],features:[it]})}return n})();function ai(n){let i=l(y);return()=>vt(i)}var li={provide:Ze,useFactory:ai},hi=(()=>{class n{static \u0275fac=function(e){return new(e||n)};static \u0275mod=B({type:n});static \u0275inj=D({providers:[Xe,li],imports:[X,xe,Pt,Pt]})}return n})();export{Ke as a,Z as b,Dt as c,F as d,Oe as e,ii as f,Et as g,Pt as h,Mt as i,N as j,ht as k,Vi as l,Ti as m,xe as n,Ve as o,vt as p,$ as q,je as r,_t as s,Tt as t,He as u,It as v,Vt as w,si as x,hi as y};
|