@jaxzhou/dsh-file-explorer 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.js.map CHANGED
@@ -1,7 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/client/index.ts", "../src/client/FilesView.tsx", "../src/client/format.ts", "../src/client/face.ts", "../src/client/locales.ts", "../src/client/store.ts", "../src/client/styles.ts"],
4
- "sourcesContent": ["/**\n * Browser half: register `files` as one Conversation View.\n *\n * The public path, unmodified: the view into the `conversation.view` list slot\n * that `@deepseek-ai/dsh-client-ui-conversation` owns and renders as the tab\n * strip beside Chat and Trajectory. The registration carries the exclusive\n * per-Session store, the injected Remote face, and the locale namespace; the\n * slot service's effect wrapper means plugin unload removes the tab, its\n * dictionary, and its stylesheet, and disposal of the declaration removes the\n * contribution again if the Conversation shell is remounted.\n *\n * The file split is this package's layering: what the explorer keeps\n * (`store.ts`), how it lists and reads (`face.ts`), what it draws\n * (`FilesView.tsx`), what it looks like (`styles.ts`), what it says\n * (`locales.ts`), and this module, which only wires them together.\n */\nimport type { Context } from '@deepseek-ai/cordis'\nimport type { BoundActions } from '@deepseek-ai/dsh-client-store'\nimport type { SessionId } from '@deepseek-ai/dsh-session/types'\n// Type-only: pulls the Client Remote face (`ctx.remote`).\nimport type {} from '@deepseek-ai/dsh-api-remotes/client'\n// Type-only: pulls the locale service's Context merge (`ctx.locale`).\nimport type {} from '@deepseek-ai/dsh-client-locale/client'\n// Type-only: the 'conversation.view' SlotMap row and the owner props the view\n// component derives must be in the program for the register call to type.\nimport type {} from '@deepseek-ai/dsh-client-ui-conversation/client'\n// Type-only: pulls the slot service's Context merge (`ctx.slots`).\nimport type {} from '@deepseek-ai/dsh-client-ui-renderer/client'\nimport type {} from '@deepseek-ai/dsh-client-ui-session/client'\nimport { FilesView } from './FilesView.tsx'\nimport { filesFace } from './face.ts'\nimport type { FilesInjected } from './face.ts'\nimport { en, NS, zh } from './locales.ts'\nimport { createFilesStore } from './store.ts'\nimport { installStyles } from './styles.ts'\n\nexport { parseJsonDocument, previewLines, tabLabels } from './FilesView.tsx'\nexport { canExportPdf, extensionOf, hasSourceToggle, previewFormatFor } from './format.ts'\nexport type { PreviewFormat, PreviewFormatKind } from './format.ts'\nexport type { FileExplorerKey } from './locales.ts'\nexport { RETAINED_PREVIEWS } from './store.ts'\nexport type {\n DirLevel, FilesState, LevelState, PreviewContent, PreviewImage, PreviewMode, PreviewState,\n PreviewText,\n} from './store.ts'\nexport type { FilesInjected, WorkspaceFilesRemote } from './face.ts'\nexport type { FilesViewProps } from './FilesView.tsx'\n\n/** This plugin's identity inside the browser plugin tree. */\nexport const name = 'file-explorer'\n\n/**\n * Required browser services: the slot registry, copy, and the Remote carrier\n * with the workspace-files namespace the explorer reads through.\n */\nexport const inject = ['slots', 'locale', 'remote', 'remote.workspaceFiles']\n\n/**\n * The view's id inside `conversation.view`. It is the tab's identity, the key\n * a stored View preference names, and the entry id the header selects by.\n */\nexport const FILES_VIEW_ID = 'files'\n\n/**\n * Client plugin body: register the stylesheet, the dictionaries, and the view.\n * @param ctx - client root context carrying the slot registry, copy, and Remote face.\n */\nexport function apply(ctx: Context): void {\n ctx.effect(installStyles, '@jaxzhou/dsh-file-explorer: stylesheet')\n ctx.effect(() => ctx.locale.register(NS, { zh, en }), '@jaxzhou/dsh-file-explorer: dictionaries')\n // Registration-time text (the view tab label) reads through the bound\n // translate as a thunk, so it follows the active locale without\n // re-registration.\n const t = ctx.locale.bind(NS)\n const store = createFilesStore()\n const lifetime = new AbortController()\n ctx.effect(() => () => { lifetime.abort() }, '@jaxzhou/dsh-file-explorer: request lifetime')\n\n ctx.slots.inject('conversation.view', () => ctx.slots.register({\n name: 'conversation.view',\n id: FILES_VIEW_ID,\n // After Chat (default) and Trajectory (10), so the strip reads\n // Chat | Trajectory | Files.\n order: 20,\n locale: NS,\n label: () => t('view.files'),\n store,\n inject: (\n sessionId: SessionId,\n actions: BoundActions<ReturnType<typeof createFilesStore>>,\n ): FilesInjected => filesFace(ctx.remote, sessionId, lifetime.signal, actions),\n }, FilesView))\n}\n", "/**\n * The Files Conversation View: the session workspace on the left, one preview\n * tab per opened file on the right.\n *\n * The view is one `conversation.view` entry, so it sits beside Chat and\n * Trajectory in the same tab strip and the shell renders it one at a time.\n * Everything the tree keeps lives in its store; everything it asks for goes\n * through its injected face. The component only decides what to draw for each\n * absolute path and what a click means: a directory toggles, a file opens a\n * preview tab (or focuses the one already open for it), and anything else is\n * shown but refuses to open.\n *\n * A tab's body follows the file's format (see `format.ts`): Markdown renders as a\n * document with a source view behind a toggle, JSON as a collapsible tree with\n * the same toggle, a recognized source suffix through the shared\n * syntax-highlighted code block, an image as the image, and everything else as\n * plain numbered text. All of it comes from\n * `@deepseek-ai/dsh-client-ui-primitives`, which the browser shell shares into its\n * frozen module table \u2014 the one way this bundle may use another package's values\n * at runtime.\n *\n * Switching to another tab unmounts this component but not its Session-scoped\n * store, so the tree, the open tabs, and the active tab survive the round trip. A\n * read left in flight when that happens settles into the store anyway, because\n * the face's requests ride the plugin's lifetime, not the component's.\n */\nimport {\n useEffect, useMemo, useRef, useState,\n type MutableRefObject, type ReactNode,\n} from 'react'\nimport type { ConvViewProps } from '@deepseek-ai/dsh-client-ui-conversation/client'\nimport type { InjectFace, PropsLocale, PropsStore, TranslateNS } from '@deepseek-ai/dsh-client-ui-slots'\nimport type { RemoteFailure } from '@deepseek-ai/dsh-api-remotes/client'\nimport {\n CodeBlock, FileTypeIcon, IconFolderClose16, IconFolderOpen16, IconRefreshOutline16, JsonTree,\n MarkdownText, classifyFileType, fileSizeText, writeClipboard,\n} from '@deepseek-ai/dsh-client-ui-primitives'\nimport type { JsonTreeLabels, MarkdownLabels } from '@deepseek-ai/dsh-client-ui-primitives'\nimport type { WorkspaceDirectoryEntry } from '@deepseek-ai/dsh-api-workspace-files/types'\nimport { canExportPdf, hasSourceToggle, previewFormatFor } from './format.ts'\nimport type { PreviewFormat } from './format.ts'\nimport type { FilesInjected } from './face.ts'\nimport type {\n FilesState, LevelState, PreviewContent, PreviewMode, PreviewState, PreviewText,\n createFilesStore,\n} from './store.ts'\nimport type {} from './locales.ts'\n\n/** The view's composed props: the Conversation View seat, its store, its face, and its copy. */\nexport type FilesViewProps =\n & ConvViewProps\n & PropsStore<ReturnType<typeof createFilesStore>>\n & InjectFace<FilesInjected>\n & PropsLocale<'fileExplorer'>\n\n/** Natural, case-insensitive name order, so `file2` precedes `file10`. */\nconst byName = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' })\n\n/**\n * Order one level's entries for display: directories first, then everything\n * else, each group by name. The endpoint's order is a listing fact; this is the\n * reader's.\n * @param entries - the listing as the endpoint returned it.\n * @returns a new array, directories first, then by name within each group.\n */\nexport function orderEntries(entries: readonly WorkspaceDirectoryEntry[]): WorkspaceDirectoryEntry[] {\n return [...entries].sort((left, right) => {\n const group = Number(right.type === 'directory') - Number(left.type === 'directory')\n return group !== 0 ? group : byName.compare(left.name, right.name)\n })\n}\n\n/**\n * The absolute path of one child entry.\n *\n * Joined with `/` whatever the parent's separators: the host resolves mixed\n * separators, and the tree only needs a stable key.\n * @param parent - absolute path of the listed directory.\n * @param name - the entry's basename.\n * @returns the child's absolute path.\n */\nexport function childPath(parent: string, name: string): string {\n return `${parent.replace(/[/\\\\]+$/, '')}/${name}`\n}\n\n/**\n * Split a path into its directory prefix and its last segment, for a header\n * that greys the prefix and inks the name.\n * @param path - absolute path.\n * @returns the trailing-slash directory prefix and the basename.\n */\nexport function pathParts(path: string): { directory: string; name: string } {\n const at = Math.max(path.lastIndexOf('/'), path.lastIndexOf('\\\\'))\n if (at < 0) return { directory: '', name: path }\n return { directory: path.slice(0, at + 1), name: path.slice(at + 1) }\n}\n\n/**\n * The display label of every open tab.\n *\n * A tab shows its basename, which is what a strip can afford. Two open files\n * that share a basename are ambiguous on their own \u2014 `index.ts` in three\n * directories is the ordinary case \u2014 so those tabs carry their parent directory\n * as a prefix, and only those. The full path stays in each tab's tooltip.\n * @param open - open tab paths, in strip order.\n * @returns a label per path.\n */\nexport function tabLabels(open: readonly string[]): Record<string, string> {\n const twins = new Map<string, number>()\n for (const path of open) {\n const { name } = pathParts(path)\n twins.set(name, (twins.get(name) ?? 0) + 1)\n }\n const labels: Record<string, string> = {}\n for (const path of open) {\n const { directory, name } = pathParts(path)\n if ((twins.get(name) ?? 0) < 2) {\n labels[path] = name\n continue\n }\n const parent = pathParts(directory.replace(/[/\\\\]+$/, '')).name\n labels[path] = parent === '' ? name : `${parent}/${name}`\n }\n return labels\n}\n\n/**\n * Split one loaded page into its source lines.\n *\n * The page's own line count decides: `0` is a page past the file's last line\n * (an empty file on the first read), which has no lines to draw and must not\n * become one empty row. Otherwise the text is the page's lines joined with\n * `\\n`, so splitting returns exactly what `lines` promised.\n * @param page - the loaded text page.\n * @returns the page's source lines, in order.\n */\nexport function previewLines(page: PreviewText): string[] {\n return page.lines === 0 ? [] : page.text.split('\\n')\n}\n\n/**\n * Parse one complete JSON document for the tree view.\n * @param text - the file's text.\n * @returns the parsed container, or undefined when the text is not JSON a tree\n * can walk (a syntax error, or a bare scalar).\n */\nexport function parseJsonDocument(text: string): object | undefined {\n let value: unknown\n try {\n value = JSON.parse(text)\n } catch {\n return undefined\n }\n return typeof value === 'object' && value !== null ? value : undefined\n}\n\n/**\n * Say why a directory could not be listed, in terms of the directory.\n * @param t - namespace-bound translate.\n * @param failure - the settled Remote failure.\n * @returns the line to show under the directory.\n */\nexport function treeFailureLine(\n t: TranslateNS<'fileExplorer'>,\n failure: RemoteFailure,\n): string {\n switch (failure.code) {\n case 'workspace-file/not-found': return t('tree.error.notFound')\n case 'workspace-file/outside-workspace': return t('tree.error.outsideWorkspace')\n case 'workspace-file/not-directory': return t('tree.error.notDirectory')\n // Carrier and unclassified host failures reach the reader as themselves:\n // this tree knows nothing useful to add to a transport-level message.\n default: return t('tree.error.unavailable', { message: failure.message })\n }\n}\n\n/**\n * Say why a file could not be previewed, in terms of the file.\n * @param t - namespace-bound translate.\n * @param failure - the settled Remote failure.\n * @returns the line to show in the preview pane.\n */\nexport function previewFailureLine(\n t: TranslateNS<'fileExplorer'>,\n failure: RemoteFailure,\n): string {\n switch (failure.code) {\n case 'workspace-file/not-found': return t('preview.error.notFound')\n case 'workspace-file/not-text': return t('preview.error.notText')\n case 'workspace-file/too-large': return t('preview.error.tooLarge')\n case 'workspace-file/not-regular-file': return t('preview.error.notRegularFile')\n default: return t('preview.error.unavailable', { message: failure.message })\n }\n}\n\n/** What every level shares: the explorer's state and the two gestures. */\ninterface TreeContext {\n readonly state: FilesState\n readonly open: ReadonlySet<string>\n readonly onToggle: (path: string) => void\n readonly onOpen: (path: string) => void\n readonly t: TranslateNS<'fileExplorer'>\n}\n\n/** One directory's rows: its state while listing, its entries once listed. */\nfunction Level({ path, tree }: { path: string; tree: TreeContext }): ReactNode {\n const { state, t } = tree\n const level: LevelState | undefined = state.levels[path]\n if (level === undefined || level.kind === 'loading') {\n return <li className=\"dsh-fe-note\" data-files-row=\"loading\">{t('tree.loading')}</li>\n }\n if (level.kind === 'failed') {\n return (\n <li\n className=\"dsh-fe-note dsh-fe-note-error\"\n data-files-row=\"failed\"\n data-files-code={level.failure.code}\n >\n {treeFailureLine(t, level.failure)}\n </li>\n )\n }\n const entries = orderEntries(level.level.entries)\n return (\n <>\n {entries.length === 0 && <li className=\"dsh-fe-note\" data-files-row=\"empty\">{t('tree.empty')}</li>}\n {entries.map(entry => <Entry key={entry.name} parent={path} entry={entry} tree={tree} />)}\n {level.level.truncated && (\n <li className=\"dsh-fe-note\" data-files-row=\"truncated\">{t('tree.truncated')}</li>\n )}\n </>\n )\n}\n\n/** One entry's row, and its children when it is an expanded directory. */\nfunction Entry({\n parent,\n entry,\n tree,\n}: {\n parent: string\n entry: WorkspaceDirectoryEntry\n tree: TreeContext\n}): ReactNode {\n const path = childPath(parent, entry.name)\n if (entry.type === 'directory') {\n const expanded = tree.state.expanded.includes(path)\n return (\n <li className=\"dsh-fe-item\" data-files-entry=\"directory\" data-files-path={path}>\n <button\n type=\"button\"\n className=\"dsh-fe-row\"\n aria-expanded={expanded}\n onClick={() => { tree.onToggle(path) }}\n >\n {expanded\n ? <IconFolderOpen16 className=\"dsh-fe-icon\" />\n : <IconFolderClose16 className=\"dsh-fe-icon\" />}\n <span className=\"dsh-fe-name\">{entry.name}</span>\n </button>\n {expanded && <ul className=\"dsh-fe-level\"><Level path={path} tree={tree} /></ul>}\n </li>\n )\n }\n if (entry.type === 'file') {\n const isOpen = tree.open.has(path)\n return (\n <li\n className=\"dsh-fe-item\"\n data-files-entry=\"file\"\n data-files-path={path}\n data-files-open={isOpen || undefined}\n >\n <button\n type=\"button\"\n className=\"dsh-fe-row\"\n aria-current={tree.state.active === path}\n onClick={() => { tree.onOpen(path) }}\n >\n <FileTypeIcon kind={classifyFileType(entry.name)} size={16} />\n <span className=\"dsh-fe-name\">{entry.name}</span>\n {isOpen && <span className=\"dsh-fe-open-dot\" aria-hidden=\"true\" />}\n </button>\n </li>\n )\n }\n return (\n <li className=\"dsh-fe-item\" data-files-entry=\"other\" data-files-path={path}>\n <span className=\"dsh-fe-row dsh-fe-row-static\" title={tree.t('tree.other')}>\n <span className=\"dsh-fe-name\">{entry.name}</span>\n </span>\n </li>\n )\n}\n\n/**\n * One file's source text through the shared syntax highlighter.\n *\n * `CodeBlock` owns the grammar lookup, the numbered gutter, and the copy\n * control; the owning class only replaces the chat card's chrome (margin,\n * radius, grey fill) with the pane's, and states the wrap preference: lines wrap\n * at their spaces and keep every word whole, and a token that cannot fit on a\n * line by itself still breaks rather than sliding under a scrollbar.\n */\nfunction HighlightedSource({\n page,\n lang,\n wrap,\n t,\n}: {\n page: PreviewText\n lang: string | undefined\n wrap: boolean\n t: TranslateNS<'fileExplorer'>\n}): ReactNode {\n return (\n <div className=\"dsh-fe-source\" data-wrap={wrap} data-preview-lang={lang ?? 'plain'}>\n <CodeBlock\n code={page.text}\n lang={lang}\n lineNumbers\n copyLabel={t('code.copy')}\n copiedLabel={t('code.copied')}\n />\n </div>\n )\n}\n\n/**\n * One HTML file drawn as a page, in a sandboxed iframe over a Blob URL.\n *\n * `allow-scripts` without `allow-same-origin` puts the document in an opaque\n * origin: its scripts run, but nothing in it can reach this application's DOM,\n * storage, or session. The same pair is what the shipped Sidebar document\n * preview uses, so the two HTML surfaces in the harness behave alike.\n *\n * Relative assets are not fetched \u2014 a Blob document has no base to resolve them\n * against, and packing them would mean reading the workspace beside the file.\n * See the README's limitations.\n */\nfunction HtmlFrame({ html, title }: { html: string; title: string }): ReactNode {\n const url = useMemo(\n () => URL.createObjectURL(new Blob([html], { type: 'text/html' })),\n [html],\n )\n useEffect(() => () => { URL.revokeObjectURL(url) }, [url])\n return (\n <iframe\n className=\"dsh-fe-html-frame\"\n src={url}\n sandbox=\"allow-scripts\"\n title={title}\n data-preview-html\n />\n )\n}\n\n/**\n * A Markdown file as a document, a JSON file as a collapsible tree, and an HTML\n * file as a page.\n *\n * The label objects are memoized on the translated strings rather than on `t`:\n * the bound translate keeps one identity across a locale change while its output\n * changes, and a fresh labels object on every render would discard the\n * primitives' parse memos.\n */\nfunction FormattedBody({\n page,\n format,\n jsonDocument,\n proseRef,\n t,\n}: {\n page: PreviewText\n format: PreviewFormat\n /** Parsed JSON for a `json` format, decided by the pane before it elected this body. */\n jsonDocument: object | undefined\n /** The rendered Markdown document, which the PDF export clones. */\n proseRef: MutableRefObject<HTMLDivElement | null>\n t: TranslateNS<'fileExplorer'>\n}): ReactNode {\n const copyLabel = t('code.copy')\n const copiedLabel = t('code.copied')\n const footnotes = t('footnotes')\n const markdownLabels = useMemo<MarkdownLabels>(\n () => ({ code: { copyLabel, copiedLabel }, footnotes }),\n [copyLabel, copiedLabel, footnotes],\n )\n const copyValue = t('json.copyValue')\n const copyJson = t('json.copyJson')\n const copyPath = t('json.copyPath')\n const copyPrettyJson = t('json.copyPrettyJson')\n const copyCompactJson = t('json.copyCompactJson')\n const copied = t('json.copied')\n const copyFailed = t('json.copyFailed')\n const collapseNode = t('json.collapseNode')\n const expandNode = t('json.expandNode')\n const jsonLabels = useMemo<JsonTreeLabels>(() => ({\n copyValue,\n copyJson,\n copyPath,\n copyPrettyJson,\n copyCompactJson,\n copied,\n copyFailed,\n collapseNode,\n expandNode,\n // Reads the live translate at call time, so the tooltip follows a locale\n // change without rebuilding this object; `t` is stable by contract.\n copyButtonTitle: action => t('json.copyTitle', { action }),\n }), [\n collapseNode, copyCompactJson, copyFailed, copyJson, copyPath, copyPrettyJson,\n copyValue, copied, expandNode, t,\n ])\n\n if (format.kind === 'markdown') {\n return (\n <div className=\"dsh-fe-prose\" ref={proseRef} data-preview-format=\"markdown\">\n <MarkdownText text={page.text} labels={markdownLabels} />\n </div>\n )\n }\n if (format.kind === 'html') {\n return (\n <div className=\"dsh-fe-html\" data-preview-format=\"html\">\n <HtmlFrame html={page.text} title={t('preview.htmlFrame')} />\n </div>\n )\n }\n // The pane elects this body for `json` only once the document parses.\n if (jsonDocument === undefined) return null\n return (\n <div className=\"dsh-fe-json\" data-preview-format=\"json\">\n <JsonTree\n data={jsonDocument}\n label={t('preview.jsonLabel')}\n labels={jsonLabels}\n expandTopLevel={false}\n />\n </div>\n )\n}\n\n/** Which body a tab is drawing, which is also which controls apply. */\ntype PreviewBodyKind = 'rendered' | 'source' | 'image'\n\n/**\n * The HTML of an HTML file, with its active content removed.\n *\n * A PDF is static, so scripts buy the export nothing \u2014 and dropping them is what\n * lets the print document be an ordinary same-origin frame instead of a sandboxed\n * one, which in turn is what lets this component drive the print. Parsing is done\n * by the browser rather than by a pattern, so markup inside an attribute or a\n * comment cannot smuggle a tag past the strip.\n * @param source - the file's text.\n * @param title - title to add when the file declares none.\n * @returns a complete document with no scripts, handlers, or javascript URLs.\n */\nfunction printableHtml(source: string, title: string): string {\n const parsed = new DOMParser().parseFromString(source, 'text/html')\n for (const script of [...parsed.querySelectorAll('script')]) script.remove()\n for (const element of [...parsed.querySelectorAll('*')]) {\n for (const attribute of [...element.attributes]) {\n const name = attribute.name.toLowerCase()\n if (name.startsWith('on')) element.removeAttribute(attribute.name)\n else if (/^\\s*javascript:/i.test(attribute.value)) element.removeAttribute(attribute.name)\n }\n }\n if (parsed.title === '') {\n const tag = parsed.createElement('title')\n tag.textContent = title\n parsed.head.append(tag)\n }\n return `<!doctype html>${parsed.documentElement.outerHTML}`\n}\n\n/**\n * The application's own style sheets, so a cloned preview prints as it reads.\n *\n * The copy carries the dark-theme block too (`body[data-ds-dark-theme]`), which\n * simply never matches a print document's body: the page is dark ink on white\n * whichever theme the reader is using.\n * @returns every style tag and stylesheet link, serialized.\n */\nfunction appStyleTags(): string {\n return [...document.querySelectorAll('style, link[rel=\"stylesheet\"]')]\n .map(node => node.outerHTML)\n .join('\\n')\n}\n\n/**\n * A standalone document holding one cloned preview body.\n *\n * The rules appended last are this page's own box, and the promise to keep the\n * document's fills \u2014 code-block greys and table rules \u2014 which browsers otherwise\n * drop when printing.\n * @param title - the document title, which the print dialog offers as a name.\n * @param body - the body markup.\n * @returns a complete document.\n */\nfunction styledDocument(title: string, body: string): string {\n const safeTitle = title.replace(/[<&]/g, character => (character === '<' ? '&lt;' : '&amp;'))\n return [\n '<!doctype html><html><head><meta charset=\"utf-8\">',\n `<title>${safeTitle}</title>`,\n appStyleTags(),\n '<style>body{margin:0;padding:28px 32px;background:#fff;color:#111;',\n 'print-color-adjust:exact;-webkit-print-color-adjust:exact}</style>',\n `</head><body>${body}</body></html>`,\n ].join('')\n}\n\n/**\n * Frame a document off-screen, laid out at page width, and hand it back.\n *\n * The frame is sized like a page rather than collapsed to nothing: the print\n * engine lays the document out from the viewport it finds, so a zero-width frame\n * would print a zero-width column.\n * @returns the appended frame.\n */\nfunction createPrintFrame(): HTMLIFrameElement {\n const frame = document.createElement('iframe')\n frame.setAttribute('aria-hidden', 'true')\n frame.setAttribute('data-preview-print', '')\n frame.style.cssText = 'position:fixed;left:-10000px;top:0;width:794px;height:1123px;border:0'\n document.body.appendChild(frame)\n return frame\n}\n\n/**\n * Write one document into a frame, and print it.\n *\n * Printing is how a reader gets a PDF: every browser's print dialog offers \"Save\n * as PDF\", and its own layout engine keeps the text as text rather than\n * rasterising the page the way a canvas-based PDF library would.\n *\n * The frame outlives the call: a browser may return from print() before its\n * preview has laid the document out, so the frame removes itself on afterprint\n * instead of on return. A frame left over from an earlier export \u2014 one whose\n * afterprint never arrived \u2014 is cleared first, so exports cannot accumulate off\n * screen.\n * @param html - a complete document.\n */\nfunction printDocument(html: string): void {\n for (const stale of document.querySelectorAll('iframe[data-preview-print]')) stale.remove()\n const frame = createPrintFrame()\n const doc = frame.contentDocument\n /* v8 ignore next -- a frame appended to a live document always has one. */\n if (doc === null) return\n doc.open()\n doc.write(html)\n doc.close()\n const view = frame.contentWindow\n /* v8 ignore next -- a frame appended to a live document always has one. */\n if (view === null) return\n view.addEventListener('afterprint', () => { frame.remove() }, { once: true })\n view.focus()\n view.print()\n}\n\n/**\n * Resolve the body a file's format and the tab's mode choice agree on.\n * @param content - what the read delivered, or null while it has not settled.\n * @param format - the file's format.\n * @param mode - the tab's explicit choice, or undefined to follow the default.\n * @param jsonWalkable - whether a `json` format's document parsed into a tree.\n * @returns the body kind.\n */\nfunction bodyKindOf(\n content: PreviewContent | null,\n format: PreviewFormat,\n mode: PreviewMode | undefined,\n jsonWalkable: boolean,\n): PreviewBodyKind {\n if (content !== null && content.kind === 'image') return 'image'\n if (!hasSourceToggle(format)) return 'source'\n if ((mode ?? 'rendered') === 'source') return 'source'\n // JSON the tree cannot walk falls back to its source, so the controls offer the\n // body that is actually on screen.\n if (format.kind === 'json' && !jsonWalkable) return 'source'\n return 'rendered'\n}\n\n/**\n * The body of one settled preview tab.\n * @param props - the tab's content, its format, the elected body, and copy.\n * @returns the scrollport holding that body.\n */\nfunction PreviewBody({\n path,\n content,\n format,\n body,\n jsonDocument,\n jsonFallback,\n wrap,\n proseRef,\n t,\n}: {\n path: string\n content: PreviewContent\n format: PreviewFormat\n body: PreviewBodyKind\n jsonDocument: object | undefined\n /** The reader asked for the tree and the file does not parse; say so above the source. */\n jsonFallback: boolean\n wrap: boolean\n /** Handed to the rendered Markdown container, which the PDF export clones. */\n proseRef: MutableRefObject<HTMLDivElement | null>\n t: TranslateNS<'fileExplorer'>\n}): ReactNode {\n if (content.kind === 'image') {\n const { name } = pathParts(path)\n return (\n <div className=\"dsh-fe-scroll dsh-fe-imagehost\" data-preview-state=\"ready\" data-preview-format=\"image\">\n <img className=\"dsh-fe-image\" src={content.image.dataUrl} alt={name} data-preview-image />\n </div>\n )\n }\n const page = content.page\n const lines = previewLines(page)\n if (lines.length === 0) {\n return (\n <div\n className=\"dsh-fe-scroll\"\n data-preview-state=\"ready\"\n data-preview-format={format.kind}\n data-preview-lines=\"0\"\n >\n <p className=\"dsh-fe-note\" data-preview-row=\"empty\">{t('preview.empty')}</p>\n </div>\n )\n }\n return (\n <div\n className=\"dsh-fe-scroll\"\n data-preview-state=\"ready\"\n data-preview-format={format.kind}\n data-preview-lines={lines.length}\n data-preview-body={body}\n >\n {jsonFallback && (\n <p className=\"dsh-fe-note dsh-fe-note-error\" data-preview-row=\"invalid-json\">\n {t('preview.jsonInvalid')}\n </p>\n )}\n {body === 'rendered'\n ? (\n <FormattedBody\n page={page}\n format={format}\n jsonDocument={jsonDocument}\n proseRef={proseRef}\n t={t}\n />\n )\n : <HighlightedSource page={page} lang={format.lang} wrap={wrap} t={t} />}\n {!page.eof && (\n <p className=\"dsh-fe-note\" data-preview-row=\"truncated\">\n {t('preview.truncated', { lines: page.lines })}\n </p>\n )}\n </div>\n )\n}\n\n/**\n * The Files view: the workspace tree, the open preview tabs, and the active tab.\n * @param props - the Conversation View seat, store, injected face, and copy.\n * @returns the two-pane explorer.\n */\nexport function FilesView({\n sessionId, useSessions, useStore, actions, list, read, t,\n}: FilesViewProps): ReactNode {\n const cwd = useSessions(sessions => sessions.byId[sessionId]?.cwd)\n const state = useStore(store => store)\n const activeTabRef = useRef<HTMLButtonElement | null>(null)\n /** The rendered Markdown document, which the PDF export clones. */\n const proseRef = useRef<HTMLDivElement | null>(null)\n /** The tab whose text was just copied, so only its button confirms. */\n const [copied, setCopied] = useState<string | null>(null)\n const copyTimer = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n useEffect(() => () => {\n if (copyTimer.current !== null) clearTimeout(copyTimer.current)\n }, [])\n\n useEffect(() => {\n if (cwd === undefined || state.root === cwd) return\n actions.start(cwd)\n list(cwd)\n }, [actions, cwd, list, state.root])\n\n const active = state.active\n const format: PreviewFormat | null = active === null ? null : previewFormatFor(active)\n const content = active !== null && state.previews[active]?.kind === 'ready'\n ? (state.previews[active] as { content: PreviewContent }).content\n : null\n\n // A JSON document is parsed here, once per settled read, because both the\n // controls' body election and the tree body need the answer. Parsing stays a\n // function of the pane's own decision, not of the read: a file the tree cannot\n // walk is still previewed, as source.\n const jsonDocument = useMemo(() => {\n if (active === null || content === null || content.kind !== 'text') return undefined\n if ((state.modes[active] ?? 'rendered') === 'source') return undefined\n if (previewFormatFor(active).kind !== 'json') return undefined\n return parseJsonDocument(content.page.text)\n }, [active, content, state.modes])\n\n /**\n * Content follows the active tab, not the click that opened it: a tab whose\n * content was dropped for retention reads again the moment it is shown, and a\n * tab that is already loaded costs nothing.\n */\n useEffect(() => {\n if (active === null) return\n if (state.previews[active] !== undefined) return\n read(active)\n }, [active, read, state.previews])\n\n useEffect(() => {\n activeTabRef.current?.scrollIntoView({ block: 'nearest', inline: 'nearest' })\n }, [active])\n\n if (cwd === undefined) {\n return (\n <div className=\"dsh-fe-root\" data-files-state=\"no-workspace\">\n <div className=\"dsh-fe-status\">{t('tree.noWorkspace')}</div>\n </div>\n )\n }\n if (state.root === null) return null\n\n const openSet = new Set(state.open)\n const tree: TreeContext = {\n state,\n open: openSet,\n onToggle: (path) => {\n const loaded = state.levels[path] !== undefined\n actions.toggled(path)\n if (!loaded) list(path)\n },\n onOpen: (path) => { actions.openFile(path) },\n t,\n }\n // Reload drops every level and asks again for the expanded ones; a collapsed\n // level is fetched again the next time it opens.\n const reloadTree = (): void => {\n actions.reset()\n for (const path of state.expanded) list(path)\n }\n const reloadPreview = (): void => {\n if (active !== null) read(active)\n }\n // One copy control serves every body that has text: a rendered document's\n // source, a JSON tree's document, highlighted code, and plain text all copy\n // the file's own text, which is what a reader pastes somewhere else.\n const copyActive = (): void => {\n if (active === null || content === null || content.kind !== 'text') return\n const path = active\n const text = content.page.text\n void writeClipboard(text).then((ok: boolean) => {\n if (!ok) return\n setCopied(path)\n if (copyTimer.current !== null) clearTimeout(copyTimer.current)\n copyTimer.current = setTimeout(() => { setCopied(null) }, 1000)\n })\n }\n /**\n * Export the rendered body as a PDF, through the browser's own print dialog.\n *\n * Markdown prints from the live document node, so what lands on the page is\n * exactly what the reader sees \u2014 including the code fences the primitive\n * highlighted. HTML prints from its own document with the active content\n * stripped, which a static page has no use for.\n */\n const exportPdf = (): void => {\n if (active === null || format === null || content === null || content.kind !== 'text') return\n if (!canExportPdf(format)) return\n const name = pathParts(active).name\n if (format.kind === 'html') {\n printDocument(printableHtml(content.page.text, name))\n return\n }\n const prose = proseRef.current\n if (prose === null) return\n printDocument(styledDocument(name, prose.outerHTML))\n }\n const closeTab = (path: string): void => {\n actions.closeFile(path)\n }\n const root = pathParts(state.root)\n const labels = tabLabels(state.open)\n const wrap = active === null ? true : state.wraps[active] ?? true\n const preview: PreviewState | undefined = active === null ? undefined : state.previews[active]\n const body = bodyKindOf(content, format ?? { kind: 'text', lang: undefined, mediaType: undefined }, active === null ? undefined : state.modes[active], jsonDocument !== undefined)\n const jsonFallback = format?.kind === 'json'\n && (active === null ? 'rendered' : state.modes[active] ?? 'rendered') === 'rendered'\n && jsonDocument === undefined\n && content !== null\n && content.kind === 'text'\n const meta = content === null\n ? null\n : content.kind === 'text'\n ? [\n t('preview.lines', { lines: content.page.lines }),\n content.page.bytes === undefined ? null : fileSizeText(content.page.bytes),\n ].filter(part => part !== null).join(' \u00B7 ')\n : content.image.bytes === undefined\n ? null\n : fileSizeText(content.image.bytes)\n\n return (\n <div\n className=\"dsh-fe-root\"\n data-files-state=\"tree\"\n data-files-root={state.root}\n data-conversation-composer-overlay=\"\"\n >\n <div className=\"dsh-fe-panes\">\n <div className=\"dsh-fe-tree\" data-files-pane=\"tree\">\n <div className=\"dsh-fe-head\">\n <span className=\"dsh-fe-path\" title={state.root}>\n <span>\n <span className=\"dsh-fe-path-muted\">{root.directory}</span>\n {root.name}\n </span>\n </span>\n <button\n type=\"button\"\n className=\"dsh-fe-tool\"\n aria-label={t('tree.reload')}\n title={t('tree.reload')}\n data-files-reload\n onClick={reloadTree}\n >\n <IconRefreshOutline16 />\n </button>\n </div>\n <div className=\"dsh-fe-scroll\">\n <ul className=\"dsh-fe-level\"><Level path={state.root} tree={tree} /></ul>\n </div>\n </div>\n <div className=\"dsh-fe-preview\" data-files-pane=\"preview\">\n <div className=\"dsh-fe-head dsh-fe-tabhead\">\n {state.open.length === 0\n ? <span className=\"dsh-fe-path dsh-fe-path-muted\">{t('preview.title')}</span>\n : (\n <div className=\"dsh-fe-tabs\" role=\"tablist\" aria-label={t('preview.tabs')} data-preview-tabs>\n {state.open.map(path => {\n const isActive = path === active\n return (\n <span className=\"dsh-fe-tab\" key={path} role=\"presentation\" data-preview-tab={path} data-active={isActive || undefined}>\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n className=\"dsh-fe-tab-label\"\n title={path}\n ref={isActive ? activeTabRef : undefined}\n data-preview-tab-open={path}\n onClick={() => { actions.activate(path) }}\n onAuxClick={(event) => {\n // Middle click closes, as it does in every editor.\n if (event.button === 1) closeTab(path)\n }}\n >\n <FileTypeIcon kind={classifyFileType(path)} size={14} />\n <span className=\"dsh-fe-tab-name\">{labels[path]}</span>\n </button>\n <button\n type=\"button\"\n className=\"dsh-fe-tab-close\"\n aria-label={t('preview.close', { name: labels[path] })}\n title={t('preview.close', { name: labels[path] })}\n data-preview-tab-close={path}\n onClick={() => { closeTab(path) }}\n >\n <span aria-hidden=\"true\">\u00D7</span>\n </button>\n </span>\n )\n })}\n </div>\n )}\n {active !== null && body === 'source' && format?.lang !== undefined && (\n <span className=\"dsh-fe-lang\" data-preview-lang-badge>{format.lang}</span>\n )}\n {content !== null && meta !== null && (\n <span className=\"dsh-fe-meta\" data-preview-meta>{meta}</span>\n )}\n {content !== null && content.kind === 'text' && (\n <button\n type=\"button\"\n className=\"dsh-fe-tool\"\n aria-label={t('preview.copy')}\n title={t('preview.copy')}\n data-preview-copy\n onClick={copyActive}\n >\n {copied === active ? t('preview.copied') : t('preview.copy')}\n </button>\n )}\n {active !== null && format !== null && hasSourceToggle(format) && (\n <button\n type=\"button\"\n className=\"dsh-fe-tool\"\n aria-pressed={body === 'source'}\n aria-label={body === 'source' ? t('preview.rendered') : t('preview.source')}\n title={body === 'source' ? t('preview.rendered') : t('preview.source')}\n data-preview-mode-toggle\n onClick={() => { actions.setMode(active, body === 'source' ? 'rendered' : 'source') }}\n >\n {body === 'source' ? t('preview.rendered') : t('preview.source')}\n </button>\n )}\n {active !== null && body === 'rendered' && format !== null && canExportPdf(format) && (\n <button\n type=\"button\"\n className=\"dsh-fe-tool\"\n aria-label={t('preview.pdf')}\n title={t('preview.pdf')}\n data-preview-pdf\n onClick={exportPdf}\n >\n {t('preview.pdf')}\n </button>\n )}\n {active !== null && body === 'source' && (\n <button\n type=\"button\"\n className=\"dsh-fe-tool\"\n aria-pressed={wrap}\n aria-label={wrap ? t('preview.nowrap') : t('preview.wrap')}\n title={wrap ? t('preview.nowrap') : t('preview.wrap')}\n data-preview-wrap-toggle\n onClick={() => { actions.setWrap(active, !wrap) }}\n >\n {wrap ? '\u21B5' : '\u2192'}\n </button>\n )}\n {active !== null && (\n <button\n type=\"button\"\n className=\"dsh-fe-tool\"\n aria-label={t('preview.reload')}\n title={t('preview.reload')}\n data-preview-reload\n onClick={reloadPreview}\n >\n <IconRefreshOutline16 />\n </button>\n )}\n </div>\n {active === null && <div className=\"dsh-fe-status\">{t('preview.placeholder')}</div>}\n {active !== null && (preview === undefined || preview.kind === 'loading') && (\n <div className=\"dsh-fe-status\">{t('preview.loading')}</div>\n )}\n {active !== null && preview?.kind === 'failed' && (\n <div className=\"dsh-fe-scroll\" data-preview-state=\"failed\">\n <p className=\"dsh-fe-note dsh-fe-note-error\" data-preview-code={preview.failure.code}>\n {previewFailureLine(t, preview.failure)}\n </p>\n <button type=\"button\" className=\"dsh-fe-tool\" onClick={reloadPreview}>\n {t('preview.reload')}\n </button>\n </div>\n )}\n {active !== null && content !== null && format !== null && (\n <PreviewBody\n path={active}\n content={content}\n format={format}\n body={body}\n jsonDocument={jsonDocument}\n jsonFallback={jsonFallback}\n wrap={wrap}\n proseRef={proseRef}\n t={t}\n />\n )}\n </div>\n </div>\n </div>\n )\n}\n", "/**\n * What a workspace file is, for preview purposes.\n *\n * The pane picks a display from the file's own name before it reads anything,\n * so the read itself can differ: an image needs its complete bytes, everything\n * else needs a page of text. The decision is a pure function of the path, which\n * keeps it testable and keeps the read path honest \u2014 the pane never reads bytes\n * it will not draw.\n *\n * Only grammars the shared syntax highlighter actually carries are mapped. An\n * unrecognized suffix is plain text on purpose: a wrong grammar colours the\n * file misleadingly, while plain numbered text is merely unadorned.\n */\n\n/** The display a file's contents get. */\nexport type PreviewFormatKind = 'markdown' | 'html' | 'json' | 'code' | 'image' | 'text'\n\n/** One file's preview format. */\nexport interface PreviewFormat {\n /** Which body the pane draws. */\n readonly kind: PreviewFormatKind\n /** Grammar hint for the highlighted source view; absent when no grammar is known. */\n readonly lang: string | undefined\n /** Media type the read bytes are labelled with; present only for `image`. */\n readonly mediaType: string | undefined\n}\n\n/** Image suffixes and the media type their bytes carry. */\nconst IMAGE_MEDIA_TYPES = new Map<string, string>([\n ['png', 'image/png'],\n ['apng', 'image/apng'],\n ['jpg', 'image/jpeg'],\n ['jpeg', 'image/jpeg'],\n ['jfif', 'image/jpeg'],\n ['gif', 'image/gif'],\n ['webp', 'image/webp'],\n ['avif', 'image/avif'],\n ['bmp', 'image/bmp'],\n ['ico', 'image/x-icon'],\n // An SVG draws as an image here; `<img>` neither runs its scripts nor lets it\n // reach the application origin, so the markup stays inert.\n ['svg', 'image/svg+xml'],\n])\n\n/**\n * Suffix \u2192 grammar id, restricted to the ids the shared highlighter resolves\n * (its own alias list). A suffix whose grammar is absent stays unmapped so the\n * file falls through to plain text rather than a wrong colouring.\n */\nconst GRAMMAR_EXTENSIONS: Readonly<Record<string, readonly string[]>> = {\n typescript: ['ts', 'tsx', 'mts', 'cts', 'js', 'jsx', 'mjs', 'cjs'],\n shellscript: ['sh', 'bash', 'zsh', 'ksh', 'shell'],\n json: ['json', 'jsonc', 'jsonl', 'ndjson', 'map', 'webmanifest'],\n python: ['py', 'pyw', 'pyi'],\n ruby: ['rb', 'rake', 'gemspec', 'ru'],\n go: ['go'],\n rust: ['rs'],\n java: ['java'],\n c: ['c', 'h'],\n cpp: ['cc', 'cpp', 'cxx', 'hh', 'hpp', 'hxx', 'ipp'],\n csharp: ['cs', 'csx'],\n kotlin: ['kt', 'kts'],\n swift: ['swift'],\n php: ['php', 'phtml', 'php3', 'php4', 'php5'],\n yaml: ['yaml', 'yml'],\n toml: ['toml'],\n ini: ['ini', 'cfg', 'conf', 'properties', 'desktop', 'service'],\n markdown: ['md', 'markdown', 'mkd', 'mdown', 'mdwn'],\n mdx: ['mdx'],\n html: ['html', 'htm', 'xhtml', 'shtml'],\n css: ['css'],\n scss: ['scss'],\n less: ['less'],\n sql: ['sql', 'ddl', 'dml'],\n xml: ['xml', 'xsd', 'xsl', 'xslt', 'rss', 'atom', 'plist'],\n lua: ['lua'],\n}\n\nconst GRAMMAR_BY_EXTENSION = new Map(Object.entries(GRAMMAR_EXTENSIONS)\n .flatMap(([grammar, suffixes]) => suffixes.map(suffix => [suffix, grammar] as const)))\n\n/**\n * The lowercase suffix a file name ends in.\n *\n * A name that starts with its dot has no suffix: `.gitignore` is a whole name,\n * not a `gitignore` file. A trailing dot has none either.\n * @param path - absolute or relative path, in either separator style.\n * @returns the suffix without its dot, or undefined.\n */\nexport function extensionOf(path: string): string | undefined {\n const normalized = path.replaceAll('\\\\', '/')\n const name = normalized.slice(normalized.lastIndexOf('/') + 1)\n const at = name.lastIndexOf('.')\n if (at <= 0 || at === name.length - 1) return undefined\n return name.slice(at + 1).toLowerCase()\n}\n\n/**\n * Decide how one file is previewed, from its name alone.\n * @param path - absolute or relative path of the file.\n * @returns its preview format.\n */\nexport function previewFormatFor(path: string): PreviewFormat {\n const extension = extensionOf(path)\n const mediaType = extension === undefined ? undefined : IMAGE_MEDIA_TYPES.get(extension)\n if (mediaType !== undefined) return { kind: 'image', lang: undefined, mediaType }\n const lang = extension === undefined ? undefined : GRAMMAR_BY_EXTENSION.get(extension)\n if (lang === undefined) return { kind: 'text', lang: undefined, mediaType: undefined }\n if (lang === 'json') return { kind: 'json', lang, mediaType: undefined }\n // Markdown and HTML each get a rendered body and a source body; MDX stays on\n // the source side, because its JSX would render as prose.\n if (lang === 'markdown') return { kind: 'markdown', lang, mediaType: undefined }\n if (lang === 'html') return { kind: 'html', lang, mediaType: undefined }\n return { kind: 'code', lang, mediaType: undefined }\n}\n\n/**\n * Whether the pane offers a rendered/source switch for a format.\n * @param format - the file's format.\n * @returns whether both bodies exist.\n */\nexport function hasSourceToggle(format: PreviewFormat): boolean {\n return format.kind === 'markdown' || format.kind === 'html' || format.kind === 'json'\n}\n\n/**\n * Whether the rendered body of a format can be exported as a PDF.\n *\n * Only the two formats whose rendered body is a *document*: a JSON tree and a\n * source listing have no page to print, and an image or plain text is already\n * what it is.\n * @param format - the file's format.\n * @returns whether the export control applies.\n */\nexport function canExportPdf(format: PreviewFormat): boolean {\n return format.kind === 'markdown' || format.kind === 'html'\n}\n", "/**\n * The explorer's asynchronous half: listing directories, and reading whichever\n * file a tab asks for in the form its format needs.\n *\n * The component never awaits anything. It calls `list` / `read`, and this face\n * performs the Remote call and writes the outcome through the store's own\n * actions \u2014 the Slot-standard `inject` shape, so the Session id is resolved by\n * the framework and the write set stays the store's.\n *\n * One level has one listing in force: asking for a level again (the reload\n * gesture, a directory reopened after a reset) retires the listing still in\n * flight for it, whose settlement then writes nothing. Each tab has one read in\n * force in the same way, and the store additionally drops a settlement for a tab\n * that has since been closed. Requests carry the plugin's lifetime signal:\n * unloading the plugin abandons everything in flight, and no settlement writes\n * after that.\n */\nimport type { BoundActions } from '@deepseek-ai/dsh-client-store'\nimport type { ClientRemote } from '@deepseek-ai/dsh-api-remotes/client'\nimport type { SessionId } from '@deepseek-ai/dsh-session/types'\nimport { previewFormatFor } from './format.ts'\nimport type { PreviewText, createFilesStore } from './store.ts'\n\n/** The slice of the Client Remote face this plugin calls. */\nexport type WorkspaceFilesRemote = Pick<ClientRemote, 'workspaceFiles'>\n\n/**\n * Largest number of leading lines one text preview asks for. The host's own\n * `maxLines` default is higher; keeping the page small is this viewer's choice,\n * and a file that does not reach `eof` says so in the header.\n */\nexport const PREVIEW_LINES = 2000\n\n/** The explorer's injected business face, as the component receives it. */\nexport interface FilesInjected {\n /**\n * List one directory into the store, retiring any listing in flight for it.\n * @param path - absolute directory path.\n */\n readonly list: (path: string) => void\n /**\n * Read one open tab into the store: a page of text, or complete bytes when the\n * file's format draws an image.\n * @param path - absolute file path of an open tab.\n */\n readonly read: (path: string) => void\n}\n\n/**\n * Bind the explorer's face to one Session's Remote namespace.\n * @param remote - the Client Remote face carrying the `workspaceFiles` namespace.\n * @param sessionId - the Session whose workspace root authorizes every call.\n * @param signal - the plugin's lifetime signal; aborting abandons in-flight work.\n * @param actions - the bound store actions this face writes through.\n * @returns the listing and preview operations the component calls.\n */\nexport function filesFace(\n remote: WorkspaceFilesRemote,\n sessionId: SessionId,\n signal: AbortSignal,\n actions: BoundActions<ReturnType<typeof createFilesStore>>,\n): FilesInjected {\n /** Per absolute path: the listing generation a settlement must match; the latest request wins. */\n const listingGenerations = new Map<string, number>()\n /** Per open tab: the read generation a settlement must match; the latest request wins. */\n const readGenerations = new Map<string, number>()\n\n return {\n list(path) {\n if (signal.aborted) return\n const generation = (listingGenerations.get(path) ?? 0) + 1\n listingGenerations.set(path, generation)\n actions.loading(path)\n void remote.workspaceFiles.list(sessionId, path, signal).then((result) => {\n if (signal.aborted || listingGenerations.get(path) !== generation) return\n if (result.ok) {\n actions.loaded(path, {\n entries: result.value.entries,\n truncated: result.value.truncated,\n })\n } else {\n actions.failed(path, result.error)\n }\n })\n },\n read(path) {\n if (signal.aborted) return\n const generation = (readGenerations.get(path) ?? 0) + 1\n readGenerations.set(path, generation)\n const format = previewFormatFor(path)\n actions.reading(path)\n const settle = (write: () => void): void => {\n if (signal.aborted || readGenerations.get(path) !== generation) return\n write()\n }\n // An image needs its bytes whole; everything else needs a page of lines,\n // because the source view can show a bounded prefix of any text file.\n if (format.kind === 'image') {\n void remote.workspaceFiles.readAll(sessionId, path, signal).then((result) => {\n settle(() => {\n if (result.ok) {\n actions.previewLoaded(path, {\n kind: 'image',\n image: {\n dataUrl: `data:${format.mediaType};base64,${result.value.data}`,\n bytes: result.value.bytes,\n },\n })\n } else {\n actions.previewFailed(path, result.error)\n }\n })\n })\n return\n }\n void remote.workspaceFiles.read(sessionId, path, { offset: 1, limit: PREVIEW_LINES }, signal)\n .then((result) => {\n settle(() => {\n if (result.ok) {\n const page: PreviewText = {\n text: result.value.text,\n lines: result.value.lines,\n eof: result.value.eof,\n bytes: result.value.bytes,\n }\n actions.previewLoaded(path, { kind: 'text', page })\n } else {\n actions.previewFailed(path, result.error)\n }\n })\n })\n },\n }\n}\n", "/**\n * `fileExplorer` namespace dictionaries, and the namespace declaration.\n *\n * The failure lines name what the tree could not list, one code each, because a\n * directory that is gone, one outside the workspace, and a path that is not a\n * directory each suggest a different next step. The preview lines do the same\n * for the read failures a viewer can meet: not text, too large, not a regular\n * file.\n *\n * The namespace merge lives with its key set so that any module naming\n * `TranslateNS<'fileExplorer'>` or `PropsLocale<'fileExplorer'>` needs only this\n * file, whichever entry a program loads first.\n */\nimport type {} from '@deepseek-ai/dsh-client-ui-slots'\n\n/** Dictionary namespace owned by this plugin. */\nexport const NS = 'fileExplorer'\n\ndeclare module '@deepseek-ai/dsh-client-ui-slots' {\n interface LocaleNamespaceMap {\n /** View tab label, tree states, and preview states. */\n fileExplorer: FileExplorerKey\n }\n}\n\n/** Simplified Chinese dictionary and key-set source of truth. */\nexport const zh = {\n 'view.files': '\u6587\u4EF6',\n 'tree.root': '\u5DE5\u4F5C\u533A',\n 'tree.reload': '\u91CD\u65B0\u8BFB\u53D6',\n 'tree.loading': '\u6B63\u5728\u8BFB\u53D6\u2026',\n 'tree.empty': '\u7A7A\u76EE\u5F55',\n 'tree.truncated': '\u6761\u76EE\u8FC7\u591A\uFF0C\u53EA\u663E\u793A\u4E86\u4E00\u90E8\u5206\u3002',\n 'tree.noWorkspace': '\u8FD9\u4E2A\u4F1A\u8BDD\u6CA1\u6709\u5DE5\u4F5C\u533A\u76EE\u5F55\u3002',\n 'tree.other': '\u65E2\u4E0D\u662F\u6587\u4EF6\u4E5F\u4E0D\u662F\u76EE\u5F55\uFF0C\u65E0\u6CD5\u6253\u5F00\u3002',\n 'tree.error.notFound': '\u76EE\u5F55\u4E0D\u5B58\u5728\uFF0C\u53EF\u80FD\u5DF2\u88AB\u79FB\u52A8\u6216\u5220\u9664\u3002',\n 'tree.error.outsideWorkspace': '\u8BE5\u76EE\u5F55\u5728\u5DE5\u4F5C\u533A\u4E4B\u5916\uFF0C\u65E0\u6CD5\u8BFB\u53D6\u3002',\n 'tree.error.notDirectory': '\u8FD9\u4E0D\u662F\u4E00\u4E2A\u76EE\u5F55\u3002',\n 'tree.error.unavailable': '\u8BFB\u53D6\u5931\u8D25\uFF1A{message}',\n 'preview.placeholder': '\u4ECE\u5DE6\u4FA7\u9009\u62E9\u4E00\u4E2A\u6587\u4EF6\u8FDB\u884C\u9884\u89C8\u3002',\n 'preview.empty': '\u7A7A\u6587\u4EF6',\n 'preview.rendered': '\u9884\u89C8',\n 'preview.source': '\u6E90\u7801',\n 'preview.jsonLabel': 'JSON \u6587\u6863',\n 'preview.jsonInvalid': '\u8FD9\u4E0D\u662F\u53EF\u5C55\u5F00\u7684 JSON\uFF0C\u5DF2\u663E\u793A\u6E90\u7801\u3002',\n 'code.copy': '\u590D\u5236',\n 'code.copied': '\u5DF2\u590D\u5236',\n 'footnotes': '\u811A\u6CE8',\n 'json.copyValue': '\u590D\u5236\u503C',\n 'json.copyJson': '\u590D\u5236 JSON',\n 'json.copyPath': '\u590D\u5236\u8DEF\u5F84',\n 'json.copyPrettyJson': '\u590D\u5236\u683C\u5F0F\u5316 JSON',\n 'json.copyCompactJson': '\u590D\u5236\u538B\u7F29 JSON',\n 'json.copied': '\u5DF2\u590D\u5236',\n 'json.copyFailed': '\u590D\u5236\u5931\u8D25',\n 'json.collapseNode': '\u6536\u8D77',\n 'json.expandNode': '\u5C55\u5F00',\n 'json.copyTitle': '{action}',\n 'preview.title': '\u9884\u89C8',\n 'preview.tabs': '\u6253\u5F00\u7684\u6587\u4EF6',\n 'preview.close': '\u5173\u95ED {name}',\n 'preview.loading': '\u6B63\u5728\u8BFB\u53D6\u2026',\n 'preview.copy': '\u590D\u5236',\n 'preview.copied': '\u5DF2\u590D\u5236',\n 'preview.pdf': '\u5BFC\u51FA PDF',\n 'preview.htmlFrame': 'HTML \u9884\u89C8',\n 'preview.reload': '\u91CD\u65B0\u8BFB\u53D6',\n 'preview.truncated': '\u6587\u4EF6\u8F83\u957F\uFF0C\u53EA\u663E\u793A\u524D {lines} \u884C\u3002',\n 'preview.wrap': '\u81EA\u52A8\u6362\u884C',\n 'preview.nowrap': '\u4E0D\u6362\u884C',\n 'preview.lines': '{lines} \u884C',\n 'preview.error.notFound': '\u6587\u4EF6\u4E0D\u5B58\u5728\uFF0C\u53EF\u80FD\u5DF2\u88AB\u79FB\u52A8\u6216\u5220\u9664\u3002',\n 'preview.error.notText': '\u8FD9\u4E0D\u662F\u53EF\u4EE5\u9884\u89C8\u7684\u6587\u672C\u6587\u4EF6\u3002',\n 'preview.error.tooLarge': '\u6587\u4EF6\u592A\u5927\uFF0C\u65E0\u6CD5\u9884\u89C8\u3002',\n 'preview.error.notRegularFile': '\u8FD9\u4E0D\u662F\u4E00\u4E2A\u666E\u901A\u6587\u4EF6\u3002',\n 'preview.error.unavailable': '\u9884\u89C8\u5931\u8D25\uFF1A{message}',\n} satisfies Record<string, string>\n\n/** Files dictionary key union. */\nexport type FileExplorerKey = keyof typeof zh\n\n/** English dictionary, checked against the Chinese key set. */\nexport const en = {\n 'view.files': 'Files',\n 'tree.root': 'Workspace',\n 'tree.reload': 'Reload',\n 'tree.loading': 'Reading\u2026',\n 'tree.empty': 'Empty directory',\n 'tree.truncated': 'Too many entries, showing only some of them.',\n 'tree.noWorkspace': 'This session has no workspace directory.',\n 'tree.other': 'Not a file or a directory, so it cannot be opened.',\n 'tree.error.notFound': 'That directory is gone. It may have been moved or deleted.',\n 'tree.error.outsideWorkspace': 'That directory is outside the workspace, so it cannot be read.',\n 'tree.error.notDirectory': 'That is not a directory.',\n 'tree.error.unavailable': 'Read failed: {message}',\n 'preview.placeholder': 'Pick a file on the left to preview it.',\n 'preview.empty': 'Empty file',\n 'preview.rendered': 'Rendered',\n 'preview.source': 'Source',\n 'preview.jsonLabel': 'JSON document',\n 'preview.jsonInvalid': 'That is not JSON a tree can walk, so the source is shown.',\n 'code.copy': 'Copy',\n 'code.copied': 'Copied',\n 'footnotes': 'Footnotes',\n 'json.copyValue': 'Copy value',\n 'json.copyJson': 'Copy JSON',\n 'json.copyPath': 'Copy path',\n 'json.copyPrettyJson': 'Copy pretty JSON',\n 'json.copyCompactJson': 'Copy compact JSON',\n 'json.copied': 'Copied',\n 'json.copyFailed': 'Copy failed',\n 'json.collapseNode': 'Collapse',\n 'json.expandNode': 'Expand',\n 'json.copyTitle': '{action}',\n 'preview.title': 'Preview',\n 'preview.tabs': 'Open files',\n 'preview.close': 'Close {name}',\n 'preview.loading': 'Reading\u2026',\n 'preview.copy': 'Copy',\n 'preview.copied': 'Copied',\n 'preview.pdf': 'Export PDF',\n 'preview.htmlFrame': 'HTML preview',\n 'preview.reload': 'Reload',\n 'preview.truncated': 'This file is long, showing the first {lines} lines.',\n 'preview.wrap': 'Wrap long lines',\n 'preview.nowrap': 'Do not wrap long lines',\n 'preview.lines': '{lines} lines',\n 'preview.error.notFound': 'That file is gone. It may have been moved or deleted.',\n 'preview.error.notText': 'That is not a text file this preview can show.',\n 'preview.error.tooLarge': 'That file is too large to preview.',\n 'preview.error.notRegularFile': 'That is not a regular file.',\n 'preview.error.unavailable': 'Preview failed: {message}',\n} satisfies Record<FileExplorerKey, string>\n", "/**\n * The file explorer's view state: what each listed directory holds, which\n * directories are open, which files are open in preview tabs, and what each tab\n * is showing.\n *\n * The explorer is not one resource. A directory listing per level, expanded\n * lazily, plus one read per open preview tab, is state the view owns \u2014 so it\n * lives in a Slot-standard exclusive store: the framework mints one instance per\n * Session, and the state survives switching to Chat or Trajectory and back, which\n * unmounts the component.\n *\n * Write actions run only after `start`; the store's keys are absolute paths,\n * because a child is its parent joined with the entry name and the host accepts\n * the absolute form for both listing and reading.\n *\n * Tabs are unbounded but loaded content is not: an image preview holds the\n * file's complete bytes as a base64 data URL, so keeping every tab's content\n * alive would let a reader grow the tab's memory to an arbitrary size. The store\n * therefore retains content for the active tab and the most recently visited\n * ones, and drops the rest \u2014 the tab stays open and simply reads again when it\n * is next activated. See {@link RETAINED_PREVIEWS}.\n */\nimport { defineStore, type EngineStoreHandle } from '@deepseek-ai/dsh-client-store'\nimport type { RemoteFailure } from '@deepseek-ai/dsh-api-remotes/client'\nimport type { WorkspaceDirectoryEntry } from '@deepseek-ai/dsh-api-workspace-files/types'\n\n/**\n * How many tabs keep their loaded content. A dropped tab is still open: it reads\n * again when activated, which shows as a brief loading state.\n *\n * Five covers the working set \u2014 the tab being read, plus the few it was reached\n * through \u2014 while bounding what a reader who opens everything in a directory can\n * pin in memory.\n */\nexport const RETAINED_PREVIEWS = 5\n\n/** One directory's contents, as one expanded level of the tree. */\nexport interface DirLevel {\n /** The directory's entries, in the endpoint's order. */\n readonly entries: readonly WorkspaceDirectoryEntry[]\n /** The listing hit the endpoint's entry cap, so entries are missing. */\n readonly truncated: boolean\n}\n\n/** What one directory level is doing right now. */\nexport type LevelState =\n | { readonly kind: 'loading' }\n | { readonly kind: 'ready'; readonly level: DirLevel }\n | { readonly kind: 'failed'; readonly failure: RemoteFailure }\n\n/** One page of text, as a preview keeps it. */\nexport interface PreviewText {\n /** The page's lines joined with `\\n`. */\n readonly text: string\n /** How many lines the page holds. */\n readonly lines: number\n /** Whether the page includes the file's last line. */\n readonly eof: boolean\n /** Byte size of the complete file, when the backend reports it. */\n readonly bytes: number | undefined\n}\n\n/** Complete image bytes, addressed as a URL the browser can draw directly. */\nexport interface PreviewImage {\n /** `data:` URL carrying the file's complete bytes under its media type. */\n readonly dataUrl: string\n /** Byte size of the complete file, when the backend reports it. */\n readonly bytes: number | undefined\n}\n\n/**\n * What one read delivered. A tab decides which arm it needs from the file's name\n * before reading, so the two never mix: a page of text for everything readable\n * as text, complete bytes for an image.\n */\nexport type PreviewContent =\n | { readonly kind: 'text'; readonly page: PreviewText }\n | { readonly kind: 'image'; readonly image: PreviewImage }\n\n/**\n * Which body a tab draws for a file that has more than one. An absent entry\n * leaves the choice to the format's own default, so a mode picked for one file\n * never leaks into another.\n */\nexport type PreviewMode = 'rendered' | 'source'\n\n/** What one tab is showing right now. */\nexport type PreviewState =\n | { readonly kind: 'loading' }\n | { readonly kind: 'ready'; readonly content: PreviewContent }\n | { readonly kind: 'failed'; readonly failure: RemoteFailure }\n\n/** The explorer's whole state for one Session. */\nexport interface FilesState {\n /** Absolute path of the workspace root this explorer is rooted at; `null` before it is known. */\n root: string | null\n /** Level state by absolute directory path; a path absent here was never asked for. */\n levels: Record<string, LevelState>\n /** Expanded absolute directory paths, root included, in expansion order. */\n expanded: string[]\n /** Open preview tabs by absolute path, in open order. */\n open: string[]\n /** The tab being shown, or `null` when nothing is open. */\n active: string | null\n /** Loaded content by absolute path; a path absent here was never read or has been dropped. */\n previews: Record<string, PreviewState>\n /** Absolute paths whose content is retained, most recently used first. */\n retained: string[]\n /** Body choice by absolute path; an absent entry follows the format's default. */\n modes: Record<string, PreviewMode>\n /** Line-wrap preference by absolute path; an absent entry wraps. */\n wraps: Record<string, boolean>\n}\n\n/** The explorer store's write set. */\ntype FilesActions = {\n /** Seed the explorer at its workspace root, with the root expanded and no tabs. */\n start: (draft: FilesState, root: string) => void\n /** Mark one directory as being listed. */\n loading: (draft: FilesState, path: string) => void\n /** Record one directory's contents. */\n loaded: (draft: FilesState, path: string, level: DirLevel) => void\n /** Record why one directory could not be listed. */\n failed: (draft: FilesState, path: string, failure: RemoteFailure) => void\n /** Open a collapsed directory, or collapse an open one. */\n toggled: (draft: FilesState, path: string) => void\n /** Drop every listed level, keeping what is expanded: the reload gesture's first half. */\n reset: (draft: FilesState) => void\n /** Open a file in a tab and show it; an already-open file is focused, not duplicated. */\n openFile: (draft: FilesState, path: string) => void\n /** Show an open tab, keeping its position in the strip. */\n activate: (draft: FilesState, path: string) => void\n /** Close a tab, showing its right neighbour, else its left, else nothing. */\n closeFile: (draft: FilesState, path: string) => void\n /** Mark one tab as being read. */\n reading: (draft: FilesState, path: string) => void\n /** Record one tab's contents. */\n previewLoaded: (draft: FilesState, path: string, content: PreviewContent) => void\n /** Record why one file could not be read. */\n previewFailed: (draft: FilesState, path: string, failure: RemoteFailure) => void\n /** Forget one tab's loaded content, leaving the tab open. */\n dropPreview: (draft: FilesState, path: string) => void\n /** Choose whether one tab wraps long lines. */\n setWrap: (draft: FilesState, path: string, wrap: boolean) => void\n /** Choose which body one tab shows. */\n setMode: (draft: FilesState, path: string, mode: PreviewMode) => void\n}\n\n/** The state a freshly created explorer starts from. */\nfunction emptyState(): FilesState {\n return {\n root: null,\n levels: {},\n expanded: [],\n open: [],\n active: null,\n previews: {},\n retained: [],\n modes: {},\n wraps: {},\n }\n}\n\n/**\n * Record one path as most recently used, and drop the content of tabs that fell\n * past the retention cap. The active tab is always kept, so nothing the reader is\n * looking at is ever dropped.\n * @param d - draft state.\n * @param path - the path whose content was just loaded, or is being shown.\n */\nfunction retain(d: FilesState, path: string): void {\n d.retained = [path, ...d.retained.filter(candidate => candidate !== path)]\n const keep = new Set([...(d.active === null ? [] : [d.active]), ...d.retained.slice(0, RETAINED_PREVIEWS)])\n for (const candidate of Object.keys(d.previews)) {\n if (!keep.has(candidate)) delete d.previews[candidate]\n }\n d.retained = d.retained.filter(candidate => keep.has(candidate))\n}\n\n/**\n * Declare the explorer's store.\n *\n * A factory rather than a shared handle: the registration declares it as an\n * exclusive store, so the framework mints one instance per Session and disposes\n * it with that Session's binding.\n * @returns the store handle to declare on the registration.\n */\nexport function createFilesStore(): EngineStoreHandle<FilesState, FilesActions> {\n return defineStore({\n init: emptyState,\n actions: {\n start: (d, root) => {\n Object.assign(d, emptyState())\n d.root = root\n d.expanded = [root]\n },\n loading: (d, path) => {\n d.levels[path] = { kind: 'loading' }\n },\n loaded: (d, path, level) => {\n d.levels[path] = { kind: 'ready', level }\n },\n failed: (d, path, failure) => {\n d.levels[path] = { kind: 'failed', failure }\n },\n toggled: (d, path) => {\n const at = d.expanded.indexOf(path)\n if (at >= 0) d.expanded.splice(at, 1)\n else d.expanded.push(path)\n },\n reset: (d) => {\n d.levels = {}\n },\n openFile: (d, path) => {\n if (!d.open.includes(path)) d.open.push(path)\n d.active = path\n },\n activate: (d, path) => {\n if (!d.open.includes(path)) return\n d.active = path\n // Showing a retained tab makes it the most recently used one, so the tab\n // the reader just came from is the first candidate for eviction.\n retain(d, path)\n },\n closeFile: (d, path) => {\n const at = d.open.indexOf(path)\n if (at < 0) return\n d.open.splice(at, 1)\n delete d.previews[path]\n delete d.modes[path]\n delete d.wraps[path]\n d.retained = d.retained.filter(candidate => candidate !== path)\n if (d.active !== path) return\n // The neighbour that takes over: the tab that slid into this slot, else\n // the one before it, matching how editors close.\n d.active = d.open[at] ?? d.open[at - 1] ?? null\n },\n reading: (d, path) => {\n if (!d.open.includes(path)) return\n d.previews[path] = { kind: 'loading' }\n },\n previewLoaded: (d, path, content) => {\n // A settlement for a tab the reader already closed writes nothing: the\n // store keys content by path, not by arrival order.\n if (!d.open.includes(path)) return\n d.previews[path] = { kind: 'ready', content }\n retain(d, path)\n },\n previewFailed: (d, path, failure) => {\n if (!d.open.includes(path)) return\n d.previews[path] = { kind: 'failed', failure }\n },\n dropPreview: (d, path) => {\n delete d.previews[path]\n d.retained = d.retained.filter(candidate => candidate !== path)\n },\n setWrap: (d, path, wrap) => {\n d.wraps[path] = wrap\n },\n setMode: (d, path, mode) => {\n d.modes[path] = mode\n },\n },\n })\n}\n", "/**\n * The explorer's stylesheet, injected as one owned `<style>` tag.\n *\n * A client bundle arriving through the module loader is a single script: the\n * loader fetches `lib/client.js` and nothing else, so a separate stylesheet\n * would never be requested. Injecting the sheet from the bundle is the same\n * mechanism the built-in packages' `clientBundle()` preset uses for global CSS,\n * and the tag is removed when the plugin unloads.\n *\n * Colours come from the shell's `--dsw-alias-*` theme tokens, so the page\n * follows the active appearance without owning any palette of its own.\n */\n\n/** Marker attribute for this plugin's style tag. */\nconst STYLE_ATTRIBUTE = 'data-dsh-file-explorer'\n\nconst CSS = `\n.dsh-fe-root {\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsh-content-font-size-secondary, 13px);\n line-height: 1.5;\n}\n\n.dsh-fe-panes {\n display: flex;\n flex: 1 1 auto;\n min-height: 0;\n}\n\n.dsh-fe-tree,\n.dsh-fe-preview {\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n\n.dsh-fe-tree {\n flex: 0 0 auto;\n width: 280px;\n min-width: 160px;\n max-width: 60%;\n resize: horizontal;\n overflow: hidden;\n border-right: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n.dsh-fe-preview {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.dsh-fe-head {\n display: flex;\n flex: 0 0 auto;\n gap: 4px;\n align-items: center;\n box-sizing: border-box;\n height: 38px;\n padding: 0 6px 0 14px;\n /* The row is filled rather than transparent, so the pane's chrome reads as\n chrome instead of as the first line of the file. The palette's layer tokens\n are all pure white in light mode (bg-base, bg-layer-1/2/3 share a value), so\n the only token that separates a surface from the content in BOTH themes is\n this wash: 4% ink in light, 8% in dark. See the note in CONTRIBUTING.md. */\n background: var(--dsw-alias-bg-skeleton);\n border-bottom: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n/* A grammar badge for the source body, which is where the language used to be\n named: the code block's own banner is hidden in this pane so there is exactly\n one copy control, in this row. */\n.dsh-fe-lang {\n flex: 0 0 auto;\n color: var(--dsw-alias-label-tertiary);\n font-family: var(--ds-font-family-code, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 11px;\n white-space: nowrap;\n}\n\n.dsh-fe-path {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n font-size: 12px;\n white-space: nowrap;\n text-overflow: ellipsis;\n direction: rtl;\n text-align: left;\n}\n\n.dsh-fe-path > span {\n direction: ltr;\n unicode-bidi: embed;\n}\n\n.dsh-fe-path-muted {\n color: var(--dsw-alias-label-tertiary);\n}\n\n.dsh-fe-meta {\n flex: 0 0 auto;\n color: var(--dsw-alias-label-tertiary);\n font-size: 11px;\n white-space: nowrap;\n}\n\n.dsh-fe-tool {\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n min-width: 28px;\n height: 28px;\n padding: 0 6px;\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n font-size: 11px;\n line-height: 1;\n background: transparent;\n border: none;\n border-radius: 14px;\n cursor: pointer;\n}\n\n.dsh-fe-tool:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dsh-fe-tool svg {\n width: 15px;\n height: 15px;\n}\n\n.dsh-fe-scroll {\n flex: 1 1 auto;\n min-height: 0;\n padding: 8px 8px calc(var(--dsh-composer-height, 152px) + 24px);\n overflow: auto;\n scrollbar-gutter: stable;\n}\n\n.dsh-fe-scroll::-webkit-scrollbar-track {\n margin: 2px;\n}\n\n.dsh-fe-level {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.dsh-fe-level .dsh-fe-level {\n padding-left: 16px;\n}\n\n.dsh-fe-row {\n display: flex;\n gap: 6px;\n align-items: center;\n width: 100%;\n min-width: 0;\n padding: 5px 10px;\n color: inherit;\n font: inherit;\n text-align: left;\n background: transparent;\n border: 0;\n border-radius: 10px;\n cursor: pointer;\n}\n\n.dsh-fe-row:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dsh-fe-row[aria-current='true'] {\n background: var(--dsw-alias-interactive-bg-active);\n}\n\n.dsh-fe-row-static {\n cursor: default;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.dsh-fe-row-static:hover {\n background: transparent;\n}\n\n.dsh-fe-icon {\n flex: 0 0 auto;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.dsh-fe-name {\n min-width: 0;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.dsh-fe-note {\n margin: 0;\n padding: 3px 10px;\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n}\n\n.dsh-fe-note-error {\n color: var(--dsw-alias-label-error);\n}\n\n.dsh-fe-status {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n justify-content: center;\n padding: 24px;\n color: var(--dsw-alias-label-secondary);\n text-align: center;\n}\n\n/* \u2500\u2500 format-aware bodies \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n/* Every body the pane can draw comes from the shared primitives, so this sheet\n carries no source-line rail of its own: the code block owns the numbered\n gutter, its counter, and its copy control. */\n\n/* The shared CodeBlock draws the highlighted source; this host only swaps the\n chat card's chrome for the pane's: no margin, no radius, no grey fill, and\n the pane's own scroll container. */\n.dsh-fe-source {\n --dsl-code-block-background: transparent;\n --dsl-code-block-border-radius: 0;\n --dsl-code-block-line-white-space: pre;\n}\n\n.dsh-fe-source .md-code-block {\n margin: 0;\n}\n\n/* One copy control per pane, in the header row above: the code block's own\n banner would be a second, inside the scrollport, and it scrolls away. The\n grammar it named is shown as the header's badge instead. Markdown fences keep\n their banners \u2014 there, a banner belongs to the fence, not to the file.\n\n The banner sits inside a sticky wrapper, hence the descendant match plus the\n :has rule that takes the wrapper out with it. */\n.dsh-fe-source [data-code-block-banner],\n.dsh-fe-source .md-code-block > div:has(> [data-code-block-banner]) {\n display: none;\n}\n\n.dsh-fe-source .md-code-block pre {\n box-sizing: border-box;\n min-width: 100%;\n padding: 8px 0;\n overflow: visible;\n white-space: pre;\n word-break: normal;\n overflow-wrap: normal;\n}\n\n.dsh-fe-source[data-wrap='true'] {\n --dsl-code-block-line-white-space: pre-wrap;\n}\n\n.dsh-fe-source[data-wrap='true'] .md-code-block pre {\n white-space: pre-wrap;\n /* The primitive's default is break-all; keep words whole instead. */\n word-break: normal;\n overflow-wrap: break-word;\n}\n\n/* The preview pane's header row carries the open tabs and, at its end, the\n active tab's controls. The tabs take the room that is left and scroll; the\n controls never shrink away. */\n.dsh-fe-tabhead {\n gap: 8px;\n padding: 0 6px 0 8px;\n}\n\n.dsh-fe-tabs {\n display: flex;\n flex: 1 1 auto;\n gap: 2px;\n align-items: stretch;\n min-width: 90px;\n height: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n scrollbar-width: none;\n}\n\n.dsh-fe-tabs::-webkit-scrollbar {\n height: 0;\n}\n\n.dsh-fe-tab {\n display: flex;\n flex: 0 0 auto;\n align-items: center;\n min-width: 0;\n max-width: 220px;\n border-radius: 8px;\n}\n\n.dsh-fe-tab:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dsh-fe-tab[data-active] {\n background: var(--dsw-alias-interactive-bg-active);\n}\n\n.dsh-fe-tab-label {\n display: flex;\n gap: 6px;\n align-items: center;\n min-width: 0;\n padding: 5px 4px 5px 8px;\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n font-size: 12px;\n line-height: 1;\n background: transparent;\n border: 0;\n border-radius: 8px;\n cursor: pointer;\n}\n\n.dsh-fe-tab[data-active] .dsh-fe-tab-label {\n color: var(--dsw-alias-label-primary);\n}\n\n.dsh-fe-tab-name {\n min-width: 0;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n/* The close control appears for the tab under the pointer and for the active\n tab, so a full strip stays readable. */\n.dsh-fe-tab-close {\n display: flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n margin-right: 5px;\n padding: 0;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n font-size: 14px;\n line-height: 1;\n background: transparent;\n border: 0;\n border-radius: 5px;\n cursor: pointer;\n opacity: 0;\n}\n\n.dsh-fe-tab:hover .dsh-fe-tab-close,\n.dsh-fe-tab[data-active] .dsh-fe-tab-close,\n.dsh-fe-tab-close:focus-visible {\n opacity: 1;\n}\n\n.dsh-fe-tab-close:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n/* A file already open in a tab keeps a quiet marker in the tree, so the reader\n can see where the strip came from without it competing with the active row. */\n.dsh-fe-open-dot {\n flex: 0 0 auto;\n width: 5px;\n height: 5px;\n margin-left: auto;\n background: var(--dsw-alias-brand-primary);\n border-radius: 50%;\n opacity: 0.6;\n}\n\n/* An HTML file is drawn by the browser, in a frame that fills the pane. The\n white canvas is the page's own, not this pane's: an unstyled document still\n reads as a document rather than as a hole in the app.\n\n The host takes its height from the scrollport's content box, so the frame ends\n exactly where the pane's bottom inset begins and the scrollport itself never\n scrolls \u2014 a page scrolls inside its own frame. */\n.dsh-fe-html {\n display: flex;\n height: 100%;\n min-height: 0;\n min-width: 0;\n}\n\n.dsh-fe-html-frame {\n flex: 1 1 auto;\n width: 100%;\n height: 100%;\n min-width: 0;\n min-height: 0;\n border: 0;\n background: #fff;\n}\n\n/* Rendered Markdown: prose lays out in normal white space, with the pane's\n insets and no monospace inheritance from the source view. */\n.dsh-fe-prose {\n min-width: 0;\n padding: 4px 4px 0;\n font-family: var(--dsw-font-family);\n white-space: normal;\n}\n\n.dsh-fe-json {\n min-width: 0;\n font-family: var(--ds-font-family-code, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 12px;\n white-space: normal;\n}\n\n/* An image keeps its intrinsic size, centres while it fits, and scales down to\n the pane rather than overflowing it. */\n.dsh-fe-imagehost {\n display: flex;\n align-items: flex-start;\n justify-content: center;\n}\n\n.dsh-fe-image {\n display: block;\n max-width: 100%;\n height: auto;\n border-radius: 6px;\n}\n`\n\n/**\n * Install the plugin's stylesheet once, and hand back its disposer.\n * @returns a disposer removing the tag this call created, or a no-op when the sheet was already installed.\n */\nexport function installStyles(): () => void {\n if (typeof document === 'undefined') return () => {}\n if (document.querySelector(`style[${STYLE_ATTRIBUTE}]`) !== null) return () => {}\n const tag = document.createElement('style')\n tag.setAttribute(STYLE_ATTRIBUTE, '')\n tag.textContent = CSS\n document.head.appendChild(tag)\n return () => { tag.remove() }\n}\n"],
5
- "mappings": "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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsbL,SAAS,gBAA4B;AAC1C,MAAI,OAAO,aAAa,YAAa,QAAO,MAAM;AAAA,EAAC;AACnD,MAAI,SAAS,cAAc,SAAS,eAAe,GAAG,MAAM,KAAM,QAAO,MAAM;AAAA,EAAC;AAChF,QAAM,MAAM,SAAS,cAAc,OAAO;AAC1C,MAAI,aAAa,iBAAiB,EAAE;AACpC,MAAI,cAAc;AAClB,WAAS,KAAK,YAAY,GAAG;AAC7B,SAAO,MAAM;AAAE,QAAI,OAAO;AAAA,EAAE;AAC9B;;;AN7ZO,IAAM,OAAO;AAMb,IAAM,SAAS,CAAC,SAAS,UAAU,UAAU,uBAAuB;AAMpE,IAAM,gBAAgB;AAMtB,SAAS,MAAM,KAAoB;AACxC,MAAI,OAAO,eAAe,wCAAwC;AAClE,MAAI,OAAO,MAAM,IAAI,OAAO,SAAS,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,0CAA0C;AAIhG,QAAM,IAAI,IAAI,OAAO,KAAK,EAAE;AAC5B,QAAM,QAAQ,iBAAiB;AAC/B,QAAM,WAAW,IAAI,gBAAgB;AACrC,MAAI,OAAO,MAAM,MAAM;AAAE,aAAS,MAAM;AAAA,EAAE,GAAG,8CAA8C;AAE3F,MAAI,MAAM,OAAO,qBAAqB,MAAM,IAAI,MAAM,SAAS;AAAA,IAC7D,MAAM;AAAA,IACN,IAAI;AAAA;AAAA;AAAA,IAGJ,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO,MAAM,EAAE,YAAY;AAAA,IAC3B;AAAA,IACA,QAAQ,CACN,WACA,YACkB,UAAU,IAAI,QAAQ,WAAW,SAAS,QAAQ,OAAO;AAAA,EAC/E,GAAG,SAAS,CAAC;AACf;",
6
- "names": ["name", "name"]
7
- }
1
+ {"version":3,"sources":["<define:import.meta.env>","../node_modules/html2canvas/node_modules/tslib/tslib.es6.js","../node_modules/src/css/layout/bounds.ts","../node_modules/html2canvas/node_modules/src/Util.ts","../node_modules/html2canvas/node_modules/css-line-break/node_modules/src/Util.ts","../node_modules/html2canvas/node_modules/css-line-break/node_modules/src/Trie.ts","../node_modules/html2canvas/node_modules/css-line-break/node_modules/utrie/node_modules/src/index.ts","../node_modules/html2canvas/node_modules/src/linebreak-trie.ts","../node_modules/html2canvas/node_modules/src/LineBreak.ts","../node_modules/src/css/syntax/tokenizer.ts","../node_modules/src/css/syntax/parser.ts","../node_modules/src/css/types/length.ts","../node_modules/src/css/types/length-percentage.ts","../node_modules/src/css/types/angle.ts","../node_modules/src/css/types/color.ts","../node_modules/src/css/property-descriptors/background-clip.ts","../node_modules/src/css/property-descriptors/background-color.ts","../node_modules/src/css/types/functions/gradient.ts","../node_modules/src/css/types/functions/linear-gradient.ts","../node_modules/src/css/types/functions/-prefix-linear-gradient.ts","../node_modules/src/css/types/functions/-webkit-gradient.ts","../node_modules/src/css/types/functions/radial-gradient.ts","../node_modules/src/css/types/functions/-prefix-radial-gradient.ts","../node_modules/src/css/types/image.ts","../node_modules/src/css/property-descriptors/background-image.ts","../node_modules/src/css/property-descriptors/background-origin.ts","../node_modules/src/css/property-descriptors/background-position.ts","../node_modules/src/css/property-descriptors/background-repeat.ts","../node_modules/src/css/property-descriptors/background-size.ts","../node_modules/src/css/property-descriptors/border-color.ts","../node_modules/src/css/property-descriptors/border-radius.ts","../node_modules/src/css/property-descriptors/border-style.ts","../node_modules/src/css/property-descriptors/border-width.ts","../node_modules/src/css/property-descriptors/color.ts","../node_modules/src/css/property-descriptors/direction.ts","../node_modules/src/css/property-descriptors/display.ts","../node_modules/src/css/property-descriptors/float.ts","../node_modules/src/css/property-descriptors/letter-spacing.ts","../node_modules/src/css/property-descriptors/line-break.ts","../node_modules/src/css/property-descriptors/line-height.ts","../node_modules/src/css/property-descriptors/list-style-image.ts","../node_modules/src/css/property-descriptors/list-style-position.ts","../node_modules/src/css/property-descriptors/list-style-type.ts","../node_modules/src/css/property-descriptors/margin.ts","../node_modules/src/css/property-descriptors/overflow.ts","../node_modules/src/css/property-descriptors/overflow-wrap.ts","../node_modules/src/css/property-descriptors/padding.ts","../node_modules/src/css/property-descriptors/text-align.ts","../node_modules/src/css/property-descriptors/position.ts","../node_modules/src/css/property-descriptors/text-shadow.ts","../node_modules/src/css/property-descriptors/text-transform.ts","../node_modules/src/css/property-descriptors/transform.ts","../node_modules/src/css/property-descriptors/transform-origin.ts","../node_modules/src/css/property-descriptors/visibility.ts","../node_modules/src/css/property-descriptors/word-break.ts","../node_modules/src/css/property-descriptors/z-index.ts","../node_modules/src/css/types/time.ts","../node_modules/src/css/property-descriptors/opacity.ts","../node_modules/src/css/property-descriptors/text-decoration-color.ts","../node_modules/src/css/property-descriptors/text-decoration-line.ts","../node_modules/src/css/property-descriptors/font-family.ts","../node_modules/src/css/property-descriptors/font-size.ts","../node_modules/src/css/property-descriptors/font-weight.ts","../node_modules/src/css/property-descriptors/font-variant.ts","../node_modules/src/css/property-descriptors/font-style.ts","../node_modules/src/core/bitwise.ts","../node_modules/src/css/property-descriptors/content.ts","../node_modules/src/css/property-descriptors/counter-increment.ts","../node_modules/src/css/property-descriptors/counter-reset.ts","../node_modules/src/css/property-descriptors/duration.ts","../node_modules/src/css/property-descriptors/quotes.ts","../node_modules/src/css/property-descriptors/box-shadow.ts","../node_modules/src/css/property-descriptors/paint-order.ts","../node_modules/src/css/property-descriptors/webkit-text-stroke-color.ts","../node_modules/src/css/property-descriptors/webkit-text-stroke-width.ts","../node_modules/src/css/index.ts","../node_modules/src/core/debugger.ts","../node_modules/src/dom/element-container.ts","../node_modules/html2canvas/node_modules/src/grapheme-break-trie.ts","../node_modules/html2canvas/node_modules/text-segmentation/node_modules/src/Util.ts","../node_modules/html2canvas/node_modules/text-segmentation/node_modules/src/Trie.ts","../node_modules/html2canvas/node_modules/text-segmentation/node_modules/utrie/node_modules/src/index.ts","../node_modules/html2canvas/node_modules/src/GraphemeBreak.ts","../node_modules/src/core/features.ts","../node_modules/src/css/layout/text.ts","../node_modules/src/dom/text-container.ts","../node_modules/src/dom/replaced-elements/image-element-container.ts","../node_modules/src/dom/replaced-elements/canvas-element-container.ts","../node_modules/src/dom/replaced-elements/svg-element-container.ts","../node_modules/src/dom/elements/li-element-container.ts","../node_modules/src/dom/elements/ol-element-container.ts","../node_modules/src/dom/replaced-elements/input-element-container.ts","../node_modules/src/dom/elements/select-element-container.ts","../node_modules/src/dom/elements/textarea-element-container.ts","../node_modules/src/dom/replaced-elements/iframe-element-container.ts","../node_modules/src/dom/node-parser.ts","../node_modules/src/css/types/functions/counter.ts","../node_modules/src/dom/document-cloner.ts","../node_modules/src/core/cache-storage.ts","../node_modules/src/render/vector.ts","../node_modules/src/render/bezier-curve.ts","../node_modules/src/render/bound-curves.ts","../node_modules/src/render/effects.ts","../node_modules/src/render/path.ts","../node_modules/src/render/stacking-context.ts","../node_modules/src/render/border.ts","../node_modules/src/render/box-sizing.ts","../node_modules/src/render/background.ts","../node_modules/src/core/util.ts","../node_modules/src/render/font-metrics.ts","../node_modules/src/render/renderer.ts","../node_modules/src/render/canvas/canvas-renderer.ts","../node_modules/src/render/canvas/foreignobject-renderer.ts","../node_modules/src/core/logger.ts","../node_modules/src/core/context.ts","../node_modules/src/index.ts","../src/client/index.ts","../src/client/FilesView.tsx","../src/client/format.ts","../src/client/export/index.ts","../src/client/export/pdf.ts","../src/client/export/docx.ts","../src/client/export/zip.ts","../src/client/export/model.ts","../src/client/markdown-assets.ts","../src/client/face.ts","../src/client/locales.ts","../src/client/store.ts","../src/client/styles.ts"],"sourcesContent":["{\"MODE\":\"production\"}",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"/**\n * Browser half: register `files` as one Conversation View.\n *\n * The public path, unmodified: the view into the `conversation.view` list slot\n * that `@deepseek-ai/dsh-client-ui-conversation` owns and renders as the tab\n * strip beside Chat and Trajectory. The registration carries the exclusive\n * per-Session store, the injected Remote face, and the locale namespace; the\n * slot service's effect wrapper means plugin unload removes the tab, its\n * dictionary, and its stylesheet, and disposal of the declaration removes the\n * contribution again if the Conversation shell is remounted.\n *\n * The file split is this package's layering: what the explorer keeps\n * (`store.ts`), how it lists and reads (`face.ts`), what it draws\n * (`FilesView.tsx`), what it looks like (`styles.ts`), what it says\n * (`locales.ts`), and this module, which only wires them together.\n */\nimport type { Context } from '@deepseek-ai/cordis'\nimport type { BoundActions } from '@deepseek-ai/dsh-client-store'\nimport type { SessionId } from '@deepseek-ai/dsh-session/types'\n// Type-only: pulls the Client Remote face (`ctx.remote`).\nimport type {} from '@deepseek-ai/dsh-api-remotes/client'\n// Type-only: pulls the locale service's Context merge (`ctx.locale`).\nimport type {} from '@deepseek-ai/dsh-client-locale/client'\n// Type-only: the 'conversation.view' SlotMap row and the owner props the view\n// component derives must be in the program for the register call to type.\nimport type {} from '@deepseek-ai/dsh-client-ui-conversation/client'\n// Type-only: pulls the slot service's Context merge (`ctx.slots`).\nimport type {} from '@deepseek-ai/dsh-client-ui-renderer/client'\nimport type {} from '@deepseek-ai/dsh-client-ui-session/client'\nimport { FilesView } from './FilesView.tsx'\nimport { filesFace } from './face.ts'\nimport type { FilesInjected } from './face.ts'\nimport { en, NS, zh } from './locales.ts'\nimport { createFilesStore } from './store.ts'\nimport { installStyles } from './styles.ts'\n\nexport { parseJsonDocument, previewLines, tabLabels } from './FilesView.tsx'\nexport { canExportPdf, extensionOf, hasSourceToggle, previewFormatFor } from './format.ts'\nexport {\n MAX_ASSET_BYTES, MAX_DOCUMENT_IMAGES, relativeImageDestinations, resolveRelativePath,\n} from './markdown-assets.ts'\n// The export writers are pure byte producers, so they are reachable from outside\n// the plugin: the contract tests parse what they write, which is the only way to\n// check a file format without opening the file in an application.\nexport { bytesOfDataUrl, pdfFromPages, A4_HEIGHT_PT, A4_WIDTH_PT } from './export/pdf.ts'\nexport type { PdfPage } from './export/pdf.ts'\nexport { crc32, zip } from './export/zip.ts'\nexport type { ZipPart } from './export/zip.ts'\nexport { docxFromBlocks } from './export/docx.ts'\nexport type { Block, InlineRun } from './export/model.ts'\nexport type { PreviewFormat, PreviewFormatKind } from './format.ts'\nexport type { FileExplorerKey } from './locales.ts'\nexport { RETAINED_PREVIEWS } from './store.ts'\nexport type {\n DirLevel, FilesState, LevelState, PreviewContent, PreviewImage, PreviewMode, PreviewState,\n PreviewText,\n} from './store.ts'\nexport type { FilesInjected, WorkspaceFilesRemote } from './face.ts'\nexport type { FilesViewProps } from './FilesView.tsx'\n\n/** This plugin's identity inside the browser plugin tree. */\nexport const name = 'file-explorer'\n\n/**\n * Required browser services: the slot registry, copy, and the Remote carrier\n * with the workspace-files namespace the explorer reads through.\n */\nexport const inject = ['slots', 'locale', 'remote', 'remote.workspaceFiles']\n\n/**\n * The view's id inside `conversation.view`. It is the tab's identity, the key\n * a stored View preference names, and the entry id the header selects by.\n */\nexport const FILES_VIEW_ID = 'files'\n\n/**\n * Client plugin body: register the stylesheet, the dictionaries, and the view.\n * @param ctx - client root context carrying the slot registry, copy, and Remote face.\n */\nexport function apply(ctx: Context): void {\n ctx.effect(installStyles, '@jaxzhou/dsh-file-explorer: stylesheet')\n ctx.effect(() => ctx.locale.register(NS, { zh, en }), '@jaxzhou/dsh-file-explorer: dictionaries')\n // Registration-time text (the view tab label) reads through the bound\n // translate as a thunk, so it follows the active locale without\n // re-registration.\n const t = ctx.locale.bind(NS)\n const store = createFilesStore()\n const lifetime = new AbortController()\n ctx.effect(() => () => { lifetime.abort() }, '@jaxzhou/dsh-file-explorer: request lifetime')\n\n ctx.slots.inject('conversation.view', () => ctx.slots.register({\n name: 'conversation.view',\n id: FILES_VIEW_ID,\n // After Chat (default) and Trajectory (10), so the strip reads\n // Chat | Trajectory | Files.\n order: 20,\n locale: NS,\n label: () => t('view.files'),\n store,\n inject: (\n sessionId: SessionId,\n actions: BoundActions<ReturnType<typeof createFilesStore>>,\n ): FilesInjected => filesFace(ctx.remote, sessionId, lifetime.signal, actions),\n }, FilesView))\n}\n","/**\n * The Files Conversation View: the session workspace on the left, one preview\n * tab per opened file on the right.\n *\n * The view is one `conversation.view` entry, so it sits beside Chat and\n * Trajectory in the same tab strip and the shell renders it one at a time.\n * Everything the tree keeps lives in its store; everything it asks for goes\n * through its injected face. The component only decides what to draw for each\n * absolute path and what a click means: a directory toggles, a file opens a\n * preview tab (or focuses the one already open for it), and anything else is\n * shown but refuses to open.\n *\n * A tab's body follows the file's format (see `format.ts`): Markdown renders as a\n * document with a source view behind a toggle, JSON as a collapsible tree with\n * the same toggle, a recognized source suffix through the shared\n * syntax-highlighted code block, an image as the image, and everything else as\n * plain numbered text. All of it comes from\n * `@deepseek-ai/dsh-client-ui-primitives`, which the browser shell shares into its\n * frozen module table — the one way this bundle may use another package's values\n * at runtime.\n *\n * Switching to another tab unmounts this component but not its Session-scoped\n * store, so the tree, the open tabs, and the active tab survive the round trip. A\n * read left in flight when that happens settles into the store anyway, because\n * the face's requests ride the plugin's lifetime, not the component's.\n */\nimport {\n useEffect, useMemo, useRef, useState,\n type MutableRefObject, type ReactNode,\n} from 'react'\nimport type { ConvViewProps } from '@deepseek-ai/dsh-client-ui-conversation/client'\nimport type { InjectFace, PropsLocale, PropsStore, TranslateNS } from '@deepseek-ai/dsh-client-ui-slots'\nimport type { RemoteFailure } from '@deepseek-ai/dsh-api-remotes/client'\nimport {\n CodeBlock, FileTypeIcon, IconDownloadOutline16, IconFolderClose16, IconFolderOpen16,\n IconRefreshOutline16, JsonTree, MarkdownText, Menu, classifyFileType, fileSizeText, writeClipboard,\n} from '@deepseek-ai/dsh-client-ui-primitives'\nimport type { JsonTreeLabels, MarkdownLabels } from '@deepseek-ai/dsh-client-ui-primitives'\nimport type { WorkspaceDirectoryEntry } from '@deepseek-ai/dsh-api-workspace-files/types'\nimport { canExportPdf, hasSourceToggle, previewFormatFor } from './format.ts'\nimport { exportDocument, type ExportFormat } from './export/index.ts'\nimport type { PreviewFormat } from './format.ts'\nimport type { FilesInjected } from './face.ts'\nimport { relativeImageDestinations, resolveRelativePath } from './markdown-assets.ts'\nimport type {\n FilesState, LevelState, PreviewContent, PreviewMode, PreviewState, PreviewText,\n createFilesStore,\n} from './store.ts'\nimport type {} from './locales.ts'\n\n/** The view's composed props: the Conversation View seat, its store, its face, and its copy. */\nexport type FilesViewProps =\n & ConvViewProps\n & PropsStore<ReturnType<typeof createFilesStore>>\n & InjectFace<FilesInjected>\n & PropsLocale<'fileExplorer'>\n\n/** Natural, case-insensitive name order, so `file2` precedes `file10`. */\nconst byName = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' })\n\n/**\n * Order one level's entries for display: directories first, then everything\n * else, each group by name. The endpoint's order is a listing fact; this is the\n * reader's.\n * @param entries - the listing as the endpoint returned it.\n * @returns a new array, directories first, then by name within each group.\n */\nexport function orderEntries(entries: readonly WorkspaceDirectoryEntry[]): WorkspaceDirectoryEntry[] {\n return [...entries].sort((left, right) => {\n const group = Number(right.type === 'directory') - Number(left.type === 'directory')\n return group !== 0 ? group : byName.compare(left.name, right.name)\n })\n}\n\n/**\n * The absolute path of one child entry.\n *\n * Joined with `/` whatever the parent's separators: the host resolves mixed\n * separators, and the tree only needs a stable key.\n * @param parent - absolute path of the listed directory.\n * @param name - the entry's basename.\n * @returns the child's absolute path.\n */\nexport function childPath(parent: string, name: string): string {\n return `${parent.replace(/[/\\\\]+$/, '')}/${name}`\n}\n\n/**\n * Split a path into its directory prefix and its last segment, for a header\n * that greys the prefix and inks the name.\n * @param path - absolute path.\n * @returns the trailing-slash directory prefix and the basename.\n */\nexport function pathParts(path: string): { directory: string; name: string } {\n const at = Math.max(path.lastIndexOf('/'), path.lastIndexOf('\\\\'))\n if (at < 0) return { directory: '', name: path }\n return { directory: path.slice(0, at + 1), name: path.slice(at + 1) }\n}\n\n/**\n * The display label of every open tab.\n *\n * A tab shows its basename, which is what a strip can afford. Two open files\n * that share a basename are ambiguous on their own — `index.ts` in three\n * directories is the ordinary case — so those tabs carry their parent directory\n * as a prefix, and only those. The full path stays in each tab's tooltip.\n * @param open - open tab paths, in strip order.\n * @returns a label per path.\n */\nexport function tabLabels(open: readonly string[]): Record<string, string> {\n const twins = new Map<string, number>()\n for (const path of open) {\n const { name } = pathParts(path)\n twins.set(name, (twins.get(name) ?? 0) + 1)\n }\n const labels: Record<string, string> = {}\n for (const path of open) {\n const { directory, name } = pathParts(path)\n if ((twins.get(name) ?? 0) < 2) {\n labels[path] = name\n continue\n }\n const parent = pathParts(directory.replace(/[/\\\\]+$/, '')).name\n labels[path] = parent === '' ? name : `${parent}/${name}`\n }\n return labels\n}\n\n/**\n * Split one loaded page into its source lines.\n *\n * The page's own line count decides: `0` is a page past the file's last line\n * (an empty file on the first read), which has no lines to draw and must not\n * become one empty row. Otherwise the text is the page's lines joined with\n * `\\n`, so splitting returns exactly what `lines` promised.\n * @param page - the loaded text page.\n * @returns the page's source lines, in order.\n */\nexport function previewLines(page: PreviewText): string[] {\n return page.lines === 0 ? [] : page.text.split('\\n')\n}\n\n/**\n * Parse one complete JSON document for the tree view.\n * @param text - the file's text.\n * @returns the parsed container, or undefined when the text is not JSON a tree\n * can walk (a syntax error, or a bare scalar).\n */\nexport function parseJsonDocument(text: string): object | undefined {\n let value: unknown\n try {\n value = JSON.parse(text)\n } catch {\n return undefined\n }\n return typeof value === 'object' && value !== null ? value : undefined\n}\n\n/**\n * Say why a directory could not be listed, in terms of the directory.\n * @param t - namespace-bound translate.\n * @param failure - the settled Remote failure.\n * @returns the line to show under the directory.\n */\nexport function treeFailureLine(\n t: TranslateNS<'fileExplorer'>,\n failure: RemoteFailure,\n): string {\n switch (failure.code) {\n case 'workspace-file/not-found': return t('tree.error.notFound')\n case 'workspace-file/outside-workspace': return t('tree.error.outsideWorkspace')\n case 'workspace-file/not-directory': return t('tree.error.notDirectory')\n // Carrier and unclassified host failures reach the reader as themselves:\n // this tree knows nothing useful to add to a transport-level message.\n default: return t('tree.error.unavailable', { message: failure.message })\n }\n}\n\n/**\n * Say why a file could not be previewed, in terms of the file.\n * @param t - namespace-bound translate.\n * @param failure - the settled Remote failure.\n * @returns the line to show in the preview pane.\n */\nexport function previewFailureLine(\n t: TranslateNS<'fileExplorer'>,\n failure: RemoteFailure,\n): string {\n switch (failure.code) {\n case 'workspace-file/not-found': return t('preview.error.notFound')\n case 'workspace-file/not-text': return t('preview.error.notText')\n case 'workspace-file/too-large': return t('preview.error.tooLarge')\n case 'workspace-file/not-regular-file': return t('preview.error.notRegularFile')\n default: return t('preview.error.unavailable', { message: failure.message })\n }\n}\n\n/** What every level shares: the explorer's state and the two gestures. */\ninterface TreeContext {\n readonly state: FilesState\n readonly open: ReadonlySet<string>\n readonly onToggle: (path: string) => void\n readonly onOpen: (path: string) => void\n readonly t: TranslateNS<'fileExplorer'>\n}\n\n/** One directory's rows: its state while listing, its entries once listed. */\nfunction Level({ path, tree }: { path: string; tree: TreeContext }): ReactNode {\n const { state, t } = tree\n const level: LevelState | undefined = state.levels[path]\n if (level === undefined || level.kind === 'loading') {\n return <li className=\"dsh-fe-note\" data-files-row=\"loading\">{t('tree.loading')}</li>\n }\n if (level.kind === 'failed') {\n return (\n <li\n className=\"dsh-fe-note dsh-fe-note-error\"\n data-files-row=\"failed\"\n data-files-code={level.failure.code}\n >\n {treeFailureLine(t, level.failure)}\n </li>\n )\n }\n const entries = orderEntries(level.level.entries)\n return (\n <>\n {entries.length === 0 && <li className=\"dsh-fe-note\" data-files-row=\"empty\">{t('tree.empty')}</li>}\n {entries.map(entry => <Entry key={entry.name} parent={path} entry={entry} tree={tree} />)}\n {level.level.truncated && (\n <li className=\"dsh-fe-note\" data-files-row=\"truncated\">{t('tree.truncated')}</li>\n )}\n </>\n )\n}\n\n/** One entry's row, and its children when it is an expanded directory. */\nfunction Entry({\n parent,\n entry,\n tree,\n}: {\n parent: string\n entry: WorkspaceDirectoryEntry\n tree: TreeContext\n}): ReactNode {\n const path = childPath(parent, entry.name)\n if (entry.type === 'directory') {\n const expanded = tree.state.expanded.includes(path)\n return (\n <li className=\"dsh-fe-item\" data-files-entry=\"directory\" data-files-path={path}>\n <button\n type=\"button\"\n className=\"dsh-fe-row\"\n aria-expanded={expanded}\n onClick={() => { tree.onToggle(path) }}\n >\n {expanded\n ? <IconFolderOpen16 className=\"dsh-fe-icon\" />\n : <IconFolderClose16 className=\"dsh-fe-icon\" />}\n <span className=\"dsh-fe-name\">{entry.name}</span>\n </button>\n {expanded && <ul className=\"dsh-fe-level\"><Level path={path} tree={tree} /></ul>}\n </li>\n )\n }\n if (entry.type === 'file') {\n const isOpen = tree.open.has(path)\n return (\n <li\n className=\"dsh-fe-item\"\n data-files-entry=\"file\"\n data-files-path={path}\n data-files-open={isOpen || undefined}\n >\n <button\n type=\"button\"\n className=\"dsh-fe-row\"\n aria-current={tree.state.active === path}\n onClick={() => { tree.onOpen(path) }}\n >\n <FileTypeIcon kind={classifyFileType(entry.name)} size={16} />\n <span className=\"dsh-fe-name\">{entry.name}</span>\n {isOpen && <span className=\"dsh-fe-open-dot\" aria-hidden=\"true\" />}\n </button>\n </li>\n )\n }\n return (\n <li className=\"dsh-fe-item\" data-files-entry=\"other\" data-files-path={path}>\n <span className=\"dsh-fe-row dsh-fe-row-static\" title={tree.t('tree.other')}>\n <span className=\"dsh-fe-name\">{entry.name}</span>\n </span>\n </li>\n )\n}\n\n/**\n * One file's source text through the shared syntax highlighter.\n *\n * `CodeBlock` owns the grammar lookup, the numbered gutter, and the copy\n * control; the owning class only replaces the chat card's chrome (margin,\n * radius, grey fill) with the pane's, and states the wrap preference: lines wrap\n * at their spaces and keep every word whole, and a token that cannot fit on a\n * line by itself still breaks rather than sliding under a scrollbar.\n */\nfunction HighlightedSource({\n page,\n lang,\n wrap,\n t,\n}: {\n page: PreviewText\n lang: string | undefined\n wrap: boolean\n t: TranslateNS<'fileExplorer'>\n}): ReactNode {\n return (\n <div className=\"dsh-fe-source\" data-wrap={wrap} data-preview-lang={lang ?? 'plain'}>\n <CodeBlock\n code={page.text}\n lang={lang}\n lineNumbers\n copyLabel={t('code.copy')}\n copiedLabel={t('code.copied')}\n />\n </div>\n )\n}\n\n/**\n * One HTML file drawn as a page, in a sandboxed iframe over a Blob URL.\n *\n * `allow-scripts` without `allow-same-origin` puts the document in an opaque\n * origin: its scripts run, but nothing in it can reach this application's DOM,\n * storage, or session. The same pair is what the shipped Sidebar document\n * preview uses, so the two HTML surfaces in the harness behave alike.\n *\n * Relative assets are not fetched — a Blob document has no base to resolve them\n * against, and packing them would mean reading the workspace beside the file.\n * See the README's limitations.\n */\nfunction HtmlFrame({ html, title }: { html: string; title: string }): ReactNode {\n const url = useMemo(\n () => URL.createObjectURL(new Blob([html], { type: 'text/html' })),\n [html],\n )\n useEffect(() => () => { URL.revokeObjectURL(url) }, [url])\n return (\n <iframe\n className=\"dsh-fe-html-frame\"\n src={url}\n sandbox=\"allow-scripts\"\n title={title}\n data-preview-html\n />\n )\n}\n\n/**\n * The data URLs a rendered document already resolved, keyed by absolute path.\n *\n * Module scope rather than component state: switching tabs unmounts the pane, and\n * a document whose images were read once should not read them again. The cap keeps\n * the cache in the same spirit as the preview retention next door.\n */\nconst assetCache = new Map<string, string>()\n\n/** Ceiling on {@link assetCache} entries; the oldest read is evicted first. */\nconst ASSET_CACHE_LIMIT = 64\n\n/**\n * Remember one image's data URL, evicting the least recently loaded past the cap.\n * @param path - absolute file path.\n * @param dataUrl - the image, as a URL the renderer can draw.\n */\nfunction cacheAsset(path: string, dataUrl: string): void {\n assetCache.delete(path)\n assetCache.set(path, dataUrl)\n while (assetCache.size > ASSET_CACHE_LIMIT) {\n const oldest = assetCache.keys().next().value\n if (oldest === undefined) break\n assetCache.delete(oldest)\n }\n}\n\n/**\n * A Markdown document with the images it references read from the workspace.\n *\n * The primitive resolves local destinations synchronously through `pathImages`,\n * so the reads happen first and the document renders with whatever arrived — a\n * reference with no answer stays inert alt text, exactly as it does for a\n * destination this reader never resolves.\n */\nfunction RenderedMarkdown({\n text,\n directory,\n readImage,\n labels,\n proseRef,\n}: {\n text: string\n /** Absolute directory holding the document, which its destinations resolve against. */\n directory: string\n readImage: FilesInjected['readImage']\n labels: MarkdownLabels\n proseRef: MutableRefObject<HTMLDivElement | null>\n}): ReactNode {\n const destinations = useMemo(() => relativeImageDestinations(text), [text])\n const [assets, setAssets] = useState<Readonly<Record<string, string>>>({})\n\n useEffect(() => {\n const controller = new AbortController()\n const resolved: Record<string, string> = {}\n const missing: { destination: string; path: string }[] = []\n for (const destination of destinations) {\n const path = resolveRelativePath(directory, destination)\n const cached = assetCache.get(path)\n if (cached === undefined) missing.push({ destination, path })\n else resolved[destination] = cached\n }\n setAssets(resolved)\n for (const { destination, path } of missing) {\n void readImage(path, controller.signal).then((dataUrl) => {\n if (dataUrl === undefined || controller.signal.aborted) return\n cacheAsset(path, dataUrl)\n setAssets(current => ({ ...current, [destination]: dataUrl }))\n })\n }\n return () => { controller.abort() }\n }, [destinations, directory, readImage])\n\n // One identity per settled set: a fresh object each render would discard the\n // primitive's parse memo.\n const pathImages = useMemo(\n () => ({ resolve: (value: string) => assets[value] }),\n [assets],\n )\n return (\n <div className=\"dsh-fe-prose\" ref={proseRef} data-preview-format=\"markdown\">\n <MarkdownText text={text} labels={labels} pathImages={pathImages} />\n </div>\n )\n}\n\n/**\n * A Markdown file as a document, a JSON file as a collapsible tree, and an HTML\n * file as a page.\n *\n * The label objects are memoized on the translated strings rather than on `t`:\n * the bound translate keeps one identity across a locale change while its output\n * changes, and a fresh labels object on every render would discard the\n * primitives' parse memos.\n */\nfunction FormattedBody({\n page,\n format,\n directory,\n jsonDocument,\n readImage,\n proseRef,\n t,\n}: {\n page: PreviewText\n format: PreviewFormat\n /** Absolute directory holding the file, which its relative destinations resolve against. */\n directory: string\n /** Parsed JSON for a `json` format, decided by the pane before it elected this body. */\n jsonDocument: object | undefined\n readImage: FilesInjected['readImage']\n /** The rendered Markdown document, which the PDF export clones. */\n proseRef: MutableRefObject<HTMLDivElement | null>\n t: TranslateNS<'fileExplorer'>\n}): ReactNode {\n const copyLabel = t('code.copy')\n const copiedLabel = t('code.copied')\n const footnotes = t('footnotes')\n const markdownLabels = useMemo<MarkdownLabels>(\n () => ({ code: { copyLabel, copiedLabel }, footnotes }),\n [copyLabel, copiedLabel, footnotes],\n )\n const copyValue = t('json.copyValue')\n const copyJson = t('json.copyJson')\n const copyPath = t('json.copyPath')\n const copyPrettyJson = t('json.copyPrettyJson')\n const copyCompactJson = t('json.copyCompactJson')\n const copied = t('json.copied')\n const copyFailed = t('json.copyFailed')\n const collapseNode = t('json.collapseNode')\n const expandNode = t('json.expandNode')\n const jsonLabels = useMemo<JsonTreeLabels>(() => ({\n copyValue,\n copyJson,\n copyPath,\n copyPrettyJson,\n copyCompactJson,\n copied,\n copyFailed,\n collapseNode,\n expandNode,\n // Reads the live translate at call time, so the tooltip follows a locale\n // change without rebuilding this object; `t` is stable by contract.\n copyButtonTitle: action => t('json.copyTitle', { action }),\n }), [\n collapseNode, copyCompactJson, copyFailed, copyJson, copyPath, copyPrettyJson,\n copyValue, copied, expandNode, t,\n ])\n\n if (format.kind === 'markdown') {\n return (\n <RenderedMarkdown\n text={page.text}\n directory={directory}\n readImage={readImage}\n labels={markdownLabels}\n proseRef={proseRef}\n />\n )\n }\n if (format.kind === 'html') {\n return (\n <div className=\"dsh-fe-html\" data-preview-format=\"html\">\n <HtmlFrame html={page.text} title={t('preview.htmlFrame')} />\n </div>\n )\n }\n // The pane elects this body for `json` only once the document parses.\n if (jsonDocument === undefined) return null\n return (\n <div className=\"dsh-fe-json\" data-preview-format=\"json\">\n <JsonTree\n data={jsonDocument}\n label={t('preview.jsonLabel')}\n labels={jsonLabels}\n expandTopLevel={false}\n />\n </div>\n )\n}\n\n/** Which body a tab is drawing, which is also which controls apply. */\ntype PreviewBodyKind = 'rendered' | 'source' | 'image'\n\n/**\n * Resolve the body a file's format and the tab's mode choice agree on.\n * @param content - what the read delivered, or null while it has not settled.\n * @param format - the file's format.\n * @param mode - the tab's explicit choice, or undefined to follow the default.\n * @param jsonWalkable - whether a `json` format's document parsed into a tree.\n * @returns the body kind.\n */\nfunction bodyKindOf(\n content: PreviewContent | null,\n format: PreviewFormat,\n mode: PreviewMode | undefined,\n jsonWalkable: boolean,\n): PreviewBodyKind {\n if (content !== null && content.kind === 'image') return 'image'\n if (!hasSourceToggle(format)) return 'source'\n if ((mode ?? 'rendered') === 'source') return 'source'\n // JSON the tree cannot walk falls back to its source, so the controls offer the\n // body that is actually on screen.\n if (format.kind === 'json' && !jsonWalkable) return 'source'\n return 'rendered'\n}\n\n/**\n * The body of one settled preview tab.\n * @param props - the tab's content, its format, the elected body, and copy.\n * @returns the scrollport holding that body.\n */\nfunction PreviewBody({\n path,\n content,\n format,\n body,\n jsonDocument,\n jsonFallback,\n wrap,\n readImage,\n proseRef,\n t,\n}: {\n path: string\n content: PreviewContent\n format: PreviewFormat\n body: PreviewBodyKind\n jsonDocument: object | undefined\n /** The reader asked for the tree and the file does not parse; say so above the source. */\n jsonFallback: boolean\n wrap: boolean\n readImage: FilesInjected['readImage']\n /** Handed to the rendered Markdown container, which the PDF export clones. */\n proseRef: MutableRefObject<HTMLDivElement | null>\n t: TranslateNS<'fileExplorer'>\n}): ReactNode {\n if (content.kind === 'image') {\n const { name } = pathParts(path)\n return (\n <div className=\"dsh-fe-scroll dsh-fe-imagehost\" data-preview-state=\"ready\" data-preview-format=\"image\">\n <img className=\"dsh-fe-image\" src={content.image.dataUrl} alt={name} data-preview-image />\n </div>\n )\n }\n const page = content.page\n const lines = previewLines(page)\n if (lines.length === 0) {\n return (\n <div\n className=\"dsh-fe-scroll\"\n data-preview-state=\"ready\"\n data-preview-format={format.kind}\n data-preview-lines=\"0\"\n >\n <p className=\"dsh-fe-note\" data-preview-row=\"empty\">{t('preview.empty')}</p>\n </div>\n )\n }\n return (\n <div\n className=\"dsh-fe-scroll\"\n data-preview-state=\"ready\"\n data-preview-format={format.kind}\n data-preview-lines={lines.length}\n data-preview-body={body}\n >\n {jsonFallback && (\n <p className=\"dsh-fe-note dsh-fe-note-error\" data-preview-row=\"invalid-json\">\n {t('preview.jsonInvalid')}\n </p>\n )}\n {body === 'rendered'\n ? (\n <FormattedBody\n key={path}\n page={page}\n format={format}\n directory={pathParts(path).directory}\n jsonDocument={jsonDocument}\n readImage={readImage}\n proseRef={proseRef}\n t={t}\n />\n )\n : <HighlightedSource page={page} lang={format.lang} wrap={wrap} t={t} />}\n {!page.eof && (\n <p className=\"dsh-fe-note\" data-preview-row=\"truncated\">\n {t('preview.truncated', { lines: page.lines })}\n </p>\n )}\n </div>\n )\n}\n\n/**\n * The Files view: the workspace tree, the open preview tabs, and the active tab.\n * @param props - the Conversation View seat, store, injected face, and copy.\n * @returns the two-pane explorer.\n */\nexport function FilesView({\n sessionId, useSessions, useStore, actions, list, read, readImage, readText, t,\n}: FilesViewProps): ReactNode {\n const cwd = useSessions(sessions => sessions.byId[sessionId]?.cwd)\n const state = useStore(store => store)\n const activeTabRef = useRef<HTMLButtonElement | null>(null)\n /** The rendered Markdown document, which the PDF export clones. */\n const proseRef = useRef<HTMLDivElement | null>(null)\n /** The tab whose text was just copied, so only its button confirms. */\n const [copied, setCopied] = useState<string | null>(null)\n const copyTimer = useRef<ReturnType<typeof setTimeout> | null>(null)\n /** Whether the export menu is showing. */\n const [exportOpen, setExportOpen] = useState(false)\n /** Whether an export is being written, so the control can say so. */\n const [exporting, setExporting] = useState(false)\n /** Why the last export could not be written. */\n const [exportError, setExportError] = useState<string | null>(null)\n\n useEffect(() => () => {\n if (copyTimer.current !== null) clearTimeout(copyTimer.current)\n }, [])\n\n useEffect(() => {\n if (cwd === undefined || state.root === cwd) return\n actions.start(cwd)\n list(cwd)\n }, [actions, cwd, list, state.root])\n\n const active = state.active\n const format: PreviewFormat | null = active === null ? null : previewFormatFor(active)\n const content = active !== null && state.previews[active]?.kind === 'ready'\n ? (state.previews[active] as { content: PreviewContent }).content\n : null\n\n // A JSON document is parsed here, once per settled read, because both the\n // controls' body election and the tree body need the answer. Parsing stays a\n // function of the pane's own decision, not of the read: a file the tree cannot\n // walk is still previewed, as source.\n const jsonDocument = useMemo(() => {\n if (active === null || content === null || content.kind !== 'text') return undefined\n if ((state.modes[active] ?? 'rendered') === 'source') return undefined\n if (previewFormatFor(active).kind !== 'json') return undefined\n return parseJsonDocument(content.page.text)\n }, [active, content, state.modes])\n\n /**\n * Content follows the active tab, not the click that opened it: a tab whose\n * content was dropped for retention reads again the moment it is shown, and a\n * tab that is already loaded costs nothing.\n */\n useEffect(() => {\n if (active === null) return\n if (state.previews[active] !== undefined) return\n read(active)\n }, [active, read, state.previews])\n\n useEffect(() => {\n activeTabRef.current?.scrollIntoView({ block: 'nearest', inline: 'nearest' })\n }, [active])\n\n if (cwd === undefined) {\n return (\n <div className=\"dsh-fe-root\" data-files-state=\"no-workspace\">\n <div className=\"dsh-fe-status\">{t('tree.noWorkspace')}</div>\n </div>\n )\n }\n if (state.root === null) return null\n\n const openSet = new Set(state.open)\n const tree: TreeContext = {\n state,\n open: openSet,\n onToggle: (path) => {\n const loaded = state.levels[path] !== undefined\n actions.toggled(path)\n if (!loaded) list(path)\n },\n onOpen: (path) => { actions.openFile(path) },\n t,\n }\n // Reload drops every level and asks again for the expanded ones; a collapsed\n // level is fetched again the next time it opens.\n const reloadTree = (): void => {\n actions.reset()\n for (const path of state.expanded) list(path)\n }\n const reloadPreview = (): void => {\n if (active !== null) read(active)\n }\n // One copy control serves every body that has text: a rendered document's\n // source, a JSON tree's document, highlighted code, and plain text all copy\n // the file's own text, which is what a reader pastes somewhere else.\n const copyActive = (): void => {\n if (active === null || content === null || content.kind !== 'text') return\n const path = active\n const text = content.page.text\n void writeClipboard(text).then((ok: boolean) => {\n if (!ok) return\n setCopied(path)\n if (copyTimer.current !== null) clearTimeout(copyTimer.current)\n copyTimer.current = setTimeout(() => { setCopied(null) }, 1000)\n })\n }\n /**\n * Export the rendered body as a file, and download it.\n *\n * Markdown is read from the live document node, so the Word file and the PDF\n * pages carry exactly what the reader sees — including the code fences the\n * primitive highlighted and the images it loaded. An HTML document is read from\n * its own text, re-rendered off screen by the export, because the frame the\n * reader sees is sandboxed and unreadable from here by design.\n * @param target - the file to write.\n */\n const runExport = (target: ExportFormat): void => {\n if (active === null || format === null || content === null || content.kind !== 'text') return\n if (!canExportPdf(format)) return\n const name = pathParts(active).name\n setExportError(null)\n setExporting(true)\n void exportDocument(target, {\n name,\n title: name,\n kind: format.kind === 'html' ? 'html' : 'markdown',\n prose: proseRef.current,\n html: content.page.text,\n directory: pathParts(active).directory,\n assets: { readImage, readText },\n })\n .catch((error: unknown) => {\n // An export that cannot be written says so; a download that silently never\n // arrives is the one outcome a reader cannot diagnose.\n setExportError(error instanceof Error ? error.message : String(error))\n })\n .finally(() => { setExporting(false) })\n }\n const closeTab = (path: string): void => {\n actions.closeFile(path)\n }\n const root = pathParts(state.root)\n const labels = tabLabels(state.open)\n const wrap = active === null ? true : state.wraps[active] ?? true\n const preview: PreviewState | undefined = active === null ? undefined : state.previews[active]\n const body = bodyKindOf(content, format ?? { kind: 'text', lang: undefined, mediaType: undefined }, active === null ? undefined : state.modes[active], jsonDocument !== undefined)\n const jsonFallback = format?.kind === 'json'\n && (active === null ? 'rendered' : state.modes[active] ?? 'rendered') === 'rendered'\n && jsonDocument === undefined\n && content !== null\n && content.kind === 'text'\n const meta = content === null\n ? null\n : content.kind === 'text'\n ? [\n t('preview.lines', { lines: content.page.lines }),\n content.page.bytes === undefined ? null : fileSizeText(content.page.bytes),\n ].filter(part => part !== null).join(' · ')\n : content.image.bytes === undefined\n ? null\n : fileSizeText(content.image.bytes)\n\n return (\n <div\n className=\"dsh-fe-root\"\n data-files-state=\"tree\"\n data-files-root={state.root}\n data-conversation-composer-overlay=\"\"\n >\n <div className=\"dsh-fe-panes\">\n <div className=\"dsh-fe-tree\" data-files-pane=\"tree\">\n <div className=\"dsh-fe-head\">\n <span className=\"dsh-fe-path\" title={state.root}>\n <span>\n <span className=\"dsh-fe-path-muted\">{root.directory}</span>\n {root.name}\n </span>\n </span>\n <button\n type=\"button\"\n className=\"dsh-fe-tool\"\n aria-label={t('tree.reload')}\n title={t('tree.reload')}\n data-files-reload\n onClick={reloadTree}\n >\n <IconRefreshOutline16 />\n </button>\n </div>\n <div className=\"dsh-fe-scroll\">\n <ul className=\"dsh-fe-level\"><Level path={state.root} tree={tree} /></ul>\n </div>\n </div>\n <div className=\"dsh-fe-preview\" data-files-pane=\"preview\">\n <div className=\"dsh-fe-head dsh-fe-tabhead\">\n {state.open.length === 0\n ? <span className=\"dsh-fe-path dsh-fe-path-muted\">{t('preview.title')}</span>\n : (\n <div className=\"dsh-fe-tabs\" role=\"tablist\" aria-label={t('preview.tabs')} data-preview-tabs>\n {state.open.map(path => {\n const isActive = path === active\n return (\n <span className=\"dsh-fe-tab\" key={path} role=\"presentation\" data-preview-tab={path} data-active={isActive || undefined}>\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n className=\"dsh-fe-tab-label\"\n title={path}\n ref={isActive ? activeTabRef : undefined}\n data-preview-tab-open={path}\n onClick={() => { actions.activate(path) }}\n onAuxClick={(event) => {\n // Middle click closes, as it does in every editor.\n if (event.button === 1) closeTab(path)\n }}\n >\n <FileTypeIcon kind={classifyFileType(path)} size={14} />\n <span className=\"dsh-fe-tab-name\">{labels[path]}</span>\n </button>\n <button\n type=\"button\"\n className=\"dsh-fe-tab-close\"\n aria-label={t('preview.close', { name: labels[path] })}\n title={t('preview.close', { name: labels[path] })}\n data-preview-tab-close={path}\n onClick={() => { closeTab(path) }}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n </span>\n )\n })}\n </div>\n )}\n {active !== null && body === 'source' && format?.lang !== undefined && (\n <span className=\"dsh-fe-lang\" data-preview-lang-badge>{format.lang}</span>\n )}\n {content !== null && meta !== null && (\n <span className=\"dsh-fe-meta\" data-preview-meta>{meta}</span>\n )}\n {content !== null && content.kind === 'text' && (\n <button\n type=\"button\"\n className=\"dsh-fe-tool\"\n aria-label={t('preview.copy')}\n title={t('preview.copy')}\n data-preview-copy\n onClick={copyActive}\n >\n {copied === active ? t('preview.copied') : t('preview.copy')}\n </button>\n )}\n {active !== null && format !== null && hasSourceToggle(format) && (\n <button\n type=\"button\"\n className=\"dsh-fe-tool\"\n aria-pressed={body === 'source'}\n aria-label={body === 'source' ? t('preview.rendered') : t('preview.source')}\n title={body === 'source' ? t('preview.rendered') : t('preview.source')}\n data-preview-mode-toggle\n onClick={() => { actions.setMode(active, body === 'source' ? 'rendered' : 'source') }}\n >\n {body === 'source' ? t('preview.rendered') : t('preview.source')}\n </button>\n )}\n {active !== null && body === 'rendered' && format !== null && canExportPdf(format) && (\n <Menu\n open={exportOpen}\n anchor={(\n <button\n type=\"button\"\n className=\"dsh-fe-tool\"\n aria-label={t('export.label')}\n title={t('export.label')}\n aria-haspopup=\"menu\"\n aria-expanded={exportOpen}\n aria-busy={exporting || undefined}\n disabled={exporting}\n data-preview-export\n onClick={() => { setExportOpen(open => !open) }}\n >\n <IconDownloadOutline16 />\n </button>\n )}\n items={[\n { id: 'pdf', label: t('export.pdf') },\n { id: 'word', label: t('export.word') },\n ]}\n onSelect={(id) => {\n setExportOpen(false)\n runExport(id === 'word' ? 'word' : 'pdf')\n }}\n onClose={() => { setExportOpen(false) }}\n // Portalled: this pane clips its own overflow, so an in-place list\n // would be cropped by the view's edge.\n portal\n align=\"end\"\n side=\"bottom\"\n />\n )}\n {active !== null && body === 'source' && (\n <button\n type=\"button\"\n className=\"dsh-fe-tool\"\n aria-pressed={wrap}\n aria-label={wrap ? t('preview.nowrap') : t('preview.wrap')}\n title={wrap ? t('preview.nowrap') : t('preview.wrap')}\n data-preview-wrap-toggle\n onClick={() => { actions.setWrap(active, !wrap) }}\n >\n {wrap ? '↵' : '→'}\n </button>\n )}\n {active !== null && (\n <button\n type=\"button\"\n className=\"dsh-fe-tool\"\n aria-label={t('preview.reload')}\n title={t('preview.reload')}\n data-preview-reload\n onClick={reloadPreview}\n >\n <IconRefreshOutline16 />\n </button>\n )}\n </div>\n {active === null && <div className=\"dsh-fe-status\">{t('preview.placeholder')}</div>}\n {exportError !== null && (\n <p className=\"dsh-fe-note dsh-fe-note-error\" data-preview-export-error>\n {t('export.failed', { message: exportError })}\n </p>\n )}\n {active !== null && (preview === undefined || preview.kind === 'loading') && (\n <div className=\"dsh-fe-status\">{t('preview.loading')}</div>\n )}\n {active !== null && preview?.kind === 'failed' && (\n <div className=\"dsh-fe-scroll\" data-preview-state=\"failed\">\n <p className=\"dsh-fe-note dsh-fe-note-error\" data-preview-code={preview.failure.code}>\n {previewFailureLine(t, preview.failure)}\n </p>\n <button type=\"button\" className=\"dsh-fe-tool\" onClick={reloadPreview}>\n {t('preview.reload')}\n </button>\n </div>\n )}\n {active !== null && content !== null && format !== null && (\n <PreviewBody\n path={active}\n content={content}\n format={format}\n body={body}\n jsonDocument={jsonDocument}\n jsonFallback={jsonFallback}\n wrap={wrap}\n readImage={readImage}\n proseRef={proseRef}\n t={t}\n />\n )}\n </div>\n </div>\n </div>\n )\n}\n","/**\n * What a workspace file is, for preview purposes.\n *\n * The pane picks a display from the file's own name before it reads anything,\n * so the read itself can differ: an image needs its complete bytes, everything\n * else needs a page of text. The decision is a pure function of the path, which\n * keeps it testable and keeps the read path honest — the pane never reads bytes\n * it will not draw.\n *\n * Only grammars the shared syntax highlighter actually carries are mapped. An\n * unrecognized suffix is plain text on purpose: a wrong grammar colours the\n * file misleadingly, while plain numbered text is merely unadorned.\n */\n\n/** The display a file's contents get. */\nexport type PreviewFormatKind = 'markdown' | 'html' | 'json' | 'code' | 'image' | 'text'\n\n/** One file's preview format. */\nexport interface PreviewFormat {\n /** Which body the pane draws. */\n readonly kind: PreviewFormatKind\n /** Grammar hint for the highlighted source view; absent when no grammar is known. */\n readonly lang: string | undefined\n /** Media type the read bytes are labelled with; present only for `image`. */\n readonly mediaType: string | undefined\n}\n\n/** Image suffixes and the media type their bytes carry. */\nconst IMAGE_MEDIA_TYPES = new Map<string, string>([\n ['png', 'image/png'],\n ['apng', 'image/apng'],\n ['jpg', 'image/jpeg'],\n ['jpeg', 'image/jpeg'],\n ['jfif', 'image/jpeg'],\n ['gif', 'image/gif'],\n ['webp', 'image/webp'],\n ['avif', 'image/avif'],\n ['bmp', 'image/bmp'],\n ['ico', 'image/x-icon'],\n // An SVG draws as an image here; `<img>` neither runs its scripts nor lets it\n // reach the application origin, so the markup stays inert.\n ['svg', 'image/svg+xml'],\n])\n\n/**\n * Suffix → grammar id, restricted to the ids the shared highlighter resolves\n * (its own alias list). A suffix whose grammar is absent stays unmapped so the\n * file falls through to plain text rather than a wrong colouring.\n */\nconst GRAMMAR_EXTENSIONS: Readonly<Record<string, readonly string[]>> = {\n typescript: ['ts', 'tsx', 'mts', 'cts', 'js', 'jsx', 'mjs', 'cjs'],\n shellscript: ['sh', 'bash', 'zsh', 'ksh', 'shell'],\n json: ['json', 'jsonc', 'jsonl', 'ndjson', 'map', 'webmanifest'],\n python: ['py', 'pyw', 'pyi'],\n ruby: ['rb', 'rake', 'gemspec', 'ru'],\n go: ['go'],\n rust: ['rs'],\n java: ['java'],\n c: ['c', 'h'],\n cpp: ['cc', 'cpp', 'cxx', 'hh', 'hpp', 'hxx', 'ipp'],\n csharp: ['cs', 'csx'],\n kotlin: ['kt', 'kts'],\n swift: ['swift'],\n php: ['php', 'phtml', 'php3', 'php4', 'php5'],\n yaml: ['yaml', 'yml'],\n toml: ['toml'],\n ini: ['ini', 'cfg', 'conf', 'properties', 'desktop', 'service'],\n markdown: ['md', 'markdown', 'mkd', 'mdown', 'mdwn'],\n mdx: ['mdx'],\n html: ['html', 'htm', 'xhtml', 'shtml'],\n css: ['css'],\n scss: ['scss'],\n less: ['less'],\n sql: ['sql', 'ddl', 'dml'],\n xml: ['xml', 'xsd', 'xsl', 'xslt', 'rss', 'atom', 'plist'],\n lua: ['lua'],\n}\n\nconst GRAMMAR_BY_EXTENSION = new Map(Object.entries(GRAMMAR_EXTENSIONS)\n .flatMap(([grammar, suffixes]) => suffixes.map(suffix => [suffix, grammar] as const)))\n\n/**\n * The lowercase suffix a file name ends in.\n *\n * A name that starts with its dot has no suffix: `.gitignore` is a whole name,\n * not a `gitignore` file. A trailing dot has none either.\n * @param path - absolute or relative path, in either separator style.\n * @returns the suffix without its dot, or undefined.\n */\nexport function extensionOf(path: string): string | undefined {\n const normalized = path.replaceAll('\\\\', '/')\n const name = normalized.slice(normalized.lastIndexOf('/') + 1)\n const at = name.lastIndexOf('.')\n if (at <= 0 || at === name.length - 1) return undefined\n return name.slice(at + 1).toLowerCase()\n}\n\n/**\n * Decide how one file is previewed, from its name alone.\n * @param path - absolute or relative path of the file.\n * @returns its preview format.\n */\nexport function previewFormatFor(path: string): PreviewFormat {\n const extension = extensionOf(path)\n const mediaType = extension === undefined ? undefined : IMAGE_MEDIA_TYPES.get(extension)\n if (mediaType !== undefined) return { kind: 'image', lang: undefined, mediaType }\n const lang = extension === undefined ? undefined : GRAMMAR_BY_EXTENSION.get(extension)\n if (lang === undefined) return { kind: 'text', lang: undefined, mediaType: undefined }\n if (lang === 'json') return { kind: 'json', lang, mediaType: undefined }\n // Markdown and HTML each get a rendered body and a source body; MDX stays on\n // the source side, because its JSX would render as prose.\n if (lang === 'markdown') return { kind: 'markdown', lang, mediaType: undefined }\n if (lang === 'html') return { kind: 'html', lang, mediaType: undefined }\n return { kind: 'code', lang, mediaType: undefined }\n}\n\n/**\n * Whether the pane offers a rendered/source switch for a format.\n * @param format - the file's format.\n * @returns whether both bodies exist.\n */\nexport function hasSourceToggle(format: PreviewFormat): boolean {\n return format.kind === 'markdown' || format.kind === 'html' || format.kind === 'json'\n}\n\n/**\n * Whether the rendered body of a format can be exported as a PDF.\n *\n * Only the two formats whose rendered body is a *document*: a JSON tree and a\n * source listing have no page to print, and an image or plain text is already\n * what it is.\n * @param format - the file's format.\n * @returns whether the export control applies.\n */\nexport function canExportPdf(format: PreviewFormat): boolean {\n return format.kind === 'markdown' || format.kind === 'html'\n}\n","/**\n * Turning one previewed document into a file the reader can save.\n *\n * Two formats, two shapes of output, and the difference is deliberate:\n *\n * - **PDF** is a picture of the page. It cannot be text: these documents are\n * usually Chinese, the standard PDF fonts carry no CJK glyphs, and embedding a\n * font would mean shipping megabytes in a preview plugin. So the pages are\n * rasterised from what the reader is looking at, and {@link rasterPages} slices\n * the document into A4-proportioned chunks.\n * - **Word** is a document. Structure and text survive, which is what makes it\n * editable and searchable, and Chinese renders with Word's own fonts.\n *\n * Both downloads are built in the page and saved through a Blob URL, because the\n * request is a download rather than a trip through the print dialog.\n *\n * Rasterising inlines `html2canvas`. It is the one outside module in this bundle,\n * and it is here for one reason: a PDF of these documents cannot be text — the\n * standard PDF fonts carry no CJK glyphs — so something has to draw the DOM, and\n * the browser exposes no API for that.\n */\nimport { A4_HEIGHT_PT, A4_WIDTH_PT, bytesOfDataUrl, pdfFromPages, type PdfPage } from './pdf.ts'\nimport { docxFromBlocks } from './docx.ts'\nimport { blocksFromElement } from './model.ts'\nimport { isRelativeDestination, MAX_DOCUMENT_IMAGES, resolveRelativePath } from '../markdown-assets.ts'\n\n/** The format a reader can export to. */\nexport type ExportFormat = 'pdf' | 'word'\n\n/** The document being exported, and how to reach it. */\nexport interface ExportRequest {\n /** The file's name, which becomes the download's name. */\n readonly name: string\n /** The document's title, kept as package metadata in a Word file. */\n readonly title: string\n /** Which body the preview is showing, because the two are read differently. */\n readonly kind: 'markdown' | 'html'\n /** The rendered Markdown container. */\n readonly prose: HTMLElement | null\n /** The HTML file's text, for an `html` document. */\n readonly html: string\n /** Absolute directory holding the file, which its relative assets resolve against. */\n readonly directory: string\n /** The readers that let an HTML export stand alone. */\n readonly assets: ExportAssetReaders\n}\n\n/** The raster width of one PDF page: A4 at about 150 dpi. */\nconst PAGE_RASTER_WIDTH = 1240\n\n/** A document taller than this is truncated rather than rasterised forever. */\nconst MAX_PAGES = 60\n\n/** How long to wait for the document's images before rasterising without them. */\nconst IMAGE_SETTLE_MS = 10_000\n\n/**\n * Make every image in one subtree loadable and wait for it.\n *\n * The preview marks images `loading=\"lazy\"`, so an image below the fold has not\n * been fetched when the export starts — and a rasterised page cannot wait for a\n * load that will never begin. Forcing eager and awaiting `decode` puts the page's\n * pictures on the page, and the timeout keeps one broken image from stopping the\n * export.\n * @param root - the element about to be rasterised.\n */\nasync function settleImages(root: HTMLElement): Promise<void> {\n const images = [...root.querySelectorAll('img')]\n const pending = images.map((image) => {\n image.loading = 'eager'\n return image.decode().catch(() => undefined)\n })\n if (pending.length === 0) return\n await Promise.race([\n Promise.allSettled(pending),\n new Promise(resolve => setTimeout(resolve, IMAGE_SETTLE_MS)),\n ])\n}\n\n/**\n * Rasterise one element into A4-proportioned pages.\n *\n * The element is drawn **once** and the canvas is sliced, rather than drawn once\n * per page: a rasteriser walks the whole document on every call, so a nineteen-page\n * document would otherwise be laid out nineteen times. One call also means one\n * chance for the layout to differ from what the reader sees.\n * @param element - the element holding the document.\n * @returns one page per slice, each carrying its JPEG.\n */\nexport async function rasterPages(element: HTMLElement): Promise<PdfPage[]> {\n // Imported here rather than at the top: `html2canvas` reads the document as its\n // module body runs, and a rasteriser has no business running — or needing a DOM —\n // in a plugin that is only being loaded. The bytes are in the same artifact either\n // way; this is about when they execute.\n const { default: html2canvas } = await import('html2canvas')\n await settleImages(element)\n const width = Math.max(Math.ceil(element.getBoundingClientRect().width), 1)\n const rendered = await html2canvas(element, {\n scale: PAGE_RASTER_WIDTH / width,\n backgroundColor: '#ffffff',\n logging: false,\n })\n const pageHeight = Math.round(rendered.width * (A4_HEIGHT_PT / A4_WIDTH_PT))\n const pageCount = Math.min(Math.ceil(rendered.height / pageHeight), MAX_PAGES)\n const pages: PdfPage[] = []\n for (let index = 0; index < pageCount; index++) {\n const top = index * pageHeight\n const height = Math.min(pageHeight, rendered.height - top)\n if (height <= 0) break\n const slice = document.createElement('canvas')\n slice.width = rendered.width\n slice.height = height\n const context = slice.getContext('2d')\n if (context === null) continue\n // The slice's own coordinate space starts at this page's top.\n context.drawImage(rendered, 0, -top)\n const jpeg = bytesOfDataUrl(slice.toDataURL('image/jpeg', 0.92))\n if (jpeg !== undefined) pages.push({ jpeg, width: slice.width, height: slice.height })\n }\n return pages\n}\n\n/**\n * Render an HTML document off screen so it can be read as a DOM and rasterised.\n *\n * The preview's own frame is sandboxed and opaque to this code by design, so the\n * export needs its own copy. This one is same-origin — but the copy it is given has\n * had its scripts and handlers stripped first, so there is nothing in it that could\n * use that origin.\n * @param html - a complete, script-free HTML document.\n * @returns the frame, and a disposer that removes it.\n */\nexport function renderOffscreen(html: string): { frame: HTMLIFrameElement, body: HTMLElement, ready: Promise<void>, dispose: () => void } {\n const frame = document.createElement('iframe')\n frame.setAttribute('aria-hidden', 'true')\n frame.dataset.previewRender = ''\n frame.style.cssText = 'position:fixed;left:-10000px;top:0;width:794px;height:1123px;border:0;background:#fff'\n document.body.append(frame)\n const ready = new Promise<void>((resolve) => {\n frame.addEventListener('load', () => { resolve() }, { once: true })\n })\n const doc = frame.contentDocument\n if (doc !== null) {\n doc.open()\n doc.write(html)\n doc.close()\n }\n return {\n frame,\n body: (frame.contentDocument?.body ?? frame) as HTMLElement,\n ready,\n dispose: () => { frame.remove() },\n }\n}\n\n/**\n * Save one Blob to the reader's downloads.\n * @param blob - the file's contents.\n * @param name - the file's name.\n */\nexport function downloadBlob(blob: Blob, name: string): void {\n const url = URL.createObjectURL(blob)\n const link = document.createElement('a')\n link.href = url\n link.download = name\n link.rel = 'noopener'\n document.body.append(link)\n link.click()\n link.remove()\n // The download reads the URL after this task returns, so it is released late.\n setTimeout(() => { URL.revokeObjectURL(url) }, 60_000)\n}\n\n/**\n * Strip the parts of an HTML document that must not run, and keep the rest.\n *\n * A PDF is static and a Word file is text, so neither export needs the document's\n * scripts — and dropping them is what lets the export render a same-origin copy\n * without handing the file this application's origin. Parsing is done by the\n * browser rather than by a pattern, so markup inside an attribute or a comment\n * cannot smuggle a tag past the strip.\n * @param source - the file's text.\n * @param title - title to add when the document declares none.\n * @returns an inert document with no scripts, handlers, or javascript URLs.\n */\nexport function parseHtml(source: string, title: string): Document {\n const parsed = new DOMParser().parseFromString(source, 'text/html')\n for (const script of [...parsed.querySelectorAll('script')]) script.remove()\n for (const element of [...parsed.querySelectorAll('*')]) {\n for (const attribute of [...element.attributes]) {\n const name = attribute.name.toLowerCase()\n if (name.startsWith('on')) element.removeAttribute(attribute.name)\n else if (/^\\s*javascript:/i.test(attribute.value)) element.removeAttribute(attribute.name)\n }\n }\n if (parsed.title === '') {\n const tag = parsed.createElement('title')\n tag.textContent = title\n parsed.head.append(tag)\n }\n return parsed\n}\n\n/**\n * Make an HTML document stand on its own, by reading what it points at.\n *\n * A file on disk refers to its pictures and its stylesheet by a path beside it. A\n * blob document has no base to resolve those against, and the export's own copy is\n * written into a frame the same way — so without this step the export of an HTML\n * file is a document with a hole where each image was and none of its styling. Only\n * destinations this reader resolves are fetched, once each; anything else is left\n * as the document wrote it.\n * @param source - the file's text.\n * @param title - title to add when the document declares none.\n * @param directory - absolute directory holding the file.\n * @param assets - the readers for the two asset kinds an export stands alone with.\n * @returns the document, and the HTML to render it from.\n */\nexport async function standaloneHtml(\n source: string,\n title: string,\n directory: string,\n assets: { readImage: ExportAssetReaders['readImage']; readText: ExportAssetReaders['readText'] },\n): Promise<{ document: Document; html: string }> {\n const parsed = parseHtml(source, title)\n const controller = new AbortController()\n const done: Promise<void>[] = []\n // A styled page usually names one stylesheet and several images; both are read\n // through the same bounds as a Markdown document's images.\n for (const link of [...parsed.querySelectorAll('link[rel~=\"stylesheet\"][href]')].slice(0, MAX_DOCUMENT_IMAGES)) {\n const href = link.getAttribute('href') ?? ''\n if (!isRelativeDestination(href)) continue\n const path = resolveRelativePath(directory, href)\n done.push(assets.readText(path, controller.signal).then((text) => {\n if (text === undefined) return\n const style = parsed.createElement('style')\n style.textContent = text\n link.replaceWith(style)\n }))\n }\n for (const image of [...parsed.querySelectorAll('img[src]')].slice(0, MAX_DOCUMENT_IMAGES)) {\n const src = image.getAttribute('src') ?? ''\n if (!isRelativeDestination(src)) continue\n const path = resolveRelativePath(directory, src)\n done.push(assets.readImage(path, controller.signal).then((dataUrl) => {\n if (dataUrl !== undefined) image.setAttribute('src', dataUrl)\n }))\n }\n await Promise.allSettled(done)\n return { document: parsed, html: `<!doctype html>${parsed.documentElement.outerHTML}` }\n}\n\n/** The readers an export needs to make a document stand alone. */\nexport interface ExportAssetReaders {\n readonly readImage: (path: string, signal: AbortSignal) => Promise<string | undefined>\n readonly readText: (path: string, signal: AbortSignal) => Promise<string | undefined>\n}\n\n/** A file name with its final extension replaced by another. */\nfunction withExtension(name: string, extension: string): string {\n return `${name.replace(/\\.[^./\\\\]+$/, '')}.${extension}`\n}\n\n/**\n * Export one document, and download it.\n * @param format - the format to write.\n * @param request - the document and how to reach it.\n */\nexport async function exportDocument(format: ExportFormat, request: ExportRequest): Promise<void> {\n // An HTML document is rendered once here and read twice below, so both formats\n // work from the same inert, script-free DOM rather than from the sandboxed frame\n // the reader sees.\n let offscreen: ReturnType<typeof renderOffscreen> | undefined\n let root: HTMLElement | null = request.prose\n try {\n if (request.kind !== 'markdown') {\n const standalone = await standaloneHtml(request.html, request.title, request.directory, request.assets)\n // Word reads the parsed document directly; the PDF needs a frame to draw.\n if (format === 'word') {\n downloadBlob(\n new Blob([docxFromBlocks(blocksFromElement(standalone.document.body), request.title)], {\n type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n }),\n withExtension(request.name, 'docx'),\n )\n return\n }\n offscreen = renderOffscreen(standalone.html)\n await offscreen.ready\n root = offscreen.body\n }\n if (root === null) return\n if (format === 'word') {\n downloadBlob(\n new Blob([docxFromBlocks(blocksFromElement(root), request.title)], {\n type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n }),\n withExtension(request.name, 'docx'),\n )\n return\n }\n const pages = await rasterPages(root)\n if (pages.length === 0) return\n downloadBlob(\n new Blob([pdfFromPages(pages)], { type: 'application/pdf' }),\n withExtension(request.name, 'pdf'),\n )\n } finally {\n offscreen?.dispose()\n }\n}\n","/**\n * A minimal PDF writer, for one document made of page-sized images.\n *\n * There is no PDF library in this bundle, and there cannot be a text-mode one:\n * the documents this plugin previews are usually Chinese, and the standard PDF\n * fonts carry no CJK glyphs — laying the text out as text would mean embedding a\n * font file of several megabytes. So the pages are rasterised from what the\n * reader is already looking at, and this module writes the container: a catalog,\n * a page tree, and per page one JPEG image and one content stream that paints it.\n *\n * Pure: bytes in, bytes out, so the tests can parse what it wrote.\n */\n\n/** One page: a JPEG of the page's content, at the pixel size it was rasterised to. */\nexport interface PdfPage {\n /** The page's image, JPEG-encoded (DCTDecode accepts it unchanged). */\n readonly jpeg: Uint8Array\n /** Image width in pixels. */\n readonly width: number\n /** Image height in pixels. */\n readonly height: number\n}\n\n/** A4 in PDF points (72 per inch), which is the page box every page is fitted to. */\nexport const A4_WIDTH_PT = 595.28\nexport const A4_HEIGHT_PT = 841.89\n\n/** ASCII bytes of a PDF keyword, comment, or object frame. */\nfunction ascii(value: string): Uint8Array {\n const out = new Uint8Array(value.length)\n for (let index = 0; index < value.length; index++) out[index] = value.charCodeAt(index) & 0x7f\n return out\n}\n\n/**\n * Write one PDF whose pages each carry one JPEG.\n *\n * Page media boxes keep the image's own aspect ratio and are fitted to A4's width,\n * so a short final page prints short rather than padded with white. Objects are\n * laid out in one predictable order — catalog, page tree, then per page its page\n * dictionary, content stream, and image — which is what makes the cross-reference\n * table computable as the file is built rather than patched afterwards.\n * @param pages - the pages, in order.\n * @returns the file's bytes.\n */\nexport function pdfFromPages(pages: readonly PdfPage[]): Uint8Array {\n const chunks: Uint8Array[] = []\n let offset = 0\n /** Byte offset of each object, indexed by object number (1-based). */\n const offsets: number[] = []\n\n const write = (bytes: Uint8Array): void => {\n chunks.push(bytes)\n offset += bytes.length\n }\n const object = (number: number, body: Uint8Array, stream?: Uint8Array): void => {\n offsets[number] = offset\n write(ascii(`${number} 0 obj\\n`))\n write(body)\n if (stream !== undefined) {\n write(ascii('\\nstream\\n'))\n write(stream)\n write(ascii('\\nendstream'))\n }\n write(ascii('\\nendobj\\n'))\n }\n\n // Object numbering: 1 catalog, 2 page tree, then three per page.\n const pageObject = (index: number): number => 3 + index * 3\n const contentObject = (index: number): number => 4 + index * 3\n const imageObject = (index: number): number => 5 + index * 3\n\n write(ascii('%PDF-1.4\\n%\\u00e2\\u00e3\\u00cf\\u00d3\\n'))\n object(1, ascii(`<< /Type /Catalog /Pages 2 0 R >>`))\n const kids = pages.map((_page, index) => `${pageObject(index)} 0 R`).join(' ')\n object(2, ascii(`<< /Type /Pages /Kids [${kids}] /Count ${pages.length} >>`))\n\n for (const [index, page] of pages.entries()) {\n const pageHeight = A4_WIDTH_PT * (page.height / page.width)\n object(\n pageObject(index),\n ascii(\n `<< /Type /Page /Parent 2 0 R /MediaBox [0 0 ${A4_WIDTH_PT.toFixed(2)} ${pageHeight.toFixed(2)}]`\n + ` /Resources << /XObject << /Im0 ${imageObject(index)} 0 R >> >>`\n + ` /Contents ${contentObject(index)} 0 R >>`,\n ),\n )\n // The unit square the image paints into is the whole page: `cm` scales it.\n const content = `q\\n${A4_WIDTH_PT.toFixed(2)} 0 0 ${pageHeight.toFixed(2)} 0 0 cm\\n/Im0 Do\\nQ\\n`\n object(contentObject(index), ascii(`<< /Length ${content.length} >>`), ascii(content))\n object(\n imageObject(index),\n ascii(\n `<< /Type /XObject /Subtype /Image /Width ${page.width} /Height ${page.height}`\n + ` /ColorSpace /DeviceRGB /BitsPerComponent 8 /Filter /DCTDecode`\n + ` /Length ${page.jpeg.length} >>`,\n ),\n page.jpeg,\n )\n }\n\n const objectCount = offsets.length\n const xrefOffset = offset\n write(ascii(`xref\\n0 ${objectCount}\\n`))\n write(ascii('0000000000 65535 f \\n'))\n for (let number = 1; number < objectCount; number++) {\n const at = offsets[number]\n // A gap would mean an object was skipped, which this builder never does; the\n // fallback keeps the table parseable if one ever were.\n write(ascii(`${String(at ?? 0).padStart(10, '0')} 00000 n \\n`))\n }\n write(ascii(`trailer\\n<< /Size ${objectCount} /Root 1 0 R >>\\nstartxref\\n${xrefOffset}\\n%%EOF\\n`))\n return concatenate(chunks)\n}\n\n/**\n * Join byte chunks into one buffer.\n * @param chunks - the chunks, in order.\n * @returns their concatenation.\n */\nfunction concatenate(chunks: readonly Uint8Array[]): Uint8Array {\n let length = 0\n for (const chunk of chunks) length += chunk.length\n const out = new Uint8Array(length)\n let at = 0\n for (const chunk of chunks) {\n out.set(chunk, at)\n at += chunk.length\n }\n return out\n}\n\n/**\n * Decode the base64 payload of a data URL.\n * @param dataUrl - a `data:...;base64,...` URL.\n * @returns its bytes, or undefined when it is not a base64 data URL.\n */\nexport function bytesOfDataUrl(dataUrl: string): Uint8Array | undefined {\n const comma = dataUrl.indexOf(',')\n if (comma < 0 || !dataUrl.slice(0, comma).includes(';base64')) return undefined\n try {\n const binary = atob(dataUrl.slice(comma + 1))\n const out = new Uint8Array(binary.length)\n for (let index = 0; index < binary.length; index++) out[index] = binary.charCodeAt(index)\n return out\n } catch {\n return undefined\n }\n}\n","/**\n * A minimal Word writer: a valid `.docx` package built from the document model.\n *\n * Text stays text. That is the point of exporting Word as well as PDF — the PDF is\n * a picture of the page (Chinese text cannot be laid out as text without embedding\n * a font file), while a `.docx` carries the structure and lets Word render it with\n * its own fonts, so the reader can edit it, search it, and re-style it.\n *\n * The package is the smallest one Word accepts: a content-types part, the root\n * relationships, the document, and one media part per embedded image. Formatting is\n * applied directly on runs and paragraphs rather than through a styles part, which\n * removes a whole file from the package and a class of \"style not found\" failures.\n */\nimport type { Block, InlineRun } from './model.ts'\nimport { bytesOfDataUrl } from './pdf.ts'\nimport { zip, type ZipPart } from './zip.ts'\n\n/** English Metric Units per CSS pixel at 96 dpi, which is how Word measures. */\nconst EMU_PER_PX = 9525\n\n/** The width a picture may occupy: A4 inside one-inch margins, in EMU. */\nconst MAX_IMAGE_EMU = Math.round(6.5 * 914400)\n\n/** Half-points per heading level, which is the unit `w:sz` uses. */\nconst HEADING_HALF_POINTS: Readonly<Record<number, number>> = {\n 1: 36, 2: 30, 3: 26, 4: 24, 5: 22, 6: 22,\n}\n\n/** The media part one embedded image needs. */\ninterface Media {\n /** Relationship id the drawing references. */\n readonly id: string\n /** Part name under `word/`, such as `media/image1.png`. */\n readonly name: string\n /** The image's bytes. */\n readonly data: Uint8Array\n /** Content-type extension the package declares. */\n readonly extension: string\n}\n\n/**\n * Escape text for XML content.\n * @param value - the text.\n * @returns the text with markup characters escaped.\n */\nfunction xml(value: string): string {\n return value.replace(/[&<>]/g, (character) => {\n switch (character) {\n case '&': return '&amp;'\n case '<': return '&lt;'\n default: return '&gt;'\n }\n })\n}\n\n/**\n * One run of text as `w:r`.\n * @param run - the run, with its emphasis.\n * @returns the run's XML.\n */\nfunction runXml(run: InlineRun): string {\n const properties = [\n run.bold === true ? '<w:b/>' : '',\n run.italic === true ? '<w:i/>' : '',\n run.code === true ? '<w:rFonts w:ascii=\"Consolas\" w:hAnsi=\"Consolas\" w:cs=\"Consolas\"/>' : '',\n ].join('')\n const prefix = properties === '' ? '' : `<w:rPr>${properties}</w:rPr>`\n // A newline inside a run is a line break, not a paragraph separator.\n const parts = run.text.split('\\n')\n .map((line, index) => `${index === 0 ? '' : '<w:br/>'}<w:t xml:space=\"preserve\">${xml(line)}</w:t>`)\n .join('')\n return `<w:r>${prefix}${parts}</w:r>`\n}\n\n/**\n * One paragraph as `w:p`.\n * @param runs - the paragraph's runs.\n * @param properties - paragraph properties, already as XML.\n * @returns the paragraph's XML.\n */\nfunction paragraphXml(runs: readonly InlineRun[], properties = ''): string {\n const prefix = properties === '' ? '' : `<w:pPr>${properties}</w:pPr>`\n return `<w:p>${prefix}${runs.map(runXml).join('')}</w:p>`\n}\n\n/**\n * One inline image as `w:drawing`, scaled to fit the text column.\n * @param media - the image's relationship and part.\n * @param width - its rendered width in CSS pixels.\n * @param height - its rendered height in CSS pixels, which sets the aspect ratio.\n * @returns the drawing's XML.\n */\nfunction drawingXml(media: Media, width: number | undefined, height: number | undefined): string {\n const ratio = width !== undefined && height !== undefined && width > 0 ? height / width : 0.5\n const cx = Math.min(Math.round((width ?? 400) * EMU_PER_PX), MAX_IMAGE_EMU)\n const cy = Math.round(cx * ratio)\n return '<w:r><w:drawing><wp:inline distT=\"0\" distB=\"0\" distL=\"0\" distR=\"0\">'\n + `<wp:extent cx=\"${cx}\" cy=\"${cy}\"/><wp:docPr id=\"1\" name=\"${xml(media.name)}\"/>`\n + '<a:graphic><a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">'\n + '<pic:pic><pic:nvPicPr>'\n + `<pic:cNvPr id=\"0\" name=\"${xml(media.name)}\"/><pic:cNvPicPr/></pic:nvPicPr>`\n + `<pic:blipFill><a:blip r:embed=\"${media.id}\"/><a:stretch><a:fillRect/></a:stretch></pic:blipFill>`\n + '<pic:spPr><a:xfrm><a:off x=\"0\" y=\"0\"/>'\n + `<a:ext cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm>`\n + '<a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom></pic:spPr>'\n + '</pic:pic></a:graphicData></a:graphic></wp:inline></w:drawing></w:r>'\n}\n\n/**\n * One table as `w:tbl`, with visible borders and equal columns.\n * @param rows - the rows' cells.\n * @returns the table's XML.\n */\nfunction tableXml(rows: readonly { readonly cells: readonly { readonly runs: readonly InlineRun[] }[] }[]): string {\n const columns = Math.max(...rows.map(row => row.cells.length))\n const width = Math.floor(9360 / Math.max(columns, 1))\n const borders = '<w:tblBorders>'\n + ['top', 'left', 'bottom', 'right', 'insideH', 'insideV']\n .map(side => `<w:${side} w:val=\"single\" w:sz=\"4\" w:space=\"0\" w:color=\"999999\"/>`)\n .join('')\n + '</w:tblBorders>'\n const grid = `<w:tblGrid>${Array.from({ length: columns }, () => `<w:gridCol w:w=\"${width}\"/>`).join('')}</w:tblGrid>`\n const body = rows.map((row) => {\n const cells = row.cells.map(cell =>\n `<w:tc><w:tcPr><w:tcW w:w=\"${width}\" w:type=\"dxa\"/></w:tcPr>${paragraphXml(cell.runs)}</w:tc>`)\n return `<w:tr>${cells.join('')}</w:tr>`\n }).join('')\n return `<w:tbl><w:tblPr><w:tblW w:w=\"0\" w:type=\"auto\"/>${borders}</w:tblPr>${grid}${body}</w:tbl>`\n}\n\n/**\n * Write one document model as a `.docx` package.\n * @param blocks - the document's blocks, in order.\n * @param title - the document title, kept as package metadata and as a heading-less first line only if it is a block already.\n * @returns the package's bytes.\n */\nexport function docxFromBlocks(blocks: readonly Block[], title: string): Uint8Array {\n const media: Media[] = []\n const body: string[] = []\n /** Items already emitted for the list being written, and which list that is. */\n let listRun = { ordered: false, depth: -1, count: 0 }\n\n for (const block of blocks) {\n // A block that is not a list ends the run, so the next list starts at one.\n if (block.kind !== 'list') listRun = { ordered: false, depth: -1, count: 0 }\n switch (block.kind) {\n case 'heading': {\n const size = HEADING_HALF_POINTS[block.level] ?? 24\n body.push(paragraphXml(\n block.runs.map(run => ({ ...run, bold: true })),\n `<w:spacing w:before=\"240\" w:after=\"120\"/><w:rPr><w:sz w:val=\"${size}\"/><w:szCs w:val=\"${size}\"/></w:rPr>`,\n ))\n break\n }\n case 'paragraph':\n body.push(paragraphXml(block.runs, '<w:spacing w:after=\"120\"/>'))\n break\n case 'quote':\n body.push(paragraphXml(\n block.runs.map(run => ({ ...run, italic: true })),\n '<w:ind w:left=\"480\"/><w:spacing w:after=\"120\"/>',\n ))\n break\n case 'list': {\n // Markers are written into the text rather than taken from a numbering\n // definition: a package with no numbering part has nowhere else to keep\n // them, and a number typed here is still a number Word shows.\n const sameList = listRun.ordered === block.ordered && listRun.depth === block.depth\n listRun = { ordered: block.ordered, depth: block.depth, count: sameList ? listRun.count + 1 : 1 }\n const marker = block.ordered ? `${listRun.count}.\\u00a0` : '\\u2022\\u00a0'\n const indent = 360 + block.depth * 360\n body.push(paragraphXml(\n [{ text: marker }, ...block.runs],\n `<w:ind w:left=\"${indent}\" w:hanging=\"180\"/><w:spacing w:after=\"40\"/>`,\n ))\n break\n }\n case 'code': {\n const lines = block.text.split('\\n')\n body.push(...lines.map(line => paragraphXml(\n line === '' ? [] : [{ text: line, code: true }],\n '<w:ind w:left=\"240\"/><w:spacing w:after=\"0\"/><w:shd w:val=\"clear\" w:fill=\"F2F3F5\"/>'\n + '<w:rPr><w:rFonts w:ascii=\"Consolas\" w:hAnsi=\"Consolas\"/><w:sz w:val=\"18\"/></w:rPr>',\n )))\n break\n }\n case 'rule':\n body.push(paragraphXml([], '<w:pBdr><w:bottom w:val=\"single\" w:sz=\"6\" w:space=\"1\" w:color=\"BBBBBB\"/></w:pBdr>'))\n break\n case 'table':\n body.push(tableXml(block.rows))\n break\n case 'image': {\n const data = bytesOfDataUrl(block.src)\n // Only an image this export could read is embedded; a remote one would need\n // a fetch the page is not allowed to make. Its alt text keeps the place.\n if (data === undefined) {\n if (block.alt !== '') body.push(paragraphXml([{ text: block.alt, italic: true }]))\n break\n }\n const extension = block.src.slice(5, block.src.indexOf(';')) === 'image/jpeg' ? 'jpeg' : 'png'\n const name = `media/image${media.length + 1}.${extension}`\n const entry: Media = { id: `rIdImage${media.length + 1}`, name, data, extension }\n media.push(entry)\n body.push(`<w:p><w:pPr><w:spacing w:after=\"120\"/></w:pPr>${drawingXml(entry, block.width, block.height)}</w:p>`)\n break\n }\n }\n }\n\n const document = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>'\n + '<w:document'\n + ' xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\"'\n + ' xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"'\n + ' xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\"'\n + ' xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\"'\n + ' xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">'\n + `<w:body>${body.join('')}`\n // A4 in twips, with one-inch margins: the same page the PDF export uses.\n + '<w:sectPr><w:pgSz w:w=\"11906\" w:h=\"16838\"/>'\n + '<w:pgMar w:top=\"1440\" w:right=\"1440\" w:bottom=\"1440\" w:left=\"1440\" w:header=\"708\" w:footer=\"708\" w:gutter=\"0\"/>'\n + '</w:sectPr>'\n + '</w:body></w:document>'\n\n const extensions = new Set(media.map(entry => entry.extension))\n const contentTypes = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>'\n + '<Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">'\n + '<Default Extension=\"rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\"/>'\n + '<Default Extension=\"xml\" ContentType=\"application/xml\"/>'\n + (extensions.has('png') ? '<Default Extension=\"png\" ContentType=\"image/png\"/>' : '')\n + (extensions.has('jpeg') ? '<Default Extension=\"jpeg\" ContentType=\"image/jpeg\"/>' : '')\n + '<Override PartName=\"/word/document.xml\"'\n + ' ContentType=\"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\"/>'\n // The package's own properties part needs its content type stated too, or a\n // reader sees a part it cannot name.\n + '<Override PartName=\"/docProps/core.xml\"'\n + ' ContentType=\"application/vnd.openxmlformats-package.core-properties+xml\"/>'\n + '</Types>'\n\n const rootRels = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>'\n + '<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">'\n + '<Relationship Id=\"rIdDocument\"'\n + ' Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\"'\n + ' Target=\"word/document.xml\"/>'\n + '</Relationships>'\n\n const documentRels = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>'\n + '<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">'\n + media.map(entry => '<Relationship'\n + ` Id=\"${entry.id}\"`\n + ' Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\"'\n + ` Target=\"${entry.name}\"/>`).join('')\n + '</Relationships>'\n\n const parts: ZipPart[] = [\n { name: '[Content_Types].xml', data: new TextEncoder().encode(contentTypes) },\n { name: '_rels/.rels', data: new TextEncoder().encode(rootRels) },\n { name: 'word/document.xml', data: new TextEncoder().encode(document) },\n ...(media.length === 0 ? [] : [{ name: 'word/_rels/document.xml.rels', data: new TextEncoder().encode(documentRels) }]),\n ...media.map(entry => ({ name: `word/${entry.name}`, data: entry.data })),\n // Word records the title as package metadata; the reader sees it as the file's\n // name when saving, which is where a title belongs for an export.\n { name: 'docProps/core.xml', data: new TextEncoder().encode(coreXml(title)) },\n ]\n return zip(parts)\n}\n\n/**\n * The package's core properties part, carrying the document title.\n * @param title - the document's title.\n * @returns the part's XML.\n */\nfunction coreXml(title: string): string {\n return '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>'\n + '<cp:coreProperties'\n + ' xmlns:cp=\"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\"'\n + ' xmlns:dc=\"http://purl.org/dc/elements/1.1/\">'\n + `<dc:title>${xml(title)}</dc:title>`\n + '</cp:coreProperties>'\n}\n","/**\n * A minimal ZIP writer, which is what a `.docx` is: an OOXML package is a zip\n * archive of XML parts and media.\n *\n * Entries are **stored**, not deflated. A document export is a download, not a\n * shipping artifact — a few hundred kilobytes of redundant XML cost nothing next\n * to the images beside it — and storing keeps this writer to a size a reader can\n * check: a local header, the bytes, a central directory, and an end record. No\n * compression level to get wrong, no deflate stream to trust.\n *\n * Pure: it takes parts and returns bytes, so the tests can unzip what it wrote.\n */\n\n/** One file in the archive. */\nexport interface ZipPart {\n /** Path inside the archive, `/`-separated, as OOXML parts are named. */\n readonly name: string\n /** The part's bytes. */\n readonly data: Uint8Array\n}\n\n/** CRC-32 table, built once. The polynomial is the one ZIP specifies. */\nconst CRC_TABLE = (() => {\n const table = new Uint32Array(256)\n for (let index = 0; index < 256; index++) {\n let value = index\n for (let bit = 0; bit < 8; bit++) {\n value = (value & 1) === 1 ? 0xedb88320 ^ (value >>> 1) : value >>> 1\n }\n table[index] = value >>> 0\n }\n return table\n})()\n\n/**\n * The CRC-32 of one part, which the central directory records and a reader checks.\n * @param data - the part's bytes.\n * @returns the checksum, unsigned.\n */\nexport function crc32(data: Uint8Array): number {\n let value = 0xffffffff\n for (const byte of data) value = CRC_TABLE[(value ^ byte) & 0xff]! ^ (value >>> 8)\n return (value ^ 0xffffffff) >>> 0\n}\n\n/** Little-endian byte writer, appending into a growing array. */\nclass ByteWriter {\n private readonly chunks: Uint8Array[] = []\n private length = 0\n\n /** @returns how many bytes have been written so far. */\n get offset(): number {\n return this.length\n }\n\n /**\n * Append raw bytes.\n * @param bytes - the bytes to append.\n */\n bytes(bytes: Uint8Array): void {\n this.chunks.push(bytes)\n this.length += bytes.length\n }\n\n /**\n * Append one 16-bit little-endian value.\n * @param value - the value to append.\n */\n u16(value: number): void {\n const bytes = new Uint8Array(2)\n new DataView(bytes.buffer).setUint16(0, value, true)\n this.bytes(bytes)\n }\n\n /**\n * Append one 32-bit little-endian value.\n * @param value - the value to append.\n */\n u32(value: number): void {\n const bytes = new Uint8Array(4)\n new DataView(bytes.buffer).setUint32(0, value >>> 0, true)\n this.bytes(bytes)\n }\n\n /** @returns every appended byte, joined. */\n finish(): Uint8Array {\n const out = new Uint8Array(this.length)\n let at = 0\n for (const chunk of this.chunks) {\n out.set(chunk, at)\n at += chunk.length\n }\n return out\n }\n}\n\n/**\n * Encode one path as UTF-8. Part names are ASCII in practice, but the flag and\n * encoding are stated rather than assumed.\n * @param value - the text to encode.\n * @returns its UTF-8 bytes.\n */\nfunction utf8(value: string): Uint8Array {\n return new TextEncoder().encode(value)\n}\n\n/**\n * Write the parts as a stored-entry ZIP archive.\n * @param parts - the archive's files, in the order they should appear.\n * @returns the archive's bytes.\n */\nexport function zip(parts: readonly ZipPart[]): Uint8Array {\n const out = new ByteWriter()\n const directory: { name: Uint8Array; crc: number; size: number; offset: number }[] = []\n // `mtime`/`mdate` are fixed rather than taken from the clock: an export must not\n // vary run to run for the same document, which also keeps it reproducible.\n const time = 0\n const date = 0x2821 // 2000-01-01, the earliest a reader is guaranteed to accept.\n\n for (const part of parts) {\n const name = utf8(part.name)\n const crc = crc32(part.data)\n const offset = out.offset\n out.u32(0x04034b50) // local file header\n out.u16(20) // version needed\n out.u16(0x0800) // UTF-8 names\n out.u16(0) // stored\n out.u16(time)\n out.u16(date)\n out.u32(crc)\n out.u32(part.data.length)\n out.u32(part.data.length)\n out.u16(name.length)\n out.u16(0) // no extra field\n out.bytes(name)\n out.bytes(part.data)\n directory.push({ name, crc, size: part.data.length, offset })\n }\n\n const directoryOffset = out.offset\n for (const entry of directory) {\n out.u32(0x02014b50) // central directory header\n out.u16(20) // version made by\n out.u16(20) // version needed\n out.u16(0x0800)\n out.u16(0)\n out.u16(time)\n out.u16(date)\n out.u32(entry.crc)\n out.u32(entry.size)\n out.u32(entry.size)\n out.u16(entry.name.length)\n out.u16(0) // extra\n out.u16(0) // comment\n out.u16(0) // disk number\n out.u16(0) // internal attributes\n out.u32(0) // external attributes\n out.u32(entry.offset)\n out.bytes(entry.name)\n }\n const directorySize = out.offset - directoryOffset\n\n out.u32(0x06054b50) // end of central directory\n out.u16(0)\n out.u16(0)\n out.u16(directory.length)\n out.u16(directory.length)\n out.u32(directorySize)\n out.u32(directoryOffset)\n out.u16(0) // no comment\n return out.finish()\n}\n","/**\n * The document model one export serialises: the block structure an HTML document\n * or a rendered Markdown body actually has, with no presentation attached.\n *\n * A Word file is a text document, so unlike the PDF — which is a picture of what\n * the reader sees — it wants structure: a heading is a heading, a table is a\n * table, and Chinese stays text that Word renders with its own fonts. This module\n * is the one reading of the document that the `.docx` writer serialises.\n *\n * It walks a DOM, because both sources are one: a rendered Markdown body is a live\n * element, and an HTML file is parsed into an inert document first. Scripts never\n * run in either — the Markdown body is React output, and parsing is inert.\n */\n\n/** One run of text with the emphasis its source element carried. */\nexport interface InlineRun {\n readonly text: string\n readonly bold?: boolean\n readonly italic?: boolean\n readonly code?: boolean\n}\n\n/** One table cell, as the runs it holds. */\nexport interface TableCell {\n readonly runs: readonly InlineRun[]\n}\n\n/** One block of the document. */\nexport type Block =\n | { readonly kind: 'heading'; readonly level: number; readonly runs: readonly InlineRun[] }\n | { readonly kind: 'paragraph'; readonly runs: readonly InlineRun[] }\n | { readonly kind: 'quote'; readonly runs: readonly InlineRun[] }\n | { readonly kind: 'list'; readonly ordered: boolean; readonly depth: number; readonly runs: readonly InlineRun[] }\n | { readonly kind: 'code'; readonly text: string }\n | { readonly kind: 'rule' }\n | { readonly kind: 'table'; readonly rows: readonly { readonly cells: readonly TableCell[] }[] }\n | {\n readonly kind: 'image'\n /** `data:` URL when the image could be read; anything else is not embedded. */\n readonly src: string\n readonly alt: string\n /** Rendered width in CSS pixels, when the element reports one. */\n readonly width: number | undefined\n /** Rendered height in CSS pixels, when the element reports one. */\n readonly height: number | undefined\n }\n\n/**\n * Elements whose inline children carry emphasis, and which therefore do not break\n * a paragraph.\n */\nconst INLINE_TAGS = new Set([\n 'a', 'abbr', 'b', 'cite', 'code', 'del', 'em', 'i', 'ins', 'kbd', 'label', 'mark',\n 'q', 's', 'samp', 'small', 'span', 'strong', 'sub', 'sup', 'time', 'u', 'var',\n])\n\n/** Heading tag name to level. */\nconst HEADING_LEVELS: Readonly<Record<string, number>> = {\n h1: 1, h2: 2, h3: 3, h4: 4, h5: 5, h6: 6,\n}\n\n/**\n * Collapse whitespace the way a document reader does, keeping one space between\n * words and none at the edges.\n * @param text - the raw text node.\n * @returns the collapsed text.\n */\nfunction collapse(text: string): string {\n return text.replace(/\\s+/g, ' ')\n}\n\n/**\n * The runs of one element's inline content.\n *\n * Nested emphasis accumulates by tag name, a line break becomes a newline inside\n * the run stream, and images are skipped here — a picture is a block, and the\n * caller takes it from the element itself.\n * @param element - the element to read.\n * @param inherited - emphasis carried in from an ancestor.\n * @returns the runs, with empty ones dropped and edges trimmed.\n */\nexport function runsOf(\n element: Element,\n inherited: { bold?: boolean; italic?: boolean; code?: boolean } = {},\n): InlineRun[] {\n const runs: InlineRun[] = []\n const push = (text: string, flags: typeof inherited, keepLeading: boolean): void => {\n if (text === '') return\n const trimmed = keepLeading ? text.replace(/\\s+$/, '') : text.replace(/^\\s+|\\s+$/g, '')\n if (trimmed === '') return\n const previous = runs.at(-1)\n if (previous !== undefined && previous.bold === flags.bold\n && previous.italic === flags.italic && previous.code === flags.code) {\n runs[runs.length - 1] = { ...previous, text: previous.text + trimmed }\n return\n }\n runs.push({ text: trimmed, ...flags })\n }\n const walk = (node: Node, flags: typeof inherited, first: boolean): void => {\n for (const child of node.childNodes) {\n if (child.nodeType === Node.TEXT_NODE) {\n push(collapse(child.textContent ?? ''), flags, first && runs.length === 0)\n continue\n }\n if (child.nodeType !== Node.ELEMENT_NODE) continue\n const tag = (child as Element).tagName.toLowerCase()\n if (tag === 'br') {\n const previous = runs.at(-1)\n if (previous !== undefined) runs[runs.length - 1] = { ...previous, text: `${previous.text}\\n` }\n continue\n }\n if (tag === 'img') continue\n const next = {\n ...(flags.bold === true || tag === 'strong' || tag === 'b' ? { bold: true } : {}),\n ...(flags.italic === true || tag === 'em' || tag === 'i' ? { italic: true } : {}),\n ...(flags.code === true || tag === 'code' || tag === 'kbd' || tag === 'samp' ? { code: true } : {}),\n }\n walk(child, INLINE_TAGS.has(tag) ? next : flags, first)\n }\n }\n walk(element, inherited, true)\n // A trailing space would widen the last run for nothing.\n const last = runs.at(-1)\n if (last !== undefined) runs[runs.length - 1] = { ...last, text: last.text.replace(/\\s+$/, '') }\n return runs.filter(run => run.text !== '')\n}\n\n/**\n * Read one image element into a block.\n * @param image - the element.\n * @returns the block, or undefined when it has no source to embed.\n */\nfunction imageBlock(image: Element): Block | undefined {\n const src = image.getAttribute('src') ?? ''\n if (src === '') return undefined\n const rect = image.getBoundingClientRect()\n return {\n kind: 'image',\n src,\n alt: image.getAttribute('alt') ?? '',\n width: rect.width > 0 ? Math.round(rect.width) : undefined,\n height: rect.height > 0 ? Math.round(rect.height) : undefined,\n }\n}\n\n/**\n * The rows of one table.\n * @param table - the table element.\n * @returns each row's cells, with header cells included in place.\n */\nfunction tableRows(table: Element): { cells: TableCell[] }[] {\n const rows: { cells: TableCell[] }[] = []\n for (const row of table.querySelectorAll('tr')) {\n const cells: TableCell[] = []\n for (const cell of row.children) {\n const tag = cell.tagName.toLowerCase()\n if (tag !== 'td' && tag !== 'th') continue\n cells.push({ runs: runsOf(cell) })\n }\n if (cells.length > 0) rows.push({ cells })\n }\n return rows\n}\n\n/**\n * Read one list element, recursing into nested lists.\n * @param list - the `ul` or `ol` element.\n * @param depth - nesting depth, where the outermost list is zero.\n * @param blocks - the block list to append to.\n */\nfunction listBlocks(list: Element, depth: number, blocks: Block[]): void {\n const ordered = list.tagName.toLowerCase() === 'ol'\n for (const item of list.children) {\n if (item.tagName.toLowerCase() !== 'li') continue\n const runs = runsOf(item)\n if (runs.length > 0) blocks.push({ kind: 'list', ordered, depth, runs })\n for (const child of item.children) {\n const tag = child.tagName.toLowerCase()\n if (tag === 'ul' || tag === 'ol') listBlocks(child, depth + 1, blocks)\n }\n }\n}\n\n/**\n * Read a container's block structure.\n * @param root - the element whose children are blocks.\n * @returns the blocks, in document order.\n */\nexport function blocksFromElement(root: Element): Block[] {\n const blocks: Block[] = []\n const visit = (element: Element, depth: number): void => {\n for (const child of element.children) {\n const tag = child.tagName.toLowerCase()\n const level = HEADING_LEVELS[tag]\n if (level !== undefined) {\n const runs = runsOf(child)\n if (runs.length > 0) blocks.push({ kind: 'heading', level, runs })\n continue\n }\n if (tag === 'p') {\n const images = [...child.querySelectorAll('img')]\n const runs = runsOf(child)\n if (runs.length > 0) blocks.push({ kind: 'paragraph', runs })\n for (const image of images) {\n const block = imageBlock(image)\n if (block !== undefined) blocks.push(block)\n }\n continue\n }\n if (tag === 'img') {\n const block = imageBlock(child)\n if (block !== undefined) blocks.push(block)\n continue\n }\n if (tag === 'pre') {\n // The highlighted source, not the token spans: `innerText` keeps the line\n // structure the reader sees, `textContent` would glue lines together.\n const text = (child as HTMLElement).innerText.replace(/\\n+$/, '')\n if (text !== '') blocks.push({ kind: 'code', text })\n continue\n }\n if (tag === 'ul' || tag === 'ol') {\n listBlocks(child, depth, blocks)\n continue\n }\n if (tag === 'blockquote') {\n for (const inner of child.querySelectorAll('p')) {\n const runs = runsOf(inner)\n if (runs.length > 0) blocks.push({ kind: 'quote', runs })\n }\n continue\n }\n if (tag === 'table') {\n const rows = tableRows(child)\n if (rows.length > 0) blocks.push({ kind: 'table', rows })\n continue\n }\n if (tag === 'hr') {\n blocks.push({ kind: 'rule' })\n continue\n }\n // Anything else — a section, a details, a div — is a container: read through\n // it rather than losing what it holds.\n visit(child, depth)\n }\n }\n visit(root, 0)\n return blocks\n}\n","/**\n * The images a Markdown document references by relative path, and where inside\n * the workspace each one resolves.\n *\n * A rendered document has its own vocabulary for local images — the primitive's\n * `pathImages.resolve` — but it is synchronous, so the pane has to know which\n * destinations to fetch before it renders. That decision is pure text work, which\n * is why it lives here rather than in the component: it is the part that has to be\n * right, so it is the part under test.\n */\n\n/**\n * How many images one document may pull in. A document is untrusted input; the\n * cap keeps one file from turning a preview into an unbounded number of reads.\n */\nexport const MAX_DOCUMENT_IMAGES = 24\n\n/**\n * Largest asset a document may reference. The host's own complete-file cap is\n * higher, but a preview holds what it loads as a data URL, and an image that big\n * is not being read as a picture in a pane.\n */\nexport const MAX_ASSET_BYTES = 8 * 1024 * 1024\n\n/**\n * One `![alt](destination)` occurrence, in the shape CommonMark accepts: a\n * pointy-bracket destination, or a bare one with balanced parentheses, then an\n * optional title. A bare destination may not contain a space, so\n * `(images/with space.png)` is not a reference at all and must not half-match into\n * a read of `images/with`.\n */\nconst IMAGE_REFERENCE\n = /!\\[[^\\]]*\\]\\(\\s*(?:<([^<>\\n]*)>|([^\\s()]*(?:\\([^\\s()]*\\)[^\\s()]*)*))(?:\\s+(?:\"[^\"]*\"|'[^']*'|\\([^()]*\\)))?\\s*\\)/g\n\n/** A fenced block or an inline code span, whose contents are examples, not references. */\nconst FENCED_BLOCK = /^[ \\t]*(?:```|~~~)[\\s\\S]*?^[ \\t]*(?:```|~~~)[^\\n]*$/gm\nconst INLINE_CODE = /`[^`\\n]*`/g\n\n/**\n * Whether a destination is one this reader resolves against the document.\n *\n * Remote URLs belong to the primitive, which already renders them; a fragment is\n * not a file; an absolute path is the author naming the machine rather than the\n * workspace, and is left inert along with every other scheme.\n * @param destination - the destination as the author wrote it.\n * @returns whether it names a file beside the document.\n */\nexport function isRelativeDestination(destination: string): boolean {\n const value = destination.trim()\n if (value === '' || value.startsWith('#') || value.startsWith('/') || value.startsWith('//')) {\n return false\n }\n return !/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(value)\n}\n\n/**\n * Remove the spans that only look like references: a document about Markdown\n * contains `![alt](path.png)` inside its fences, and fetching that would be both\n * wrong and noisy.\n * @param text - the document's Markdown.\n * @returns the text with fenced blocks and inline code spans removed.\n */\nfunction withoutCode(text: string): string {\n return text.replace(FENCED_BLOCK, '').replace(INLINE_CODE, '')\n}\n\n/**\n * Every distinct relative image destination one document references, in document\n * order and capped at {@link MAX_DOCUMENT_IMAGES}.\n * @param text - the document's Markdown.\n * @returns the destinations, as written.\n */\nexport function relativeImageDestinations(text: string): string[] {\n const found = new Set<string>()\n for (const match of withoutCode(text).matchAll(IMAGE_REFERENCE)) {\n const destination = match[1] ?? match[2] ?? ''\n if (!isRelativeDestination(destination)) continue\n found.add(destination)\n if (found.size >= MAX_DOCUMENT_IMAGES) break\n }\n return [...found]\n}\n\n/**\n * Resolve one relative destination against the directory holding the document.\n *\n * `..` is folded rather than sent to the host, a percent-escape is decoded because\n * a destination is a URL while a path is not, and the separator follows the base's\n * own style so a Windows path stays one.\n * @param baseDirectory - absolute directory of the document, with or without its trailing separator.\n * @param destination - the destination as the author wrote it.\n * @returns the absolute path to read.\n */\nexport function resolveRelativePath(baseDirectory: string, destination: string): string {\n let decoded = destination\n try {\n decoded = decodeURIComponent(destination)\n } catch {\n // A malformed escape is kept as written rather than losing the reference.\n }\n const separator = baseDirectory.includes('\\\\') && !baseDirectory.includes('/') ? '\\\\' : '/'\n const segments: string[] = []\n for (const part of [...baseDirectory.split(/[\\\\/]+/), ...decoded.split(/[\\\\/]+/)]) {\n if (part === '' || part === '.') continue\n if (part === '..') {\n segments.pop()\n continue\n }\n segments.push(part)\n }\n const rooted = /^[\\\\/]/.test(baseDirectory)\n return `${rooted ? separator : ''}${segments.join(separator)}`\n}\n","/**\n * The explorer's asynchronous half: listing directories, and reading whichever\n * file a tab asks for in the form its format needs.\n *\n * The component never awaits anything. It calls `list` / `read`, and this face\n * performs the Remote call and writes the outcome through the store's own\n * actions — the Slot-standard `inject` shape, so the Session id is resolved by\n * the framework and the write set stays the store's.\n *\n * One level has one listing in force: asking for a level again (the reload\n * gesture, a directory reopened after a reset) retires the listing still in\n * flight for it, whose settlement then writes nothing. Each tab has one read in\n * force in the same way, and the store additionally drops a settlement for a tab\n * that has since been closed. Requests carry the plugin's lifetime signal:\n * unloading the plugin abandons everything in flight, and no settlement writes\n * after that.\n */\nimport type { BoundActions } from '@deepseek-ai/dsh-client-store'\nimport type { ClientRemote } from '@deepseek-ai/dsh-api-remotes/client'\nimport type { SessionId } from '@deepseek-ai/dsh-session/types'\nimport { previewFormatFor } from './format.ts'\nimport { MAX_ASSET_BYTES } from './markdown-assets.ts'\nimport type { PreviewText, createFilesStore } from './store.ts'\n\n/** The slice of the Client Remote face this plugin calls. */\nexport type WorkspaceFilesRemote = Pick<ClientRemote, 'workspaceFiles'>\n\n/**\n * Largest number of leading lines one text preview asks for. The host's own\n * `maxLines` default is higher; keeping the page small is this viewer's choice,\n * and a file that does not reach `eof` says so in the header.\n */\nexport const PREVIEW_LINES = 2000\n\n/** The explorer's injected business face, as the component receives it. */\nexport interface FilesInjected {\n /**\n * List one directory into the store, retiring any listing in flight for it.\n * @param path - absolute directory path.\n */\n readonly list: (path: string) => void\n /**\n * Read one open tab into the store: a page of text, or complete bytes when the\n * file's format draws an image.\n * @param path - absolute file path of an open tab.\n */\n readonly read: (path: string) => void\n /**\n * Read one image for a document that references it, as a URL the renderer can\n * draw. Answers nothing for a path that is not an image, for one the host\n * cannot read, or for one past {@link MAX_ASSET_BYTES} — an unresolved\n * reference stays inert, which is what the primitive already does with one.\n * @param path - absolute file path.\n * @param signal - the requesting document's lifetime; aborting abandons the read.\n */\n readonly readImage: (path: string, signal: AbortSignal) => Promise<string | undefined>\n /**\n * Read one text asset an export needs to stand alone, such as a stylesheet a\n * document links to.\n * @param path - absolute file path.\n * @param signal - the requesting document's lifetime; aborting abandons the read.\n */\n readonly readText: (path: string, signal: AbortSignal) => Promise<string | undefined>\n}\n\n/**\n * Bind the explorer's face to one Session's Remote namespace.\n * @param remote - the Client Remote face carrying the `workspaceFiles` namespace.\n * @param sessionId - the Session whose workspace root authorizes every call.\n * @param signal - the plugin's lifetime signal; aborting abandons in-flight work.\n * @param actions - the bound store actions this face writes through.\n * @returns the listing and preview operations the component calls.\n */\nexport function filesFace(\n remote: WorkspaceFilesRemote,\n sessionId: SessionId,\n signal: AbortSignal,\n actions: BoundActions<ReturnType<typeof createFilesStore>>,\n): FilesInjected {\n /** Per absolute path: the listing generation a settlement must match; the latest request wins. */\n const listingGenerations = new Map<string, number>()\n /** Per open tab: the read generation a settlement must match; the latest request wins. */\n const readGenerations = new Map<string, number>()\n\n return {\n list(path) {\n if (signal.aborted) return\n const generation = (listingGenerations.get(path) ?? 0) + 1\n listingGenerations.set(path, generation)\n actions.loading(path)\n void remote.workspaceFiles.list(sessionId, path, signal).then((result) => {\n if (signal.aborted || listingGenerations.get(path) !== generation) return\n if (result.ok) {\n actions.loaded(path, {\n entries: result.value.entries,\n truncated: result.value.truncated,\n })\n } else {\n actions.failed(path, result.error)\n }\n })\n },\n read(path) {\n if (signal.aborted) return\n const generation = (readGenerations.get(path) ?? 0) + 1\n readGenerations.set(path, generation)\n const format = previewFormatFor(path)\n actions.reading(path)\n const settle = (write: () => void): void => {\n if (signal.aborted || readGenerations.get(path) !== generation) return\n write()\n }\n // An image needs its bytes whole; everything else needs a page of lines,\n // because the source view can show a bounded prefix of any text file.\n if (format.kind === 'image') {\n void remote.workspaceFiles.readAll(sessionId, path, signal).then((result) => {\n settle(() => {\n if (result.ok) {\n actions.previewLoaded(path, {\n kind: 'image',\n image: {\n dataUrl: `data:${format.mediaType};base64,${result.value.data}`,\n bytes: result.value.bytes,\n },\n })\n } else {\n actions.previewFailed(path, result.error)\n }\n })\n })\n return\n }\n void remote.workspaceFiles.read(sessionId, path, { offset: 1, limit: PREVIEW_LINES }, signal)\n .then((result) => {\n settle(() => {\n if (result.ok) {\n const page: PreviewText = {\n text: result.value.text,\n lines: result.value.lines,\n eof: result.value.eof,\n bytes: result.value.bytes,\n }\n actions.previewLoaded(path, { kind: 'text', page })\n } else {\n actions.previewFailed(path, result.error)\n }\n })\n })\n },\n readImage(path, request) {\n // The plugin's own lifetime ends every read with it, even one a document is\n // still waiting for.\n if (signal.aborted || request.aborted) return Promise.resolve(undefined)\n const format = previewFormatFor(path)\n if (format.kind !== 'image') return Promise.resolve(undefined)\n return remote.workspaceFiles.readAll(sessionId, path, request).then((result) => {\n if (!result.ok || request.aborted) return undefined\n const { bytes, data } = result.value\n if (bytes !== undefined && bytes > MAX_ASSET_BYTES) return undefined\n return `data:${format.mediaType};base64,${data}`\n })\n },\n readText(path, request) {\n if (signal.aborted || request.aborted) return Promise.resolve(undefined)\n return remote.workspaceFiles.readAll(sessionId, path, request).then((result) => {\n if (!result.ok || request.aborted) return undefined\n const { bytes, data } = result.value\n if (bytes !== undefined && bytes > MAX_ASSET_BYTES) return undefined\n const binary = atob(data)\n const raw = new Uint8Array(binary.length)\n for (let index = 0; index < binary.length; index++) raw[index] = binary.charCodeAt(index)\n return new TextDecoder().decode(raw)\n })\n },\n }\n}\n","/**\n * `fileExplorer` namespace dictionaries, and the namespace declaration.\n *\n * The failure lines name what the tree could not list, one code each, because a\n * directory that is gone, one outside the workspace, and a path that is not a\n * directory each suggest a different next step. The preview lines do the same\n * for the read failures a viewer can meet: not text, too large, not a regular\n * file.\n *\n * The namespace merge lives with its key set so that any module naming\n * `TranslateNS<'fileExplorer'>` or `PropsLocale<'fileExplorer'>` needs only this\n * file, whichever entry a program loads first.\n */\nimport type {} from '@deepseek-ai/dsh-client-ui-slots'\n\n/** Dictionary namespace owned by this plugin. */\nexport const NS = 'fileExplorer'\n\ndeclare module '@deepseek-ai/dsh-client-ui-slots' {\n interface LocaleNamespaceMap {\n /** View tab label, tree states, and preview states. */\n fileExplorer: FileExplorerKey\n }\n}\n\n/** Simplified Chinese dictionary and key-set source of truth. */\nexport const zh = {\n 'view.files': '文件',\n 'tree.root': '工作区',\n 'tree.reload': '重新读取',\n 'tree.loading': '正在读取…',\n 'tree.empty': '空目录',\n 'tree.truncated': '条目过多,只显示了一部分。',\n 'tree.noWorkspace': '这个会话没有工作区目录。',\n 'tree.other': '既不是文件也不是目录,无法打开。',\n 'tree.error.notFound': '目录不存在,可能已被移动或删除。',\n 'tree.error.outsideWorkspace': '该目录在工作区之外,无法读取。',\n 'tree.error.notDirectory': '这不是一个目录。',\n 'tree.error.unavailable': '读取失败:{message}',\n 'preview.placeholder': '从左侧选择一个文件进行预览。',\n 'preview.empty': '空文件',\n 'preview.rendered': '预览',\n 'preview.source': '源码',\n 'preview.jsonLabel': 'JSON 文档',\n 'preview.jsonInvalid': '这不是可展开的 JSON,已显示源码。',\n 'code.copy': '复制',\n 'code.copied': '已复制',\n 'footnotes': '脚注',\n 'json.copyValue': '复制值',\n 'json.copyJson': '复制 JSON',\n 'json.copyPath': '复制路径',\n 'json.copyPrettyJson': '复制格式化 JSON',\n 'json.copyCompactJson': '复制压缩 JSON',\n 'json.copied': '已复制',\n 'json.copyFailed': '复制失败',\n 'json.collapseNode': '收起',\n 'json.expandNode': '展开',\n 'json.copyTitle': '{action}',\n 'preview.title': '预览',\n 'preview.tabs': '打开的文件',\n 'preview.close': '关闭 {name}',\n 'preview.loading': '正在读取…',\n 'preview.copy': '复制',\n 'preview.copied': '已复制',\n 'preview.htmlFrame': 'HTML 预览',\n 'export.label': '导出',\n 'export.pdf': '导出 PDF',\n 'export.word': '导出 Word',\n 'export.failed': '导出失败:{message}',\n 'preview.reload': '重新读取',\n 'preview.truncated': '文件较长,只显示前 {lines} 行。',\n 'preview.wrap': '自动换行',\n 'preview.nowrap': '不换行',\n 'preview.lines': '{lines} 行',\n 'preview.error.notFound': '文件不存在,可能已被移动或删除。',\n 'preview.error.notText': '这不是可以预览的文本文件。',\n 'preview.error.tooLarge': '文件太大,无法预览。',\n 'preview.error.notRegularFile': '这不是一个普通文件。',\n 'preview.error.unavailable': '预览失败:{message}',\n} satisfies Record<string, string>\n\n/** Files dictionary key union. */\nexport type FileExplorerKey = keyof typeof zh\n\n/** English dictionary, checked against the Chinese key set. */\nexport const en = {\n 'view.files': 'Files',\n 'tree.root': 'Workspace',\n 'tree.reload': 'Reload',\n 'tree.loading': 'Reading…',\n 'tree.empty': 'Empty directory',\n 'tree.truncated': 'Too many entries, showing only some of them.',\n 'tree.noWorkspace': 'This session has no workspace directory.',\n 'tree.other': 'Not a file or a directory, so it cannot be opened.',\n 'tree.error.notFound': 'That directory is gone. It may have been moved or deleted.',\n 'tree.error.outsideWorkspace': 'That directory is outside the workspace, so it cannot be read.',\n 'tree.error.notDirectory': 'That is not a directory.',\n 'tree.error.unavailable': 'Read failed: {message}',\n 'preview.placeholder': 'Pick a file on the left to preview it.',\n 'preview.empty': 'Empty file',\n 'preview.rendered': 'Rendered',\n 'preview.source': 'Source',\n 'preview.jsonLabel': 'JSON document',\n 'preview.jsonInvalid': 'That is not JSON a tree can walk, so the source is shown.',\n 'code.copy': 'Copy',\n 'code.copied': 'Copied',\n 'footnotes': 'Footnotes',\n 'json.copyValue': 'Copy value',\n 'json.copyJson': 'Copy JSON',\n 'json.copyPath': 'Copy path',\n 'json.copyPrettyJson': 'Copy pretty JSON',\n 'json.copyCompactJson': 'Copy compact JSON',\n 'json.copied': 'Copied',\n 'json.copyFailed': 'Copy failed',\n 'json.collapseNode': 'Collapse',\n 'json.expandNode': 'Expand',\n 'json.copyTitle': '{action}',\n 'preview.title': 'Preview',\n 'preview.tabs': 'Open files',\n 'preview.close': 'Close {name}',\n 'preview.loading': 'Reading…',\n 'preview.copy': 'Copy',\n 'preview.copied': 'Copied',\n 'preview.htmlFrame': 'HTML preview',\n 'export.label': 'Export',\n 'export.pdf': 'Export PDF',\n 'export.word': 'Export Word',\n 'export.failed': 'Export failed: {message}',\n 'preview.reload': 'Reload',\n 'preview.truncated': 'This file is long, showing the first {lines} lines.',\n 'preview.wrap': 'Wrap long lines',\n 'preview.nowrap': 'Do not wrap long lines',\n 'preview.lines': '{lines} lines',\n 'preview.error.notFound': 'That file is gone. It may have been moved or deleted.',\n 'preview.error.notText': 'That is not a text file this preview can show.',\n 'preview.error.tooLarge': 'That file is too large to preview.',\n 'preview.error.notRegularFile': 'That is not a regular file.',\n 'preview.error.unavailable': 'Preview failed: {message}',\n} satisfies Record<FileExplorerKey, string>\n","/**\n * The file explorer's view state: what each listed directory holds, which\n * directories are open, which files are open in preview tabs, and what each tab\n * is showing.\n *\n * The explorer is not one resource. A directory listing per level, expanded\n * lazily, plus one read per open preview tab, is state the view owns — so it\n * lives in a Slot-standard exclusive store: the framework mints one instance per\n * Session, and the state survives switching to Chat or Trajectory and back, which\n * unmounts the component.\n *\n * Write actions run only after `start`; the store's keys are absolute paths,\n * because a child is its parent joined with the entry name and the host accepts\n * the absolute form for both listing and reading.\n *\n * Tabs are unbounded but loaded content is not: an image preview holds the\n * file's complete bytes as a base64 data URL, so keeping every tab's content\n * alive would let a reader grow the tab's memory to an arbitrary size. The store\n * therefore retains content for the active tab and the most recently visited\n * ones, and drops the rest — the tab stays open and simply reads again when it\n * is next activated. See {@link RETAINED_PREVIEWS}.\n */\nimport { defineStore, type EngineStoreHandle } from '@deepseek-ai/dsh-client-store'\nimport type { RemoteFailure } from '@deepseek-ai/dsh-api-remotes/client'\nimport type { WorkspaceDirectoryEntry } from '@deepseek-ai/dsh-api-workspace-files/types'\n\n/**\n * How many tabs keep their loaded content. A dropped tab is still open: it reads\n * again when activated, which shows as a brief loading state.\n *\n * Five covers the working set — the tab being read, plus the few it was reached\n * through — while bounding what a reader who opens everything in a directory can\n * pin in memory.\n */\nexport const RETAINED_PREVIEWS = 5\n\n/** One directory's contents, as one expanded level of the tree. */\nexport interface DirLevel {\n /** The directory's entries, in the endpoint's order. */\n readonly entries: readonly WorkspaceDirectoryEntry[]\n /** The listing hit the endpoint's entry cap, so entries are missing. */\n readonly truncated: boolean\n}\n\n/** What one directory level is doing right now. */\nexport type LevelState =\n | { readonly kind: 'loading' }\n | { readonly kind: 'ready'; readonly level: DirLevel }\n | { readonly kind: 'failed'; readonly failure: RemoteFailure }\n\n/** One page of text, as a preview keeps it. */\nexport interface PreviewText {\n /** The page's lines joined with `\\n`. */\n readonly text: string\n /** How many lines the page holds. */\n readonly lines: number\n /** Whether the page includes the file's last line. */\n readonly eof: boolean\n /** Byte size of the complete file, when the backend reports it. */\n readonly bytes: number | undefined\n}\n\n/** Complete image bytes, addressed as a URL the browser can draw directly. */\nexport interface PreviewImage {\n /** `data:` URL carrying the file's complete bytes under its media type. */\n readonly dataUrl: string\n /** Byte size of the complete file, when the backend reports it. */\n readonly bytes: number | undefined\n}\n\n/**\n * What one read delivered. A tab decides which arm it needs from the file's name\n * before reading, so the two never mix: a page of text for everything readable\n * as text, complete bytes for an image.\n */\nexport type PreviewContent =\n | { readonly kind: 'text'; readonly page: PreviewText }\n | { readonly kind: 'image'; readonly image: PreviewImage }\n\n/**\n * Which body a tab draws for a file that has more than one. An absent entry\n * leaves the choice to the format's own default, so a mode picked for one file\n * never leaks into another.\n */\nexport type PreviewMode = 'rendered' | 'source'\n\n/** What one tab is showing right now. */\nexport type PreviewState =\n | { readonly kind: 'loading' }\n | { readonly kind: 'ready'; readonly content: PreviewContent }\n | { readonly kind: 'failed'; readonly failure: RemoteFailure }\n\n/** The explorer's whole state for one Session. */\nexport interface FilesState {\n /** Absolute path of the workspace root this explorer is rooted at; `null` before it is known. */\n root: string | null\n /** Level state by absolute directory path; a path absent here was never asked for. */\n levels: Record<string, LevelState>\n /** Expanded absolute directory paths, root included, in expansion order. */\n expanded: string[]\n /** Open preview tabs by absolute path, in open order. */\n open: string[]\n /** The tab being shown, or `null` when nothing is open. */\n active: string | null\n /** Loaded content by absolute path; a path absent here was never read or has been dropped. */\n previews: Record<string, PreviewState>\n /** Absolute paths whose content is retained, most recently used first. */\n retained: string[]\n /** Body choice by absolute path; an absent entry follows the format's default. */\n modes: Record<string, PreviewMode>\n /** Line-wrap preference by absolute path; an absent entry wraps. */\n wraps: Record<string, boolean>\n}\n\n/** The explorer store's write set. */\ntype FilesActions = {\n /** Seed the explorer at its workspace root, with the root expanded and no tabs. */\n start: (draft: FilesState, root: string) => void\n /** Mark one directory as being listed. */\n loading: (draft: FilesState, path: string) => void\n /** Record one directory's contents. */\n loaded: (draft: FilesState, path: string, level: DirLevel) => void\n /** Record why one directory could not be listed. */\n failed: (draft: FilesState, path: string, failure: RemoteFailure) => void\n /** Open a collapsed directory, or collapse an open one. */\n toggled: (draft: FilesState, path: string) => void\n /** Drop every listed level, keeping what is expanded: the reload gesture's first half. */\n reset: (draft: FilesState) => void\n /** Open a file in a tab and show it; an already-open file is focused, not duplicated. */\n openFile: (draft: FilesState, path: string) => void\n /** Show an open tab, keeping its position in the strip. */\n activate: (draft: FilesState, path: string) => void\n /** Close a tab, showing its right neighbour, else its left, else nothing. */\n closeFile: (draft: FilesState, path: string) => void\n /** Mark one tab as being read. */\n reading: (draft: FilesState, path: string) => void\n /** Record one tab's contents. */\n previewLoaded: (draft: FilesState, path: string, content: PreviewContent) => void\n /** Record why one file could not be read. */\n previewFailed: (draft: FilesState, path: string, failure: RemoteFailure) => void\n /** Forget one tab's loaded content, leaving the tab open. */\n dropPreview: (draft: FilesState, path: string) => void\n /** Choose whether one tab wraps long lines. */\n setWrap: (draft: FilesState, path: string, wrap: boolean) => void\n /** Choose which body one tab shows. */\n setMode: (draft: FilesState, path: string, mode: PreviewMode) => void\n}\n\n/** The state a freshly created explorer starts from. */\nfunction emptyState(): FilesState {\n return {\n root: null,\n levels: {},\n expanded: [],\n open: [],\n active: null,\n previews: {},\n retained: [],\n modes: {},\n wraps: {},\n }\n}\n\n/**\n * Record one path as most recently used, and drop the content of tabs that fell\n * past the retention cap. The active tab is always kept, so nothing the reader is\n * looking at is ever dropped.\n * @param d - draft state.\n * @param path - the path whose content was just loaded, or is being shown.\n */\nfunction retain(d: FilesState, path: string): void {\n d.retained = [path, ...d.retained.filter(candidate => candidate !== path)]\n const keep = new Set([...(d.active === null ? [] : [d.active]), ...d.retained.slice(0, RETAINED_PREVIEWS)])\n for (const candidate of Object.keys(d.previews)) {\n if (!keep.has(candidate)) delete d.previews[candidate]\n }\n d.retained = d.retained.filter(candidate => keep.has(candidate))\n}\n\n/**\n * Declare the explorer's store.\n *\n * A factory rather than a shared handle: the registration declares it as an\n * exclusive store, so the framework mints one instance per Session and disposes\n * it with that Session's binding.\n * @returns the store handle to declare on the registration.\n */\nexport function createFilesStore(): EngineStoreHandle<FilesState, FilesActions> {\n return defineStore({\n init: emptyState,\n actions: {\n start: (d, root) => {\n Object.assign(d, emptyState())\n d.root = root\n d.expanded = [root]\n },\n loading: (d, path) => {\n d.levels[path] = { kind: 'loading' }\n },\n loaded: (d, path, level) => {\n d.levels[path] = { kind: 'ready', level }\n },\n failed: (d, path, failure) => {\n d.levels[path] = { kind: 'failed', failure }\n },\n toggled: (d, path) => {\n const at = d.expanded.indexOf(path)\n if (at >= 0) d.expanded.splice(at, 1)\n else d.expanded.push(path)\n },\n reset: (d) => {\n d.levels = {}\n },\n openFile: (d, path) => {\n if (!d.open.includes(path)) d.open.push(path)\n d.active = path\n },\n activate: (d, path) => {\n if (!d.open.includes(path)) return\n d.active = path\n // Showing a retained tab makes it the most recently used one, so the tab\n // the reader just came from is the first candidate for eviction.\n retain(d, path)\n },\n closeFile: (d, path) => {\n const at = d.open.indexOf(path)\n if (at < 0) return\n d.open.splice(at, 1)\n delete d.previews[path]\n delete d.modes[path]\n delete d.wraps[path]\n d.retained = d.retained.filter(candidate => candidate !== path)\n if (d.active !== path) return\n // The neighbour that takes over: the tab that slid into this slot, else\n // the one before it, matching how editors close.\n d.active = d.open[at] ?? d.open[at - 1] ?? null\n },\n reading: (d, path) => {\n if (!d.open.includes(path)) return\n d.previews[path] = { kind: 'loading' }\n },\n previewLoaded: (d, path, content) => {\n // A settlement for a tab the reader already closed writes nothing: the\n // store keys content by path, not by arrival order.\n if (!d.open.includes(path)) return\n d.previews[path] = { kind: 'ready', content }\n retain(d, path)\n },\n previewFailed: (d, path, failure) => {\n if (!d.open.includes(path)) return\n d.previews[path] = { kind: 'failed', failure }\n },\n dropPreview: (d, path) => {\n delete d.previews[path]\n d.retained = d.retained.filter(candidate => candidate !== path)\n },\n setWrap: (d, path, wrap) => {\n d.wraps[path] = wrap\n },\n setMode: (d, path, mode) => {\n d.modes[path] = mode\n },\n },\n })\n}\n","/**\n * The explorer's stylesheet, injected as one owned `<style>` tag.\n *\n * A client bundle arriving through the module loader is a single script: the\n * loader fetches `lib/client.js` and nothing else, so a separate stylesheet\n * would never be requested. Injecting the sheet from the bundle is the same\n * mechanism the built-in packages' `clientBundle()` preset uses for global CSS,\n * and the tag is removed when the plugin unloads.\n *\n * Colours come from the shell's `--dsw-alias-*` theme tokens, so the page\n * follows the active appearance without owning any palette of its own.\n */\n\n/** Marker attribute for this plugin's style tag. */\nconst STYLE_ATTRIBUTE = 'data-dsh-file-explorer'\n\nconst CSS = `\n.dsh-fe-root {\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsh-content-font-size-secondary, 13px);\n line-height: 1.5;\n}\n\n.dsh-fe-panes {\n display: flex;\n flex: 1 1 auto;\n min-height: 0;\n}\n\n.dsh-fe-tree,\n.dsh-fe-preview {\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n\n.dsh-fe-tree {\n flex: 0 0 auto;\n width: 280px;\n min-width: 160px;\n max-width: 60%;\n resize: horizontal;\n overflow: hidden;\n border-right: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n.dsh-fe-preview {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.dsh-fe-head {\n display: flex;\n flex: 0 0 auto;\n gap: 4px;\n align-items: center;\n box-sizing: border-box;\n height: 38px;\n padding: 0 6px 0 14px;\n /* The row is filled rather than transparent, so the pane's chrome reads as\n chrome instead of as the first line of the file. The palette's layer tokens\n are all pure white in light mode (bg-base, bg-layer-1/2/3 share a value), so\n the only token that separates a surface from the content in BOTH themes is\n this wash: 4% ink in light, 8% in dark. See the note in CONTRIBUTING.md. */\n background: var(--dsw-alias-bg-skeleton);\n border-bottom: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n/* A grammar badge for the source body, which is where the language used to be\n named: the code block's own banner is hidden in this pane so there is exactly\n one copy control, in this row. */\n.dsh-fe-lang {\n flex: 0 0 auto;\n color: var(--dsw-alias-label-tertiary);\n font-family: var(--ds-font-family-code, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 11px;\n white-space: nowrap;\n}\n\n.dsh-fe-path {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n font-size: 12px;\n white-space: nowrap;\n text-overflow: ellipsis;\n direction: rtl;\n text-align: left;\n}\n\n.dsh-fe-path > span {\n direction: ltr;\n unicode-bidi: embed;\n}\n\n.dsh-fe-path-muted {\n color: var(--dsw-alias-label-tertiary);\n}\n\n.dsh-fe-meta {\n flex: 0 0 auto;\n color: var(--dsw-alias-label-tertiary);\n font-size: 11px;\n white-space: nowrap;\n}\n\n.dsh-fe-tool {\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n min-width: 28px;\n height: 28px;\n padding: 0 6px;\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n font-size: 11px;\n line-height: 1;\n background: transparent;\n border: none;\n border-radius: 14px;\n cursor: pointer;\n}\n\n.dsh-fe-tool:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dsh-fe-tool svg {\n width: 15px;\n height: 15px;\n}\n\n.dsh-fe-scroll {\n flex: 1 1 auto;\n min-height: 0;\n padding: 8px 8px calc(var(--dsh-composer-height, 152px) + 24px);\n overflow: auto;\n scrollbar-gutter: stable;\n}\n\n.dsh-fe-scroll::-webkit-scrollbar-track {\n margin: 2px;\n}\n\n.dsh-fe-level {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.dsh-fe-level .dsh-fe-level {\n padding-left: 16px;\n}\n\n.dsh-fe-row {\n display: flex;\n gap: 6px;\n align-items: center;\n width: 100%;\n min-width: 0;\n padding: 5px 10px;\n color: inherit;\n font: inherit;\n text-align: left;\n background: transparent;\n border: 0;\n border-radius: 10px;\n cursor: pointer;\n}\n\n.dsh-fe-row:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dsh-fe-row[aria-current='true'] {\n background: var(--dsw-alias-interactive-bg-active);\n}\n\n.dsh-fe-row-static {\n cursor: default;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.dsh-fe-row-static:hover {\n background: transparent;\n}\n\n.dsh-fe-icon {\n flex: 0 0 auto;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.dsh-fe-name {\n min-width: 0;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.dsh-fe-note {\n margin: 0;\n padding: 3px 10px;\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n}\n\n.dsh-fe-note-error {\n color: var(--dsw-alias-label-error);\n}\n\n.dsh-fe-status {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n justify-content: center;\n padding: 24px;\n color: var(--dsw-alias-label-secondary);\n text-align: center;\n}\n\n/* ── format-aware bodies ──────────────────────────────────────────────── */\n\n/* Every body the pane can draw comes from the shared primitives, so this sheet\n carries no source-line rail of its own: the code block owns the numbered\n gutter, its counter, and its copy control. */\n\n/* The shared CodeBlock draws the highlighted source; this host only swaps the\n chat card's chrome for the pane's: no margin, no radius, no grey fill, and\n the pane's own scroll container. */\n.dsh-fe-source {\n --dsl-code-block-background: transparent;\n --dsl-code-block-border-radius: 0;\n --dsl-code-block-line-white-space: pre;\n}\n\n.dsh-fe-source .md-code-block {\n margin: 0;\n}\n\n/* One copy control per pane, in the header row above: the code block's own\n banner would be a second, inside the scrollport, and it scrolls away. The\n grammar it named is shown as the header's badge instead. Markdown fences keep\n their banners — there, a banner belongs to the fence, not to the file.\n\n The banner sits inside a sticky wrapper, hence the descendant match plus the\n :has rule that takes the wrapper out with it. */\n.dsh-fe-source [data-code-block-banner],\n.dsh-fe-source .md-code-block > div:has(> [data-code-block-banner]) {\n display: none;\n}\n\n.dsh-fe-source .md-code-block pre {\n box-sizing: border-box;\n min-width: 100%;\n padding: 8px 0;\n overflow: visible;\n white-space: pre;\n word-break: normal;\n overflow-wrap: normal;\n}\n\n.dsh-fe-source[data-wrap='true'] {\n --dsl-code-block-line-white-space: pre-wrap;\n}\n\n.dsh-fe-source[data-wrap='true'] .md-code-block pre {\n white-space: pre-wrap;\n /* The primitive's default is break-all; keep words whole instead. */\n word-break: normal;\n overflow-wrap: break-word;\n}\n\n/* The preview pane's header row carries the open tabs and, at its end, the\n active tab's controls. The tabs take the room that is left and scroll; the\n controls never shrink away. */\n.dsh-fe-tabhead {\n gap: 8px;\n padding: 0 6px 0 8px;\n}\n\n.dsh-fe-tabs {\n display: flex;\n flex: 1 1 auto;\n gap: 2px;\n align-items: stretch;\n min-width: 90px;\n height: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n scrollbar-width: none;\n}\n\n.dsh-fe-tabs::-webkit-scrollbar {\n height: 0;\n}\n\n.dsh-fe-tab {\n display: flex;\n flex: 0 0 auto;\n align-items: center;\n min-width: 0;\n max-width: 220px;\n border-radius: 8px;\n}\n\n.dsh-fe-tab:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dsh-fe-tab[data-active] {\n background: var(--dsw-alias-interactive-bg-active);\n}\n\n.dsh-fe-tab-label {\n display: flex;\n gap: 6px;\n align-items: center;\n min-width: 0;\n padding: 5px 4px 5px 8px;\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n font-size: 12px;\n line-height: 1;\n background: transparent;\n border: 0;\n border-radius: 8px;\n cursor: pointer;\n}\n\n.dsh-fe-tab[data-active] .dsh-fe-tab-label {\n color: var(--dsw-alias-label-primary);\n}\n\n.dsh-fe-tab-name {\n min-width: 0;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n/* The close control appears for the tab under the pointer and for the active\n tab, so a full strip stays readable. */\n.dsh-fe-tab-close {\n display: flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n margin-right: 5px;\n padding: 0;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n font-size: 14px;\n line-height: 1;\n background: transparent;\n border: 0;\n border-radius: 5px;\n cursor: pointer;\n opacity: 0;\n}\n\n.dsh-fe-tab:hover .dsh-fe-tab-close,\n.dsh-fe-tab[data-active] .dsh-fe-tab-close,\n.dsh-fe-tab-close:focus-visible {\n opacity: 1;\n}\n\n.dsh-fe-tab-close:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n/* A file already open in a tab keeps a quiet marker in the tree, so the reader\n can see where the strip came from without it competing with the active row. */\n.dsh-fe-open-dot {\n flex: 0 0 auto;\n width: 5px;\n height: 5px;\n margin-left: auto;\n background: var(--dsw-alias-brand-primary);\n border-radius: 50%;\n opacity: 0.6;\n}\n\n/* An HTML file is drawn by the browser, in a frame that fills the pane. The\n white canvas is the page's own, not this pane's: an unstyled document still\n reads as a document rather than as a hole in the app.\n\n The host takes its height from the scrollport's content box, so the frame ends\n exactly where the pane's bottom inset begins and the scrollport itself never\n scrolls — a page scrolls inside its own frame. */\n.dsh-fe-html {\n display: flex;\n height: 100%;\n min-height: 0;\n min-width: 0;\n}\n\n.dsh-fe-html-frame {\n flex: 1 1 auto;\n width: 100%;\n height: 100%;\n min-width: 0;\n min-height: 0;\n border: 0;\n background: #fff;\n}\n\n/* Rendered Markdown: prose lays out in normal white space, with the pane's\n insets and no monospace inheritance from the source view. */\n.dsh-fe-prose {\n min-width: 0;\n padding: 4px 4px 0;\n font-family: var(--dsw-font-family);\n white-space: normal;\n}\n\n.dsh-fe-json {\n min-width: 0;\n font-family: var(--ds-font-family-code, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 12px;\n white-space: normal;\n}\n\n/* An image keeps its intrinsic size, centres while it fits, and scales down to\n the pane rather than overflowing it. */\n.dsh-fe-imagehost {\n display: flex;\n align-items: flex-start;\n justify-content: center;\n}\n\n.dsh-fe-image {\n display: block;\n max-width: 100%;\n height: auto;\n border-radius: 6px;\n}\n`\n\n/**\n * Install the plugin's stylesheet once, and hand back its disposer.\n * @returns a disposer removing the tag this call created, or a no-op when the sheet was already installed.\n */\nexport function installStyles(): () => void {\n if (typeof document === 'undefined') return () => {}\n if (document.querySelector(`style[${STYLE_ATTRIBUTE}]`) !== null) return () => {}\n const tag = document.createElement('style')\n tag.setAttribute(STYLE_ATTRIBUTE, '')\n tag.textContent = CSS\n document.head.appendChild(tag)\n return () => { tag.remove() }\n}\n"],"mappings":"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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsbL,SAASC,IAA4B,CAC1C,GAAI,OAAO,SAAa,IAAa,MAAO,IAAM,CAAC,EACnD,GAAI,SAAS,cAAc,SAASF,EAAe,GAAG,IAAM,KAAM,MAAO,IAAM,CAAC,EAChF,IAAMG,EAAM,SAAS,cAAc,OAAO,EAC1C,OAAAA,EAAI,aAAaH,GAAiB,EAAE,EACpCG,EAAI,YAAcF,GAClB,SAAS,KAAK,YAAYE,CAAG,EACtB,IAAM,CAAEA,EAAI,OAAO,CAAE,CAC9B,CZjZO,IAAMC,GAAO,gBAMPC,GAAS,CAAC,QAAS,SAAU,SAAU,uBAAuB,EAM9DC,GAAgB,QAMtB,SAASC,GAAMC,EAAoB,CACxCA,EAAI,OAAOC,GAAe,wCAAwC,EAClED,EAAI,OAAO,IAAMA,EAAI,OAAO,SAASE,GAAI,CAAE,GAAAC,GAAI,GAAAC,EAAG,CAAC,EAAG,0CAA0C,EAIhG,IAAMC,EAAIL,EAAI,OAAO,KAAKE,EAAE,EACtBI,EAAQC,GAAiB,EACzBC,EAAW,IAAI,gBACrBR,EAAI,OAAO,IAAM,IAAM,CAAEQ,EAAS,MAAM,CAAE,EAAG,8CAA8C,EAE3FR,EAAI,MAAM,OAAO,oBAAqB,IAAMA,EAAI,MAAM,SAAS,CAC7D,KAAM,oBACN,GAAIF,GAGJ,MAAO,GACP,OAAQI,GACR,MAAO,IAAMG,EAAE,YAAY,EAC3B,MAAAC,EACA,OAAQ,CACNG,EACAC,IACkBC,GAAUX,EAAI,OAAQS,EAAWD,EAAS,OAAQE,CAAO,CAC/E,EAAGE,EAAS,CAAC,CACf","names":["init_define_import_meta_env","__esmMin","extendStatics","d","b","p","__extends","__","__assign","t","s","i","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","reject","fulfilled","step","e","rejected","result","__generator","body","_","f","y","g","verb","n","v","op","__spreadArray","to","from","pack","l","ar","Bounds","left","top","width","height","x","w","h","context","clientRect","domRectList","domRect","rect","parseBounds","node","parseDocumentSize","document","documentElement","toCodePoints","str","codePoints","length","extra","fromCodePoint","_i","codeUnits","index","codePoint","chars","lookup","decode","base64","bufferLength","len","encoded1","encoded2","encoded3","encoded4","buffer","bytes","polyUint16Array","polyUint32Array","UTRIE2_SHIFT_2","UTRIE2_SHIFT_1","UTRIE2_INDEX_SHIFT","UTRIE2_SHIFT_1_2","UTRIE2_LSCP_INDEX_2_OFFSET","UTRIE2_DATA_BLOCK_LENGTH","UTRIE2_DATA_MASK","UTRIE2_LSCP_INDEX_2_LENGTH","UTRIE2_INDEX_2_BMP_LENGTH","UTRIE2_UTF8_2B_INDEX_2_OFFSET","UTRIE2_UTF8_2B_INDEX_2_LENGTH","UTRIE2_INDEX_1_OFFSET","UTRIE2_OMITTED_BMP_INDEX_1_LENGTH","UTRIE2_INDEX_2_BLOCK_LENGTH","UTRIE2_INDEX_2_MASK","slice16","view","start","end","slice32","createTrieFromBase64","_byteLength","view32","view16","headerLength","data","Trie","initialValue","errorValue","highStart","highValueIndex","ix","LETTER_NUMBER_MODIFIER","BK","CR","LF","CM","NL","WJ","ZW","GL","SP","ZWJ","B2","BA","BB","HY","CB","CL","CP","EX","IN","NS","OP","QU","IS","NU","PO","PR","SY","AI","AL","CJ","EB","EM","H2","H3","HL","ID","JL","JV","JT","RI","SA","XX","ea_OP","BREAK_MANDATORY","BREAK_NOT_ALLOWED","BREAK_ALLOWED","UnicodeTrie","ALPHABETICS","HARD_LINE_BREAKS","SPACE","PREFIX_POSTFIX","LINE_BREAKS","KOREAN_SYLLABLE_BLOCK","HYPHEN","codePointsToCharacterClasses","lineBreak","types","indices","categories","classType","prev","isAdjacentWithSpaceIgnored","a","currentIndex","classTypes","current","next","previousNonSpaceClassType","type","_lineBreakAtIndex","indicies","forbiddenBreaks","beforeIndex","afterIndex","before","prevIndex","count","cssFormattedClasses","options","_a","isLetterNumber","forbiddenBreakpoints","letterNumber","Break","LineBreaker","lastEnd","nextIndex","FLAG_UNRESTRICTED","FLAG_ID","FLAG_INTEGER","FLAG_NUMBER","LINE_FEED","SOLIDUS","REVERSE_SOLIDUS","CHARACTER_TABULATION","QUOTATION_MARK","EQUALS_SIGN","NUMBER_SIGN","DOLLAR_SIGN","PERCENTAGE_SIGN","APOSTROPHE","LEFT_PARENTHESIS","RIGHT_PARENTHESIS","LOW_LINE","HYPHEN_MINUS","EXCLAMATION_MARK","LESS_THAN_SIGN","GREATER_THAN_SIGN","COMMERCIAL_AT","LEFT_SQUARE_BRACKET","RIGHT_SQUARE_BRACKET","CIRCUMFLEX_ACCENT","LEFT_CURLY_BRACKET","QUESTION_MARK","RIGHT_CURLY_BRACKET","VERTICAL_LINE","TILDE","CONTROL","REPLACEMENT_CHARACTER","ASTERISK","PLUS_SIGN","COMMA","COLON","SEMICOLON","FULL_STOP","NULL","BACKSPACE","LINE_TABULATION","SHIFT_OUT","INFORMATION_SEPARATOR_ONE","DELETE","EOF","ZERO","u","z","A","E","F","U","Z","isDigit","isSurrogateCodePoint","isHex","isLowerCaseLetter","isUpperCaseLetter","isLetter","isNonASCIICodePoint","isWhiteSpace","isNameStartCodePoint","isNameCodePoint","isNonPrintableCodePoint","isValidEscape","c1","c2","isIdentifierStart","c3","isNumberStart","stringToNumber","c","sign","integers","int","fraction","fracd","frac","expsign","exponent","exp","LEFT_PARENTHESIS_TOKEN","RIGHT_PARENTHESIS_TOKEN","COMMA_TOKEN","SUFFIX_MATCH_TOKEN","PREFIX_MATCH_TOKEN","COLUMN_TOKEN","DASH_MATCH_TOKEN","INCLUDE_MATCH_TOKEN","LEFT_CURLY_BRACKET_TOKEN","RIGHT_CURLY_BRACKET_TOKEN","SUBSTRING_MATCH_TOKEN","BAD_URL_TOKEN","BAD_STRING_TOKEN","CDO_TOKEN","CDC_TOKEN","COLON_TOKEN","SEMICOLON_TOKEN","LEFT_SQUARE_BRACKET_TOKEN","RIGHT_SQUARE_BRACKET_TOKEN","WHITESPACE_TOKEN","EOF_TOKEN","Tokenizer","chunk","tokens","token","flags","e1","e2","e3","a1","a2","a3","u1","u2","delta","digits","questionMarks","start_1","digit","endDigits","stringToken","SLICE_STACK_SIZE","amount","endingCodePoint","repr","number","unit","hex","hexCodePoint","Parser","tokenizer","values","block","isEndingTokenFor","functionToken","cssFunction","isDimensionToken","isNumberToken","isIdentToken","isStringToken","isIdentWithValue","nonWhiteSpace","nonFunctionArgSeparator","parseFunctionArgs","args","arg","isLength","isLengthPercentage","parseLengthPercentageTuple","ZERO_LENGTH","FIFTY_PERCENT","HUNDRED_PERCENT","getAbsoluteValueForTuple","tuple","getAbsoluteValue","parent","DEG","GRAD","RAD","TURN","angle","_context","isAngle","parseNamedSide","sideOrCorner","ident","deg","color","colorFunction","SUPPORTED_COLOR_FUNCTIONS","r","namedColor","COLORS","isTransparent","asString","alpha","blue","green","red","getTokenColorValue","max","rgb","_b","hue2rgb","t1","t2","hue","hsl","saturation","lightness","parseColor","backgroundClip","backgroundColor","parseColorStop","colorType","stop","processColorStops","stops","lineLength","first","last","processStops","previous","stop_1","absoluteValue","gapBegin","stop_2","gapLength","beforeGap","gapValue","getAngleFromCorner","corner","centerX","centerY","calculateGradientDirection","radian","halfWidth","halfHeight","halfLineLength","yDiff","xDiff","distance","findCorner","closest","corners","stat","cx","cy","calculateRadius","gradient","rx","ry","linearGradient","firstToken","angleType","colorStop","angle$1","prefixLinearGradient","webkitGradient","shape","size","position","CLOSEST_SIDE","FARTHEST_SIDE","CLOSEST_CORNER","FARTHEST_CORNER","CIRCLE","ELLIPSE","COVER","CONTAIN","radialGradient","isColorStop","isAtPosition_1","acc","prefixRadialGradient","isLinearGradient","background","isRadialGradient","image","image_1","imageFunction","SUPPORTED_IMAGE_FUNCTIONS","isSupportedImage","backgroundImage","backgroundOrigin","backgroundPosition","backgroundRepeat","parseBackgroundRepeat","BACKGROUND_SIZE","backgroundSize","isBackgroundSizeInfoToken","borderColorForSide","side","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderRadiusForSide","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","borderStyleForSide","style","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderWidthForSide","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","direction","display","bit","parseDisplayValue","float","letterSpacing","LINE_BREAK","lineHeight","computeLineHeight","fontSize","listStyleImage","listStylePosition","listStyleType","marginForSide","marginTop","marginRight","marginBottom","marginLeft","overflow","overflowWrap","paddingForSide","paddingTop","paddingRight","paddingBottom","paddingLeft","textAlign","textShadow","shadow","textTransform","transform","transformFunction","SUPPORTED_TRANSFORM_FUNCTIONS","matrix","matrix3d","b1","b2","a4","b4","DEFAULT_VALUE","DEFAULT","transformOrigin","origins","visibility","WORD_BREAK","wordBreak","zIndex","time","opacity","textDecorationColor","textDecorationLine","line","fontFamily","accumulator","results","fontWeight","fontVariant","fontStyle","contains","content","counterIncrement","increments","filtered","counter","increment","counterReset","resets","reset","duration","quotes","open_1","close_1","getQuote","depth","open","quote","boxShadow","paintOrder","layers","webkitTextStrokeColor","webkitTextStrokeWidth","CSSParsedDeclaration","declaration","parse","overflowTuple","CSSParsedPseudoDeclaration","CSSParsedCounterDeclaration","descriptor","parser","length_1","value_1","elementDebuggerAttribute","getElementDebugType","element","attribute","isDebugging","elementType","ElementContainer","isHTMLElementNode","Prepend","Control","Extend","SpacingMark","L","V","T","LV","LVT","Extended_Pictographic","codePointToClass","_graphemeBreakAtIndex","_codePoints","countRI","GraphemeBreaker","graphemeBreak","splitGraphemes","breaker","graphemes","bk","testRangeBounds","TEST_HEIGHT","range","testElement","rangeBounds","rangeHeight","testIOSLineBreak","textList","offset","supports","text","boundAhead","testCORS","testResponseType","testSVG","img","canvas","ctx","isGreenPixel","testForeignObject","greenImageSrc","svg","createForeignObjectSVG","loadSerializedSVG","xmlns","foreignObject","FEATURES","TextBounds","bounds","parseTextBounds","styles","breakText","textBounds","clientRects","createRange","subSegments","segmentGraphemes","subOffset_1","subSegment","replacementNode","getWrapperBounds","ownerDocument","wrapper","parentNode","segmenter","segment","segmentWords","breakWords","wordSeparators","words","word_1","TextContainer","CAPITALIZE","capitalize","m","p1","p2","ImageElementContainer","_super","_this","CanvasElementContainer","SVGElementContainer","LIElementContainer","OLElementContainer","CHECKBOX_BORDER_RADIUS","RADIO_BORDER_RADIUS","reformatInputBounds","getInputValue","PASSWORD","CHECKBOX","RADIO","INPUT_COLOR","InputElementContainer","input","SelectElementContainer","option","TextareaElementContainer","IFrameElementContainer","iframe","parseTree","documentBackgroundColor","bodyBackgroundColor","LIST_OWNERS","parseNodeTree","root","childNode","nextNode","isTextNode","isElementNode","isSlotElement","container","createContainer","createsRealStackingContext","createsStackingContext","isTextareaElement","isSVGElement","isSelectElement","isImageElement","isCanvasElement","isLIElement","isOLElement","isInputElement","isIFrameElement","isBodyElement","isSVGElementNode","isHTMLElement","isVideoElement","isStyleElement","isScriptElement","isCustomElement","CounterState","name","counters","canReset","entry","counterNames","ROMAN_UPPER","ARMENIAN","HEBREW","GEORGIAN","createAdditiveCounter","min","symbols","fallback","suffix","createCounterText","string","integer","createCounterStyleWithSymbolResolver","codePointRangeLength","isNumeric","resolver","createCounterStyleFromRange","codePointRangeStart","codePointRangeEnd","createCounterStyleFromSymbols","CJK_ZEROS","CJK_TEN_COEFFICIENTS","CJK_TEN_HIGH_COEFFICIENTS","CJK_HUNDRED_COEFFICIENTS","createCJKCounter","numbers","multipliers","negativeSign","tmp","coefficient","CHINESE_INFORMAL_MULTIPLIERS","CHINESE_FORMAL_MULTIPLIERS","JAPANESE_NEGATIVE","KOREAN_NEGATIVE","appendSuffix","defaultSuffix","cjkSuffix","koreanSuffix","spaceSuffix","IGNORE_ATTRIBUTE","DocumentCloner","windowSize","createIFrameContainer","scrollX","scrollY","cloneWindow","documentClone","iframeLoad","iframeLoader","restoreNodeScroll","onclone","referenceElement","imagesReady","serializeDoctype","restoreOwnerScroll","clone","copyCSSStyles","sheet","css","rule","clonedCanvas","clonedCtx","gl","attribs","video","blankCanvas","child","copyStyles","assignedNodes","assignedNode","window","styleBefore","styleAfter","createPseudoHideStyles","PseudoElementType","after","pseudoElt","anonymousReplacedElement","attr","counterStyle","counterState","counterType","delim","counterStates","counterType_1","separator","PSEUDO_HIDE_ELEMENT_CLASS_BEFORE","PSEUDO_HIDE_ELEMENT_CLASS_AFTER","newClassName","cloneIframeContainer","imageReady","interval","ignoredStyleProperties","target","property","doctype","PSEUDO_BEFORE","PSEUDO_AFTER","PSEUDO_HIDE_ELEMENT_STYLE","createStyles","CacheStorage","url","link","src","Cache","_options","isBlobImage","isRenderable","key","isSameOrigin","useCORS","isInlineImage","useProxy","isInlineBase64Image","proxy","responseType","xhr","reader_1","queryString","timeout_1","INLINE_SVG","INLINE_BASE64","INLINE_IMG","isSVG","Vector","deltaX","deltaY","lerp","BezierCurve","startControl","endControl","firstHalf","ab","bc","cd","abbc","bccd","dest","isBezierCurve","path","BoundCurves","tlh","tlv","trh","trv","_c","brh","brv","_d","blh","blv","factors","maxFactor","topWidth","rightHeight","bottomWidth","leftHeight","getCurvePoints","CORNER","r1","r2","kappa","ox","oy","xm","ym","calculateBorderBoxPath","curves","calculateContentBoxPath","calculatePaddingBoxPath","TransformEffect","offsetX","offsetY","ClipEffect","OpacityEffect","isTransformEffect","effect","isClipEffect","isOpacityEffect","equalPath","transformPath","deltaW","deltaH","point","StackingContext","ElementPaint","borderBox","paddingBox","inFlow","effects","croplessEffects","parseStackTree","stackingContext","realStackingContext","listItems","treatAsRealStackingContext","paintContainer","listOwnerItems","parentStack","stack","order_1","index_1","index_2","processListItems","owner","elements","numbering","reversed","item","parseStackingContexts","parsePathForBorder","borderSide","createPathFromCurves","parsePathForBorderDoubleOuter","parsePathForBorderDoubleInner","parsePathForBorderStroke","createStrokePathFromCurves","outer1","outer2","inner1","inner2","contentBox","calculateBackgroundPositioningArea","calculateBackgroundPaintingArea","calculateBackgroundRendering","intrinsicSize","backgroundPositioningArea","getBackgroundValueForIndex","backgroundPaintingArea","backgroundImageSize","calculateBackgroundSize","sizeWidth","sizeHeight","calculateBackgroundRepeatPath","isAuto","hasIntrinsicValue","intrinsicWidth","intrinsicHeight","intrinsicProportion","second","hasIntrinsicProportion","targetRatio","hasIntrinsicWidth","hasIntrinsicHeight","hasIntrinsicDimensions","width_1","height_1","width_2","height_2","width_3","height_3","repeat","SMALL_IMAGE","SAMPLE_TEXT","FontMetrics","span","baseline","middle","Renderer","MASK_OFFSET","CanvasRenderer","paint","letters","letter","variant","fixIOSSystemFonts","font","paintOrderLayer","textShadows","box","iframeRenderer","isTextInputElement","canvasTextAlign","_p","_e","_g","_f","_j","_h","_l","_k","_o","_m","paths","pattern","this_1","x0","x1","y0","y1","gradient_1","top_1","radialGradient_1","midX","midY","invF","curvePoints","outerPaths","innerPaths","hasBackground","borders","calculateBackgroundCurvedPaintingArea","borderBoxArea","maskOffset","shadowPaintingArea","borders_1","border","strokePaths","boxPaths","startX","startY","endX","endY","dashLength","spaceLength","useLineDash","multiplier","numberOfDashes","minSpace","maxSpace","path1","path2","clip","iOSBrokenFonts","fontFamilies","ForeignObjectRenderer","Logger","id","enabled","Context","windowBounds","html2canvas","renderElement","opts","defaultView","resourceOptions","contextOptions","windowOptions","foreignObjectRendering","cloneOptions","documentCloner","clonedElement","_u","parseBackgroundColor","renderOptions","_q","_r","_s","renderer","_t","backgroundColorOverride","defaultBackgroundColor","index_exports","__export","A4_HEIGHT_PT","A4_WIDTH_PT","FILES_VIEW_ID","MAX_ASSET_BYTES","MAX_DOCUMENT_IMAGES","RETAINED_PREVIEWS","apply","bytesOfDataUrl","canExportPdf","crc32","docxFromBlocks","extensionOf","hasSourceToggle","inject","name","parseJsonDocument","pdfFromPages","previewFormatFor","previewLines","relativeImageDestinations","resolveRelativePath","tabLabels","zip","__toCommonJS","init_define_import_meta_env","init_define_import_meta_env","import_react","import_dsh_client_ui_primitives","init_define_import_meta_env","IMAGE_MEDIA_TYPES","GRAMMAR_EXTENSIONS","GRAMMAR_BY_EXTENSION","grammar","suffixes","suffix","extensionOf","path","normalized","name","at","previewFormatFor","extension","mediaType","lang","hasSourceToggle","format","canExportPdf","init_define_import_meta_env","init_define_import_meta_env","A4_WIDTH_PT","A4_HEIGHT_PT","ascii","value","out","index","pdfFromPages","pages","chunks","offset","offsets","write","bytes","object","number","body","stream","pageObject","contentObject","imageObject","kids","_page","page","pageHeight","content","objectCount","xrefOffset","at","concatenate","length","chunk","bytesOfDataUrl","dataUrl","comma","binary","init_define_import_meta_env","init_define_import_meta_env","CRC_TABLE","table","index","value","bit","crc32","data","byte","ByteWriter","bytes","out","at","chunk","utf8","zip","parts","directory","time","date","part","name","crc","offset","directoryOffset","entry","directorySize","EMU_PER_PX","MAX_IMAGE_EMU","HEADING_HALF_POINTS","xml","value","character","runXml","run","properties","prefix","parts","line","index","paragraphXml","runs","drawingXml","media","width","height","ratio","cx","cy","tableXml","rows","columns","row","borders","side","grid","body","cell","docxFromBlocks","blocks","title","listRun","block","size","sameList","marker","indent","lines","data","bytesOfDataUrl","extension","name","entry","document","extensions","contentTypes","rootRels","documentRels","coreXml","zip","init_define_import_meta_env","INLINE_TAGS","HEADING_LEVELS","collapse","text","runsOf","element","inherited","runs","push","flags","keepLeading","trimmed","previous","walk","node","first","child","tag","next","last","run","imageBlock","image","src","rect","tableRows","table","rows","row","cells","cell","listBlocks","list","depth","blocks","ordered","item","blocksFromElement","root","visit","level","images","block","inner","init_define_import_meta_env","MAX_DOCUMENT_IMAGES","MAX_ASSET_BYTES","IMAGE_REFERENCE","FENCED_BLOCK","INLINE_CODE","isRelativeDestination","destination","value","withoutCode","text","relativeImageDestinations","found","match","resolveRelativePath","baseDirectory","decoded","separator","segments","part","PAGE_RASTER_WIDTH","MAX_PAGES","IMAGE_SETTLE_MS","settleImages","root","pending","image","resolve","rasterPages","element","html2canvas","width","rendered","pageHeight","pageCount","pages","index","top","height","slice","context","jpeg","bytesOfDataUrl","renderOffscreen","html","frame","ready","doc","downloadBlob","blob","name","url","link","parseHtml","source","title","parsed","script","attribute","tag","standaloneHtml","directory","assets","controller","done","href","isRelativeDestination","path","resolveRelativePath","text","style","src","dataUrl","withExtension","extension","exportDocument","format","request","offscreen","standalone","docxFromBlocks","blocksFromElement","pdfFromPages","import_jsx_runtime","byName","orderEntries","entries","left","right","group","childPath","parent","name","pathParts","path","at","tabLabels","open","twins","labels","directory","previewLines","page","parseJsonDocument","text","value","treeFailureLine","t","failure","previewFailureLine","Level","tree","state","level","entry","Entry","expanded","isOpen","HighlightedSource","lang","wrap","HtmlFrame","html","title","url","assetCache","ASSET_CACHE_LIMIT","cacheAsset","dataUrl","oldest","RenderedMarkdown","readImage","proseRef","destinations","relativeImageDestinations","assets","setAssets","controller","resolved","missing","destination","resolveRelativePath","cached","current","pathImages","FormattedBody","format","jsonDocument","copyLabel","copiedLabel","footnotes","markdownLabels","copyValue","copyJson","copyPath","copyPrettyJson","copyCompactJson","copied","copyFailed","collapseNode","expandNode","jsonLabels","action","bodyKindOf","content","mode","jsonWalkable","hasSourceToggle","PreviewBody","body","jsonFallback","lines","FilesView","sessionId","useSessions","useStore","actions","list","read","readText","cwd","sessions","store","activeTabRef","setCopied","copyTimer","exportOpen","setExportOpen","exporting","setExporting","exportError","setExportError","active","previewFormatFor","openSet","loaded","reloadTree","reloadPreview","copyActive","ok","runExport","target","canExportPdf","exportDocument","error","closeTab","root","preview","meta","part","isActive","event","id","init_define_import_meta_env","PREVIEW_LINES","filesFace","remote","sessionId","signal","actions","listingGenerations","readGenerations","path","generation","result","format","previewFormatFor","settle","write","page","request","bytes","data","binary","raw","index","init_define_import_meta_env","NS","zh","en","init_define_import_meta_env","import_dsh_client_store","RETAINED_PREVIEWS","emptyState","retain","d","path","candidate","keep","createFilesStore","root","level","failure","at","content","wrap","mode","init_define_import_meta_env","STYLE_ATTRIBUTE","CSS","installStyles","tag","name","inject","FILES_VIEW_ID","apply","ctx","installStyles","NS","zh","en","t","store","createFilesStore","lifetime","sessionId","actions","filesFace","FilesView"]}