{#if selectorOpen}
{#if myCollections.length > 0}
Mine flater
{#each myCollections as node (node.id)}
{#if renamingId === node.id} e.stopPropagation()} /> {:else} {/if}
{/each} {/if} {#if sharedCollections.length > 0}
Delte flater
{#each sharedCollections as node (node.id)} {/each} {/if} {#if myCollections.length === 0 && sharedCollections.length === 0}
{searchQuery ? 'Ingen treff' : 'Ingen arbeidsflater'}
{/if}
{/if}
{#if toolMenuOpen}
Legg til panel
{#each availableTools as tool (tool.key)} {/each}
{/if}
{#if connected} {:else} {/if}
{#if settingsOpen}
Tema
{#if $page.data.session?.user}
{$page.data.session.user.name}
{/if}
{/if}
{#if workspaceLoading}

Laster arbeidsflate...

{:else if workspaceError}

Kunne ikke laste arbeidsflate

{workspaceError}

{:else if !connected}

Venter på tilkobling...

{:else if layout.panels.length === 0}

Din personlige arbeidsflate

Legg til verktøy-paneler for å bygge opp arbeidsflaten din. Arrangementet huskes mellom besøk.

{#each Object.entries(TRAIT_PANEL_INFO) as [key, info] (key)} {/each}
{:else if isMobile}
{#each layout.panels as panel, i (panel.trait)} {/each}
{#each layout.panels as panel, i (panel.trait)} {#if activeTab === i}
{#if knownTraits.has(panel.trait)} {#if panel.trait === 'editor'} {:else if panel.trait === 'chat'} {:else if panel.trait === 'kanban'} {:else if panel.trait === 'calendar'} {:else if panel.trait === 'podcast'} {:else if panel.trait === 'publishing'} {:else if panel.trait === 'rss'} {:else if panel.trait === 'recording'} {:else if panel.trait === 'transcription'} {:else if panel.trait === 'studio'} {:else if panel.trait === 'mixer'} {:else if panel.trait === 'mindmap'} {:else if panel.trait === 'ai'} {:else if panel.trait === 'usage'} {#if nodeId && accessToken} {/if} {/if} {:else} {/if}
{/if} {/each}
{:else}
{ savedCamera = cam; persistMetadata(); }} onGridChange={(enabled) => { gridEnabled = enabled; persistMetadata(); }} > {#snippet renderObject(obj)} {@const trait = obj.id} {@const info = getPanelInfo(trait)} {@const panel = layout.panels.find(p => p.trait === trait)} handlePanelResize(trait, w, h, dx, dy)} onClose={() => handlePanelClose(trait)} onMinimizeChange={(m) => handlePanelMinimize(trait, m)} onDrop={(payload, shiftKey) => handlePanelDrop(trait, payload, shiftKey)} > {#if knownTraits.has(trait)} {#if trait === 'editor'} {:else if trait === 'chat'} {:else if trait === 'kanban'} {:else if trait === 'calendar'} {:else if trait === 'podcast'} {:else if trait === 'publishing'} {:else if trait === 'rss'} {:else if trait === 'recording'} {:else if trait === 'transcription'} {:else if trait === 'studio'} {:else if trait === 'mixer'} {:else if trait === 'mindmap'} {:else if trait === 'ai'} {:else if trait === 'usage'} {#if nodeId && accessToken} {/if} {/if} {:else} {/if} {/snippet}
{/if}