@telepath-computer/television 0.1.6 → 0.1.8

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.
@@ -1 +1 @@
1
- html,body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px;line-height:1.6;color:#111827;background:#fff}body>:first-child{margin-top:0}body>:last-child{margin-bottom:0}h1,h2,h3{font-weight:600;margin:1.25em 0 .5em}h1{font-size:1.4em}h2{font-size:1.2em}h3{font-size:1.05em}p{margin:.75em 0}code{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.9em;background:#f3f4f6;padding:.15em .35em;border-radius:4px}pre{background:#f3f4f6;border-radius:6px;padding:12px 14px;overflow-x:auto}pre code{background:none;padding:0}ul,ol{padding-left:1.5em;margin:.75em 0}blockquote{margin:.75em 0;padding-left:1em;border-left:3px solid #e5e7eb;color:#6b7280}a{color:#111827;text-decoration:underline}hr{border:none;border-top:1px solid #e5e7eb;margin:1em 0}
1
+ dropdown-menu{position:relative;display:inline-block;color:inherit}dropdown-group{display:grid;gap:var(--space-4)}dropdown-label{display:block;padding:var(--space-4) var(--space-8);color:var(--color-text-muted);font:inherit;font-size:var(--text-sm);font-weight:600;letter-spacing:.04em;text-transform:uppercase}dropdown-divider{display:block;height:1px;margin:var(--space-4) 0;background:var(--color-border)}[data-dropdown-trigger],dropdown-item{color:inherit;font:inherit;line-height:1.2}[data-dropdown-trigger],dropdown-menu::part(trigger){display:inline-flex;align-items:center;gap:var(--space-8);margin:0;padding:.375rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);box-shadow:none;cursor:pointer}[data-dropdown-trigger]:hover,dropdown-menu::part(trigger):hover{background:var(--color-interactive-hover)}dropdown-menu[open] [data-dropdown-trigger],dropdown-menu[open]::part(trigger){background:var(--color-interactive)}[data-dropdown-trigger-label],dropdown-menu::part(trigger-label){min-width:0}[data-dropdown-trigger-icon],dropdown-menu::part(trigger-icon){display:inline-flex;align-items:center;justify-content:center;flex:none}[data-dropdown-trigger]:focus-visible,dropdown-menu::part(trigger):focus-visible,dropdown-item:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}dropdown-menu::part(panel){position:absolute;top:calc(100% + var(--space-4));left:0;z-index:var(--layer-popover);min-width:12rem;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-popover)}dropdown-item{display:block;margin:0;padding:.375rem .5rem;border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none}dropdown-item:hover{background:var(--color-interactive-hover)}dropdown-item[selected]{background:var(--color-interactive)}panel-view{display:block}panel-view::part(panel){display:flex;flex-direction:column;gap:var(--space-16);color:var(--color-text)}panel-view::part(header){display:flex;align-items:center;justify-content:space-between;gap:var(--space-12)}panel-view::part(title-group){display:flex;align-items:center;gap:var(--space-8);min-width:0}panel-view::part(title){margin:0;font:inherit;font-size:var(--text-lg);font-weight:600;color:var(--color-text)}panel-view::part(button){display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;margin:0;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);box-shadow:none;cursor:pointer}panel-view::part(button):hover{background:var(--color-interactive-hover)}panel-view::part(button):focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}panel-view::part(icon){display:inline-flex;align-items:center;justify-content:center;flex:none}panel-view::part(back-icon){transform:rotate(90deg)}modal-overlay{color:inherit}modal-overlay::part(backdrop){position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--layer-modal);display:flex;align-items:center;justify-content:center;padding:var(--space-16);background:var(--color-overlay-backdrop)}*,*:before,*:after{box-sizing:border-box}:root{--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--font-brand: var(--font-sans);--font-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, monospace;--text-base: 14px;--text-scale: 1.125;--text-sm: round(calc(var(--text-base) / var(--text-scale)), 1px);--text-lg: round(calc(var(--text-base) * var(--text-scale)), 1px);--text-xl: round(calc(var(--text-lg) * var(--text-scale)), 1px);--leading-base: 1.5;--space-2: 2px;--space-4: 4px;--space-6: 6px;--space-8: 8px;--space-12: 12px;--space-16: 16px;--space-24: 24px;--space-32: 32px;--space-48: 48px;--space-64: 64px;--radius-sm: .375rem;--radius-md: .5rem;--layer-popover: 10;--layer-modal: 1000;--shadow-popover: 0 12px 32px rgb(0 0 0 / .14);--shadow-modal: 0 24px 64px rgb(0 0 0 / .2)}html,body{margin:0;padding:0;width:100%;height:100%}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-base);color:var(--color-text);background:var(--color-bg)}a{text-underline-offset:.15em;text-decoration-thickness:.08em}button,input,textarea,select{font:inherit;color:inherit}a{color:var(--color-link)}h1,h2,h3,h4,h5,h6,p,ul,ol,blockquote,pre,hr{margin:0}h1,h2,h3,h4,h5,h6{font-weight:600;color:var(--color-text)}code{font-family:var(--font-mono);font-size:.9em;background:var(--color-bg-muted);padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm)}pre{font-family:var(--font-mono);background:var(--color-bg-muted);padding:var(--space-12);border-radius:var(--radius-md);overflow-x:auto}pre code{background:none;padding:0}blockquote{padding-left:var(--space-16);border-left:3px solid var(--color-border);color:var(--color-text-muted)}hr{border:none;border-top:1px solid var(--color-border)}table{border-collapse:collapse}th,td{padding:var(--space-8) var(--space-12);border:1px solid var(--color-border);text-align:left}th{background:var(--color-bg-muted);font-weight:600}.prose{line-height:var(--leading-base)}.prose h1{font-size:var(--text-xl);margin-bottom:var(--space-8)}.prose h2{font-size:var(--text-lg);margin-top:var(--space-24);margin-bottom:var(--space-8)}.prose h3,.prose h4,.prose h5,.prose h6{font-size:var(--text-base);margin-top:var(--space-24);margin-bottom:var(--space-8)}.prose p{margin:var(--space-12) 0}.prose ul,.prose ol{padding-left:var(--space-24);margin:var(--space-12) 0}.prose blockquote,.prose pre{margin:var(--space-12) 0}.prose hr{margin:var(--space-24) 0}.prose table{width:100%;margin:var(--space-12) 0}.prose img{max-width:100%;height:auto}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}[data-ui-icon]{display:inline-block;vertical-align:middle}button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-6);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:inherit;cursor:pointer}button:hover{background:var(--color-interactive)}button[variant=toolbar]{border:none;background:transparent;color:var(--color-text-muted)}button[size=sm]{min-height:26px;padding:var(--space-2) var(--space-6)}button[size=md]{min-height:32px;padding:var(--space-6) var(--space-12)}:root{--black: #000000;--white: #ffffff;--neutral-50: oklch(.985 .001 106.423);--neutral-100: oklch(.97 .001 106.424);--neutral-200: oklch(.923 .003 48.717);--neutral-300: oklch(.869 .005 56.366);--neutral-400: oklch(.709 .01 56.259);--neutral-500: oklch(.553 .013 58.071);--neutral-600: oklch(.444 .011 73.639);--neutral-700: oklch(.374 .01 67.558);--neutral-800: oklch(.268 .007 34.298);--neutral-900: oklch(.216 .006 56.043);--neutral-950: oklch(.147 .004 49.25)}:root{--color-bg: var(--neutral-50);--color-bg-muted: var(--neutral-100);--color-surface: var(--white);--color-surface-muted: var(--neutral-100);--color-interactive: var(--neutral-200);--color-interactive-hover: var(--neutral-300);--color-border: var(--neutral-300);--color-border-muted: var(--neutral-200);--color-text: var(--neutral-900);--color-text-muted: var(--neutral-500);--color-link: inherit;--color-focus-ring: var(--neutral-500);--color-overlay-backdrop: rgb(0 0 0 / .5);color-scheme:light}html[artifact-type=markdown] body{box-sizing:border-box;max-width:650px;margin-inline:auto;padding:var(--space-24) var(--space-32)}
@@ -1,4 +1,4 @@
1
- var Pr=Object.defineProperty;var hs=r=>{throw TypeError(r)};var Ir=(r,s,t)=>s in r?Pr(r,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[s]=t;var l=(r,s,t)=>Ir(r,typeof s!="symbol"?s+"":s,t),de=(r,s,t)=>s.has(r)||hs("Cannot "+t);var h=(r,s,t)=>(de(r,s,"read from private field"),t?t.call(r):s.get(r)),y=(r,s,t)=>s.has(r)?hs("Cannot add the same private member more than once"):s instanceof WeakSet?s.add(r):s.set(r,t),M=(r,s,t,e)=>(de(r,s,"write to private field"),e?e.call(r,t):s.set(r,t),t),f=(r,s,t)=>(de(r,s,"access private method"),t);(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))e(i);new MutationObserver(i=>{for(const n of i)if(n.type==="childList")for(const o of n.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&e(o)}).observe(document,{childList:!0,subtree:!0});function t(i){const n={};return i.integrity&&(n.integrity=i.integrity),i.referrerPolicy&&(n.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?n.credentials="include":i.crossOrigin==="anonymous"?n.credentials="omit":n.credentials="same-origin",n}function e(i){if(i.ep)return;i.ep=!0;const n=t(i);fetch(i.href,n)}})();const ds=new WeakMap;function xr(r){return(typeof r=="object"||typeof r=="function")&&r!==null&&"then"in r&&typeof r.then=="function"}function nt(r){return typeof r=="string"?r:typeof r=="symbol"?r.description??r.toString():r.name||"(anonymous class)"}function us(){return new Error("register(Key, factory) requires a factory function. Wrap existing instances as () => instance.")}function Tr(){return new Error("register(Key, factory) does not accept async factories. Await setup before registering.")}class Rr{constructor(){l(this,"entries",new Map);l(this,"constructionStack",[])}register(s,t){if(t===void 0){if(typeof s!="function")throw us();this.validateClassRegistration(s),this.storeFactory(s,()=>this.instantiateClass(s));return}if(typeof t!="function")throw us();if(t.constructor.name==="AsyncFunction")throw Tr();this.storeFactory(s,t)}has(s){var t;return((t=this.entries.get(s))==null?void 0:t.factory)!==void 0}resolve(s){return this.resolveAny(s)}storeFactory(s,t){const e=this.getOrCreateEntry(s);e.factory=t,e.instance=void 0,e.error=void 0}validateClassRegistration(s){const t=ds.get(s);if(t){if(s.length!==t.length)throw new Error(`${nt(s)} cannot be registered with register(Class). @injectable(...) declared ${t.length} dependencies but constructor arity is ${s.length}. Use register(Key, () => value) instead.`);return}if(s.length!==0)throw new Error(`${nt(s)} cannot be registered with register(Class). Undecorated classes must have zero required constructor parameters. Use register(Key, () => value) instead.`)}instantiateClass(s){const t=ds.get(s);if(!t)return new s;const e=t.map(i=>this.resolveAny(i));return new s(...e)}resolveAny(s){return this.getOrCreateEntry(s).proxy}getOrCreateEntry(s){let t=this.entries.get(s);return t||(t={key:s},t.proxy=this.createProxy(t),this.entries.set(s,t),t)}createProxy(s){return new Proxy({},{get:(t,e)=>{if(e==="then")return;const i=this.getInstance(s),n=Reflect.get(i,e,i);return typeof n=="function"?n.bind(i):n},set:(t,e,i)=>{const n=this.getInstance(s);return Reflect.set(n,e,i,n)},has:(t,e)=>{const i=this.getInstance(s);return e in i}})}getInstance(s){if(s.instance)return s.instance;if(s.error)throw s.error;if(!s.factory)throw new Error(`${nt(s.key)} was resolved but never registered`);const t=this.constructionStack.indexOf(s.key);if(t!==-1){const e=[...this.constructionStack.slice(t),s.key].map(i=>nt(i)).join(" -> ");throw new Error(`Circular dependency detected: ${e}`)}this.constructionStack.push(s.key);try{const e=s.factory();if(xr(e))throw new Error(`Factory for ${nt(s.key)} returned a Promise. Await setup before registering.`);if(typeof e!="object"||e===null)throw new Error(`Factory for ${nt(s.key)} returned a non-object value. Wrap primitives in an object.`);return s.instance=e,e}catch(e){throw s.error=e,e}finally{this.constructionStack.pop()}}}const L=new Rr;function Or(r){return{all:r=r||new Map,on:function(s,t){var e=r.get(s);e?e.push(t):r.set(s,[t])},off:function(s,t){var e=r.get(s);e&&(t?e.splice(e.indexOf(t)>>>0,1):r.set(s,[]))},emit:function(s,t){var e=r.get(s);e&&e.slice().map(function(i){i(t)}),(e=r.get("*"))&&e.slice().map(function(i){i(s,t)})}}}let Ke=class{constructor(){l(this,"emitter",Or());l(this,"off",this.emitter.off)}on(s,t){return this.emitter.on(s,t),{dispose:()=>this.emitter.off(s,t)}}once(s,t){const e=(...i)=>{t(...i),this.emitter.off(s,e)};return this.emitter.on(s,e),{dispose:()=>this.emitter.off(s,e)}}emit(s,...[t]){this.emitter.emit(s,t)}};const Hs="0123456789ABCDEFGHJKMNPQRSTVWXYZ",Zt=32,Nr=16,Fs=10,ps=0xffffffffffff;var Z;(function(r){r.Base32IncorrectEncoding="B32_ENC_INVALID",r.DecodeTimeInvalidCharacter="DEC_TIME_CHAR",r.DecodeTimeValueMalformed="DEC_TIME_MALFORMED",r.EncodeTimeNegative="ENC_TIME_NEG",r.EncodeTimeSizeExceeded="ENC_TIME_SIZE_EXCEED",r.EncodeTimeValueMalformed="ENC_TIME_MALFORMED",r.PRNGDetectFailure="PRNG_DETECT",r.ULIDInvalid="ULID_INVALID",r.Unexpected="UNEXPECTED",r.UUIDInvalid="UUID_INVALID"})(Z||(Z={}));class ft extends Error{constructor(s,t){super(`${t} (${s})`),this.name="ULIDError",this.code=s}}function Ur(r){const s=Math.floor(r()*Zt)%Zt;return Hs.charAt(s)}function Hr(r){const s=Fr(),t=s&&(s.crypto||s.msCrypto)||null;if(typeof(t==null?void 0:t.getRandomValues)=="function")return()=>{const e=new Uint8Array(1);return t.getRandomValues(e),e[0]/256};if(typeof(t==null?void 0:t.randomBytes)=="function")return()=>t.randomBytes(1).readUInt8()/256;throw new ft(Z.PRNGDetectFailure,"Failed to find a reliable PRNG")}function Fr(){return Br()?self:typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:null}function zr(r,s){let t="";for(;r>0;r--)t=Ur(s)+t;return t}function Gr(r,s=Fs){if(isNaN(r))throw new ft(Z.EncodeTimeValueMalformed,`Time must be a number: ${r}`);if(r>ps)throw new ft(Z.EncodeTimeSizeExceeded,`Cannot encode a time larger than ${ps}: ${r}`);if(r<0)throw new ft(Z.EncodeTimeNegative,`Time must be positive: ${r}`);if(Number.isInteger(r)===!1)throw new ft(Z.EncodeTimeValueMalformed,`Time must be an integer: ${r}`);let t,e="";for(let i=s;i>0;i--)t=r%Zt,e=Hs.charAt(t)+e,r=(r-t)/Zt;return e}function Br(){return typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope}function ye(r,s){const t=Hr(),e=Date.now();return Gr(e,Fs)+zr(Nr,t)}const zs="markdown";function Vr(r){const s=r.type??zs;return{id:r.id??ye(),type:s,title:r.title,content:r.content}}const x=2,B=6,Xr=1,Kr=2,qr=3,Yr=4,jr=[Xr,x],Zr=[Kr,qr,Yr,B];function kt(r){const s=Math.round(r);return jr.includes(s)?s:x}function be(r){const s=Math.round(r);return Zr.includes(s)?s:B}function Se(r){return{type:"artifact",artifactID:r,cols:x,rows:B}}function ue(r){return r.layout.map(s=>s.artifactID)}const Ft=[{cols:2,rows:6},{cols:2,rows:4},{cols:2,rows:3},{cols:2,rows:2},{cols:1,rows:2}],pe="create-artifact",fe="remove-artifact",zt="update-layout";class Qr extends Ke{constructor(t){var i;super();l(this,"artifacts",new Map);l(this,"activeWorkspaceID",null);l(this,"scrollPosition",0);l(this,"activeWorkspaceData",null);l(this,"clientStore");l(this,"serverManager");l(this,"pendingMutations",new Map);l(this,"pendingWorkspaceCreates",new Map);l(this,"pendingWorkspaceDeletes",new Map);this.clientStore=t.clientStore,this.serverManager=t.serverManager;const e=this.clientStore.get();this.activeWorkspaceID=(e==null?void 0:e.lastWorkspaceID)??null,this.activeWorkspaceID&&(this.scrollPosition=((i=e==null?void 0:e.workspaces[this.activeWorkspaceID])==null?void 0:i.scrollPosition)??0)}get workspaces(){return[...this.getServers().values()].flatMap(t=>[...t.workspaces.values()])}get activeWorkspace(){return this.activeWorkspaceData}get activeWorkspaceServerURL(){var t;return this.activeWorkspaceID?((t=this.findWorkspace(this.activeWorkspaceID))==null?void 0:t.serverURL)??null:null}get activeArtifacts(){return(this.activeWorkspaceData?ue(this.activeWorkspaceData):[]).map(t=>this.artifacts.get(t)).filter(t=>t!==void 0)}getArtifactURL(t){const e=this.activeWorkspaceServerURL;if(!e)return null;const i=this.getServers().get(e);return i!=null&&i.getArtifactURL?i.getArtifactURL(t):null}setActiveWorkspace(t){this.selectWorkspace(t)}setScrollPosition(t){const e=Math.max(0,t);this.scrollPosition!==e&&(this.scrollPosition=e,this.persistWorkspaceViewState(),this.emit("change"))}createArtifact(t){var a;const e=this.activeWorkspaceData;if(!e)return;const i=this.snapshotState(),n=Vr({id:ye(),type:zs,title:t.title,content:t.content});e.layout.some(d=>d.artifactID===n.id)||e.layout.push(Se(n.id)),this.artifacts.set(n.id,n),this.scrollPosition=Math.max(e.layout.length-1,0),this.persistWorkspaceViewState(),this.emit("change");const o=((a=this.findWorkspace(e.id))==null?void 0:a.server)??null,c=this.getMutationKey(pe,n.id);this.pendingMutations.set(c,i),this.sendServerMessage(o,{type:"create-artifact",id:n.id,title:t.title,content:t.content,workspaceID:e.id})||(this.pendingMutations.delete(c),this.restoreState(i),this.emit("change"))}removeArtifact(t){var c;const e=this.activeWorkspaceData;if(!e||!this.artifacts.has(t))return;const i=this.snapshotState();this.removeArtifactLocally(t),this.emit("change");const n=((c=this.findWorkspace(e.id))==null?void 0:c.server)??null,o=this.getMutationKey(fe,t);this.pendingMutations.set(o,i),this.sendServerMessage(n,{type:"remove-artifact",artifactID:t,workspaceID:e.id})||(this.pendingMutations.delete(o),this.restoreState(i),this.emit("change"))}reorderLayout(t){const e=this.activeWorkspaceData;if(!e)return;const i=ue(e);if(t.length!==i.length||t.every((c,a)=>c===i[a]))return;const n=new Map(e.layout.map(c=>[c.artifactID,structuredClone(c)]));if(new Set(t).size!==t.length)return;const o=t.map(c=>n.get(c)).filter(c=>c!==void 0);o.length===t.length&&this.updateLayout(o)}cycleArtifactLayout(t){const e=this.activeWorkspaceData;if(!e)return;const i=e.layout.findIndex(o=>o.artifactID===t);if(i===-1)return;const n=e.layout.map((o,c)=>c===i?{...o,...Jr(o.cols,o.rows)}:structuredClone(o));this.updateLayout(n)}handleServerEvent(t,e){var i;switch(e.type){case"workspace-list":this.syncActiveWorkspaceState(t,!0);break;case"workspace-updated":this.syncActiveWorkspaceState(t,!1),Array.isArray(e.fields.layout)&&this.pendingMutations.delete(this.getMutationKey(zt,e.workspaceID));break;case"workspace-removed":{this.syncActiveWorkspaceState(t,!1);const n=this.pendingWorkspaceDeletes.get(e.workspaceID);n&&(this.pendingWorkspaceDeletes.delete(e.workspaceID),n.resolve());break}case"workspace-created":if(this.pendingWorkspaceCreates.has(e.workspace.id)){const n=this.pendingWorkspaceCreates.get(e.workspace.id);this.pendingWorkspaceCreates.delete(e.workspace.id),this.selectWorkspace(e.workspace.id),n==null||n.resolve();return}this.syncActiveWorkspaceState(t,!1);break;case"workspace":this.applyWorkspaceSnapshot(e.workspace,e.artifacts);break;case"artifact-created":this.pendingMutations.delete(this.getMutationKey(pe,e.artifact.id)),this.applyArtifactCreated(e);break;case"artifact-updated":this.applyArtifactUpdated(e);break;case"artifact-removed":if(this.pendingMutations.delete(this.getMutationKey(fe,e.artifactID)),((i=this.activeWorkspaceData)==null?void 0:i.id)!==e.workspaceID)return;this.removeArtifactLocally(e.artifactID)&&this.emit("change");break;case"error":this.handleServerError(e);break}}createWorkspace(t,e){const i=this.getServers().get(t)??null,n=ye(),o=fs();return this.pendingWorkspaceCreates.set(n,o),this.sendServerMessage(i,{type:"create-workspace",id:n,name:e})||(this.pendingWorkspaceCreates.delete(n),o.reject(new Error(`Server unavailable: ${t}`))),o.promise}deleteWorkspace(){var o;const t=this.activeWorkspaceData;if(!t)return Promise.reject(new Error("No active workspace"));const e=this.pendingWorkspaceDeletes.get(t.id);if(e)return e.promise;const i=((o=this.findWorkspace(t.id))==null?void 0:o.server)??null,n=fs();return this.pendingWorkspaceDeletes.set(t.id,n),this.sendServerMessage(i,{type:"delete-workspace",workspaceID:t.id})||(this.pendingWorkspaceDeletes.delete(t.id),n.reject(new Error(`Server unavailable: ${t.id}`))),n.promise}renameWorkspace(t){var n;const e=this.activeWorkspaceData;if(!e)return;const i=((n=this.findWorkspace(e.id))==null?void 0:n.server)??null;e.name=t,this.emit("change"),this.sendServerMessage(i,{type:"update-workspace",workspaceID:e.id,fields:{name:t}})}updateLayout(t){var c;const e=this.activeWorkspaceData;if(!e)return;const i=this.snapshotState();e.layout=t,this.emit("change");const n=((c=this.findWorkspace(e.id))==null?void 0:c.server)??null,o=this.getMutationKey(zt,e.id);this.pendingMutations.set(o,i),this.sendServerMessage(n,{type:"update-workspace",workspaceID:e.id,fields:{layout:t.map(a=>structuredClone(a))}})||(this.pendingMutations.delete(o),this.restoreState(i),this.emit("change"))}syncActiveWorkspaceState(t,e){const i=this.activeWorkspaceID?this.findWorkspace(this.activeWorkspaceID):null;if(!i){const n=this.pickNextWorkspace();if(!n){const o=this.activeWorkspaceID!==null||this.activeWorkspaceData!==null||this.artifacts.size>0;this.activeWorkspaceID=null,this.activeWorkspaceData=null,this.artifacts.clear(),this.scrollPosition=0,o&&this.emit("change");return}this.selectWorkspace(n.workspace.id);return}this.applyServerWorkspaceState(i.workspace),e&&i.serverURL===t&&this.requestWorkspace(i.serverURL,i.workspace.id)}hasPendingLayoutMutation(t){return this.pendingMutations.has(this.getMutationKey(zt,t))}selectWorkspace(t){const e=this.findWorkspace(t);e&&(this.activeWorkspaceID=t,this.activeWorkspaceData=structuredClone(e.workspace),this.artifacts.clear(),this.restoreWorkspaceViewState(),this.persistActiveWorkspace(),this.requestWorkspace(e.serverURL,t),this.emit("change"))}requestWorkspace(t,e){const i=this.getServers().get(t);this.sendServerMessage(i??null,{type:"get-workspace",workspaceID:e})}applyWorkspaceSnapshot(t,e){if(t.id===this.activeWorkspaceID){this.applyServerWorkspaceState(t),this.artifacts.clear();for(const i of e)this.artifacts.set(i.id,structuredClone(i));this.restoreWorkspaceViewState(),this.emit("change")}}applyServerWorkspaceState(t){if(!this.activeWorkspaceData||this.activeWorkspaceData.id!==t.id){this.activeWorkspaceData=structuredClone(t);return}this.activeWorkspaceData.name=t.name,this.hasPendingLayoutMutation(t.id)||(this.activeWorkspaceData.layout=t.layout.map(e=>structuredClone(e)))}applyArtifactCreated(t){var e;((e=this.activeWorkspaceData)==null?void 0:e.id)===t.workspaceID&&(this.activeWorkspaceData.layout.some(i=>i.artifactID===t.artifact.id)||this.activeWorkspaceData.layout.push(Se(t.artifact.id)),this.artifacts.set(t.artifact.id,t.artifact),this.emit("change"))}applyArtifactUpdated(t){const e=this.artifacts.get(t.artifactID);e&&(Object.assign(e,t.fields),this.emit("change"))}removeArtifactLocally(t){if(!this.activeWorkspaceData)return!1;const e=this.artifacts.delete(t),i=this.activeWorkspaceData.layout.length;return this.activeWorkspaceData.layout=this.activeWorkspaceData.layout.filter(n=>n.artifactID!==t),!(!e&&i===this.activeWorkspaceData.layout.length)}snapshotState(){return{activeWorkspaceData:this.activeWorkspaceData?structuredClone(this.activeWorkspaceData):null,scrollPosition:this.scrollPosition,artifacts:new Map([...this.artifacts.entries()].map(([t,e])=>[t,structuredClone(e)]))}}restoreState(t){this.activeWorkspaceData=t.activeWorkspaceData?structuredClone(t.activeWorkspaceData):null,this.scrollPosition=t.scrollPosition,this.artifacts.clear();for(const[e,i]of t.artifacts.entries())this.artifacts.set(e,structuredClone(i));this.persistWorkspaceViewState()}handleServerError(t){const e=t.request;if(e){if(e.type==="create-artifact"){const i=this.getMutationKey(pe,e.id),n=this.pendingMutations.get(i);if(!n)return;this.pendingMutations.delete(i),this.restoreState(n),this.emit("change");return}if(e.type==="create-workspace"){const i=this.pendingWorkspaceCreates.get(e.id);if(!i)return;this.pendingWorkspaceCreates.delete(e.id),i.reject(new Error(t.message));return}if(e.type==="delete-workspace"){const i=this.pendingWorkspaceDeletes.get(e.workspaceID);if(!i)return;this.pendingWorkspaceDeletes.delete(e.workspaceID),i.reject(new Error(t.message));return}if(e.type==="update-workspace"&&Array.isArray(e.fields.layout)){const i=this.getMutationKey(zt,e.workspaceID),n=this.pendingMutations.get(i);if(!n)return;this.pendingMutations.delete(i),this.restoreState(n),this.emit("change");return}if(e.type==="remove-artifact"){const i=this.getMutationKey(fe,e.artifactID),n=this.pendingMutations.get(i);if(!n)return;this.pendingMutations.delete(i),this.restoreState(n),this.emit("change")}}}restoreWorkspaceViewState(){var i,n;if(!this.activeWorkspaceID){this.scrollPosition=0;return}const t=((n=(i=this.clientStore.get())==null?void 0:i.workspaces[this.activeWorkspaceID])==null?void 0:n.scrollPosition)??0,e=this.activeWorkspaceData?ue(this.activeWorkspaceData):[];this.scrollPosition=Math.max(0,Math.min(t,Math.max(e.length-1,0))),this.persistWorkspaceViewState()}persistActiveWorkspace(){this.clientStore.update(t=>{t.lastWorkspaceID=this.activeWorkspaceID})}persistWorkspaceViewState(){this.activeWorkspaceID&&this.clientStore.update(t=>{var e,i;(e=t.workspaces)[i=this.activeWorkspaceID]??(e[i]={scrollPosition:0}),t.workspaces[this.activeWorkspaceID].scrollPosition=this.scrollPosition})}findWorkspace(t){for(const[e,i]of this.getServers()){const n=i.workspaces.get(t);if(n)return{serverURL:e,server:i,workspace:n}}return null}pickNextWorkspace(){var e;const t=(e=this.clientStore.get())==null?void 0:e.lastWorkspaceID;if(t){const i=this.findWorkspace(t);if(i)return i}for(const[i,n]of this.getServers()){const o=n.workspaces.values().next().value;if(o)return{serverURL:i,server:n,workspace:o}}return null}sendServerMessage(t,e){return t?t.send(e):!1}getServers(){return this.serverManager.servers}getMutationKey(t,e){return`${t}:${e}`}}function Jr(r,s){const t=Ft.findIndex(i=>i.cols===r&&i.rows===s),e=t===-1?0:(t+1)%Ft.length;return{cols:Ft[e].cols,rows:Ft[e].rows}}function fs(){let r,s;return{promise:new Promise((e,i)=>{r=e,s=i}),resolve:r,reject:s}}var Gs=Symbol.for("immer-nothing"),gs=Symbol.for("immer-draftable"),P=Symbol.for("immer-state");function O(r,...s){throw new Error(`[Immer] minified error nr: ${r}. Full error at: https://bit.ly/3cXEKWf`)}var yt=Object.getPrototypeOf;function ct(r){return!!r&&!!r[P]}function tt(r){var s;return r?Bs(r)||Array.isArray(r)||!!r[gs]||!!((s=r.constructor)!=null&&s[gs])||Ot(r)||oe(r):!1}var ti=Object.prototype.constructor.toString(),ms=new WeakMap;function Bs(r){if(!r||typeof r!="object")return!1;const s=Object.getPrototypeOf(r);if(s===null||s===Object.prototype)return!0;const t=Object.hasOwnProperty.call(s,"constructor")&&s.constructor;if(t===Object)return!0;if(typeof t!="function")return!1;let e=ms.get(t);return e===void 0&&(e=Function.toString.call(t),ms.set(t,e)),e===ti}function Qt(r,s,t=!0){ne(r)===0?(t?Reflect.ownKeys(r):Object.keys(r)).forEach(i=>{s(i,r[i],r)}):r.forEach((e,i)=>s(i,e,r))}function ne(r){const s=r[P];return s?s.type_:Array.isArray(r)?1:Ot(r)?2:oe(r)?3:0}function _e(r,s){return ne(r)===2?r.has(s):Object.prototype.hasOwnProperty.call(r,s)}function Vs(r,s,t){const e=ne(r);e===2?r.set(s,t):e===3?r.add(t):r[s]=t}function ei(r,s){return r===s?r!==0||1/r===1/s:r!==r&&s!==s}function Ot(r){return r instanceof Map}function oe(r){return r instanceof Set}function K(r){return r.copy_||r.base_}function Ae(r,s){if(Ot(r))return new Map(r);if(oe(r))return new Set(r);if(Array.isArray(r))return Array.prototype.slice.call(r);const t=Bs(r);if(s===!0||s==="class_only"&&!t){const e=Object.getOwnPropertyDescriptors(r);delete e[P];let i=Reflect.ownKeys(e);for(let n=0;n<i.length;n++){const o=i[n],c=e[o];c.writable===!1&&(c.writable=!0,c.configurable=!0),(c.get||c.set)&&(e[o]={configurable:!0,writable:!0,enumerable:c.enumerable,value:r[o]})}return Object.create(yt(r),e)}else{const e=yt(r);if(e!==null&&t)return{...r};const i=Object.create(e);return Object.assign(i,r)}}function qe(r,s=!1){return ae(r)||ct(r)||!tt(r)||(ne(r)>1&&Object.defineProperties(r,{set:Gt,add:Gt,clear:Gt,delete:Gt}),Object.freeze(r),s&&Object.values(r).forEach(t=>qe(t,!0))),r}function si(){O(2)}var Gt={value:si};function ae(r){return r===null||typeof r!="object"?!0:Object.isFrozen(r)}var ri={};function et(r){const s=ri[r];return s||O(0,r),s}var bt;function Xs(){return bt}function ii(r,s){return{drafts_:[],parent_:r,immer_:s,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function vs(r,s){s&&(et("Patches"),r.patches_=[],r.inversePatches_=[],r.patchListener_=s)}function Ee(r){De(r),r.drafts_.forEach(ni),r.drafts_=null}function De(r){r===bt&&(bt=r.parent_)}function ws(r){return bt=ii(bt,r)}function ni(r){const s=r[P];s.type_===0||s.type_===1?s.revoke_():s.revoked_=!0}function ks(r,s){s.unfinalizedDrafts_=s.drafts_.length;const t=s.drafts_[0];return r!==void 0&&r!==t?(t[P].modified_&&(Ee(s),O(4)),tt(r)&&(r=Jt(s,r),s.parent_||te(s,r)),s.patches_&&et("Patches").generateReplacementPatches_(t[P].base_,r,s.patches_,s.inversePatches_)):r=Jt(s,t,[]),Ee(s),s.patches_&&s.patchListener_(s.patches_,s.inversePatches_),r!==Gs?r:void 0}function Jt(r,s,t){if(ae(s))return s;const e=r.immer_.shouldUseStrictIteration(),i=s[P];if(!i)return Qt(s,(n,o)=>ys(r,i,s,n,o,t),e),s;if(i.scope_!==r)return s;if(!i.modified_)return te(r,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;const n=i.copy_;let o=n,c=!1;i.type_===3&&(o=new Set(n),n.clear(),c=!0),Qt(o,(a,d)=>ys(r,i,n,a,d,t,c),e),te(r,n,!1),t&&r.patches_&&et("Patches").generatePatches_(i,t,r.patches_,r.inversePatches_)}return i.copy_}function ys(r,s,t,e,i,n,o){if(i==null||typeof i!="object"&&!o)return;const c=ae(i);if(!(c&&!o)){if(ct(i)){const a=n&&s&&s.type_!==3&&!_e(s.assigned_,e)?n.concat(e):void 0,d=Jt(r,i,a);if(Vs(t,e,d),ct(d))r.canAutoFreeze_=!1;else return}else o&&t.add(i);if(tt(i)&&!c){if(!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||s&&s.base_&&s.base_[e]===i&&c)return;Jt(r,i),(!s||!s.scope_.parent_)&&typeof e!="symbol"&&(Ot(t)?t.has(e):Object.prototype.propertyIsEnumerable.call(t,e))&&te(r,i)}}}function te(r,s,t=!1){!r.parent_&&r.immer_.autoFreeze_&&r.canAutoFreeze_&&qe(s,t)}function oi(r,s){const t=Array.isArray(r),e={type_:t?1:0,scope_:s?s.scope_:Xs(),modified_:!1,finalized_:!1,assigned_:{},parent_:s,base_:r,draft_:null,copy_:null,revoke_:null,isManual_:!1};let i=e,n=Ye;t&&(i=[e],n=St);const{revoke:o,proxy:c}=Proxy.revocable(i,n);return e.draft_=c,e.revoke_=o,c}var Ye={get(r,s){if(s===P)return r;const t=K(r);if(!_e(t,s))return ai(r,t,s);const e=t[s];return r.finalized_||!tt(e)?e:e===ge(r.base_,s)?(me(r),r.copy_[s]=$e(e,r)):e},has(r,s){return s in K(r)},ownKeys(r){return Reflect.ownKeys(K(r))},set(r,s,t){const e=Ks(K(r),s);if(e!=null&&e.set)return e.set.call(r.draft_,t),!0;if(!r.modified_){const i=ge(K(r),s),n=i==null?void 0:i[P];if(n&&n.base_===t)return r.copy_[s]=t,r.assigned_[s]=!1,!0;if(ei(t,i)&&(t!==void 0||_e(r.base_,s)))return!0;me(r),Ce(r)}return r.copy_[s]===t&&(t!==void 0||s in r.copy_)||Number.isNaN(t)&&Number.isNaN(r.copy_[s])||(r.copy_[s]=t,r.assigned_[s]=!0),!0},deleteProperty(r,s){return ge(r.base_,s)!==void 0||s in r.base_?(r.assigned_[s]=!1,me(r),Ce(r)):delete r.assigned_[s],r.copy_&&delete r.copy_[s],!0},getOwnPropertyDescriptor(r,s){const t=K(r),e=Reflect.getOwnPropertyDescriptor(t,s);return e&&{writable:!0,configurable:r.type_!==1||s!=="length",enumerable:e.enumerable,value:t[s]}},defineProperty(){O(11)},getPrototypeOf(r){return yt(r.base_)},setPrototypeOf(){O(12)}},St={};Qt(Ye,(r,s)=>{St[r]=function(){return arguments[0]=arguments[0][0],s.apply(this,arguments)}});St.deleteProperty=function(r,s){return St.set.call(this,r,s,void 0)};St.set=function(r,s,t){return Ye.set.call(this,r[0],s,t,r[0])};function ge(r,s){const t=r[P];return(t?K(t):r)[s]}function ai(r,s,t){var i;const e=Ks(s,t);return e?"value"in e?e.value:(i=e.get)==null?void 0:i.call(r.draft_):void 0}function Ks(r,s){if(!(s in r))return;let t=yt(r);for(;t;){const e=Object.getOwnPropertyDescriptor(t,s);if(e)return e;t=yt(t)}}function Ce(r){r.modified_||(r.modified_=!0,r.parent_&&Ce(r.parent_))}function me(r){r.copy_||(r.copy_=Ae(r.base_,r.scope_.immer_.useStrictShallowCopy_))}var ci=class{constructor(r){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(s,t,e)=>{if(typeof s=="function"&&typeof t!="function"){const n=t;t=s;const o=this;return function(a=n,...d){return o.produce(a,u=>t.call(this,u,...d))}}typeof t!="function"&&O(6),e!==void 0&&typeof e!="function"&&O(7);let i;if(tt(s)){const n=ws(this),o=$e(s,void 0);let c=!0;try{i=t(o),c=!1}finally{c?Ee(n):De(n)}return vs(n,e),ks(i,n)}else if(!s||typeof s!="object"){if(i=t(s),i===void 0&&(i=s),i===Gs&&(i=void 0),this.autoFreeze_&&qe(i,!0),e){const n=[],o=[];et("Patches").generateReplacementPatches_(s,i,n,o),e(n,o)}return i}else O(1,s)},this.produceWithPatches=(s,t)=>{if(typeof s=="function")return(o,...c)=>this.produceWithPatches(o,a=>s(a,...c));let e,i;return[this.produce(s,t,(o,c)=>{e=o,i=c}),e,i]},typeof(r==null?void 0:r.autoFreeze)=="boolean"&&this.setAutoFreeze(r.autoFreeze),typeof(r==null?void 0:r.useStrictShallowCopy)=="boolean"&&this.setUseStrictShallowCopy(r.useStrictShallowCopy),typeof(r==null?void 0:r.useStrictIteration)=="boolean"&&this.setUseStrictIteration(r.useStrictIteration)}createDraft(r){tt(r)||O(8),ct(r)&&(r=li(r));const s=ws(this),t=$e(r,void 0);return t[P].isManual_=!0,De(s),t}finishDraft(r,s){const t=r&&r[P];(!t||!t.isManual_)&&O(9);const{scope_:e}=t;return vs(e,s),ks(void 0,e)}setAutoFreeze(r){this.autoFreeze_=r}setUseStrictShallowCopy(r){this.useStrictShallowCopy_=r}setUseStrictIteration(r){this.useStrictIteration_=r}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(r,s){let t;for(t=s.length-1;t>=0;t--){const i=s[t];if(i.path.length===0&&i.op==="replace"){r=i.value;break}}t>-1&&(s=s.slice(t+1));const e=et("Patches").applyPatches_;return ct(r)?e(r,s):this.produce(r,i=>e(i,s))}};function $e(r,s){const t=Ot(r)?et("MapSet").proxyMap_(r,s):oe(r)?et("MapSet").proxySet_(r,s):oi(r,s);return(s?s.scope_:Xs()).drafts_.push(t),t}function li(r){return ct(r)||O(10,r),qs(r)}function qs(r){if(!tt(r)||ae(r))return r;const s=r[P];let t,e=!0;if(s){if(!s.modified_)return s.base_;s.finalized_=!0,t=Ae(r,s.scope_.immer_.useStrictShallowCopy_),e=s.scope_.immer_.shouldUseStrictIteration()}else t=Ae(r,!0);return Qt(t,(i,n)=>{Vs(t,i,qs(n))},e),s&&(s.finalized_=!1),t}var hi=new ci,di=hi.produce,ui=Object.defineProperty,pi=(r,s,t)=>s in r?ui(r,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[s]=t,Bt=(r,s,t)=>pi(r,typeof s!="symbol"?s+"":s,t);function fi(r){return{all:r=r||new Map,on:function(s,t){var e=r.get(s);e?e.push(t):r.set(s,[t])},off:function(s,t){var e=r.get(s);e&&(t?e.splice(e.indexOf(t)>>>0,1):r.set(s,[]))},emit:function(s,t){var e=r.get(s);e&&e.slice().map(function(i){i(t)}),(e=r.get("*"))&&e.slice().map(function(i){i(s,t)})}}}var gi=class{constructor(){Bt(this,"emitter",fi()),Bt(this,"on",(r,s)=>(this.emitter.on(r,s),{dispose:()=>this.emitter.off(r,s)})),Bt(this,"once",(r,s)=>{const t=e=>{s(e),this.emitter.off(r,t)};return this.emitter.on(r,t),{dispose:()=>this.emitter.off(r,t)}}),Bt(this,"off",this.emitter.off)}emit(r,...[s]){this.emitter.emit(r,s)}},mi="store-",vi=class extends gi{emitChange(r){this.emit("change",{state:r})}},wi=class{constructor(r,s,t){this.emitter=new vi,this.id=r,this.initValue=s,this.key=`${mi}${r}`,this.storage=(t==null?void 0:t.storage)==="session"?sessionStorage:localStorage,this.get()===void 0&&this.storage.setItem(this.key,JSON.stringify(s))}get(){const r=this.storage.getItem(this.key);return r===null?void 0:JSON.parse(r)}update(r){const s=this.get()??{},t=di(s,r);this.storage.setItem(this.key,JSON.stringify(t)),this.emitter.emitChange(t)}reset(){this.storage.setItem(this.key,JSON.stringify(this.initValue)),this.emitter.emitChange(this.initValue)}on(r,s){return this.emitter.on(r,({state:t})=>s(t))}subscribe(r){const s=this.on("change",r),t=this.get();return t!==void 0&&r(t),s}};const ki="Local";function F(r){return new URL(r).origin}function yi(r){return{servers:[{url:F(r),name:ki}],lastWorkspaceID:null,workspaces:{}}}function bi(r,s){return new wi(r,yi(s))}const Si=4401;class We extends Error{constructor(s="Authentication required"){super(s),this.name="AuthError"}}class Me extends Ke{constructor(t){super();l(this,"url");l(this,"name");l(this,"token");l(this,"status","disconnected");l(this,"workspaces",new Map);l(this,"createSocket");l(this,"socket",null);l(this,"connectAttempt",0);this.url=F(t.url),this.name=t.name,this.token=t.token??null,this.createSocket=t.createSocket??(e=>new WebSocket(e))}async connect(){var i;this.connectAttempt+=1;const t=this.connectAttempt;(i=this.socket)==null||i.close(),this.status="connecting",this.emit("status-changed");const e=this.createSocket(_i(this.url,this.token));return this.socket=e,await new Promise((n,o)=>{let c=!1;const a=()=>{c||this.connectAttempt!==t||(c=!0,this.status="connected",this.emit("status-changed"),n())},d=u=>{c||this.connectAttempt!==t||(c=!0,this.status="disconnected",this.emit("status-changed"),o(u))};e.addEventListener("message",u=>{const p=Ei(u);this.applyServerMessage(p),this.emit("message",p),c||a()}),e.addEventListener("close",u=>{if(this.connectAttempt===t){if(this.socket=null,Ai(u)===Si){d(new We);return}if(!c){d(new Error("Connection closed before initialization"));return}this.status="disconnected",this.emit("status-changed")}}),e.addEventListener("error",()=>{d(new Error("WebSocket connection failed"))})})}disconnect(){var t;this.connectAttempt+=1,(t=this.socket)==null||t.close(),this.socket=null,this.status="disconnected",this.emit("status-changed")}send(t){return!this.socket||this.socket.readyState!==1?!1:(this.socket.send(JSON.stringify(t)),!0)}getArtifactURL(t){const e=new URL(this.url);return e.pathname=`/artifact/${t}`,e.search="",this.token&&e.searchParams.set("token",this.token),e.hash="",e.toString()}applyServerMessage(t){switch(t.type){case"workspace-list":this.workspaces=new Map(t.workspaces.map(e=>[e.id,structuredClone(e)]));break;case"workspace-created":this.workspaces.set(t.workspace.id,structuredClone(t.workspace));break;case"workspace-updated":{const e=this.workspaces.get(t.workspaceID);e&&(typeof t.fields.name=="string"&&(e.name=t.fields.name),Array.isArray(t.fields.layout)&&(e.layout=t.fields.layout));break}case"workspace-removed":this.workspaces.delete(t.workspaceID);break;case"artifact-created":{const e=this.workspaces.get(t.workspaceID);e&&!e.layout.some(i=>i.artifactID===t.artifact.id)&&e.layout.push(Se(t.artifact.id));break}case"artifact-removed":{const e=this.workspaces.get(t.workspaceID);e&&(e.layout=e.layout.filter(i=>i.artifactID!==t.artifactID));break}}}}function _i(r,s){const t=new URL(r);return t.protocol=t.protocol==="https:"?"wss:":"ws:",t.pathname="/ws",t.search="",s&&t.searchParams.set("token",s),t.hash="",t.toString()}function Ai(r){return typeof r=="object"&&r!==null&&"code"in r&&typeof r.code=="number"?r.code:null}function Ei(r){const s=typeof r=="string"?r:typeof r=="object"&&r!==null&&"data"in r&&typeof r.data=="string"?r.data:"";return JSON.parse(s)}class Di extends Ke{constructor(t){super();l(this,"servers",new Map);l(this,"localServerURL");l(this,"activeServer",null);l(this,"clientStore");l(this,"createSocket");l(this,"disposables",new Map);this.clientStore=t.clientStore,this.localServerURL=t.localServerURL?F(t.localServerURL):null,this.createSocket=t.createSocket??(e=>new WebSocket(e))}add(t){const e=F(t.url);this.servers.get(e)&&this.remove(e),this.servers.set(e,t);const n=t.on("status-changed",()=>this.emit("servers-changed")),o=t.on("message",c=>{this.emit("server-event",{serverURL:e,event:c})});this.disposables.set(e,{statusSubscription:n,messageSubscription:o}),this.emit("servers-changed")}remove(t){const e=F(t);if(this.localServerURL&&e===this.localServerURL)return;const i=this.servers.get(e);if(!i)return;const n=this.disposables.get(e);n==null||n.statusSubscription.dispose(),n==null||n.messageSubscription.dispose(),this.disposables.delete(e),i.disconnect(),this.servers.delete(e),this.activeServer===i&&(this.activeServer=null),this.clientStore.update(o=>{o.servers=o.servers.filter(c=>c.url!==e)}),this.emit("servers-changed")}setActive(t){this.activeServer=t,this.emit("servers-changed")}connectConfiguredServers(t){var n;const e=((n=this.clientStore.get())==null?void 0:n.servers)??[];for(const o of e){const c=new Me({url:o.url,name:o.name,createSocket:this.createSocket});this.add(c),c.connect().catch(()=>{})}const i=t?this.servers.get(F(t))??null:null;this.setActive(i??this.servers.values().next().value??null)}addServer(t,e){const i=F(t);this.remove(i),this.clientStore.update(o=>{o.servers=o.servers.filter(c=>F(c.url)!==i),o.servers.push({url:i,name:e})});const n=new Me({url:i,name:e,createSocket:this.createSocket});this.add(n),this.setActive(n),n.connect().catch(()=>{})}removeServer(t){this.remove(t)}}const Ci="serverURL",$i="token",Wi="mode",Mi="electron";function Ys(r=window.location.search,s=window.location.origin){const e=new URLSearchParams(r).get(Ci);return e?new URL(e).origin:new URL(s).origin}function Li(r=window.location.search){return new URLSearchParams(r).get($i)}function js(r=window.location.search){return new URLSearchParams(r).get(Wi)===Mi}class dt{constructor(){this.disposables=[]}add(s){return this.disposables.push(s),s}dispose(){for(const s of this.disposables)s.dispose();this.disposables=[]}}/**
1
+ var Pr=Object.defineProperty;var hs=r=>{throw TypeError(r)};var Ir=(r,s,t)=>s in r?Pr(r,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[s]=t;var l=(r,s,t)=>Ir(r,typeof s!="symbol"?s+"":s,t),de=(r,s,t)=>s.has(r)||hs("Cannot "+t);var h=(r,s,t)=>(de(r,s,"read from private field"),t?t.call(r):s.get(r)),y=(r,s,t)=>s.has(r)?hs("Cannot add the same private member more than once"):s instanceof WeakSet?s.add(r):s.set(r,t),M=(r,s,t,e)=>(de(r,s,"write to private field"),e?e.call(r,t):s.set(r,t),t),f=(r,s,t)=>(de(r,s,"access private method"),t);(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))e(i);new MutationObserver(i=>{for(const n of i)if(n.type==="childList")for(const o of n.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&e(o)}).observe(document,{childList:!0,subtree:!0});function t(i){const n={};return i.integrity&&(n.integrity=i.integrity),i.referrerPolicy&&(n.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?n.credentials="include":i.crossOrigin==="anonymous"?n.credentials="omit":n.credentials="same-origin",n}function e(i){if(i.ep)return;i.ep=!0;const n=t(i);fetch(i.href,n)}})();const ds=new WeakMap;function xr(r){return(typeof r=="object"||typeof r=="function")&&r!==null&&"then"in r&&typeof r.then=="function"}function nt(r){return typeof r=="string"?r:typeof r=="symbol"?r.description??r.toString():r.name||"(anonymous class)"}function us(){return new Error("register(Key, factory) requires a factory function. Wrap existing instances as () => instance.")}function Tr(){return new Error("register(Key, factory) does not accept async factories. Await setup before registering.")}class Rr{constructor(){l(this,"entries",new Map);l(this,"constructionStack",[])}register(s,t){if(t===void 0){if(typeof s!="function")throw us();this.validateClassRegistration(s),this.storeFactory(s,()=>this.instantiateClass(s));return}if(typeof t!="function")throw us();if(t.constructor.name==="AsyncFunction")throw Tr();this.storeFactory(s,t)}has(s){var t;return((t=this.entries.get(s))==null?void 0:t.factory)!==void 0}resolve(s){return this.resolveAny(s)}storeFactory(s,t){const e=this.getOrCreateEntry(s);e.factory=t,e.instance=void 0,e.error=void 0}validateClassRegistration(s){const t=ds.get(s);if(t){if(s.length!==t.length)throw new Error(`${nt(s)} cannot be registered with register(Class). @injectable(...) declared ${t.length} dependencies but constructor arity is ${s.length}. Use register(Key, () => value) instead.`);return}if(s.length!==0)throw new Error(`${nt(s)} cannot be registered with register(Class). Undecorated classes must have zero required constructor parameters. Use register(Key, () => value) instead.`)}instantiateClass(s){const t=ds.get(s);if(!t)return new s;const e=t.map(i=>this.resolveAny(i));return new s(...e)}resolveAny(s){return this.getOrCreateEntry(s).proxy}getOrCreateEntry(s){let t=this.entries.get(s);return t||(t={key:s},t.proxy=this.createProxy(t),this.entries.set(s,t),t)}createProxy(s){return new Proxy({},{get:(t,e)=>{if(e==="then")return;const i=this.getInstance(s),n=Reflect.get(i,e,i);return typeof n=="function"?n.bind(i):n},set:(t,e,i)=>{const n=this.getInstance(s);return Reflect.set(n,e,i,n)},has:(t,e)=>{const i=this.getInstance(s);return e in i}})}getInstance(s){if(s.instance)return s.instance;if(s.error)throw s.error;if(!s.factory)throw new Error(`${nt(s.key)} was resolved but never registered`);const t=this.constructionStack.indexOf(s.key);if(t!==-1){const e=[...this.constructionStack.slice(t),s.key].map(i=>nt(i)).join(" -> ");throw new Error(`Circular dependency detected: ${e}`)}this.constructionStack.push(s.key);try{const e=s.factory();if(xr(e))throw new Error(`Factory for ${nt(s.key)} returned a Promise. Await setup before registering.`);if(typeof e!="object"||e===null)throw new Error(`Factory for ${nt(s.key)} returned a non-object value. Wrap primitives in an object.`);return s.instance=e,e}catch(e){throw s.error=e,e}finally{this.constructionStack.pop()}}}const L=new Rr;function Or(r){return{all:r=r||new Map,on:function(s,t){var e=r.get(s);e?e.push(t):r.set(s,[t])},off:function(s,t){var e=r.get(s);e&&(t?e.splice(e.indexOf(t)>>>0,1):r.set(s,[]))},emit:function(s,t){var e=r.get(s);e&&e.slice().map(function(i){i(t)}),(e=r.get("*"))&&e.slice().map(function(i){i(s,t)})}}}let Ke=class{constructor(){l(this,"emitter",Or());l(this,"off",this.emitter.off)}on(s,t){return this.emitter.on(s,t),{dispose:()=>this.emitter.off(s,t)}}once(s,t){const e=(...i)=>{t(...i),this.emitter.off(s,e)};return this.emitter.on(s,e),{dispose:()=>this.emitter.off(s,e)}}emit(s,...[t]){this.emitter.emit(s,t)}};const Hs="0123456789ABCDEFGHJKMNPQRSTVWXYZ",Zt=32,Nr=16,Fs=10,ps=0xffffffffffff;var Z;(function(r){r.Base32IncorrectEncoding="B32_ENC_INVALID",r.DecodeTimeInvalidCharacter="DEC_TIME_CHAR",r.DecodeTimeValueMalformed="DEC_TIME_MALFORMED",r.EncodeTimeNegative="ENC_TIME_NEG",r.EncodeTimeSizeExceeded="ENC_TIME_SIZE_EXCEED",r.EncodeTimeValueMalformed="ENC_TIME_MALFORMED",r.PRNGDetectFailure="PRNG_DETECT",r.ULIDInvalid="ULID_INVALID",r.Unexpected="UNEXPECTED",r.UUIDInvalid="UUID_INVALID"})(Z||(Z={}));class ft extends Error{constructor(s,t){super(`${t} (${s})`),this.name="ULIDError",this.code=s}}function Ur(r){const s=Math.floor(r()*Zt)%Zt;return Hs.charAt(s)}function Hr(r){const s=Fr(),t=s&&(s.crypto||s.msCrypto)||null;if(typeof(t==null?void 0:t.getRandomValues)=="function")return()=>{const e=new Uint8Array(1);return t.getRandomValues(e),e[0]/256};if(typeof(t==null?void 0:t.randomBytes)=="function")return()=>t.randomBytes(1).readUInt8()/256;throw new ft(Z.PRNGDetectFailure,"Failed to find a reliable PRNG")}function Fr(){return Br()?self:typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:null}function zr(r,s){let t="";for(;r>0;r--)t=Ur(s)+t;return t}function Gr(r,s=Fs){if(isNaN(r))throw new ft(Z.EncodeTimeValueMalformed,`Time must be a number: ${r}`);if(r>ps)throw new ft(Z.EncodeTimeSizeExceeded,`Cannot encode a time larger than ${ps}: ${r}`);if(r<0)throw new ft(Z.EncodeTimeNegative,`Time must be positive: ${r}`);if(Number.isInteger(r)===!1)throw new ft(Z.EncodeTimeValueMalformed,`Time must be an integer: ${r}`);let t,e="";for(let i=s;i>0;i--)t=r%Zt,e=Hs.charAt(t)+e,r=(r-t)/Zt;return e}function Br(){return typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope}function ye(r,s){const t=Hr(),e=Date.now();return Gr(e,Fs)+zr(Nr,t)}const zs="markdown";function Vr(r){const s=r.type??zs;return{id:r.id??ye(),type:s,title:r.title,content:r.content}}const x=2,B=6,Xr=1,Kr=2,qr=3,Yr=4,jr=[Xr,x],Zr=[Kr,qr,Yr,B];function kt(r){const s=Math.round(r);return jr.includes(s)?s:x}function be(r){const s=Math.round(r);return Zr.includes(s)?s:B}function Se(r){return{type:"artifact",artifactID:r,cols:x,rows:B}}function ue(r){return r.layout.map(s=>s.artifactID)}const Ft=[{cols:2,rows:6},{cols:2,rows:4},{cols:2,rows:3},{cols:2,rows:2},{cols:1,rows:2}],pe="create-artifact",fe="remove-artifact",zt="update-layout";class Qr extends Ke{constructor(t){var i;super();l(this,"artifacts",new Map);l(this,"activeWorkspaceID",null);l(this,"scrollPosition",0);l(this,"activeWorkspaceData",null);l(this,"clientStore");l(this,"serverManager");l(this,"pendingMutations",new Map);l(this,"pendingWorkspaceCreates",new Map);l(this,"pendingWorkspaceDeletes",new Map);this.clientStore=t.clientStore,this.serverManager=t.serverManager;const e=this.clientStore.get();this.activeWorkspaceID=(e==null?void 0:e.lastWorkspaceID)??null,this.activeWorkspaceID&&(this.scrollPosition=((i=e==null?void 0:e.workspaces[this.activeWorkspaceID])==null?void 0:i.scrollPosition)??0)}get workspaces(){return[...this.getServers().values()].flatMap(t=>[...t.workspaces.values()])}get activeWorkspace(){return this.activeWorkspaceData}get activeWorkspaceServerURL(){var t;return this.activeWorkspaceID?((t=this.findWorkspace(this.activeWorkspaceID))==null?void 0:t.serverURL)??null:null}get activeArtifacts(){return(this.activeWorkspaceData?ue(this.activeWorkspaceData):[]).map(t=>this.artifacts.get(t)).filter(t=>t!==void 0)}getArtifactURL(t){const e=this.activeWorkspaceServerURL;if(!e)return null;const i=this.getServers().get(e);return i!=null&&i.getArtifactURL?i.getArtifactURL(t):null}setActiveWorkspace(t){this.selectWorkspace(t)}setScrollPosition(t){const e=Math.max(0,t);this.scrollPosition!==e&&(this.scrollPosition=e,this.persistWorkspaceViewState(),this.emit("change"))}createArtifact(t){var a;const e=this.activeWorkspaceData;if(!e)return;const i=this.snapshotState(),n=Vr({id:ye(),type:zs,title:t.title,content:t.content});e.layout.some(d=>d.artifactID===n.id)||e.layout.push(Se(n.id)),this.artifacts.set(n.id,n),this.scrollPosition=Math.max(e.layout.length-1,0),this.persistWorkspaceViewState(),this.emit("change");const o=((a=this.findWorkspace(e.id))==null?void 0:a.server)??null,c=this.getMutationKey(pe,n.id);this.pendingMutations.set(c,i),this.sendServerMessage(o,{type:"create-artifact",id:n.id,title:t.title,content:t.content,workspaceID:e.id})||(this.pendingMutations.delete(c),this.restoreState(i),this.emit("change"))}removeArtifact(t){var c;const e=this.activeWorkspaceData;if(!e||!this.artifacts.has(t))return;const i=this.snapshotState();this.removeArtifactLocally(t),this.emit("change");const n=((c=this.findWorkspace(e.id))==null?void 0:c.server)??null,o=this.getMutationKey(fe,t);this.pendingMutations.set(o,i),this.sendServerMessage(n,{type:"remove-artifact",artifactID:t,workspaceID:e.id})||(this.pendingMutations.delete(o),this.restoreState(i),this.emit("change"))}reorderLayout(t){const e=this.activeWorkspaceData;if(!e)return;const i=ue(e);if(t.length!==i.length||t.every((c,a)=>c===i[a]))return;const n=new Map(e.layout.map(c=>[c.artifactID,structuredClone(c)]));if(new Set(t).size!==t.length)return;const o=t.map(c=>n.get(c)).filter(c=>c!==void 0);o.length===t.length&&this.updateLayout(o)}cycleArtifactLayout(t){const e=this.activeWorkspaceData;if(!e)return;const i=e.layout.findIndex(o=>o.artifactID===t);if(i===-1)return;const n=e.layout.map((o,c)=>c===i?{...o,...Jr(o.cols,o.rows)}:structuredClone(o));this.updateLayout(n)}handleServerEvent(t,e){var i;switch(e.type){case"workspace-list":this.syncActiveWorkspaceState(t,!0);break;case"workspace-updated":this.syncActiveWorkspaceState(t,!1),Array.isArray(e.fields.layout)&&this.pendingMutations.delete(this.getMutationKey(zt,e.workspaceID));break;case"workspace-removed":{this.syncActiveWorkspaceState(t,!1);const n=this.pendingWorkspaceDeletes.get(e.workspaceID);n&&(this.pendingWorkspaceDeletes.delete(e.workspaceID),n.resolve());break}case"workspace-created":if(this.pendingWorkspaceCreates.has(e.workspace.id)){const n=this.pendingWorkspaceCreates.get(e.workspace.id);this.pendingWorkspaceCreates.delete(e.workspace.id),this.selectWorkspace(e.workspace.id),n==null||n.resolve();return}this.syncActiveWorkspaceState(t,!1);break;case"workspace":this.applyWorkspaceSnapshot(e.workspace,e.artifacts);break;case"artifact-created":this.pendingMutations.delete(this.getMutationKey(pe,e.artifact.id)),this.applyArtifactCreated(e);break;case"artifact-updated":this.applyArtifactUpdated(e);break;case"artifact-removed":if(this.pendingMutations.delete(this.getMutationKey(fe,e.artifactID)),((i=this.activeWorkspaceData)==null?void 0:i.id)!==e.workspaceID)return;this.removeArtifactLocally(e.artifactID)&&this.emit("change");break;case"error":this.handleServerError(e);break}}createWorkspace(t,e){const i=this.getServers().get(t)??null,n=ye(),o=fs();return this.pendingWorkspaceCreates.set(n,o),this.sendServerMessage(i,{type:"create-workspace",id:n,name:e})||(this.pendingWorkspaceCreates.delete(n),o.reject(new Error(`Server unavailable: ${t}`))),o.promise}deleteWorkspace(){var o;const t=this.activeWorkspaceData;if(!t)return Promise.reject(new Error("No active workspace"));const e=this.pendingWorkspaceDeletes.get(t.id);if(e)return e.promise;const i=((o=this.findWorkspace(t.id))==null?void 0:o.server)??null,n=fs();return this.pendingWorkspaceDeletes.set(t.id,n),this.sendServerMessage(i,{type:"delete-workspace",workspaceID:t.id})||(this.pendingWorkspaceDeletes.delete(t.id),n.reject(new Error(`Server unavailable: ${t.id}`))),n.promise}renameWorkspace(t){var n;const e=this.activeWorkspaceData;if(!e)return;const i=((n=this.findWorkspace(e.id))==null?void 0:n.server)??null;e.name=t,this.emit("change"),this.sendServerMessage(i,{type:"update-workspace",workspaceID:e.id,fields:{name:t}})}updateLayout(t){var c;const e=this.activeWorkspaceData;if(!e)return;const i=this.snapshotState();e.layout=t,this.emit("change");const n=((c=this.findWorkspace(e.id))==null?void 0:c.server)??null,o=this.getMutationKey(zt,e.id);this.pendingMutations.set(o,i),this.sendServerMessage(n,{type:"update-workspace",workspaceID:e.id,fields:{layout:t.map(a=>structuredClone(a))}})||(this.pendingMutations.delete(o),this.restoreState(i),this.emit("change"))}syncActiveWorkspaceState(t,e){const i=this.activeWorkspaceID?this.findWorkspace(this.activeWorkspaceID):null;if(!i){const n=this.pickNextWorkspace();if(!n){const o=this.activeWorkspaceID!==null||this.activeWorkspaceData!==null||this.artifacts.size>0;this.activeWorkspaceID=null,this.activeWorkspaceData=null,this.artifacts.clear(),this.scrollPosition=0,o&&this.emit("change");return}this.selectWorkspace(n.workspace.id);return}this.applyServerWorkspaceState(i.workspace),e&&i.serverURL===t&&this.requestWorkspace(i.serverURL,i.workspace.id)}hasPendingLayoutMutation(t){return this.pendingMutations.has(this.getMutationKey(zt,t))}selectWorkspace(t){const e=this.findWorkspace(t);e&&(this.activeWorkspaceID=t,this.activeWorkspaceData=structuredClone(e.workspace),this.artifacts.clear(),this.restoreWorkspaceViewState(),this.persistActiveWorkspace(),this.requestWorkspace(e.serverURL,t),this.emit("change"))}requestWorkspace(t,e){const i=this.getServers().get(t);this.sendServerMessage(i??null,{type:"get-workspace",workspaceID:e})}applyWorkspaceSnapshot(t,e){if(t.id===this.activeWorkspaceID){this.applyServerWorkspaceState(t),this.artifacts.clear();for(const i of e)this.artifacts.set(i.id,structuredClone(i));this.restoreWorkspaceViewState(),this.emit("change")}}applyServerWorkspaceState(t){if(!this.activeWorkspaceData||this.activeWorkspaceData.id!==t.id){this.activeWorkspaceData=structuredClone(t);return}this.activeWorkspaceData.name=t.name,this.hasPendingLayoutMutation(t.id)||(this.activeWorkspaceData.layout=t.layout.map(e=>structuredClone(e)))}applyArtifactCreated(t){var e;((e=this.activeWorkspaceData)==null?void 0:e.id)===t.workspaceID&&(this.activeWorkspaceData.layout.some(i=>i.artifactID===t.artifact.id)||this.activeWorkspaceData.layout.push(Se(t.artifact.id)),this.artifacts.set(t.artifact.id,t.artifact),this.emit("change"))}applyArtifactUpdated(t){const e=this.artifacts.get(t.artifactID);e&&(Object.assign(e,t.fields),this.emit("change"))}removeArtifactLocally(t){if(!this.activeWorkspaceData)return!1;const e=this.artifacts.delete(t),i=this.activeWorkspaceData.layout.length;return this.activeWorkspaceData.layout=this.activeWorkspaceData.layout.filter(n=>n.artifactID!==t),!(!e&&i===this.activeWorkspaceData.layout.length)}snapshotState(){return{activeWorkspaceData:this.activeWorkspaceData?structuredClone(this.activeWorkspaceData):null,scrollPosition:this.scrollPosition,artifacts:new Map([...this.artifacts.entries()].map(([t,e])=>[t,structuredClone(e)]))}}restoreState(t){this.activeWorkspaceData=t.activeWorkspaceData?structuredClone(t.activeWorkspaceData):null,this.scrollPosition=t.scrollPosition,this.artifacts.clear();for(const[e,i]of t.artifacts.entries())this.artifacts.set(e,structuredClone(i));this.persistWorkspaceViewState()}handleServerError(t){const e=t.request;if(e){if(e.type==="create-artifact"){const i=this.getMutationKey(pe,e.id),n=this.pendingMutations.get(i);if(!n)return;this.pendingMutations.delete(i),this.restoreState(n),this.emit("change");return}if(e.type==="create-workspace"){const i=this.pendingWorkspaceCreates.get(e.id);if(!i)return;this.pendingWorkspaceCreates.delete(e.id),i.reject(new Error(t.message));return}if(e.type==="delete-workspace"){const i=this.pendingWorkspaceDeletes.get(e.workspaceID);if(!i)return;this.pendingWorkspaceDeletes.delete(e.workspaceID),i.reject(new Error(t.message));return}if(e.type==="update-workspace"&&Array.isArray(e.fields.layout)){const i=this.getMutationKey(zt,e.workspaceID),n=this.pendingMutations.get(i);if(!n)return;this.pendingMutations.delete(i),this.restoreState(n),this.emit("change");return}if(e.type==="remove-artifact"){const i=this.getMutationKey(fe,e.artifactID),n=this.pendingMutations.get(i);if(!n)return;this.pendingMutations.delete(i),this.restoreState(n),this.emit("change")}}}restoreWorkspaceViewState(){var i,n;if(!this.activeWorkspaceID){this.scrollPosition=0;return}const t=((n=(i=this.clientStore.get())==null?void 0:i.workspaces[this.activeWorkspaceID])==null?void 0:n.scrollPosition)??0,e=this.activeWorkspaceData?ue(this.activeWorkspaceData):[];this.scrollPosition=Math.max(0,Math.min(t,Math.max(e.length-1,0))),this.persistWorkspaceViewState()}persistActiveWorkspace(){this.clientStore.update(t=>{t.lastWorkspaceID=this.activeWorkspaceID})}persistWorkspaceViewState(){this.activeWorkspaceID&&this.clientStore.update(t=>{var e,i;(e=t.workspaces)[i=this.activeWorkspaceID]??(e[i]={scrollPosition:0}),t.workspaces[this.activeWorkspaceID].scrollPosition=this.scrollPosition})}findWorkspace(t){for(const[e,i]of this.getServers()){const n=i.workspaces.get(t);if(n)return{serverURL:e,server:i,workspace:n}}return null}pickNextWorkspace(){var e;const t=(e=this.clientStore.get())==null?void 0:e.lastWorkspaceID;if(t){const i=this.findWorkspace(t);if(i)return i}for(const[i,n]of this.getServers()){const o=n.workspaces.values().next().value;if(o)return{serverURL:i,server:n,workspace:o}}return null}sendServerMessage(t,e){return t?t.send(e):!1}getServers(){return this.serverManager.servers}getMutationKey(t,e){return`${t}:${e}`}}function Jr(r,s){const t=Ft.findIndex(i=>i.cols===r&&i.rows===s),e=t===-1?0:(t+1)%Ft.length;return{cols:Ft[e].cols,rows:Ft[e].rows}}function fs(){let r,s;return{promise:new Promise((e,i)=>{r=e,s=i}),resolve:r,reject:s}}var Gs=Symbol.for("immer-nothing"),gs=Symbol.for("immer-draftable"),P=Symbol.for("immer-state");function O(r,...s){throw new Error(`[Immer] minified error nr: ${r}. Full error at: https://bit.ly/3cXEKWf`)}var yt=Object.getPrototypeOf;function ct(r){return!!r&&!!r[P]}function tt(r){var s;return r?Bs(r)||Array.isArray(r)||!!r[gs]||!!((s=r.constructor)!=null&&s[gs])||Ot(r)||oe(r):!1}var ti=Object.prototype.constructor.toString(),ms=new WeakMap;function Bs(r){if(!r||typeof r!="object")return!1;const s=Object.getPrototypeOf(r);if(s===null||s===Object.prototype)return!0;const t=Object.hasOwnProperty.call(s,"constructor")&&s.constructor;if(t===Object)return!0;if(typeof t!="function")return!1;let e=ms.get(t);return e===void 0&&(e=Function.toString.call(t),ms.set(t,e)),e===ti}function Qt(r,s,t=!0){ne(r)===0?(t?Reflect.ownKeys(r):Object.keys(r)).forEach(i=>{s(i,r[i],r)}):r.forEach((e,i)=>s(i,e,r))}function ne(r){const s=r[P];return s?s.type_:Array.isArray(r)?1:Ot(r)?2:oe(r)?3:0}function _e(r,s){return ne(r)===2?r.has(s):Object.prototype.hasOwnProperty.call(r,s)}function Vs(r,s,t){const e=ne(r);e===2?r.set(s,t):e===3?r.add(t):r[s]=t}function ei(r,s){return r===s?r!==0||1/r===1/s:r!==r&&s!==s}function Ot(r){return r instanceof Map}function oe(r){return r instanceof Set}function K(r){return r.copy_||r.base_}function Ae(r,s){if(Ot(r))return new Map(r);if(oe(r))return new Set(r);if(Array.isArray(r))return Array.prototype.slice.call(r);const t=Bs(r);if(s===!0||s==="class_only"&&!t){const e=Object.getOwnPropertyDescriptors(r);delete e[P];let i=Reflect.ownKeys(e);for(let n=0;n<i.length;n++){const o=i[n],c=e[o];c.writable===!1&&(c.writable=!0,c.configurable=!0),(c.get||c.set)&&(e[o]={configurable:!0,writable:!0,enumerable:c.enumerable,value:r[o]})}return Object.create(yt(r),e)}else{const e=yt(r);if(e!==null&&t)return{...r};const i=Object.create(e);return Object.assign(i,r)}}function qe(r,s=!1){return ae(r)||ct(r)||!tt(r)||(ne(r)>1&&Object.defineProperties(r,{set:Gt,add:Gt,clear:Gt,delete:Gt}),Object.freeze(r),s&&Object.values(r).forEach(t=>qe(t,!0))),r}function si(){O(2)}var Gt={value:si};function ae(r){return r===null||typeof r!="object"?!0:Object.isFrozen(r)}var ri={};function et(r){const s=ri[r];return s||O(0,r),s}var bt;function Xs(){return bt}function ii(r,s){return{drafts_:[],parent_:r,immer_:s,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function vs(r,s){s&&(et("Patches"),r.patches_=[],r.inversePatches_=[],r.patchListener_=s)}function Ee(r){De(r),r.drafts_.forEach(ni),r.drafts_=null}function De(r){r===bt&&(bt=r.parent_)}function ws(r){return bt=ii(bt,r)}function ni(r){const s=r[P];s.type_===0||s.type_===1?s.revoke_():s.revoked_=!0}function ks(r,s){s.unfinalizedDrafts_=s.drafts_.length;const t=s.drafts_[0];return r!==void 0&&r!==t?(t[P].modified_&&(Ee(s),O(4)),tt(r)&&(r=Jt(s,r),s.parent_||te(s,r)),s.patches_&&et("Patches").generateReplacementPatches_(t[P].base_,r,s.patches_,s.inversePatches_)):r=Jt(s,t,[]),Ee(s),s.patches_&&s.patchListener_(s.patches_,s.inversePatches_),r!==Gs?r:void 0}function Jt(r,s,t){if(ae(s))return s;const e=r.immer_.shouldUseStrictIteration(),i=s[P];if(!i)return Qt(s,(n,o)=>ys(r,i,s,n,o,t),e),s;if(i.scope_!==r)return s;if(!i.modified_)return te(r,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;const n=i.copy_;let o=n,c=!1;i.type_===3&&(o=new Set(n),n.clear(),c=!0),Qt(o,(a,d)=>ys(r,i,n,a,d,t,c),e),te(r,n,!1),t&&r.patches_&&et("Patches").generatePatches_(i,t,r.patches_,r.inversePatches_)}return i.copy_}function ys(r,s,t,e,i,n,o){if(i==null||typeof i!="object"&&!o)return;const c=ae(i);if(!(c&&!o)){if(ct(i)){const a=n&&s&&s.type_!==3&&!_e(s.assigned_,e)?n.concat(e):void 0,d=Jt(r,i,a);if(Vs(t,e,d),ct(d))r.canAutoFreeze_=!1;else return}else o&&t.add(i);if(tt(i)&&!c){if(!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||s&&s.base_&&s.base_[e]===i&&c)return;Jt(r,i),(!s||!s.scope_.parent_)&&typeof e!="symbol"&&(Ot(t)?t.has(e):Object.prototype.propertyIsEnumerable.call(t,e))&&te(r,i)}}}function te(r,s,t=!1){!r.parent_&&r.immer_.autoFreeze_&&r.canAutoFreeze_&&qe(s,t)}function oi(r,s){const t=Array.isArray(r),e={type_:t?1:0,scope_:s?s.scope_:Xs(),modified_:!1,finalized_:!1,assigned_:{},parent_:s,base_:r,draft_:null,copy_:null,revoke_:null,isManual_:!1};let i=e,n=Ye;t&&(i=[e],n=St);const{revoke:o,proxy:c}=Proxy.revocable(i,n);return e.draft_=c,e.revoke_=o,c}var Ye={get(r,s){if(s===P)return r;const t=K(r);if(!_e(t,s))return ai(r,t,s);const e=t[s];return r.finalized_||!tt(e)?e:e===ge(r.base_,s)?(me(r),r.copy_[s]=$e(e,r)):e},has(r,s){return s in K(r)},ownKeys(r){return Reflect.ownKeys(K(r))},set(r,s,t){const e=Ks(K(r),s);if(e!=null&&e.set)return e.set.call(r.draft_,t),!0;if(!r.modified_){const i=ge(K(r),s),n=i==null?void 0:i[P];if(n&&n.base_===t)return r.copy_[s]=t,r.assigned_[s]=!1,!0;if(ei(t,i)&&(t!==void 0||_e(r.base_,s)))return!0;me(r),Ce(r)}return r.copy_[s]===t&&(t!==void 0||s in r.copy_)||Number.isNaN(t)&&Number.isNaN(r.copy_[s])||(r.copy_[s]=t,r.assigned_[s]=!0),!0},deleteProperty(r,s){return ge(r.base_,s)!==void 0||s in r.base_?(r.assigned_[s]=!1,me(r),Ce(r)):delete r.assigned_[s],r.copy_&&delete r.copy_[s],!0},getOwnPropertyDescriptor(r,s){const t=K(r),e=Reflect.getOwnPropertyDescriptor(t,s);return e&&{writable:!0,configurable:r.type_!==1||s!=="length",enumerable:e.enumerable,value:t[s]}},defineProperty(){O(11)},getPrototypeOf(r){return yt(r.base_)},setPrototypeOf(){O(12)}},St={};Qt(Ye,(r,s)=>{St[r]=function(){return arguments[0]=arguments[0][0],s.apply(this,arguments)}});St.deleteProperty=function(r,s){return St.set.call(this,r,s,void 0)};St.set=function(r,s,t){return Ye.set.call(this,r[0],s,t,r[0])};function ge(r,s){const t=r[P];return(t?K(t):r)[s]}function ai(r,s,t){var i;const e=Ks(s,t);return e?"value"in e?e.value:(i=e.get)==null?void 0:i.call(r.draft_):void 0}function Ks(r,s){if(!(s in r))return;let t=yt(r);for(;t;){const e=Object.getOwnPropertyDescriptor(t,s);if(e)return e;t=yt(t)}}function Ce(r){r.modified_||(r.modified_=!0,r.parent_&&Ce(r.parent_))}function me(r){r.copy_||(r.copy_=Ae(r.base_,r.scope_.immer_.useStrictShallowCopy_))}var ci=class{constructor(r){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(s,t,e)=>{if(typeof s=="function"&&typeof t!="function"){const n=t;t=s;const o=this;return function(a=n,...d){return o.produce(a,u=>t.call(this,u,...d))}}typeof t!="function"&&O(6),e!==void 0&&typeof e!="function"&&O(7);let i;if(tt(s)){const n=ws(this),o=$e(s,void 0);let c=!0;try{i=t(o),c=!1}finally{c?Ee(n):De(n)}return vs(n,e),ks(i,n)}else if(!s||typeof s!="object"){if(i=t(s),i===void 0&&(i=s),i===Gs&&(i=void 0),this.autoFreeze_&&qe(i,!0),e){const n=[],o=[];et("Patches").generateReplacementPatches_(s,i,n,o),e(n,o)}return i}else O(1,s)},this.produceWithPatches=(s,t)=>{if(typeof s=="function")return(o,...c)=>this.produceWithPatches(o,a=>s(a,...c));let e,i;return[this.produce(s,t,(o,c)=>{e=o,i=c}),e,i]},typeof(r==null?void 0:r.autoFreeze)=="boolean"&&this.setAutoFreeze(r.autoFreeze),typeof(r==null?void 0:r.useStrictShallowCopy)=="boolean"&&this.setUseStrictShallowCopy(r.useStrictShallowCopy),typeof(r==null?void 0:r.useStrictIteration)=="boolean"&&this.setUseStrictIteration(r.useStrictIteration)}createDraft(r){tt(r)||O(8),ct(r)&&(r=li(r));const s=ws(this),t=$e(r,void 0);return t[P].isManual_=!0,De(s),t}finishDraft(r,s){const t=r&&r[P];(!t||!t.isManual_)&&O(9);const{scope_:e}=t;return vs(e,s),ks(void 0,e)}setAutoFreeze(r){this.autoFreeze_=r}setUseStrictShallowCopy(r){this.useStrictShallowCopy_=r}setUseStrictIteration(r){this.useStrictIteration_=r}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(r,s){let t;for(t=s.length-1;t>=0;t--){const i=s[t];if(i.path.length===0&&i.op==="replace"){r=i.value;break}}t>-1&&(s=s.slice(t+1));const e=et("Patches").applyPatches_;return ct(r)?e(r,s):this.produce(r,i=>e(i,s))}};function $e(r,s){const t=Ot(r)?et("MapSet").proxyMap_(r,s):oe(r)?et("MapSet").proxySet_(r,s):oi(r,s);return(s?s.scope_:Xs()).drafts_.push(t),t}function li(r){return ct(r)||O(10,r),qs(r)}function qs(r){if(!tt(r)||ae(r))return r;const s=r[P];let t,e=!0;if(s){if(!s.modified_)return s.base_;s.finalized_=!0,t=Ae(r,s.scope_.immer_.useStrictShallowCopy_),e=s.scope_.immer_.shouldUseStrictIteration()}else t=Ae(r,!0);return Qt(t,(i,n)=>{Vs(t,i,qs(n))},e),s&&(s.finalized_=!1),t}var hi=new ci,di=hi.produce,ui=Object.defineProperty,pi=(r,s,t)=>s in r?ui(r,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[s]=t,Bt=(r,s,t)=>pi(r,typeof s!="symbol"?s+"":s,t);function fi(r){return{all:r=r||new Map,on:function(s,t){var e=r.get(s);e?e.push(t):r.set(s,[t])},off:function(s,t){var e=r.get(s);e&&(t?e.splice(e.indexOf(t)>>>0,1):r.set(s,[]))},emit:function(s,t){var e=r.get(s);e&&e.slice().map(function(i){i(t)}),(e=r.get("*"))&&e.slice().map(function(i){i(s,t)})}}}var gi=class{constructor(){Bt(this,"emitter",fi()),Bt(this,"on",(r,s)=>(this.emitter.on(r,s),{dispose:()=>this.emitter.off(r,s)})),Bt(this,"once",(r,s)=>{const t=e=>{s(e),this.emitter.off(r,t)};return this.emitter.on(r,t),{dispose:()=>this.emitter.off(r,t)}}),Bt(this,"off",this.emitter.off)}emit(r,...[s]){this.emitter.emit(r,s)}},mi="store-",vi=class extends gi{emitChange(r){this.emit("change",{state:r})}},wi=class{constructor(r,s,t){this.emitter=new vi,this.id=r,this.initValue=s,this.key=`${mi}${r}`,this.storage=(t==null?void 0:t.storage)==="session"?sessionStorage:localStorage,this.get()===void 0&&this.storage.setItem(this.key,JSON.stringify(s))}get(){const r=this.storage.getItem(this.key);return r===null?void 0:JSON.parse(r)}update(r){const s=this.get()??{},t=di(s,r);this.storage.setItem(this.key,JSON.stringify(t)),this.emitter.emitChange(t)}reset(){this.storage.setItem(this.key,JSON.stringify(this.initValue)),this.emitter.emitChange(this.initValue)}on(r,s){return this.emitter.on(r,({state:t})=>s(t))}subscribe(r){const s=this.on("change",r),t=this.get();return t!==void 0&&r(t),s}};const ki="Local";function F(r){return new URL(r).origin}function yi(r){return{servers:[{url:F(r),name:ki}],lastWorkspaceID:null,workspaces:{}}}function bi(r,s){return new wi(r,yi(s))}const Si=4401;class We extends Error{constructor(s="Authentication required"){super(s),this.name="AuthError"}}class Me extends Ke{constructor(t){super();l(this,"url");l(this,"name");l(this,"token");l(this,"status","disconnected");l(this,"workspaces",new Map);l(this,"createSocket");l(this,"socket",null);l(this,"connectAttempt",0);this.url=F(t.url),this.name=t.name,this.token=t.token??null,this.createSocket=t.createSocket??(e=>new WebSocket(e))}async connect(){var i;this.connectAttempt+=1;const t=this.connectAttempt;(i=this.socket)==null||i.close(),this.status="connecting",this.emit("status-changed");const e=this.createSocket(_i(this.url,this.token));return this.socket=e,await new Promise((n,o)=>{let c=!1;const a=()=>{c||this.connectAttempt!==t||(c=!0,this.status="connected",this.emit("status-changed"),n())},d=u=>{c||this.connectAttempt!==t||(c=!0,this.status="disconnected",this.emit("status-changed"),o(u))};e.addEventListener("message",u=>{const p=Ei(u);this.applyServerMessage(p),this.emit("message",p),c||a()}),e.addEventListener("close",u=>{if(this.connectAttempt===t){if(this.socket=null,Ai(u)===Si){d(new We);return}if(!c){d(new Error("Connection closed before initialization"));return}this.status="disconnected",this.emit("status-changed")}}),e.addEventListener("error",()=>{d(new Error("WebSocket connection failed"))})})}disconnect(){var t;this.connectAttempt+=1,(t=this.socket)==null||t.close(),this.socket=null,this.status="disconnected",this.emit("status-changed")}send(t){return!this.socket||this.socket.readyState!==1?!1:(this.socket.send(JSON.stringify(t)),!0)}getArtifactURL(t){const e=new URL(this.url);return e.pathname=`/artifact/${t}`,e.search="",this.token&&e.searchParams.set("token",this.token),e.hash="",e.toString()}applyServerMessage(t){switch(t.type){case"workspace-list":this.workspaces=new Map(t.workspaces.map(e=>[e.id,structuredClone(e)]));break;case"workspace-created":this.workspaces.set(t.workspace.id,structuredClone(t.workspace));break;case"workspace-updated":{const e=this.workspaces.get(t.workspaceID);e&&(typeof t.fields.name=="string"&&(e.name=t.fields.name),Array.isArray(t.fields.layout)&&(e.layout=t.fields.layout));break}case"workspace-removed":this.workspaces.delete(t.workspaceID);break;case"artifact-created":{const e=this.workspaces.get(t.workspaceID);e&&!e.layout.some(i=>i.artifactID===t.artifact.id)&&e.layout.push(Se(t.artifact.id));break}case"artifact-removed":{const e=this.workspaces.get(t.workspaceID);e&&(e.layout=e.layout.filter(i=>i.artifactID!==t.artifactID));break}}}}function _i(r,s){const t=new URL(r);return t.protocol=t.protocol==="https:"?"wss:":"ws:",t.pathname="/ws",t.search="",s&&t.searchParams.set("token",s),t.hash="",t.toString()}function Ai(r){return typeof r=="object"&&r!==null&&"code"in r&&typeof r.code=="number"?r.code:null}function Ei(r){const s=typeof r=="string"?r:typeof r=="object"&&r!==null&&"data"in r&&typeof r.data=="string"?r.data:"";return JSON.parse(s)}class Di extends Ke{constructor(t){super();l(this,"servers",new Map);l(this,"localServerURL");l(this,"activeServer",null);l(this,"clientStore");l(this,"createSocket");l(this,"disposables",new Map);this.clientStore=t.clientStore,this.localServerURL=t.localServerURL?F(t.localServerURL):null,this.createSocket=t.createSocket??(e=>new WebSocket(e))}add(t){const e=F(t.url);this.servers.get(e)&&this.remove(e),this.servers.set(e,t);const n=t.on("status-changed",()=>this.emit("servers-changed")),o=t.on("message",c=>{this.emit("server-event",{serverURL:e,event:c})});this.disposables.set(e,{statusSubscription:n,messageSubscription:o}),this.emit("servers-changed")}remove(t){const e=F(t);if(this.localServerURL&&e===this.localServerURL)return;const i=this.servers.get(e);if(!i)return;const n=this.disposables.get(e);n==null||n.statusSubscription.dispose(),n==null||n.messageSubscription.dispose(),this.disposables.delete(e),i.disconnect(),this.servers.delete(e),this.activeServer===i&&(this.activeServer=null),this.clientStore.update(o=>{o.servers=o.servers.filter(c=>c.url!==e)}),this.emit("servers-changed")}setActive(t){this.activeServer=t,this.emit("servers-changed")}connectConfiguredServers(t){var n;const e=((n=this.clientStore.get())==null?void 0:n.servers)??[];for(const o of e){const c=new Me({url:o.url,name:o.name,createSocket:this.createSocket});this.add(c),c.connect().catch(()=>{})}const i=t?this.servers.get(F(t))??null:null;this.setActive(i??this.servers.values().next().value??null)}addServer(t,e){const i=F(t);this.remove(i),this.clientStore.update(o=>{o.servers=o.servers.filter(c=>F(c.url)!==i),o.servers.push({url:i,name:e})});const n=new Me({url:i,name:e,createSocket:this.createSocket});this.add(n),this.setActive(n),n.connect().catch(()=>{})}removeServer(t){this.remove(t)}}const Ci="serverURL",$i="token",Wi="mode",Mi="electron";function Ys(r=window.location.search,s=window.location.origin){const e=new URLSearchParams(r).get(Ci);return e?new URL(e).origin:new URL(s).origin}function Li(r=window.location.search){return new URLSearchParams(r).get($i)}function js(r=window.location.search){return new URLSearchParams(r).get(Wi)===Mi}class dt{constructor(){l(this,"disposables",[])}add(s){return this.disposables.push(s),s}dispose(){for(const s of this.disposables)s.dispose();this.disposables=[]}}/**
2
2
  * @license
3
3
  * Copyright 2017 Google LLC
4
4
  * SPDX-License-Identifier: BSD-3-Clause
@@ -0,0 +1 @@
1
+ artifact-view{background:var(--color-bg-muted);border:1px solid var(--color-border);border-radius:10px;box-sizing:border-box;width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}.artifact-title-bar{display:flex;align-items:center;height:34px;padding:0 12px;flex-shrink:0;border-bottom:1px solid var(--color-border);-webkit-user-select:none;user-select:none}.artifact-title{flex:1;font-size:13px;font-weight:500;color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.artifact-close-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:6px;background:transparent;color:var(--color-text-muted);cursor:pointer;flex-shrink:0}.artifact-close-btn:hover{background:var(--color-interactive);color:var(--color-text)}.artifact-content{flex:1;min-height:0;overflow:hidden;padding:0}.artifact-html-frame{pointer-events:none}layout-stream{width:100%;flex:1;min-width:0;min-height:0;display:flex;align-items:center;overflow:hidden;outline:none;position:relative;--layout-col-width: 300px;--layout-row-height: 133.33px;--layout-gap: 16px}layout-stream .track{display:flex;align-items:start;gap:var(--layout-gap);flex-shrink:0;width:max-content;will-change:transform;transition:transform .2s ease}layout-stream .band{display:grid;grid-template-rows:repeat(6,var(--layout-row-height));gap:var(--layout-gap);align-self:start}layout-stream .band[layout-band-cols="1"]{grid-template-columns:var(--layout-col-width);width:var(--layout-col-width)}layout-stream .band[layout-band-cols="2"]{grid-template-columns:repeat(2,var(--layout-col-width));width:calc(var(--layout-col-width) * 2 + var(--layout-gap))}layout-stream .card-slot{border-radius:12px;box-sizing:border-box;cursor:pointer;min-width:0;min-height:0}layout-stream .card-slot.placeholder{background:#94a3b829;border:2px dashed rgba(148,163,184,.7);box-shadow:inset 0 0 0 1px #0f172a0d}layout-stream .card-slot.dragging{position:fixed;z-index:100;opacity:.7;transform:rotate(2deg);pointer-events:none;cursor:grabbing}layout-stream .card-slot artifact-view{width:100%;height:100%}layout-stream .card-slot[layout-cols="1"][layout-rows="2"] artifact-view{position:relative}layout-stream .card-slot[layout-cols="1"][layout-rows="2"] .artifact-title-bar{position:absolute;top:0;left:0;right:0;z-index:2;border-radius:10px 10px 0 0;background:var(--color-bg-muted);opacity:0;pointer-events:none;transition:opacity .12s ease}layout-stream .card-slot[layout-cols="1"][layout-rows="2"]:hover .artifact-title-bar,layout-stream .card-slot[layout-cols="1"][layout-rows="2"]:focus-within .artifact-title-bar{opacity:1;pointer-events:auto}workspace-view{width:100%;flex:1;min-width:0;min-height:0;display:flex;flex-direction:column}workspace-view [data-testid=empty-workspace]{margin:0;padding:1rem}television-app{width:100%;height:100%;display:grid;grid-template-rows:auto 1fr;grid-template-areas:"header" "main"}television-app>header{grid-area:header;position:relative;z-index:10}television-app>main{grid-area:main;grid-row:1 / -1}body.electron television-app>header{-webkit-app-region:drag;padding-left:80px;border-bottom:1px solid var(--color-border)}header{display:flex;align-items:center;justify-content:space-between;height:34px;padding:0 12px;flex-shrink:0;-webkit-user-select:none;user-select:none}television-app>header>nav{display:flex;align-items:center;gap:8px;min-width:0}workspace-picker,workspace-picker [trigger],button[variant=toolbar],.settings-server-remove-button,.settings-submit-button,.settings-cancel-button,.settings-connect-button,.settings-field input{-webkit-app-region:no-drag}workspace-picker dropdown-menu::part(panel){min-width:18rem}workspace-picker [trigger],workspace-picker [trigger][data-dropdown-trigger]{min-width:0;padding:0;border:none;background:transparent;font-size:13px;font-weight:600}workspace-picker [trigger] .trigger-label{white-space:nowrap}dropdown-group{display:block;padding:4px 0}dropdown-label{display:block;padding:0 10px 4px;font-size:12px;color:color-mix(in srgb,currentColor 60%,transparent)}dropdown-item{display:block;padding:6px 10px;border-radius:4px;cursor:pointer}dropdown-item[selected]{background:color-mix(in srgb,var(--color-border) 70%,white)}dropdown-item[action]{color:color-mix(in srgb,currentColor 50%,transparent)}dropdown-item[danger]{color:#c74343}television-app>main{min-width:0;min-height:0;overflow:hidden;display:flex;flex-direction:column}television-app>main.auth-gate{display:flex;align-items:center;justify-content:center}.settings-panel{width:min(32rem,100%);display:flex;flex-direction:column;padding:20px;border:1px solid var(--color-border);border-radius:12px;background:var(--color-bg)}.workspace-modal,.auth-modal{width:min(24rem,100%);display:flex;flex-direction:column;padding:20px;border:1px solid var(--color-border);border-radius:12px;background:var(--color-bg)}.auth-form{display:flex;flex-direction:column;gap:12px}.auth-modal-title,.auth-modal-copy{margin:0}.auth-token-input-invalid{border-color:#c74343}.workspace-form{display:flex;flex-direction:column;gap:12px}.workspace-form-actions{display:flex;gap:8px}.workspace-modal-title,.workspace-delete-copy,.workspace-delete-warning,.workspace-delete-error{margin:0}.workspace-delete-warning,.workspace-delete-error{font-size:13px}.workspace-delete-error{color:#c74343}.settings-section-title{margin:0}.settings-section,.settings-server-list,.settings-add-server-form{display:flex;flex-direction:column;gap:12px}.settings-form-actions{display:flex;gap:8px}.settings-card{padding:12px;border:1px solid var(--color-border);border-radius:8px}.settings-server{display:flex;align-items:center;justify-content:space-between;gap:12px}.settings-server-details{min-width:0}.settings-server-name{font-weight:600}.settings-server-url{font-size:13px;word-break:break-word;color:color-mix(in srgb,currentColor 70%,transparent)}.settings-server-remove-button,.settings-submit-button,.settings-cancel-button,.settings-connect-button{padding:8px 12px;border-radius:8px}.settings-field{display:flex;flex-direction:column;gap:6px}.settings-field input{width:100%;padding:8px 10px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-bg);color:inherit;font:inherit;box-sizing:border-box}.settings-submit-button,.settings-cancel-button,.settings-connect-button{align-self:flex-start}dropdown-menu{position:relative;display:inline-block;color:inherit}dropdown-group{display:grid;gap:var(--space-4)}dropdown-label{display:block;padding:var(--space-4) var(--space-8);color:var(--color-text-muted);font:inherit;font-size:var(--text-sm);font-weight:600;letter-spacing:.04em;text-transform:uppercase}dropdown-divider{display:block;height:1px;margin:var(--space-4) 0;background:var(--color-border)}[data-dropdown-trigger],dropdown-item{color:inherit;font:inherit;line-height:1.2}[data-dropdown-trigger],dropdown-menu::part(trigger){display:inline-flex;align-items:center;gap:var(--space-8);margin:0;padding:.375rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);box-shadow:none;cursor:pointer}[data-dropdown-trigger]:hover,dropdown-menu::part(trigger):hover{background:var(--color-interactive-hover)}dropdown-menu[open] [data-dropdown-trigger],dropdown-menu[open]::part(trigger){background:var(--color-interactive)}[data-dropdown-trigger-label],dropdown-menu::part(trigger-label){min-width:0}[data-dropdown-trigger-icon],dropdown-menu::part(trigger-icon){display:inline-flex;align-items:center;justify-content:center;flex:none}[data-dropdown-trigger]:focus-visible,dropdown-menu::part(trigger):focus-visible,dropdown-item:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}dropdown-menu::part(panel){position:absolute;top:calc(100% + var(--space-4));left:0;z-index:var(--layer-popover);min-width:12rem;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-popover)}dropdown-item{display:block;margin:0;padding:.375rem .5rem;border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none}dropdown-item:hover{background:var(--color-interactive-hover)}dropdown-item[selected]{background:var(--color-interactive)}panel-view{display:block}panel-view::part(panel){display:flex;flex-direction:column;gap:var(--space-16);color:var(--color-text)}panel-view::part(header){display:flex;align-items:center;justify-content:space-between;gap:var(--space-12)}panel-view::part(title-group){display:flex;align-items:center;gap:var(--space-8);min-width:0}panel-view::part(title){margin:0;font:inherit;font-size:var(--text-lg);font-weight:600;color:var(--color-text)}panel-view::part(button){display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;margin:0;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);box-shadow:none;cursor:pointer}panel-view::part(button):hover{background:var(--color-interactive-hover)}panel-view::part(button):focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}panel-view::part(icon){display:inline-flex;align-items:center;justify-content:center;flex:none}panel-view::part(back-icon){transform:rotate(90deg)}modal-overlay{color:inherit}modal-overlay::part(backdrop){position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--layer-modal);display:flex;align-items:center;justify-content:center;padding:var(--space-16);background:var(--color-overlay-backdrop)}*,*:before,*:after{box-sizing:border-box}:root{--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--font-brand: var(--font-sans);--font-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, monospace;--text-base: 14px;--text-scale: 1.125;--text-sm: round(calc(var(--text-base) / var(--text-scale)), 1px);--text-lg: round(calc(var(--text-base) * var(--text-scale)), 1px);--text-xl: round(calc(var(--text-lg) * var(--text-scale)), 1px);--leading-base: 1.5;--space-2: 2px;--space-4: 4px;--space-6: 6px;--space-8: 8px;--space-12: 12px;--space-16: 16px;--space-24: 24px;--space-32: 32px;--space-48: 48px;--space-64: 64px;--radius-sm: .375rem;--radius-md: .5rem;--layer-popover: 10;--layer-modal: 1000;--shadow-popover: 0 12px 32px rgb(0 0 0 / .14);--shadow-modal: 0 24px 64px rgb(0 0 0 / .2)}html,body{margin:0;padding:0;width:100%;height:100%}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-base);color:var(--color-text);background:var(--color-bg)}a{text-underline-offset:.15em;text-decoration-thickness:.08em}button,input,textarea,select{font:inherit;color:inherit}a{color:var(--color-link)}h1,h2,h3,h4,h5,h6,p,ul,ol,blockquote,pre,hr{margin:0}h1,h2,h3,h4,h5,h6{font-weight:600;color:var(--color-text)}code{font-family:var(--font-mono);font-size:.9em;background:var(--color-bg-muted);padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm)}pre{font-family:var(--font-mono);background:var(--color-bg-muted);padding:var(--space-12);border-radius:var(--radius-md);overflow-x:auto}pre code{background:none;padding:0}blockquote{padding-left:var(--space-16);border-left:3px solid var(--color-border);color:var(--color-text-muted)}hr{border:none;border-top:1px solid var(--color-border)}table{border-collapse:collapse}th,td{padding:var(--space-8) var(--space-12);border:1px solid var(--color-border);text-align:left}th{background:var(--color-bg-muted);font-weight:600}.prose{line-height:var(--leading-base)}.prose h1{font-size:var(--text-xl);margin-bottom:var(--space-8)}.prose h2{font-size:var(--text-lg);margin-top:var(--space-24);margin-bottom:var(--space-8)}.prose h3,.prose h4,.prose h5,.prose h6{font-size:var(--text-base);margin-top:var(--space-24);margin-bottom:var(--space-8)}.prose p{margin:var(--space-12) 0}.prose ul,.prose ol{padding-left:var(--space-24);margin:var(--space-12) 0}.prose blockquote,.prose pre{margin:var(--space-12) 0}.prose hr{margin:var(--space-24) 0}.prose table{width:100%;margin:var(--space-12) 0}.prose img{max-width:100%;height:auto}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}[data-ui-icon]{display:inline-block;vertical-align:middle}button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-6);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:inherit;cursor:pointer}button:hover{background:var(--color-interactive)}button[variant=toolbar]{border:none;background:transparent;color:var(--color-text-muted)}button[size=sm]{min-height:26px;padding:var(--space-2) var(--space-6)}button[size=md]{min-height:32px;padding:var(--space-6) var(--space-12)}:root{--black: #000000;--white: #ffffff;--neutral-50: oklch(.985 .001 106.423);--neutral-100: oklch(.97 .001 106.424);--neutral-200: oklch(.923 .003 48.717);--neutral-300: oklch(.869 .005 56.366);--neutral-400: oklch(.709 .01 56.259);--neutral-500: oklch(.553 .013 58.071);--neutral-600: oklch(.444 .011 73.639);--neutral-700: oklch(.374 .01 67.558);--neutral-800: oklch(.268 .007 34.298);--neutral-900: oklch(.216 .006 56.043);--neutral-950: oklch(.147 .004 49.25)}:root{--color-bg: var(--neutral-50);--color-bg-muted: var(--neutral-100);--color-surface: var(--white);--color-surface-muted: var(--neutral-100);--color-interactive: var(--neutral-200);--color-interactive-hover: var(--neutral-300);--color-border: var(--neutral-300);--color-border-muted: var(--neutral-200);--color-text: var(--neutral-900);--color-text-muted: var(--neutral-500);--color-link: inherit;--color-focus-ring: var(--neutral-500);--color-overlay-backdrop: rgb(0 0 0 / .5);color-scheme:light}:root{--color-bg: var(--neutral-200);--color-border: var(--neutral-300)}
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Television</title>
7
- <script type="module" crossorigin src="./assets/index-Drr5lsyi.js"></script>
8
- <link rel="stylesheet" crossorigin href="./assets/index-D95AnQHz.css">
7
+ <script type="module" crossorigin src="./assets/index-C3ygXWMh.js"></script>
8
+ <link rel="stylesheet" crossorigin href="./assets/index-nGpvLl78.css">
9
9
  </head>
10
10
  <body></body>
11
11
  </html>