getkova 2026.4.21 → 2026.4.22
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/dist/control-ui/apple-touch-icon.png +0 -0
- package/dist/control-ui/assets/agents-CLtFQRXd.js +918 -0
- package/dist/control-ui/assets/agents-CLtFQRXd.js.map +1 -0
- package/dist/control-ui/assets/anthropic-CFEPAL-v.js +37 -0
- package/dist/control-ui/assets/anthropic-CFEPAL-v.js.map +1 -0
- package/dist/control-ui/assets/azure-openai-responses-CxiWQLmZ.js +2 -0
- package/dist/control-ui/assets/azure-openai-responses-CxiWQLmZ.js.map +1 -0
- package/dist/control-ui/assets/briefing-DS4VWpUL.js +121 -0
- package/dist/control-ui/assets/briefing-DS4VWpUL.js.map +1 -0
- package/dist/control-ui/assets/canvas-BfC_2Nqy.js +17 -0
- package/dist/control-ui/assets/canvas-BfC_2Nqy.js.map +1 -0
- package/dist/control-ui/assets/channel-config-extras-YNNd-4PG.js +2 -0
- package/dist/control-ui/assets/channel-config-extras-YNNd-4PG.js.map +1 -0
- package/dist/control-ui/assets/channels-BKdM7i5r.js +471 -0
- package/dist/control-ui/assets/channels-BKdM7i5r.js.map +1 -0
- package/dist/control-ui/assets/cron-C11m3yJi.js +928 -0
- package/dist/control-ui/assets/cron-C11m3yJi.js.map +1 -0
- package/dist/control-ui/assets/de-rLAkQOBc.js +2 -0
- package/dist/control-ui/assets/de-rLAkQOBc.js.map +1 -0
- package/dist/control-ui/assets/debug-DFf2qCcM.js +94 -0
- package/dist/control-ui/assets/debug-DFf2qCcM.js.map +1 -0
- package/dist/control-ui/assets/dist-D8DZLmCF.js +18 -0
- package/dist/control-ui/assets/dist-D8DZLmCF.js.map +1 -0
- package/dist/control-ui/assets/employees-DV-5FV4K.js +104 -0
- package/dist/control-ui/assets/employees-DV-5FV4K.js.map +1 -0
- package/dist/control-ui/assets/es-CIeD3O54.js +2 -0
- package/dist/control-ui/assets/es-CIeD3O54.js.map +1 -0
- package/dist/control-ui/assets/event-stream-B8X6sYaV.js +2 -0
- package/dist/control-ui/assets/event-stream-B8X6sYaV.js.map +1 -0
- package/dist/control-ui/assets/format-BahKhiOC.js +2 -0
- package/dist/control-ui/assets/format-BahKhiOC.js.map +1 -0
- package/dist/control-ui/assets/github-copilot-headers-CrI0CIJ7.js +2 -0
- package/dist/control-ui/assets/github-copilot-headers-CrI0CIJ7.js.map +1 -0
- package/dist/control-ui/assets/google-BT0bmsh5.js +2 -0
- package/dist/control-ui/assets/google-BT0bmsh5.js.map +1 -0
- package/dist/control-ui/assets/google-gemini-cli-BpxbH95Q.js +3 -0
- package/dist/control-ui/assets/google-gemini-cli-BpxbH95Q.js.map +1 -0
- package/dist/control-ui/assets/google-shared-CbPHVnPr.js +12 -0
- package/dist/control-ui/assets/google-shared-CbPHVnPr.js.map +1 -0
- package/dist/control-ui/assets/google-vertex-lQwbjEII.js +2 -0
- package/dist/control-ui/assets/google-vertex-lQwbjEII.js.map +1 -0
- package/dist/control-ui/assets/hash-Bt1aVMQ3.js +2 -0
- package/dist/control-ui/assets/hash-Bt1aVMQ3.js.map +1 -0
- package/dist/control-ui/assets/inbox-C4tOnlJr.js +100 -0
- package/dist/control-ui/assets/inbox-C4tOnlJr.js.map +1 -0
- package/dist/control-ui/assets/index-DYMuTfvX.css +1 -0
- package/dist/control-ui/assets/index-XGDpaFxG.js +5482 -0
- package/dist/control-ui/assets/index-XGDpaFxG.js.map +1 -0
- package/dist/control-ui/assets/instances-Cyr-tbN6.js +57 -0
- package/dist/control-ui/assets/instances-Cyr-tbN6.js.map +1 -0
- package/dist/control-ui/assets/kova-logo.png +0 -0
- package/dist/control-ui/assets/lit-zdTgzAJI.js +3 -0
- package/dist/control-ui/assets/lit-zdTgzAJI.js.map +1 -0
- package/dist/control-ui/assets/local-storage-D3baoRWx.js +2 -0
- package/dist/control-ui/assets/local-storage-D3baoRWx.js.map +1 -0
- package/dist/control-ui/assets/logs-B7--7dYP.js +74 -0
- package/dist/control-ui/assets/logs-B7--7dYP.js.map +1 -0
- package/dist/control-ui/assets/meetings-DSqn6s7n.js +185 -0
- package/dist/control-ui/assets/meetings-DSqn6s7n.js.map +1 -0
- package/dist/control-ui/assets/mistral-CBrDC_Gv.js +8 -0
- package/dist/control-ui/assets/mistral-CBrDC_Gv.js.map +1 -0
- package/dist/control-ui/assets/nodes-Cvq_sAqT.js +430 -0
- package/dist/control-ui/assets/nodes-Cvq_sAqT.js.map +1 -0
- package/dist/control-ui/assets/openai-Cn7eGqwa.js +17 -0
- package/dist/control-ui/assets/openai-Cn7eGqwa.js.map +1 -0
- package/dist/control-ui/assets/openai-codex-responses-DuhESMYF.js +8 -0
- package/dist/control-ui/assets/openai-codex-responses-DuhESMYF.js.map +1 -0
- package/dist/control-ui/assets/openai-completions-Bv33lqKL.js +6 -0
- package/dist/control-ui/assets/openai-completions-Bv33lqKL.js.map +1 -0
- package/dist/control-ui/assets/openai-responses-BPxpapOg.js +2 -0
- package/dist/control-ui/assets/openai-responses-BPxpapOg.js.map +1 -0
- package/dist/control-ui/assets/openai-responses-shared-8nKH8ywL.js +11 -0
- package/dist/control-ui/assets/openai-responses-shared-8nKH8ywL.js.map +1 -0
- package/dist/control-ui/assets/pdf-BwYFZMZM.js +57 -0
- package/dist/control-ui/assets/pdf-BwYFZMZM.js.map +1 -0
- package/dist/control-ui/assets/pdf.worker.min-BmpgcBpm.js +2 -0
- package/dist/control-ui/assets/pdf.worker.min-BmpgcBpm.js.map +1 -0
- package/dist/control-ui/assets/pdf.worker.min-C8PGFc0r.mjs +28 -0
- package/dist/control-ui/assets/preload-helper-Chd9yIcd.js +1 -0
- package/dist/control-ui/assets/pt-BR-lSsBb08k.js +2 -0
- package/dist/control-ui/assets/pt-BR-lSsBb08k.js.map +1 -0
- package/dist/control-ui/assets/routing-DizI_FiJ.js +157 -0
- package/dist/control-ui/assets/routing-DizI_FiJ.js.map +1 -0
- package/dist/control-ui/assets/sessions-N9rgJP2R.js +236 -0
- package/dist/control-ui/assets/sessions-N9rgJP2R.js.map +1 -0
- package/dist/control-ui/assets/skills-D1vP4MkL.js +280 -0
- package/dist/control-ui/assets/skills-D1vP4MkL.js.map +1 -0
- package/dist/control-ui/assets/skills-shared-Bg0Qcnkp.js +11 -0
- package/dist/control-ui/assets/skills-shared-Bg0Qcnkp.js.map +1 -0
- package/dist/control-ui/assets/transform-messages-XKqwKV3D.js +2 -0
- package/dist/control-ui/assets/transform-messages-XKqwKV3D.js.map +1 -0
- package/dist/control-ui/assets/zh-CN-C5tPG8Eu.js +2 -0
- package/dist/control-ui/assets/zh-CN-C5tPG8Eu.js.map +1 -0
- package/dist/control-ui/assets/zh-TW-CPSoC7Wz.js +2 -0
- package/dist/control-ui/assets/zh-TW-CPSoC7Wz.js.map +1 -0
- package/dist/control-ui/favicon-32.png +0 -0
- package/dist/control-ui/favicon.ico +0 -0
- package/dist/control-ui/favicon.png +0 -0
- package/dist/control-ui/favicon.svg +22 -0
- package/dist/control-ui/index.html +73 -0
- package/dist/control-ui/openclaw-canvas-auth-sw.js +57 -0
- package/package.json +1 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import{i as e,n as t}from"./lit-zdTgzAJI.js";import{I as n,s as r}from"./index-XGDpaFxG.js";var i=!1;function a(r){let a=!i;return e`
|
|
2
|
+
<section class="card">
|
|
3
|
+
<div class="row" style="justify-content: space-between;">
|
|
4
|
+
<div>
|
|
5
|
+
<div class="card-title">Connected Instances</div>
|
|
6
|
+
<div class="card-sub">Presence beacons from the gateway and clients.</div>
|
|
7
|
+
</div>
|
|
8
|
+
<div class="row" style="gap: 8px;">
|
|
9
|
+
<button
|
|
10
|
+
class="btn btn--icon ${a?``:`active`}"
|
|
11
|
+
@click=${()=>{i=!i,r.onRefresh()}}
|
|
12
|
+
title=${a?`Show hosts and IPs`:`Hide hosts and IPs`}
|
|
13
|
+
aria-label="Toggle host visibility"
|
|
14
|
+
aria-pressed=${!a}
|
|
15
|
+
style="width: 36px; height: 36px;"
|
|
16
|
+
>
|
|
17
|
+
${a?n.eyeOff:n.eye}
|
|
18
|
+
</button>
|
|
19
|
+
<button class="btn" ?disabled=${r.loading} @click=${r.onRefresh}>
|
|
20
|
+
${r.loading?`Loading…`:`Refresh`}
|
|
21
|
+
</button>
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
${r.lastError?e`<div class="callout danger" style="margin-top: 12px;">${r.lastError}</div>`:t}
|
|
25
|
+
${r.statusMessage?e`<div class="callout" style="margin-top: 12px;">${r.statusMessage}</div>`:t}
|
|
26
|
+
<div class="list" style="margin-top: 16px;">
|
|
27
|
+
${r.entries.length===0?e` <div class="muted">No instances reported yet.</div> `:r.entries.map(e=>o(e,a))}
|
|
28
|
+
</div>
|
|
29
|
+
</section>
|
|
30
|
+
`}function o(n,i){let a=n.lastInputSeconds==null?`n/a`:`${n.lastInputSeconds}s ago`,o=n.mode??`unknown`,s=n.host??`unknown host`,c=n.ip??null,l=Array.isArray(n.roles)?n.roles.filter(Boolean):[],u=Array.isArray(n.scopes)?n.scopes.filter(Boolean):[],d=u.length>0?u.length>3?`${u.length} scopes`:`scopes: ${u.join(`, `)}`:null;return e`
|
|
31
|
+
<div class="list-item">
|
|
32
|
+
<div class="list-main">
|
|
33
|
+
<div class="list-title">
|
|
34
|
+
<span class="${i?`redacted`:``}">${s}</span>
|
|
35
|
+
</div>
|
|
36
|
+
<div class="list-sub">
|
|
37
|
+
${c?e`<span class="${i?`redacted`:``}">${c}</span> `:t}${o}
|
|
38
|
+
${n.version??``}
|
|
39
|
+
</div>
|
|
40
|
+
<div class="chip-row">
|
|
41
|
+
<span class="chip">${o}</span>
|
|
42
|
+
${l.map(t=>e`<span class="chip">${t}</span>`)}
|
|
43
|
+
${d?e`<span class="chip">${d}</span>`:t}
|
|
44
|
+
${n.platform?e`<span class="chip">${n.platform}</span>`:t}
|
|
45
|
+
${n.deviceFamily?e`<span class="chip">${n.deviceFamily}</span>`:t}
|
|
46
|
+
${n.modelIdentifier?e`<span class="chip">${n.modelIdentifier}</span>`:t}
|
|
47
|
+
${n.version?e`<span class="chip">${n.version}</span>`:t}
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
<div class="list-meta">
|
|
51
|
+
<div>${r(n)}</div>
|
|
52
|
+
<div class="muted">Last input ${a}</div>
|
|
53
|
+
<div class="muted">Reason ${n.reason??``}</div>
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
`}export{a as renderInstances};
|
|
57
|
+
//# sourceMappingURL=instances-Cyr-tbN6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instances-Cyr-tbN6.js","names":[],"sources":["../../../ui/src/ui/views/instances.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { icons } from \"../icons.ts\";\nimport { formatPresenceAge } from \"../presenter.ts\";\nimport type { PresenceEntry } from \"../types.ts\";\n\nexport type InstancesProps = {\n loading: boolean;\n entries: PresenceEntry[];\n lastError: string | null;\n statusMessage: string | null;\n onRefresh: () => void;\n};\n\nlet hostsRevealed = false;\n\nexport function renderInstances(props: InstancesProps) {\n const masked = !hostsRevealed;\n\n return html`\n <section class=\"card\">\n <div class=\"row\" style=\"justify-content: space-between;\">\n <div>\n <div class=\"card-title\">Connected Instances</div>\n <div class=\"card-sub\">Presence beacons from the gateway and clients.</div>\n </div>\n <div class=\"row\" style=\"gap: 8px;\">\n <button\n class=\"btn btn--icon ${masked ? \"\" : \"active\"}\"\n @click=${() => {\n hostsRevealed = !hostsRevealed;\n props.onRefresh();\n }}\n title=${masked ? \"Show hosts and IPs\" : \"Hide hosts and IPs\"}\n aria-label=\"Toggle host visibility\"\n aria-pressed=${!masked}\n style=\"width: 36px; height: 36px;\"\n >\n ${masked ? icons.eyeOff : icons.eye}\n </button>\n <button class=\"btn\" ?disabled=${props.loading} @click=${props.onRefresh}>\n ${props.loading ? \"Loading…\" : \"Refresh\"}\n </button>\n </div>\n </div>\n ${props.lastError\n ? html`<div class=\"callout danger\" style=\"margin-top: 12px;\">${props.lastError}</div>`\n : nothing}\n ${props.statusMessage\n ? html`<div class=\"callout\" style=\"margin-top: 12px;\">${props.statusMessage}</div>`\n : nothing}\n <div class=\"list\" style=\"margin-top: 16px;\">\n ${props.entries.length === 0\n ? html` <div class=\"muted\">No instances reported yet.</div> `\n : props.entries.map((entry) => renderEntry(entry, masked))}\n </div>\n </section>\n `;\n}\n\nfunction renderEntry(entry: PresenceEntry, masked: boolean) {\n const lastInput = entry.lastInputSeconds != null ? `${entry.lastInputSeconds}s ago` : \"n/a\";\n const mode = entry.mode ?? \"unknown\";\n const host = entry.host ?? \"unknown host\";\n const ip = entry.ip ?? null;\n const roles = Array.isArray(entry.roles) ? entry.roles.filter(Boolean) : [];\n const scopes = Array.isArray(entry.scopes) ? entry.scopes.filter(Boolean) : [];\n const scopesLabel =\n scopes.length > 0\n ? scopes.length > 3\n ? `${scopes.length} scopes`\n : `scopes: ${scopes.join(\", \")}`\n : null;\n return html`\n <div class=\"list-item\">\n <div class=\"list-main\">\n <div class=\"list-title\">\n <span class=\"${masked ? \"redacted\" : \"\"}\">${host}</span>\n </div>\n <div class=\"list-sub\">\n ${ip ? html`<span class=\"${masked ? \"redacted\" : \"\"}\">${ip}</span> ` : nothing}${mode}\n ${entry.version ?? \"\"}\n </div>\n <div class=\"chip-row\">\n <span class=\"chip\">${mode}</span>\n ${roles.map((role) => html`<span class=\"chip\">${role}</span>`)}\n ${scopesLabel ? html`<span class=\"chip\">${scopesLabel}</span>` : nothing}\n ${entry.platform ? html`<span class=\"chip\">${entry.platform}</span>` : nothing}\n ${entry.deviceFamily ? html`<span class=\"chip\">${entry.deviceFamily}</span>` : nothing}\n ${entry.modelIdentifier\n ? html`<span class=\"chip\">${entry.modelIdentifier}</span>`\n : nothing}\n ${entry.version ? html`<span class=\"chip\">${entry.version}</span>` : nothing}\n </div>\n </div>\n <div class=\"list-meta\">\n <div>${formatPresenceAge(entry)}</div>\n <div class=\"muted\">Last input ${lastInput}</div>\n <div class=\"muted\">Reason ${entry.reason ?? \"\"}</div>\n </div>\n </div>\n `;\n}\n"],"mappings":"4FAaA,IAAI,EAAgB,GAEpB,SAAgB,EAAgB,EAAuB,CACrD,IAAM,EAAS,CAAC,EAEhB,MAAO,EAAI;;;;;;;;;mCASsB,EAAS,GAAK,SAAS;yBAC/B,CACb,EAAgB,CAAC,EACjB,EAAM,WAAW,EACjB;oBACM,EAAS,qBAAuB,qBAAqB;;2BAE9C,CAAC,EAAO;;;cAGrB,EAAS,EAAM,OAAS,EAAM,IAAI;;0CAEN,EAAM,QAAQ,UAAU,EAAM,UAAU;cACpE,EAAM,QAAU,WAAa,UAAU;;;;QAI7C,EAAM,UACJ,CAAI,yDAAyD,EAAM,UAAU,QAC7E,EAAQ;QACV,EAAM,cACJ,CAAI,kDAAkD,EAAM,cAAc,QAC1E,EAAQ;;UAER,EAAM,QAAQ,SAAW,EACvB,CAAI,wDACJ,EAAM,QAAQ,IAAK,GAAU,EAAY,EAAO,EAAO,CAAC,CAAC;;;IAMrE,SAAS,EAAY,EAAsB,EAAiB,CAC1D,IAAM,EAAY,EAAM,kBAAoB,KAA0C,MAAnC,GAAG,EAAM,iBAAiB,OACvE,EAAO,EAAM,MAAQ,UACrB,EAAO,EAAM,MAAQ,eACrB,EAAK,EAAM,IAAM,KACjB,EAAQ,MAAM,QAAQ,EAAM,MAAM,CAAG,EAAM,MAAM,OAAO,QAAQ,CAAG,EAAE,CACrE,EAAS,MAAM,QAAQ,EAAM,OAAO,CAAG,EAAM,OAAO,OAAO,QAAQ,CAAG,EAAE,CACxE,EACJ,EAAO,OAAS,EACZ,EAAO,OAAS,EACd,GAAG,EAAO,OAAO,SACjB,WAAW,EAAO,KAAK,KAAK,GAC9B,KACN,MAAO,EAAI;;;;yBAIY,EAAS,WAAa,GAAG,IAAI,EAAK;;;YAG/C,EAAK,CAAI,gBAAgB,EAAS,WAAa,GAAG,IAAI,EAAG,UAAY,IAAU,EAAK;YACpF,EAAM,SAAW,GAAG;;;+BAGD,EAAK;YACxB,EAAM,IAAK,GAAS,CAAI,sBAAsB,EAAK,SAAS,CAAC;YAC7D,EAAc,CAAI,sBAAsB,EAAY,SAAW,EAAQ;YACvE,EAAM,SAAW,CAAI,sBAAsB,EAAM,SAAS,SAAW,EAAQ;YAC7E,EAAM,aAAe,CAAI,sBAAsB,EAAM,aAAa,SAAW,EAAQ;YACrF,EAAM,gBACJ,CAAI,sBAAsB,EAAM,gBAAgB,SAChD,EAAQ;YACV,EAAM,QAAU,CAAI,sBAAsB,EAAM,QAAQ,SAAW,EAAQ;;;;eAIxE,EAAkB,EAAM,CAAC;wCACA,EAAU;oCACd,EAAM,QAAU,GAAG"}
|
|
Binary file
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
var e=globalThis,t=e.ShadowRoot&&(e.ShadyCSS===void 0||e.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,n=Symbol(),r=new WeakMap,i=class{constructor(e,t,r){if(this._$cssResult$=!0,r!==n)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,n=this.t;if(t&&e===void 0){let t=n!==void 0&&n.length===1;t&&(e=r.get(n)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),t&&r.set(n,e))}return e}toString(){return this.cssText}},a=e=>new i(typeof e==`string`?e:e+``,void 0,n),o=(e,...t)=>new i(e.length===1?e[0]:t.reduce((t,n,r)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if(typeof e==`number`)return e;throw Error(`Value passed to 'css' function must be a 'css' function result: `+e+`. Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.`)})(n)+e[r+1],e[0]),e,n),s=(n,r)=>{if(t)n.adoptedStyleSheets=r.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let t of r){let r=document.createElement(`style`),i=e.litNonce;i!==void 0&&r.setAttribute(`nonce`,i),r.textContent=t.cssText,n.appendChild(r)}},c=t?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return a(t)})(e):e,{is:l,defineProperty:u,getOwnPropertyDescriptor:d,getOwnPropertyNames:ee,getOwnPropertySymbols:te,getPrototypeOf:ne}=Object,f=globalThis,p=f.trustedTypes,re=p?p.emptyScript:``,ie=f.reactiveElementPolyfillSupport,m=(e,t)=>e,h={toAttribute(e,t){switch(t){case Boolean:e=e?re:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},g=(e,t)=>!l(e,t),_={attribute:!0,type:String,converter:h,reflect:!1,useDefault:!1,hasChanged:g};Symbol.metadata??=Symbol(`metadata`),f.litPropertyMetadata??=new WeakMap;var v=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=_){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&u(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=d(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??_}static _$Ei(){if(this.hasOwnProperty(m(`elementProperties`)))return;let e=ne(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(m(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(m(`properties`))){let e=this.properties,t=[...ee(e),...te(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(c(e))}else e!==void 0&&t.push(c(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?h:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?h:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??g)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};v.elementStyles=[],v.shadowRootOptions={mode:`open`},v[m(`elementProperties`)]=new Map,v[m(`finalized`)]=new Map,ie?.({ReactiveElement:v}),(f.reactiveElementVersions??=[]).push(`2.1.2`);var y=globalThis,b=e=>e,x=y.trustedTypes,ae=x?x.createPolicy(`lit-html`,{createHTML:e=>e}):void 0,S=`$lit$`,C=`lit$${Math.random().toFixed(9).slice(2)}$`,w=`?`+C,oe=`<${w}>`,T=document,E=()=>T.createComment(``),D=e=>e===null||typeof e!=`object`&&typeof e!=`function`,O=Array.isArray,k=e=>O(e)||typeof e?.[Symbol.iterator]==`function`,A=`[
|
|
2
|
+
\f\r]`,j=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,M=/-->/g,N=/>/g,P=RegExp(`>|${A}(?:([^\\s"'>=/]+)(${A}*=${A}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),F=/'/g,I=/"/g,L=/^(?:script|style|textarea|title)$/i,R=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),se=R(1),ce=R(2),z=Symbol.for(`lit-noChange`),B=Symbol.for(`lit-nothing`),V=new WeakMap,H=T.createTreeWalker(T,129);function U(e,t){if(!O(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return ae===void 0?t:ae.createHTML(t)}var W=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=j;for(let t=0;t<n;t++){let n=e[t],s,c,l=-1,u=0;for(;u<n.length&&(o.lastIndex=u,c=o.exec(n),c!==null);)u=o.lastIndex,o===j?c[1]===`!--`?o=M:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=P):(L.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=P):o=N:o===P?c[0]===`>`?(o=i??j,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?P:c[3]===`"`?I:F):o===I||o===F?o=P:o===M||o===N?o=j:(o=P,i=void 0);let d=o===P&&e[t+1].startsWith(`/>`)?` `:``;a+=o===j?n+oe:l>=0?(r.push(s),n.slice(0,l)+S+n.slice(l)+C+d):n+C+(l===-2?t:d)}return[U(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},G=class e{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0,s=t.length-1,c=this.parts,[l,u]=W(t,n);if(this.el=e.createElement(l,r),H.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=H.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(S)){let t=u[o++],n=i.getAttribute(e).split(C),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?X:r[1]===`?`?Z:r[1]===`@`?le:Y}),i.removeAttribute(e)}else e.startsWith(C)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(L.test(i.tagName)){let e=i.textContent.split(C),t=e.length-1;if(t>0){i.textContent=x?x.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],E()),H.nextNode(),c.push({type:2,index:++a});i.append(e[t],E())}}}else if(i.nodeType===8)if(i.data===w)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(C,e+1))!==-1;)c.push({type:7,index:a}),e+=C.length-1}a++}}static createElement(e,t){let n=T.createElement(`template`);return n.innerHTML=e,n}};function K(e,t,n=e,r){if(t===z)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=D(t)?void 0:t._$litDirective$;return i?.constructor!==a&&(i?._$AO?.(!1),a===void 0?i=void 0:(i=new a(e),i._$AT(e,n,r)),r===void 0?n._$Cl=i:(n._$Co??=[])[r]=i),i!==void 0&&(t=K(e,i._$AS(e,t.values),i,r)),t}var q=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??T).importNode(t,!0);H.currentNode=r;let i=H.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new J(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new ue(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=H.nextNode(),a++)}return H.currentNode=T,r}p(e){let t=0;for(let n of this._$AV)n!==void 0&&(n.strings===void 0?n._$AI(e[t]):(n._$AI(e,n,t),t+=n.strings.length-2)),t++}},J=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=B,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=K(this,e,t),D(e)?e===B||e==null||e===``?(this._$AH!==B&&this._$AR(),this._$AH=B):e!==this._$AH&&e!==z&&this._(e):e._$litType$===void 0?e.nodeType===void 0?k(e)?this.k(e):this._(e):this.T(e):this.$(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==B&&D(this._$AH)?this._$AA.nextSibling.data=e:this.T(T.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:n}=e,r=typeof n==`number`?this._$AC(e):(n.el===void 0&&(n.el=G.createElement(U(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new q(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=V.get(e.strings);return t===void 0&&V.set(e.strings,t=new G(e)),t}k(t){O(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,r,i=0;for(let a of t)i===n.length?n.push(r=new e(this.O(E()),this.O(E()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=b(e).nextSibling;b(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},Y=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=B,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=i,n.length>2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=B}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=K(this,e,t,0),a=!D(e)||e!==this._$AH&&e!==z,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=K(this,r[n+o],t,o),s===z&&(s=this._$AH[o]),a||=!D(s)||s!==this._$AH[o],s===B?e=B:e!==B&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===B?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},X=class extends Y{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===B?void 0:e}},Z=class extends Y{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==B)}},le=class extends Y{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}_$AI(e,t=this){if((e=K(this,e,t,0)??B)===z)return;let n=this._$AH,r=e===B&&n!==B||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==B&&(n===B||r);r&&this.element.removeEventListener(this.name,this,n),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH==`function`?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},ue=class{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){K(this,e)}},de={M:S,P:C,A:w,C:1,L:W,R:q,D:k,V:K,I:J,H:Y,N:Z,U:le,B:X,F:ue},fe=y.litHtmlPolyfillSupport;fe?.(G,J),(y.litHtmlVersions??=[]).push(`3.3.2`);var pe=(e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new J(t.insertBefore(E(),e),e,void 0,n??{})}return i._$AI(e),i},Q=globalThis,$=class extends v{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=pe(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return z}};$._$litElement$=!0,$.finalized=!0,Q.litElementHydrateSupport?.({LitElement:$});var me=Q.litElementPolyfillSupport;me?.({LitElement:$}),(Q.litElementVersions??=[]).push(`4.2.2`);export{de as a,h as c,se as i,o as l,B as n,ce as o,z as r,g as s,$ as t};
|
|
3
|
+
//# sourceMappingURL=lit-zdTgzAJI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lit-zdTgzAJI.js","names":["t","e","s","o","n","r","i","S","c","i","e","h","r","o","n","a","c","l","p","d","u","f","b","y","t","s","i","s","o","t","e","r"],"sources":["../../../node_modules/@lit/reactive-element/css-tag.js","../../../node_modules/@lit/reactive-element/reactive-element.js","../../../node_modules/lit-html/lit-html.js","../../../node_modules/lit-element/lit-element.js"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1],t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e;const r=h.fromAttribute(s,t.type);this[e]=r??this._$Ej?.get(e)??r,this._$Em=null}}requestUpdate(t,s,i,e=!1,h){if(void 0!==t){const r=this.constructor;if(!1===e&&(h=this[t]),i??=r.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(r._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach(t=>t.hostUpdate?.()),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.2\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t=>t,s=t.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,h=\"$lit$\",o=`lit$${Math.random().toFixed(9).slice(2)}$`,n=\"?\"+o,r=`<${n}>`,l=document,c=()=>l.createComment(\"\"),a=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,u=Array.isArray,d=t=>u(t)||\"function\"==typeof t?.[Symbol.iterator],f=\"[ \\t\\n\\f\\r]\",v=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,_=/-->/g,m=/>/g,p=RegExp(`>|${f}(?:([^\\\\s\"'>=/]+)(${f}*=${f}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),g=/'/g,$=/\"/g,y=/^(?:script|style|textarea|title)$/i,x=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),b=x(1),w=x(2),T=x(3),E=Symbol.for(\"lit-noChange\"),A=Symbol.for(\"lit-nothing\"),C=new WeakMap,P=l.createTreeWalker(l,129);function V(t,i){if(!u(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==e?e.createHTML(i):i}const N=(t,i)=>{const s=t.length-1,e=[];let n,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=v;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,f=0;for(;f<s.length&&(c.lastIndex=f,u=c.exec(s),null!==u);)f=c.lastIndex,c===v?\"!--\"===u[1]?c=_:void 0!==u[1]?c=m:void 0!==u[2]?(y.test(u[2])&&(n=RegExp(\"</\"+u[2],\"g\")),c=p):void 0!==u[3]&&(c=p):c===p?\">\"===u[0]?(c=n??v,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?p:'\"'===u[3]?$:g):c===$||c===g?c=p:c===_||c===m?c=v:(c=p,n=void 0);const x=c===p&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===v?s+r:d>=0?(e.push(a),s.slice(0,d)+h+s.slice(d)+o+x):s+o+(-2===d?i:x)}return[V(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),e]};class S{constructor({strings:t,_$litType$:i},e){let r;this.parts=[];let l=0,a=0;const u=t.length-1,d=this.parts,[f,v]=N(t,i);if(this.el=S.createElement(f,e),P.currentNode=this.el.content,2===i||3===i){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=P.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(h)){const i=v[a++],s=r.getAttribute(t).split(o),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:l,name:e[2],strings:s,ctor:\".\"===e[1]?I:\"?\"===e[1]?L:\"@\"===e[1]?z:H}),r.removeAttribute(t)}else t.startsWith(o)&&(d.push({type:6,index:l}),r.removeAttribute(t));if(y.test(r.tagName)){const t=r.textContent.split(o),i=t.length-1;if(i>0){r.textContent=s?s.emptyScript:\"\";for(let s=0;s<i;s++)r.append(t[s],c()),P.nextNode(),d.push({type:2,index:++l});r.append(t[i],c())}}}else if(8===r.nodeType)if(r.data===n)d.push({type:2,index:l});else{let t=-1;for(;-1!==(t=r.data.indexOf(o,t+1));)d.push({type:7,index:l}),t+=o.length-1}l++}}static createElement(t,i){const s=l.createElement(\"template\");return s.innerHTML=t,s}}function M(t,i,s=t,e){if(i===E)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=a(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=M(t,h._$AS(t,i.values),h,e)),i}class R{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??l).importNode(i,!0);P.currentNode=e;let h=P.nextNode(),o=0,n=0,r=s[0];for(;void 0!==r;){if(o===r.index){let i;2===r.type?i=new k(h,h.nextSibling,this,t):1===r.type?i=new r.ctor(h,r.name,r.strings,this,t):6===r.type&&(i=new Z(h,this,t)),this._$AV.push(i),r=s[++n]}o!==r?.index&&(h=P.nextNode(),o++)}return P.currentNode=l,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class k{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=A,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=M(this,t,i),a(t)?t===A||null==t||\"\"===t?(this._$AH!==A&&this._$AR(),this._$AH=A):t!==this._$AH&&t!==E&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):d(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==A&&a(this._$AH)?this._$AA.nextSibling.data=t:this.T(l.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=S.createElement(V(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new R(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=C.get(t.strings);return void 0===i&&C.set(t.strings,i=new S(t)),i}k(t){u(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new k(this.O(c()),this.O(c()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,s){for(this._$AP?.(!1,!0,s);t!==this._$AB;){const s=i(t).nextSibling;i(t).remove(),t=s}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class H{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=A,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=A}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=M(this,t,i,0),o=!a(t)||t!==this._$AH&&t!==E,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=M(this,e[s+n],i,n),r===E&&(r=this._$AH[n]),o||=!a(r)||r!==this._$AH[n],r===A?t=A:t!==A&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===A?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class I extends H{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===A?void 0:t}}class L extends H{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==A)}}class z extends H{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=M(this,t,i,0)??A)===E)return;const s=this._$AH,e=t===A&&s!==A||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==A&&(s===A||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class Z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){M(this,t)}}const j={M:h,P:o,A:n,C:1,L:N,R,D:d,V:M,I:k,H,N:L,U:z,B:I,F:Z},B=t.litHtmlPolyfillSupport;B?.(S,k),(t.litHtmlVersions??=[]).push(\"3.3.2\");const D=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new k(i.insertBefore(c(),t),t,void 0,s??{})}return h._$AI(t),h};export{j as _$LH,b as html,T as mathml,E as noChange,A as nothing,D as render,w as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as r}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=globalThis;class i extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(r,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return r}}i._$litElement$=!0,i[\"finalized\"]=!0,s.litElementHydrateSupport?.({LitElement:i});const o=s.litElementPolyfillSupport;o?.({LitElement:i});const n={_$AK:(t,e,r)=>{t._$AK(e,r)},_$AL:t=>t._$AL};(s.litElementVersions??=[]).push(\"4.2.2\");export{i as LitElement,n as _$LE};\n//# sourceMappingURL=lit-element.js.map\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function e(e){return!!e&&typeof e.getItem==`function`&&typeof e.setItem==`function`}function t(t){let n=Object.getOwnPropertyDescriptor(globalThis,t);if(typeof process<`u`&&{}?.VITEST)return n&&!n.get&&e(n.value)?n.value:null;if(typeof window<`u`&&typeof document<`u`)try{let n=window[t];return e(n)?n:null}catch{return null}return n&&!n.get&&e(n.value)?n.value:null}function n(){return t(`localStorage`)}function r(){return t(`sessionStorage`)}export{r as n,n as t};
|
|
2
|
+
//# sourceMappingURL=local-storage-D3baoRWx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-storage-D3baoRWx.js","names":[],"sources":["../../../ui/src/local-storage.ts"],"sourcesContent":["function isStorage(value: unknown): value is Storage {\n return (\n Boolean(value) &&\n typeof (value as Storage).getItem === \"function\" &&\n typeof (value as Storage).setItem === \"function\"\n );\n}\n\nfunction getSafeStorage(name: \"localStorage\" | \"sessionStorage\"): Storage | null {\n const descriptor = Object.getOwnPropertyDescriptor(globalThis, name);\n\n if (typeof process !== \"undefined\" && process.env?.VITEST) {\n return descriptor && !descriptor.get && isStorage(descriptor.value) ? descriptor.value : null;\n }\n\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n try {\n const storage = window[name];\n return isStorage(storage) ? storage : null;\n } catch {\n return null;\n }\n }\n\n return descriptor && !descriptor.get && isStorage(descriptor.value) ? descriptor.value : null;\n}\n\nexport function getSafeLocalStorage(): Storage | null {\n return getSafeStorage(\"localStorage\");\n}\n\nexport function getSafeSessionStorage(): Storage | null {\n return getSafeStorage(\"sessionStorage\");\n}\n"],"mappings":"AAAA,SAAS,EAAU,EAAkC,CACnD,MACE,EAAQ,GACR,OAAQ,EAAkB,SAAY,YACtC,OAAQ,EAAkB,SAAY,WAI1C,SAAS,EAAe,EAAyD,CAC/E,IAAM,EAAa,OAAO,yBAAyB,WAAY,EAAK,CAEpE,GAAI,OAAO,QAAY,KAAA,EAAA,EAA4B,OACjD,OAAO,GAAc,CAAC,EAAW,KAAO,EAAU,EAAW,MAAM,CAAG,EAAW,MAAQ,KAG3F,GAAI,OAAO,OAAW,KAAe,OAAO,SAAa,IACvD,GAAI,CACF,IAAM,EAAU,OAAO,GACvB,OAAO,EAAU,EAAQ,CAAG,EAAU,UAChC,CACN,OAAO,KAIX,OAAO,GAAc,CAAC,EAAW,KAAO,EAAU,EAAW,MAAM,CAAG,EAAW,MAAQ,KAG3F,SAAgB,GAAsC,CACpD,OAAO,EAAe,eAAe,CAGvC,SAAgB,GAAwC,CACtD,OAAO,EAAe,iBAAiB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import{i as e,n as t}from"./lit-zdTgzAJI.js";var n=[`trace`,`debug`,`info`,`warn`,`error`,`fatal`];function r(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleTimeString()}function i(e,t){return t?[e.message,e.subsystem,e.raw].filter(Boolean).join(` `).toLowerCase().includes(t):!0}function a(a){let o=a.filterText.trim().toLowerCase(),s=n.some(e=>!a.levelFilters[e]),c=a.entries.filter(e=>e.level&&!a.levelFilters[e.level]?!1:i(e,o)),l=o||s?`filtered`:`visible`;return e`
|
|
2
|
+
<section class="card">
|
|
3
|
+
<div class="row" style="justify-content: space-between;">
|
|
4
|
+
<div>
|
|
5
|
+
<div class="card-title">Logs</div>
|
|
6
|
+
<div class="card-sub">Gateway file logs (JSONL).</div>
|
|
7
|
+
</div>
|
|
8
|
+
<div class="row" style="gap: 8px;">
|
|
9
|
+
<button class="btn" ?disabled=${a.loading} @click=${a.onRefresh}>
|
|
10
|
+
${a.loading?`Loading…`:`Refresh`}
|
|
11
|
+
</button>
|
|
12
|
+
<button
|
|
13
|
+
class="btn"
|
|
14
|
+
?disabled=${c.length===0}
|
|
15
|
+
@click=${()=>a.onExport(c.map(e=>e.raw),l)}
|
|
16
|
+
>
|
|
17
|
+
Export ${l}
|
|
18
|
+
</button>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<div class="filters" style="margin-top: 14px;">
|
|
23
|
+
<label class="field" style="min-width: 220px;">
|
|
24
|
+
<span>Filter</span>
|
|
25
|
+
<input
|
|
26
|
+
.value=${a.filterText}
|
|
27
|
+
@input=${e=>a.onFilterTextChange(e.target.value)}
|
|
28
|
+
placeholder="Search logs"
|
|
29
|
+
/>
|
|
30
|
+
</label>
|
|
31
|
+
<label class="field checkbox">
|
|
32
|
+
<span>Auto-follow</span>
|
|
33
|
+
<input
|
|
34
|
+
type="checkbox"
|
|
35
|
+
.checked=${a.autoFollow}
|
|
36
|
+
@change=${e=>a.onToggleAutoFollow(e.target.checked)}
|
|
37
|
+
/>
|
|
38
|
+
</label>
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<div class="chip-row" style="margin-top: 12px;">
|
|
42
|
+
${n.map(t=>e`
|
|
43
|
+
<label class="chip log-chip ${t}">
|
|
44
|
+
<input
|
|
45
|
+
type="checkbox"
|
|
46
|
+
.checked=${a.levelFilters[t]}
|
|
47
|
+
@change=${e=>a.onLevelToggle(t,e.target.checked)}
|
|
48
|
+
/>
|
|
49
|
+
<span>${t}</span>
|
|
50
|
+
</label>
|
|
51
|
+
`)}
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
${a.file?e`<div class="muted" style="margin-top: 10px;">File: ${a.file}</div>`:t}
|
|
55
|
+
${a.truncated?e`
|
|
56
|
+
<div class="callout" style="margin-top: 10px">
|
|
57
|
+
Log output truncated; showing latest chunk.
|
|
58
|
+
</div>
|
|
59
|
+
`:t}
|
|
60
|
+
${a.error?e`<div class="callout danger" style="margin-top: 10px;">${a.error}</div>`:t}
|
|
61
|
+
|
|
62
|
+
<div class="log-stream" style="margin-top: 12px;" @scroll=${a.onScroll}>
|
|
63
|
+
${c.length===0?e` <div class="muted" style="padding: 12px">No log entries.</div> `:c.map(t=>e`
|
|
64
|
+
<div class="log-row">
|
|
65
|
+
<div class="log-time mono">${r(t.time)}</div>
|
|
66
|
+
<div class="log-level ${t.level??``}">${t.level??``}</div>
|
|
67
|
+
<div class="log-subsystem mono">${t.subsystem??``}</div>
|
|
68
|
+
<div class="log-message mono">${t.message??t.raw}</div>
|
|
69
|
+
</div>
|
|
70
|
+
`)}
|
|
71
|
+
</div>
|
|
72
|
+
</section>
|
|
73
|
+
`}export{a as renderLogs};
|
|
74
|
+
//# sourceMappingURL=logs-B7--7dYP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs-B7--7dYP.js","names":[],"sources":["../../../ui/src/ui/views/logs.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport type { LogEntry, LogLevel } from \"../types.ts\";\n\nconst LEVELS: LogLevel[] = [\"trace\", \"debug\", \"info\", \"warn\", \"error\", \"fatal\"];\n\nexport type LogsProps = {\n loading: boolean;\n error: string | null;\n file: string | null;\n entries: LogEntry[];\n filterText: string;\n levelFilters: Record<LogLevel, boolean>;\n autoFollow: boolean;\n truncated: boolean;\n onFilterTextChange: (next: string) => void;\n onLevelToggle: (level: LogLevel, enabled: boolean) => void;\n onToggleAutoFollow: (next: boolean) => void;\n onRefresh: () => void;\n onExport: (lines: string[], label: string) => void;\n onScroll: (event: Event) => void;\n};\n\nfunction formatTime(value?: string | null) {\n if (!value) {\n return \"\";\n }\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) {\n return value;\n }\n return date.toLocaleTimeString();\n}\n\nfunction matchesFilter(entry: LogEntry, needle: string) {\n if (!needle) {\n return true;\n }\n const haystack = [entry.message, entry.subsystem, entry.raw]\n .filter(Boolean)\n .join(\" \")\n .toLowerCase();\n return haystack.includes(needle);\n}\n\nexport function renderLogs(props: LogsProps) {\n const needle = props.filterText.trim().toLowerCase();\n const levelFiltered = LEVELS.some((level) => !props.levelFilters[level]);\n const filtered = props.entries.filter((entry) => {\n if (entry.level && !props.levelFilters[entry.level]) {\n return false;\n }\n return matchesFilter(entry, needle);\n });\n const exportLabel = needle || levelFiltered ? \"filtered\" : \"visible\";\n\n return html`\n <section class=\"card\">\n <div class=\"row\" style=\"justify-content: space-between;\">\n <div>\n <div class=\"card-title\">Logs</div>\n <div class=\"card-sub\">Gateway file logs (JSONL).</div>\n </div>\n <div class=\"row\" style=\"gap: 8px;\">\n <button class=\"btn\" ?disabled=${props.loading} @click=${props.onRefresh}>\n ${props.loading ? \"Loading…\" : \"Refresh\"}\n </button>\n <button\n class=\"btn\"\n ?disabled=${filtered.length === 0}\n @click=${() =>\n props.onExport(\n filtered.map((entry) => entry.raw),\n exportLabel,\n )}\n >\n Export ${exportLabel}\n </button>\n </div>\n </div>\n\n <div class=\"filters\" style=\"margin-top: 14px;\">\n <label class=\"field\" style=\"min-width: 220px;\">\n <span>Filter</span>\n <input\n .value=${props.filterText}\n @input=${(e: Event) => props.onFilterTextChange((e.target as HTMLInputElement).value)}\n placeholder=\"Search logs\"\n />\n </label>\n <label class=\"field checkbox\">\n <span>Auto-follow</span>\n <input\n type=\"checkbox\"\n .checked=${props.autoFollow}\n @change=${(e: Event) =>\n props.onToggleAutoFollow((e.target as HTMLInputElement).checked)}\n />\n </label>\n </div>\n\n <div class=\"chip-row\" style=\"margin-top: 12px;\">\n ${LEVELS.map(\n (level) => html`\n <label class=\"chip log-chip ${level}\">\n <input\n type=\"checkbox\"\n .checked=${props.levelFilters[level]}\n @change=${(e: Event) =>\n props.onLevelToggle(level, (e.target as HTMLInputElement).checked)}\n />\n <span>${level}</span>\n </label>\n `,\n )}\n </div>\n\n ${props.file\n ? html`<div class=\"muted\" style=\"margin-top: 10px;\">File: ${props.file}</div>`\n : nothing}\n ${props.truncated\n ? html`\n <div class=\"callout\" style=\"margin-top: 10px\">\n Log output truncated; showing latest chunk.\n </div>\n `\n : nothing}\n ${props.error\n ? html`<div class=\"callout danger\" style=\"margin-top: 10px;\">${props.error}</div>`\n : nothing}\n\n <div class=\"log-stream\" style=\"margin-top: 12px;\" @scroll=${props.onScroll}>\n ${filtered.length === 0\n ? html` <div class=\"muted\" style=\"padding: 12px\">No log entries.</div> `\n : filtered.map(\n (entry) => html`\n <div class=\"log-row\">\n <div class=\"log-time mono\">${formatTime(entry.time)}</div>\n <div class=\"log-level ${entry.level ?? \"\"}\">${entry.level ?? \"\"}</div>\n <div class=\"log-subsystem mono\">${entry.subsystem ?? \"\"}</div>\n <div class=\"log-message mono\">${entry.message ?? entry.raw}</div>\n </div>\n `,\n )}\n </div>\n </section>\n `;\n}\n"],"mappings":"6CAGA,IAAM,EAAqB,CAAC,QAAS,QAAS,OAAQ,OAAQ,QAAS,QAAQ,CAmB/E,SAAS,EAAW,EAAuB,CACzC,GAAI,CAAC,EACH,MAAO,GAET,IAAM,EAAO,IAAI,KAAK,EAAM,CAI5B,OAHI,OAAO,MAAM,EAAK,SAAS,CAAC,CACvB,EAEF,EAAK,oBAAoB,CAGlC,SAAS,EAAc,EAAiB,EAAgB,CAQtD,OAPK,EAGY,CAAC,EAAM,QAAS,EAAM,UAAW,EAAM,IAAI,CACzD,OAAO,QAAQ,CACf,KAAK,IAAI,CACT,aAAa,CACA,SAAS,EAAO,CANvB,GASX,SAAgB,EAAW,EAAkB,CAC3C,IAAM,EAAS,EAAM,WAAW,MAAM,CAAC,aAAa,CAC9C,EAAgB,EAAO,KAAM,GAAU,CAAC,EAAM,aAAa,GAAO,CAClE,EAAW,EAAM,QAAQ,OAAQ,GACjC,EAAM,OAAS,CAAC,EAAM,aAAa,EAAM,OACpC,GAEF,EAAc,EAAO,EAAO,CACnC,CACI,EAAc,GAAU,EAAgB,WAAa,UAE3D,MAAO,EAAI;;;;;;;;0CAQ6B,EAAM,QAAQ,UAAU,EAAM,UAAU;cACpE,EAAM,QAAU,WAAa,UAAU;;;;wBAI7B,EAAS,SAAW,EAAE;yBAEhC,EAAM,SACJ,EAAS,IAAK,GAAU,EAAM,IAAI,CAClC,EACD,CAAC;;qBAEK,EAAY;;;;;;;;;qBASZ,EAAM,WAAW;qBAChB,GAAa,EAAM,mBAAoB,EAAE,OAA4B,MAAM,CAAC;;;;;;;;uBAQ3E,EAAM,WAAW;sBACjB,GACT,EAAM,mBAAoB,EAAE,OAA4B,QAAQ,CAAC;;;;;;UAMrE,EAAO,IACN,GAAU,CAAI;0CACiB,EAAM;;;2BAGrB,EAAM,aAAa,GAAO;0BAC1B,GACT,EAAM,cAAc,EAAQ,EAAE,OAA4B,QAAQ,CAAC;;sBAE/D,EAAM;;YAGnB,CAAC;;;QAGF,EAAM,KACJ,CAAI,sDAAsD,EAAM,KAAK,QACrE,EAAQ;QACV,EAAM,UACJ,CAAI;;;;YAKJ,EAAQ;QACV,EAAM,MACJ,CAAI,yDAAyD,EAAM,MAAM,QACzE,EAAQ;;kEAEgD,EAAM,SAAS;UACvE,EAAS,SAAW,EAClB,CAAI,mEACJ,EAAS,IACN,GAAU,CAAI;;+CAEkB,EAAW,EAAM,KAAK,CAAC;0CAC5B,EAAM,OAAS,GAAG,IAAI,EAAM,OAAS,GAAG;oDAC9B,EAAM,WAAa,GAAG;kDACxB,EAAM,SAAW,EAAM,IAAI;;gBAGhE,CAAC"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import{i as e,n as t}from"./lit-zdTgzAJI.js";import{l as n}from"./format-BahKhiOC.js";import{I as r}from"./index-XGDpaFxG.js";function i(n,r){return r?e`<div class="callout ${n}">${r}</div>`:t}function a(n){return e`
|
|
2
|
+
<article class="card" style="display: grid; gap: 14px;">
|
|
3
|
+
<div class="row" style="justify-content: space-between; gap: 12px; align-items: center; flex-wrap: wrap;">
|
|
4
|
+
<div class="card-title">${n.title}</div>
|
|
5
|
+
<button type="button" class="btn btn--sm" @click=${n.onCopy}>
|
|
6
|
+
<span aria-hidden="true">${r.copy}</span>
|
|
7
|
+
<span>Copy</span>
|
|
8
|
+
</button>
|
|
9
|
+
</div>
|
|
10
|
+
<div
|
|
11
|
+
style="white-space: pre-wrap; line-height: 1.65; font-size: 14px; color: var(--text); min-height: 120px;"
|
|
12
|
+
>
|
|
13
|
+
${n.body.trim()||`None identified`}
|
|
14
|
+
</div>
|
|
15
|
+
${n.footer??t}
|
|
16
|
+
</article>
|
|
17
|
+
`}function o(t,r){let i=t.title.trim()||`Untitled meeting`,a=t.summary.trim()||t.actionItems.trim()||t.decisions.trim();return e`
|
|
18
|
+
<button
|
|
19
|
+
type="button"
|
|
20
|
+
class="card"
|
|
21
|
+
style="display: grid; gap: 8px; text-align: left; width: 100%; cursor: pointer;"
|
|
22
|
+
@click=${()=>r(t.id)}
|
|
23
|
+
>
|
|
24
|
+
<div class="row" style="justify-content: space-between; gap: 10px; align-items: flex-start;">
|
|
25
|
+
<div style="display: grid; gap: 4px;">
|
|
26
|
+
<div class="card-title" style="font-size: 15px;">${i}</div>
|
|
27
|
+
<div class="card-sub">
|
|
28
|
+
${t.sourceName?`Source: ${t.sourceName}`:`Pasted transcript`}
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
<span class="chip">${n(t.createdAt)}</span>
|
|
32
|
+
</div>
|
|
33
|
+
<div class="muted" style="font-size: 13px; line-height: 1.5;">
|
|
34
|
+
${a?`${a.slice(0,180)}${a.length>180?`...`:``}`:`Tap to reload this meeting analysis.`}
|
|
35
|
+
</div>
|
|
36
|
+
</button>
|
|
37
|
+
`}function s(s){let c=s.connected&&!s.analyzing&&s.transcript.trim().length>0;return e`
|
|
38
|
+
<section class="page page--settings" style="display: grid; gap: 20px;">
|
|
39
|
+
<div class="card" style="display: grid; gap: 12px; max-width: 1100px;">
|
|
40
|
+
<div style="display: grid; gap: 4px;">
|
|
41
|
+
<div class="card-title">Meeting Intelligence</div>
|
|
42
|
+
<div class="card-sub">
|
|
43
|
+
Upload a transcript or paste notes and Morgan will turn the meeting into a summary,
|
|
44
|
+
action list, decisions log, and follow-up draft.
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
${i(`danger`,s.error)} ${i(`success`,s.notice)}
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
<div
|
|
51
|
+
style="display: grid; gap: 20px; align-items: start; grid-template-columns: minmax(0, 2fr) minmax(280px, 1fr);"
|
|
52
|
+
>
|
|
53
|
+
<div style="display: grid; gap: 20px;">
|
|
54
|
+
<section class="card" style="display: grid; gap: 16px;">
|
|
55
|
+
<div style="display: grid; gap: 4px;">
|
|
56
|
+
<div class="card-title">Upload Transcript</div>
|
|
57
|
+
<div class="card-sub">Accepts '.txt', '.md', and '.pdf' files, or paste the transcript below.</div>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<label
|
|
61
|
+
class="card"
|
|
62
|
+
style="display: grid; gap: 10px; border: 1px dashed var(--border-strong); background: var(--surface-elevated); cursor: pointer;"
|
|
63
|
+
@dragover=${e=>e.preventDefault()}
|
|
64
|
+
@drop=${e=>{e.preventDefault();let t=e.dataTransfer?.files?.[0]??null;s.onFileSelect(t)}}
|
|
65
|
+
>
|
|
66
|
+
<input
|
|
67
|
+
type="file"
|
|
68
|
+
accept=".txt,.md,.pdf"
|
|
69
|
+
hidden
|
|
70
|
+
@change=${e=>{let t=e.target,n=t.files?.[0]??null;s.onFileSelect(n),t.value=``}}
|
|
71
|
+
/>
|
|
72
|
+
<div style="font-size: 34px; line-height: 1;">📝</div>
|
|
73
|
+
<div style="display: grid; gap: 4px;">
|
|
74
|
+
<strong>Drop a transcript here</strong>
|
|
75
|
+
<span class="muted">or click to browse from disk</span>
|
|
76
|
+
</div>
|
|
77
|
+
${s.sourceName?e`<span class="chip">Loaded: ${s.sourceName}</span>`:e`<span class="chip">No file selected yet</span>`}
|
|
78
|
+
</label>
|
|
79
|
+
|
|
80
|
+
<label class="field">
|
|
81
|
+
<span>Meeting title</span>
|
|
82
|
+
<input
|
|
83
|
+
.value=${s.title}
|
|
84
|
+
@input=${e=>s.onTitleChange(e.target.value)}
|
|
85
|
+
placeholder="Optional"
|
|
86
|
+
/>
|
|
87
|
+
</label>
|
|
88
|
+
|
|
89
|
+
<label class="field">
|
|
90
|
+
<span>Paste meeting transcript here</span>
|
|
91
|
+
<textarea
|
|
92
|
+
rows="18"
|
|
93
|
+
.value=${s.transcript}
|
|
94
|
+
@input=${e=>s.onTranscriptChange(e.target.value)}
|
|
95
|
+
placeholder="Paste the transcript, notes, or cleaned-up meeting minutes here..."
|
|
96
|
+
></textarea>
|
|
97
|
+
</label>
|
|
98
|
+
|
|
99
|
+
<div class="row" style="gap: 10px; flex-wrap: wrap; align-items: center;">
|
|
100
|
+
<button type="button" class="btn primary" ?disabled=${!c} @click=${s.onAnalyze}>
|
|
101
|
+
${s.analyzing?`Analysing...`:`Analyse Meeting`}
|
|
102
|
+
</button>
|
|
103
|
+
<span class="muted" style="font-size: 12px;">
|
|
104
|
+
Morgan uses the transcript to generate a summary, actions, decisions, and a follow-up email.
|
|
105
|
+
</span>
|
|
106
|
+
</div>
|
|
107
|
+
</section>
|
|
108
|
+
|
|
109
|
+
${s.analyzing?e`
|
|
110
|
+
<section class="card" style="display: grid; gap: 12px;">
|
|
111
|
+
<div class="row" style="gap: 10px; align-items: center;">
|
|
112
|
+
<span class="spin" aria-hidden="true">${r.loader}</span>
|
|
113
|
+
<strong>Morgan is reading the transcript...</strong>
|
|
114
|
+
</div>
|
|
115
|
+
<div class="muted" style="font-size: 13px;">
|
|
116
|
+
This can take a moment for long transcripts or PDFs.
|
|
117
|
+
</div>
|
|
118
|
+
</section>
|
|
119
|
+
`:t}
|
|
120
|
+
|
|
121
|
+
${s.result?e`
|
|
122
|
+
<section style="display: grid; gap: 16px;">
|
|
123
|
+
<div class="row" style="justify-content: space-between; gap: 12px; align-items: center; flex-wrap: wrap;">
|
|
124
|
+
<div style="display: grid; gap: 4px;">
|
|
125
|
+
<div class="card-title">Results</div>
|
|
126
|
+
<div class="card-sub">
|
|
127
|
+
${s.result.title.trim()||`Untitled meeting`} · generated ${n(s.result.createdAt)}
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
<button type="button" class="btn" @click=${s.onSave}>
|
|
131
|
+
<span aria-hidden="true">${r.bookmark}</span>
|
|
132
|
+
<span>Save</span>
|
|
133
|
+
</button>
|
|
134
|
+
</div>
|
|
135
|
+
|
|
136
|
+
<div
|
|
137
|
+
style="display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));"
|
|
138
|
+
>
|
|
139
|
+
${a({title:`Summary`,body:s.result.summary,copyLabel:`summary`,onCopy:()=>void s.onCopy(`summary`,s.result?.summary??``)})}
|
|
140
|
+
${a({title:`Action Items`,body:s.result.actionItems,copyLabel:`action items`,onCopy:()=>void s.onCopy(`action items`,s.result?.actionItems??``)})}
|
|
141
|
+
${a({title:`Decisions`,body:s.result.decisions,copyLabel:`decisions`,onCopy:()=>void s.onCopy(`decisions`,s.result?.decisions??``)})}
|
|
142
|
+
${a({title:`Follow-up Email`,body:s.result.followUpEmail,copyLabel:`follow-up email`,onCopy:()=>void s.onCopy(`follow-up email`,s.result?.followUpEmail??``),footer:e`
|
|
143
|
+
<div class="row" style="gap: 8px; flex-wrap: wrap;">
|
|
144
|
+
<button
|
|
145
|
+
type="button"
|
|
146
|
+
class="btn btn--sm primary"
|
|
147
|
+
?disabled=${s.sendingTelegram}
|
|
148
|
+
@click=${s.onSendTelegram}
|
|
149
|
+
>
|
|
150
|
+
<span aria-hidden="true">${r.send}</span>
|
|
151
|
+
<span>${s.sendingTelegram?`Sending...`:`Send via Telegram`}</span>
|
|
152
|
+
</button>
|
|
153
|
+
</div>
|
|
154
|
+
`})}
|
|
155
|
+
</div>
|
|
156
|
+
</section>
|
|
157
|
+
`:t}
|
|
158
|
+
</div>
|
|
159
|
+
|
|
160
|
+
<aside style="display: grid; gap: 20px;">
|
|
161
|
+
<section class="card" style="display: grid; gap: 14px;">
|
|
162
|
+
<div style="display: grid; gap: 4px;">
|
|
163
|
+
<div class="card-title">Recent History</div>
|
|
164
|
+
<div class="card-sub">The last 5 saved meeting analyses from this browser.</div>
|
|
165
|
+
</div>
|
|
166
|
+
|
|
167
|
+
${s.history.length===0?e`<div class="muted" style="font-size: 13px;">Save a meeting result to keep it here.</div>`:e`<div style="display: grid; gap: 12px;">
|
|
168
|
+
${s.history.map(e=>o(e,s.onLoadHistory))}
|
|
169
|
+
</div>`}
|
|
170
|
+
|
|
171
|
+
<button
|
|
172
|
+
type="button"
|
|
173
|
+
class="btn btn--ghost"
|
|
174
|
+
?disabled=${s.history.length===0}
|
|
175
|
+
@click=${s.onClearHistory}
|
|
176
|
+
>
|
|
177
|
+
<span aria-hidden="true">${r.trash}</span>
|
|
178
|
+
<span>Clear history</span>
|
|
179
|
+
</button>
|
|
180
|
+
</section>
|
|
181
|
+
</aside>
|
|
182
|
+
</div>
|
|
183
|
+
</section>
|
|
184
|
+
`}export{s as renderMeetings};
|
|
185
|
+
//# sourceMappingURL=meetings-DSqn6s7n.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meetings-DSqn6s7n.js","names":[],"sources":["../../../ui/src/ui/views/meetings.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { MEETING_EMPTY_SECTION_TEXT } from \"../controllers/meetings.ts\";\nimport { formatRelativeTimestamp } from \"../format.ts\";\nimport { icons } from \"../icons.ts\";\nimport type { MeetingAnalysisResult } from \"../types.ts\";\n\nexport type MeetingsProps = {\n connected: boolean;\n title: string;\n transcript: string;\n sourceName: string | null;\n analyzing: boolean;\n sendingTelegram: boolean;\n error: string | null;\n notice: string | null;\n result: MeetingAnalysisResult | null;\n history: MeetingAnalysisResult[];\n onTitleChange: (next: string) => void;\n onTranscriptChange: (next: string) => void;\n onFileSelect: (file: File | null) => Promise<void> | void;\n onAnalyze: () => Promise<void> | void;\n onCopy: (label: string, value: string) => Promise<void> | void;\n onSave: () => void;\n onLoadHistory: (id: string) => void;\n onClearHistory: () => void;\n onSendTelegram: () => Promise<void> | void;\n};\n\ntype ResultCardProps = {\n title: string;\n body: string;\n copyLabel: string;\n onCopy: () => void;\n footer?: unknown;\n};\n\nfunction renderMessage(kind: \"danger\" | \"success\", message: string | null) {\n if (!message) {\n return nothing;\n }\n return html`<div class=\"callout ${kind}\">${message}</div>`;\n}\n\nfunction renderResultCard(props: ResultCardProps) {\n return html`\n <article class=\"card\" style=\"display: grid; gap: 14px;\">\n <div class=\"row\" style=\"justify-content: space-between; gap: 12px; align-items: center; flex-wrap: wrap;\">\n <div class=\"card-title\">${props.title}</div>\n <button type=\"button\" class=\"btn btn--sm\" @click=${props.onCopy}>\n <span aria-hidden=\"true\">${icons.copy}</span>\n <span>Copy</span>\n </button>\n </div>\n <div\n style=\"white-space: pre-wrap; line-height: 1.65; font-size: 14px; color: var(--text); min-height: 120px;\"\n >\n ${props.body.trim() || MEETING_EMPTY_SECTION_TEXT}\n </div>\n ${props.footer ?? nothing}\n </article>\n `;\n}\n\nfunction renderHistoryItem(entry: MeetingAnalysisResult, onLoad: (id: string) => void) {\n const title = entry.title.trim() || \"Untitled meeting\";\n const preview = entry.summary.trim() || entry.actionItems.trim() || entry.decisions.trim();\n return html`\n <button\n type=\"button\"\n class=\"card\"\n style=\"display: grid; gap: 8px; text-align: left; width: 100%; cursor: pointer;\"\n @click=${() => onLoad(entry.id)}\n >\n <div class=\"row\" style=\"justify-content: space-between; gap: 10px; align-items: flex-start;\">\n <div style=\"display: grid; gap: 4px;\">\n <div class=\"card-title\" style=\"font-size: 15px;\">${title}</div>\n <div class=\"card-sub\">\n ${entry.sourceName ? `Source: ${entry.sourceName}` : \"Pasted transcript\"}\n </div>\n </div>\n <span class=\"chip\">${formatRelativeTimestamp(entry.createdAt)}</span>\n </div>\n <div class=\"muted\" style=\"font-size: 13px; line-height: 1.5;\">\n ${preview ? `${preview.slice(0, 180)}${preview.length > 180 ? \"...\" : \"\"}` : \"Tap to reload this meeting analysis.\"}\n </div>\n </button>\n `;\n}\n\nexport function renderMeetings(props: MeetingsProps) {\n const canAnalyze = props.connected && !props.analyzing && props.transcript.trim().length > 0;\n\n return html`\n <section class=\"page page--settings\" style=\"display: grid; gap: 20px;\">\n <div class=\"card\" style=\"display: grid; gap: 12px; max-width: 1100px;\">\n <div style=\"display: grid; gap: 4px;\">\n <div class=\"card-title\">Meeting Intelligence</div>\n <div class=\"card-sub\">\n Upload a transcript or paste notes and Morgan will turn the meeting into a summary,\n action list, decisions log, and follow-up draft.\n </div>\n </div>\n ${renderMessage(\"danger\", props.error)} ${renderMessage(\"success\", props.notice)}\n </div>\n\n <div\n style=\"display: grid; gap: 20px; align-items: start; grid-template-columns: minmax(0, 2fr) minmax(280px, 1fr);\"\n >\n <div style=\"display: grid; gap: 20px;\">\n <section class=\"card\" style=\"display: grid; gap: 16px;\">\n <div style=\"display: grid; gap: 4px;\">\n <div class=\"card-title\">Upload Transcript</div>\n <div class=\"card-sub\">Accepts '.txt', '.md', and '.pdf' files, or paste the transcript below.</div>\n </div>\n\n <label\n class=\"card\"\n style=\"display: grid; gap: 10px; border: 1px dashed var(--border-strong); background: var(--surface-elevated); cursor: pointer;\"\n @dragover=${(event: DragEvent) => event.preventDefault()}\n @drop=${(event: DragEvent) => {\n event.preventDefault();\n const file = event.dataTransfer?.files?.[0] ?? null;\n void props.onFileSelect(file);\n }}\n >\n <input\n type=\"file\"\n accept=\".txt,.md,.pdf\"\n hidden\n @change=${(event: Event) => {\n const input = event.target as HTMLInputElement;\n const file = input.files?.[0] ?? null;\n void props.onFileSelect(file);\n input.value = \"\";\n }}\n />\n <div style=\"font-size: 34px; line-height: 1;\">📝</div>\n <div style=\"display: grid; gap: 4px;\">\n <strong>Drop a transcript here</strong>\n <span class=\"muted\">or click to browse from disk</span>\n </div>\n ${props.sourceName\n ? html`<span class=\"chip\">Loaded: ${props.sourceName}</span>`\n : html`<span class=\"chip\">No file selected yet</span>`}\n </label>\n\n <label class=\"field\">\n <span>Meeting title</span>\n <input\n .value=${props.title}\n @input=${(event: Event) =>\n props.onTitleChange((event.target as HTMLInputElement).value)}\n placeholder=\"Optional\"\n />\n </label>\n\n <label class=\"field\">\n <span>Paste meeting transcript here</span>\n <textarea\n rows=\"18\"\n .value=${props.transcript}\n @input=${(event: Event) =>\n props.onTranscriptChange((event.target as HTMLTextAreaElement).value)}\n placeholder=\"Paste the transcript, notes, or cleaned-up meeting minutes here...\"\n ></textarea>\n </label>\n\n <div class=\"row\" style=\"gap: 10px; flex-wrap: wrap; align-items: center;\">\n <button type=\"button\" class=\"btn primary\" ?disabled=${!canAnalyze} @click=${props.onAnalyze}>\n ${props.analyzing ? \"Analysing...\" : \"Analyse Meeting\"}\n </button>\n <span class=\"muted\" style=\"font-size: 12px;\">\n Morgan uses the transcript to generate a summary, actions, decisions, and a follow-up email.\n </span>\n </div>\n </section>\n\n ${props.analyzing\n ? html`\n <section class=\"card\" style=\"display: grid; gap: 12px;\">\n <div class=\"row\" style=\"gap: 10px; align-items: center;\">\n <span class=\"spin\" aria-hidden=\"true\">${icons.loader}</span>\n <strong>Morgan is reading the transcript...</strong>\n </div>\n <div class=\"muted\" style=\"font-size: 13px;\">\n This can take a moment for long transcripts or PDFs.\n </div>\n </section>\n `\n : nothing}\n\n ${props.result\n ? html`\n <section style=\"display: grid; gap: 16px;\">\n <div class=\"row\" style=\"justify-content: space-between; gap: 12px; align-items: center; flex-wrap: wrap;\">\n <div style=\"display: grid; gap: 4px;\">\n <div class=\"card-title\">Results</div>\n <div class=\"card-sub\">\n ${props.result.title.trim() || \"Untitled meeting\"} · generated ${formatRelativeTimestamp(props.result.createdAt)}\n </div>\n </div>\n <button type=\"button\" class=\"btn\" @click=${props.onSave}>\n <span aria-hidden=\"true\">${icons.bookmark}</span>\n <span>Save</span>\n </button>\n </div>\n\n <div\n style=\"display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\"\n >\n ${renderResultCard({\n title: \"Summary\",\n body: props.result.summary,\n copyLabel: \"summary\",\n onCopy: () => void props.onCopy(\"summary\", props.result?.summary ?? \"\"),\n })}\n ${renderResultCard({\n title: \"Action Items\",\n body: props.result.actionItems,\n copyLabel: \"action items\",\n onCopy: () =>\n void props.onCopy(\"action items\", props.result?.actionItems ?? \"\"),\n })}\n ${renderResultCard({\n title: \"Decisions\",\n body: props.result.decisions,\n copyLabel: \"decisions\",\n onCopy: () => void props.onCopy(\"decisions\", props.result?.decisions ?? \"\"),\n })}\n ${renderResultCard({\n title: \"Follow-up Email\",\n body: props.result.followUpEmail,\n copyLabel: \"follow-up email\",\n onCopy: () =>\n void props.onCopy(\"follow-up email\", props.result?.followUpEmail ?? \"\"),\n footer: html`\n <div class=\"row\" style=\"gap: 8px; flex-wrap: wrap;\">\n <button\n type=\"button\"\n class=\"btn btn--sm primary\"\n ?disabled=${props.sendingTelegram}\n @click=${props.onSendTelegram}\n >\n <span aria-hidden=\"true\">${icons.send}</span>\n <span>${props.sendingTelegram ? \"Sending...\" : \"Send via Telegram\"}</span>\n </button>\n </div>\n `,\n })}\n </div>\n </section>\n `\n : nothing}\n </div>\n\n <aside style=\"display: grid; gap: 20px;\">\n <section class=\"card\" style=\"display: grid; gap: 14px;\">\n <div style=\"display: grid; gap: 4px;\">\n <div class=\"card-title\">Recent History</div>\n <div class=\"card-sub\">The last 5 saved meeting analyses from this browser.</div>\n </div>\n\n ${props.history.length === 0\n ? html`<div class=\"muted\" style=\"font-size: 13px;\">Save a meeting result to keep it here.</div>`\n : html`<div style=\"display: grid; gap: 12px;\">\n ${props.history.map((entry) => renderHistoryItem(entry, props.onLoadHistory))}\n </div>`}\n\n <button\n type=\"button\"\n class=\"btn btn--ghost\"\n ?disabled=${props.history.length === 0}\n @click=${props.onClearHistory}\n >\n <span aria-hidden=\"true\">${icons.trash}</span>\n <span>Clear history</span>\n </button>\n </section>\n </aside>\n </div>\n </section>\n `;\n}\n"],"mappings":"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"}
|