{currentPath}
{#if isDeleted}
Deleted
{:else}
Active
{/if}
{documentId.substring(0, 8)}...
{#if latest}
·
{versions.length} version{versions.length !== 1 ? "s" : ""}
·
Last by {latest.userId}
{/if}
{#if loading}
Loading versions...
{:else}
{#if selectedVersion}
(activeTab = "preview")} > Preview
{ if (selectedVersion) { const idx = versions.indexOf(selectedVersion); if (idx > 0) showDiff(selectedVersion, idx); } }} disabled={versions.indexOf(selectedVersion) === 0} > Diff
Viewing v#{selectedVersion.vaultUpdateId} · {relativeTime(selectedVersion.updatedDate)}
{#if loadingContent}
Loading content...
{:else if activeTab === "diff" && diffOldContent !== null && diffNewContent !== null}
{:else if activeTab === "preview"} {#if isTextFile(selectedVersion.relativePath) || fileExtension(selectedVersion.relativePath) === ""}
{loadedContent ?? ""}
{:else if isImageFile(selectedVersion.relativePath) && loadedContentBytes}
{:else}
📦
Binary file
{formatBytes(selectedVersion.contentSize)}
{/if} {/if}
{/if}
Version History
{#each [...versionEvents].reverse() as event, i} {@const v = event.version} {@const isSelected = selectedVersion?.vaultUpdateId === v.vaultUpdateId}
selectVersion(v)} >
#{v.vaultUpdateId}
{event.action}
{v.userId}
{relativeTime(v.updatedDate)}
{formatBytes(v.contentSize)}
{#if event.previousPath}
{event.previousPath} → {v.relativePath}
{/if}
{#if i < versionEvents.length - 1}
{ const realIdx = versions.indexOf(v); showDiff(v, realIdx); }} > Diff
{/if} {#if v !== latest}
confirmRestore(v)} > Restore
{/if}
{/each}
{/if}
{#if showRestoreDialog && restoreTarget}
{ showRestoreDialog = false; restoreTarget = null; }} /> {/if}