termcut 0.8.0 → 1.0.1

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/README.md CHANGED
@@ -51,7 +51,7 @@ defineVideo({ output: "demo.mp4", browser: { position: "overlay" } }, async (t)
51
51
  });
52
52
  ```
53
53
 
54
- Polish: `shadow: true`, `watermark: "© you"`, `marginFill: "transparent"` (real alpha in PNG/WebP/GIF/WebM/SVG), `title: "auto"` follows the title the program sets, `keys: true` shows key presses, `maxPause: "800ms"` cuts dead air, `t.timelapse(fn, { speed: 8 })` fast-forwards an install, `t.zoom({ rows: [0, 5] })` magnifies output, `t.chapter("Install")` adds mp4 chapters, `preset: "x"` sizes it for X.
54
+ Polish: `shadow: true`, `watermark: "© you"`, `marginFill: "transparent"` (real alpha in PNG/WebP/GIF/WebM/SVG), `title: "auto"` follows the title the program sets, `keys: true` shows key presses, `maxPause: "800ms"` cuts dead air, `t.timelapse(fn, { speed: 8 })` fast-forwards an install, `t.zoom({ rows: [0, 5] })` magnifies output, `t.chapter("Install")` adds mp4 chapters, `t.snapshot("hero.png")` (or `.svg`) saves a still of that exact moment on every render, `preset: "x"` sizes it for X.
55
55
 
56
56
  Faithful to the terminal: arrows switch to the form vim/less asked for, `t.paste()` uses bracketed paste (no autoindent stair-steps), synchronized-output repaints never show torn frames, and OSC 8 hyperlinks — including Markdown links in `t.print()` captions — stay clickable in SVG and HTML output.
57
57
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "termcut",
3
- "version": "0.8.0",
3
+ "version": "1.0.1",
4
4
  "description": "Script terminal sessions in TypeScript, render them to reproducible MP4/GIF/WebM/SVG/HTML with Bun.",
5
5
  "license": "MIT",
6
6
  "author": "Aman Varshney",
package/src/cli.ts CHANGED
@@ -370,7 +370,7 @@ export default defineVideo(
370
370
  await t.sleep("400ms");
371
371
  await t.enter();
372
372
  await t.wait(); // prompt is back
373
- await t.screenshot("${name}-notes.png");
373
+ await t.snapshot("${name}-notes.png");
374
374
  await t.sleep("1.5s");
375
375
  },
376
376
  );
@@ -1,4 +1,5 @@
1
1
  import { mkdir } from "node:fs/promises";
2
+ import { PIN_CSS } from "../renderer/pin";
2
3
  import path from "node:path";
3
4
  import { barHeight, embedImage, shadowCss, watermarkCss } from "../renderer/page";
4
5
  import { pageAssets } from "../renderer/bundle";
@@ -62,7 +63,8 @@ ${watermarkCss(config)}
62
63
  #bar { height: ${barHeight(config)}px; margin-top: -${Math.min(config.padding, 12)}px; display: flex; align-items: center; justify-content: space-between; font: 13px -apple-system, "Segoe UI", Helvetica, Arial, sans-serif; color: ${theme.foreground}; }
63
64
  #bar .dots { display: flex; gap: 8px; } #bar .dot { width: 12px; height: 12px; border-radius: 50%; box-sizing: border-box; display: inline-block; }
64
65
  #bar .title { flex: 1; text-align: center; opacity: .7; } #bar.right .title { text-align: left; }
65
- #term.wterm { ${vars}; --term-font-family: ${font.family}; --term-font-size: ${font.size}px; --term-line-height: ${font.lineHeight}; --term-row-height: ${Math.ceil(font.size * font.lineHeight)}px; letter-spacing: ${font.letterSpacing}px; padding: 0; border-radius: 0; box-shadow: none; background: transparent; cursor: pointer; }
66
+ #term.wterm { ${vars}; --term-font-family: ${font.family}; --term-font-size: ${font.size}px; --term-line-height: ${font.lineHeight}; --term-row-height: ${Math.ceil(font.size * font.lineHeight)}px; letter-spacing: ${font.letterSpacing}px; --vt-letter-spacing: ${font.letterSpacing}px; padding: 0; border-radius: 0; box-shadow: none; background: transparent; cursor: pointer; }
67
+ ${PIN_CSS}
66
68
  #controls { display: flex; gap: 12px; align-items: center; margin-top: 12px; font: 12px -apple-system, "Segoe UI", Helvetica, Arial, sans-serif; color: ${theme.foreground}; opacity: .85; }
67
69
  #controls button { background: transparent; color: inherit; border: 1px solid currentColor; border-radius: 6px; width: 34px; height: 26px; cursor: pointer; }
68
70
  #controls input[type=range] { flex: 1; accent-color: ${theme.cursor ?? theme.foreground}; }
package/src/export/svg.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { mkdir } from "node:fs/promises";
2
+ import path from "node:path";
1
3
  import { fitFrame } from "../loop";
2
4
  import { barHeight, embedImage } from "../renderer/page";
3
5
  import type { Recording, ResolvedConfig } from "../types";
@@ -106,20 +108,28 @@ function frameMarkup(frame: GridFrame, config: ResolvedConfig, g: Geometry): str
106
108
  // Text runs with identical style (and link); OSC 8 links become real <a> elements
107
109
  const spans: string[] = [];
108
110
  x = 0;
109
- let run: { x: number; text: string; style: string; link: string | null } | null = null;
111
+ let run: { x: number; text: string; style: string; link: string | null; cols: number[]; single: boolean } | null = null;
110
112
  const flushRun = () => {
111
113
  if (!run || !run.text.trim()) return;
112
- const span = `<tspan x="${num(run.x * g.cellW)}"${run.style}>${esc(run.text.replace(/\s+$/, ""))}</tspan>`;
114
+ const text = run.text.replace(/\s+$/, "");
115
+ // Fallback-font glyphs are not one cell wide; give every glyph its own x when the run has any non-ASCII
116
+ // and each cell is a single code point (an x list addresses code points, so clusters would misalign).
117
+ const pinned = run.single && /[^\x20-\x7e]/.test(text);
118
+ const xAttr = pinned ? run.cols.slice(0, [...text].length).map((c) => num(c * g.cellW)).join(" ") : num(run.x * g.cellW);
119
+ const span = `<tspan x="${xAttr}"${run.style}>${esc(text)}</tspan>`;
113
120
  spans.push(run.link ? `<a href="${esc(run.link)}">${span}</a>` : span);
114
121
  };
115
122
  for (const cell of cells) {
116
123
  const blank = cell.text === " " && !(cell.flags & (FLAG.underline | FLAG.strike));
117
124
  const style = blank ? "" : styleAttrs(cell, theme.foreground);
125
+ const single = [...cell.text].length === 1;
118
126
  if (run && ((run.style === style && run.link === cell.link) || (blank && run.text.length > 0 && run.link === null))) {
119
127
  run.text += cell.text;
128
+ run.cols.push(x);
129
+ run.single &&= single;
120
130
  } else {
121
131
  flushRun();
122
- run = blank ? null : { x, text: cell.text, style, link: cell.link };
132
+ run = blank ? null : { x, text: cell.text, style, link: cell.link, cols: [x], single };
123
133
  }
124
134
  x += cell.width;
125
135
  }
@@ -165,11 +175,29 @@ export interface SvgResult {
165
175
  duration: number;
166
176
  }
167
177
 
178
+ /** The shared document: chrome (background, window, bar, watermark) around exporter-supplied style + body. */
179
+ async function svgDocument(config: ResolvedConfig, g: Geometry, title: string, style: string, body: string): Promise<string> {
180
+ const { theme, font } = config;
181
+ return `<?xml version="1.0" encoding="UTF-8"?>
182
+ <svg xmlns="http://www.w3.org/2000/svg" width="${g.width}" height="${g.height}" viewBox="0 0 ${g.width} ${g.height}" font-family="${esc(font.family)}" font-size="${font.size}">
183
+ <style>
184
+ ${style}text{white-space:pre;dominant-baseline:auto}
185
+ </style>
186
+ ${config.marginFill === "transparent" ? "" : `<rect width="100%" height="100%" fill="${config.marginFill}"/>`}
187
+ ${shadowDefs(config)}
188
+ <rect x="${num(g.frameX)}" y="${num(g.frameY)}" width="${num(g.frameW)}" height="${num(g.frameH)}" rx="${config.borderRadius}" fill="${theme.background}"${config.shadow ? ' filter="url(#shadow)"' : ""}/>
189
+ ${windowBar(config, g, title)}
190
+ <clipPath id="term"><rect x="${num(g.termX)}" y="${num(g.termY)}" width="${num(g.termW)}" height="${num(g.termH)}"/></clipPath>
191
+ <g clip-path="url(#term)"><g transform="translate(${num(g.termX)} ${num(g.termY)})">${body}</g></g>
192
+ ${await watermarkMarkup(config, g)}
193
+ </svg>
194
+ `;
195
+ }
196
+
168
197
  /** Animated SVG: a horizontal strip of unique frames moved by a stepped CSS animation. No JS, no fonts embedded. */
169
198
  export async function buildSvg(rec: Recording, config: ResolvedConfig): Promise<SvgResult> {
170
199
  const replay = await replayFrames(rec, config);
171
200
  const g = svgGeometry(config, replay.cols, replay.rows);
172
- const { theme, font } = config;
173
201
  const n = replay.frames.length;
174
202
  const total = replay.duration;
175
203
 
@@ -184,25 +212,46 @@ export async function buildSvg(rec: Recording, config: ResolvedConfig): Promise<
184
212
  .map((f, i) => `<g transform="translate(${num(i * g.termW)} 0)">${frameMarkup(f, config, g)}</g>`)
185
213
  .join("\n");
186
214
 
187
- const svg = `<?xml version="1.0" encoding="UTF-8"?>
188
- <svg xmlns="http://www.w3.org/2000/svg" width="${g.width}" height="${g.height}" viewBox="0 0 ${g.width} ${g.height}" font-family="${esc(font.family)}" font-size="${font.size}">
189
- <style>
190
- .strip{animation:tcut ${num(total)}s steps(1,end) infinite}
191
- @keyframes tcut{${keyframes.join("")}}
192
- text{white-space:pre;dominant-baseline:auto}
193
- </style>
194
- ${config.marginFill === "transparent" ? "" : `<rect width="100%" height="100%" fill="${config.marginFill}"/>`}
195
- ${shadowDefs(config)}
196
- <rect x="${num(g.frameX)}" y="${num(g.frameY)}" width="${num(g.frameW)}" height="${num(g.frameH)}" rx="${config.borderRadius}" fill="${theme.background}"${config.shadow ? ' filter="url(#shadow)"' : ""}/>
197
- ${windowBar(config, g, config.title === "auto" ? (replay.title ?? "") : config.title)}
198
- <clipPath id="term"><rect x="${num(g.termX)}" y="${num(g.termY)}" width="${num(g.termW)}" height="${num(g.termH)}"/></clipPath>
199
- <g clip-path="url(#term)"><g transform="translate(${num(g.termX)} ${num(g.termY)})"><g class="strip" xml:space="preserve">
200
- ${frames}
201
- </g></g></g>
202
- ${await watermarkMarkup(config, g)}
203
- </svg>
204
- `;
205
- return { svg, frames: n, duration: total };
215
+ const style = `.strip{animation:tcut ${num(total)}s steps(1,end) infinite}\n@keyframes tcut{${keyframes.join("")}}\n`;
216
+ const body = `<g class="strip" xml:space="preserve">\n${frames}\n</g>`;
217
+ const title = config.title === "auto" ? (replay.title ?? "") : config.title;
218
+ return { svg: await svgDocument(config, g, title, style, body), frames: n, duration: total };
219
+ }
220
+
221
+ export interface SnapshotMark {
222
+ file: string;
223
+ /** Seconds on the visible timeline. */
224
+ at: number;
225
+ }
226
+
227
+ /** The frame on screen at `at` seconds (frames carry their start time; the last one started before `at` wins). */
228
+ function frameAt(frames: GridFrame[], at: number): GridFrame | undefined {
229
+ let current = frames[0];
230
+ for (const f of frames) {
231
+ if (f.time <= at + 1e-9) current = f;
232
+ else break;
233
+ }
234
+ return current;
235
+ }
236
+
237
+ /** Static (non-animated) SVG stills for `t.snapshot("x.svg")` marks — one replay serves all of them. */
238
+ export async function writeSvgSnapshots(rec: Recording, config: ResolvedConfig, marks: SnapshotMark[]): Promise<string[]> {
239
+ const replay = await replayFrames(rec, config);
240
+ const g = svgGeometry(config, replay.cols, replay.rows);
241
+ const title = config.title === "auto" ? (replay.title ?? "") : config.title;
242
+ const written: string[] = [];
243
+ for (const mark of marks) {
244
+ // The raster pass applies output and marks that share a frame tick together; match that: the mark
245
+ // captures the first tick at or after its instant, so output recorded just before it is included.
246
+ const tick = Math.ceil(mark.at * config.fps - 1e-6) / config.fps;
247
+ const frame = frameAt(replay.frames, tick);
248
+ if (!frame) continue;
249
+ const svg = await svgDocument(config, g, title, "", `<g xml:space="preserve">${frameMarkup(frame, config, g)}</g>`);
250
+ await mkdir(path.dirname(path.resolve(mark.file)), { recursive: true });
251
+ await Bun.write(mark.file, svg);
252
+ written.push(mark.file);
253
+ }
254
+ return written;
206
255
  }
207
256
 
208
257
  export async function writeSvg(rec: Recording, config: ResolvedConfig, file: string): Promise<SvgResult> {
package/src/recorder.ts CHANGED
@@ -385,10 +385,11 @@ export async function record(config: ResolvedConfig, script: Script, opts: Recor
385
385
  expect,
386
386
  hide,
387
387
  timelapse,
388
- screenshot: async (file) => {
388
+ snapshot: async (file) => {
389
389
  await screen.settle();
390
390
  push("m", MARKER.screenshot + file);
391
391
  },
392
+ screenshot: (file) => session.snapshot(file),
392
393
  marker: async (name) => {
393
394
  push("m", name);
394
395
  },
package/src/render.ts CHANGED
@@ -1,14 +1,38 @@
1
1
  import { mkdir } from "node:fs/promises";
2
2
  import path from "node:path";
3
+ import { MARKER } from "./cast";
3
4
  import { chapterRanges, chapterSlug, cutRecording, findChapters, flattenedConfig, selectChapters } from "./edit";
4
5
  import { frameText, replayFrames } from "./export/frames";
5
6
  import { writeHtml } from "./export/html";
6
- import { writeSvg } from "./export/svg";
7
+ import { writeSvg, writeSvgSnapshots, type SnapshotMark } from "./export/svg";
8
+ import { buildTimeline } from "./timeline";
7
9
  import { render as renderRaster, type RenderResult } from "./renderer/webview";
8
10
  import type { ClipSelection, Recording, RenderProgress, ResolvedConfig } from "./types";
9
11
 
10
12
  export type { RenderResult };
11
13
 
14
+ /**
15
+ * `t.snapshot(file)` marks with their instants on the visible timeline. `.svg` stills are produced headlessly
16
+ * (same clock as the SVG exporter); anything else is a raster still written by the WebView pass.
17
+ */
18
+ interface SnapshotMarks {
19
+ vector: SnapshotMark[];
20
+ /** How many marks need pixels (anything that is not `.svg`). */
21
+ raster: number;
22
+ }
23
+
24
+ function snapshotMarks(rec: Recording, config: ResolvedConfig): SnapshotMarks {
25
+ const vector: SnapshotMark[] = [];
26
+ let raster = 0;
27
+ for (const e of buildTimeline(rec.events, config.playbackSpeed).events) {
28
+ if (e.type !== "m" || !e.data.startsWith(MARKER.screenshot)) continue;
29
+ const file = e.data.slice(MARKER.screenshot.length);
30
+ if (file.toLowerCase().endsWith(".svg")) vector.push({ file, at: e.vt });
31
+ else raster += 1;
32
+ }
33
+ return { vector, raster };
34
+ }
35
+
12
36
  const kind = (output: string): "svg" | "html" | "txt" | "log" | "raster" => {
13
37
  if (output.endsWith("/")) return "raster";
14
38
  const ext = path.extname(output).toLowerCase();
@@ -50,6 +74,7 @@ export async function renderOutputs(
50
74
  const raster = config.output.filter((o) => kind(o) === "raster");
51
75
 
52
76
  const result: RenderResult = { outputs: [], frames: 0, screenshots: [], durationSeconds: 0 };
77
+ const marks = snapshotMarks(rec, config);
53
78
 
54
79
  for (const file of txt) {
55
80
  await writeTxt(rec, config, file);
@@ -70,7 +95,11 @@ export async function renderOutputs(
70
95
  await writeHtml(rec, config, file);
71
96
  result.outputs.push(file);
72
97
  }
73
- if (raster.length > 0) {
98
+ if (marks.vector.length > 0) {
99
+ result.screenshots.push(...(await writeSvgSnapshots(rec, config, marks.vector)));
100
+ }
101
+ // Raster snapshots need pixels: run the WebView pass even when no raster output is configured.
102
+ if (raster.length > 0 || marks.raster > 0) {
74
103
  const r = await renderRaster(rec, { ...config, output: raster }, onProgress);
75
104
  result.outputs.push(...r.outputs);
76
105
  result.frames = r.frames;
@@ -1 +1 @@
1
- var AA="AGFzbQEAAAABQAtgAAF/YAAAYAF/AX9gAX8AYAJ/fwBgBH9/f38AYAN/f38AYAJ/fwF/YAV/f39/fwBgBH9/f38Bf2ADf39/AX8DQUAAAAAAAAEAAAICAAAAAAACAgICAAAAAAAAAAAAAAAAAAAAAAEAAAMDBAQFBQUEBgcBCAkGAQEECgYGBAQDAAQEBAUBcAEBAQUDAQBkBgkBfwFBgIDAAAsH/gUsBm1lbW9yeQIACmdldE1heENvbHMAAAtnZXRDZWxsU2l6ZQABDmdldERlYnVnTG9nTWF4AAIUZ2V0RGVidWdMb2dFbnRyeVNpemUAARBnZXREZWJ1Z0xvZ0NvdW50AAMOZ2V0RGVidWdMb2dQdHIABA1jbGVhclJlc3BvbnNlAAUOZ2V0UmVzcG9uc2VMZW4ABg5nZXRSZXNwb25zZVB0cgAHFGdldFNjcm9sbGJhY2tMaW5lTGVuAAgRZ2V0U2Nyb2xsYmFja0xpbmUACRtnZXRTY3JvbGxiYWNrRGlzY2FyZGVkQ291bnQAChJnZXRTY3JvbGxiYWNrQ291bnQACxlnZXRIeXBlcmxpbmtSZWplY3RlZENvdW50AAwRZ2V0SHlwZXJsaW5rQ291bnQADRRnZXRIeXBlcmxpbmtDYXBhY2l0eQAODGdldExpbmtJZExlbgAPDGdldExpbmtJZFB0cgAQDWdldExpbmtVcmlMZW4AEQ1nZXRMaW5rVXJpUHRyABIPZ2V0VGl0bGVDaGFuZ2VkABMLZ2V0VGl0bGVMZW4AFAtnZXRUaXRsZVB0cgAVH2dldFN5bmNocm9uaXplZE91dHB1dEdlbmVyYXRpb24AFhVnZXRTeW5jaHJvbml6ZWRPdXRwdXQAFw5nZXRGb2N1c0V2ZW50cwAYC2dldE1vdXNlU2dyABkQZ2V0TW91c2VUcmFja2luZwAaEWdldFVzaW5nQWx0U2NyZWVuABsRZ2V0QnJhY2tldGVkUGFzdGUAHBBnZXRDdXJzb3JLZXlzQXBwAB0HZ2V0Um93cwAeB2dldENvbHMAHxBnZXRDdXJzb3JWaXNpYmxlACAMZ2V0Q3Vyc29yQ29sACEMZ2V0Q3Vyc29yUm93ACIKY2xlYXJEaXJ0eQAjC2dldERpcnR5UHRyACQKZ2V0R3JpZFB0cgAlCndyaXRlQnl0ZXMAJg5nZXRXcml0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AzsB9rGYgQAMAQtBACADOwH2sZiBAAsgAUECaiEBDAALC+YBAQJ/I4CAgIAAQRBrIgIkgICAgABBACEDIAJBADoACyACIAE6AAkgAiAAOgAIIAJCADcDACACQQAtAKCK8IAAIgE6AAogAUEEIAFBBEkbQQF0IQECQANAIAEgA0YNASACIANqIANB/InwgABqLwEAOwEAIANBAmohAwwACwtBAC0AlMSggQAiA0EMbCIBIAIpAwA3AeaumIEAIAFB7q6YgQBqIAJBCGooAgA2AQBBACADQQFqQR9xOgCUxKCBAEEAQQAoAsyumIEAQQFqIgNBfyADGzYCzK6YgQAgAkEQaiSAgICAAAt4AQJ/AkAgAEH//wNxIgJBAC8B9ofwgABPDQAgAkGAGGxB9IfAgABqIQBBACEDAkADQCADQQAvAfSH8IAATw0BIAAgASkCADcCACAAQQhqIAFBCGooAgA2AgAgAEEMaiEAIANBAWohAwwACwsgAkEBOgD4h/CAAAsLsAIBA38CQCAAQf//A3EiBEEALwH2h/CAAE8NACABQf//A3EiBUEALwH0h/CAACIAIAUgAEkbIQECQCAFIAJB//8DcSIGIAAgBiAASRsiBk8NACABIARBgBhsQfSHwIAAaiIFIAFBDGxqLQAJRSABQf//A3FBAEdxayEBIAJB//8DcSAATw0AAkAgBSAGQQxsai0ACQ0AIAZBAWohBgwBCyAGIAUgBkF/akH//wNxQQxsai0ACUECRmohBgtBACAGQf//A3EiACABQf//A3EiAmsiASABIABLGyEBIARBgBhsIAJBDGxqQfSHwIAAaiEAAkADQCABRQ0BIAAgAykCADcCACAAQQhqIANBCGooAgA2AgAgAEEMaiEAIAFBf2ohAQwACwsgBEEBOgD4h/CAAAsL4QEBBH8CQCACQf//A3FFDQAgAUH//wNxIABB//8DcU0NACABIABrIgQgAkH//wNxIgIgBEH//wNxIgQgAiAESRsiBWtB//8DcSEGQQAhAgNAAkAgBiACRw0AIAUgAGpB//8DcSECA0AgAEH//wNxIAJPDQMgACADEKmAgIAAIABBAWohAAwACwsgASACQX9zaiIHQf//A3EhBAJAQYAYRQ0AIARBgBhsQfSHwIAAaiAHIAVrQf//A3FBgBhsQfSHwIAAakGAGPwKAAALIARB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";function CA(A){let t=atob(A),e=new Uint8Array(t.length);for(let s=0;s<t.length;s++)e[s]=t.charCodeAt(s);return e.buffer}class L{get dv(){if(this._dvBuffer!==this.memory.buffer)this._dvBuffer=this.memory.buffer,this._dv=new DataView(this.memory.buffer);return this._dv}constructor(A){this.gridPtr=0,this.dirtyPtr=0,this.writeBufferPtr=0,this.cellSize=12,this.maxCols=256,this.encoder=new TextEncoder,this.decoder=new TextDecoder,this._dvBuffer=null,this.linkCache=new Map,this.exports=A.exports,this.memory=this.exports.memory}static async load(A){let t;if(A){let s=await fetch(A);if(!s.ok)throw Error(`[wterm] Failed to load WASM from ${A}: ${s.status} ${s.statusText}`);t=await s.arrayBuffer()}else t=CA(AA);let{instance:e}=await WebAssembly.instantiate(t);return new L(e)}init(A,t){this.exports.init(A,t),this.linkCache.clear(),this._updatePointers()}_updatePointers(){this.gridPtr=this.exports.getGridPtr(),this.dirtyPtr=this.exports.getDirtyPtr(),this.writeBufferPtr=this.exports.getWriteBuffer(),this.cellSize=this.exports.getCellSize(),this.maxCols=this.exports.getMaxCols()}writeString(A,t){let e=this.encoder.encode(A);this.writeRaw(e,t)}writeRaw(A,t){let e=0;while(e<A.length){let s=Math.min(A.length-e,8192);new Uint8Array(this.memory.buffer,this.writeBufferPtr,8192).set(A.subarray(e,e+s)),this.exports.writeBytes(s),e+=s,t?.()}}getCell(A,t){let e=this.gridPtr+(A*this.maxCols+t)*this.cellSize,s=this.dv,i={char:s.getUint32(e,!0),fg:s.getUint16(e+4,!0),bg:s.getUint16(e+6,!0),flags:s.getUint8(e+8),width:s.getUint8(e+9)};return Object.assign(i,this._readLink(s.getUint16(e+10,!0))),i}isDirtyRow(A){return new Uint8Array(this.memory.buffer,this.dirtyPtr,256)[A]!==0}clearDirty(){this.exports.clearDirty()}getCursor(){return{row:this.exports.getCursorRow(),col:this.exports.getCursorCol(),visible:this.exports.getCursorVisible()!==0}}getCols(){return this.exports.getCols()}getRows(){return this.exports.getRows()}cursorKeysApp(){return this.exports.getCursorKeysApp()!==0}bracketedPaste(){return this.exports.getBracketedPaste()!==0}usingAltScreen(){return this.exports.getUsingAltScreen()!==0}mouseTracking(){let A=this.exports.getMouseTracking();return A===1000||A===1002?A:0}mouseSgr(){return this.exports.getMouseSgr()!==0}focusEvents(){return this.exports.getFocusEvents()!==0}synchronizedOutput(){return this.exports.getSynchronizedOutput()!==0}synchronizedOutputGeneration(){return this.exports.getSynchronizedOutputGeneration()}getTitle(){if(this.exports.getTitleChanged()===0)return null;let A=this.exports.getTitlePtr(),t=this.exports.getTitleLen(),e=new Uint8Array(this.memory.buffer,A,t);return this.decoder.decode(e)}getResponse(){let A=this.exports.getResponseLen();if(A===0)return null;let t=this.exports.getResponsePtr(),e=new Uint8Array(this.memory.buffer,t,A),s=this.decoder.decode(e);return this.exports.clearResponse(),s}getResourceState(){let A=this.exports.getHyperlinkCapacity?.(),t=this.exports.getHyperlinkCount?.(),e=this.exports.getHyperlinkRejectedCount?.();if(A===void 0||t===void 0||e===void 0)return{};return{hyperlinks:{capacity:A,used:t,rejected:e,saturated:t>=A}}}getScrollbackCount(){return this.exports.getScrollbackCount()}getScrollbackDiscardedCount(){return this.exports.getScrollbackDiscardedCount()}getScrollbackCell(A,t){let s=this.exports.getScrollbackLine(A)+t*this.cellSize,i=this.dv,r={char:i.getUint32(s,!0),fg:i.getUint16(s+4,!0),bg:i.getUint16(s+6,!0),flags:i.getUint8(s+8),width:i.getUint8(s+9)};return Object.assign(r,this._readLink(i.getUint16(s+10,!0))),r}getScrollbackLineLen(A){return this.exports.getScrollbackLineLen(A)}getUnhandledSequences(){let A=this.exports.getDebugLogCount();if(A===0)return[];let t=this.exports.getDebugLogPtr(),e=this.exports.getDebugLogEntrySize(),s=this.exports.getDebugLogMax(),i=Math.min(A,s),r=new DataView(this.memory.buffer),o=[],n=A>=s?A%s:0;for(let Q=0;Q<i;Q++){let B=(n+Q)%s,c=t+B*e,a=r.getUint8(c);if(a===0)continue;let E=r.getUint8(c+1),C=r.getUint8(c+2),f=[];for(let b=0;b<Math.min(C,4);b++)f.push(r.getUint16(c+4+b*2,!0));o.push({final:String.fromCharCode(a),private:E?String.fromCharCode(E):"",paramCount:C,params:f})}return o}resize(A,t){this.exports.resizeTerminal(A,t),this._updatePointers()}_readLink(A){if(A===0)return;let t=this.linkCache.get(A);if(t)return t;let e=this.exports.getLinkUriLen(A);if(e===0)return;let s=this.decoder.decode(new Uint8Array(this.memory.buffer,this.exports.getLinkUriPtr(A),e)),i=this.exports.getLinkIdLen(A),r=i===0?void 0:this.decoder.decode(new Uint8Array(this.memory.buffer,this.exports.getLinkIdPtr(A),i)),o={linkUri:s,linkId:r,linkKey:r?`e\x00${r}\x00${s}`:`b\x00${A}`};return this.linkCache.set(A,o),o}}function nA(A){let t=A>>16&255,e=A>>8&255,s=A&255;return`rgb(${t},${e},${s})`}function BA(A){if(A===256)return null;if(A<16)return`var(--term-color-${A})`;if(A<232){let e=A-16,s=Math.floor(e/36)*51,i=Math.floor(e/6)%6*51,r=e%6*51;return`rgb(${s},${i},${r})`}let t=(A-232)*10+8;return`rgb(${t},${t},${t})`}function gA(A,t){if(t!==void 0)return nA(t);return BA(A)}function Y(A,t){if(t!==void 0)return nA(t);return BA(A)}function tA(A,t,e,s,i){let r=A,o=t,n=s,Q=i;if(e&32){let C=r;r=o,o=C;let f=n;if(n=Q,Q=f,n===void 0&&r===256)r=0;if(Q===void 0&&o===256)o=7}let B=gA(r,n),c=Y(o,Q),a="";if(B)a+=`color:${B};`;if(c)a+=`background:${c};`;if(e&1)a+="font-weight:bold;";if(e&2)a+="opacity:0.5;";if(e&4)a+="font-style:italic;";let E=[];if(e&8)E.push("underline");if(e&128)E.push("line-through");if(E.length)a+=`text-decoration:${E.join(" ")};`;if(e&64)a+="visibility:hidden;";return a}function y(A){return A.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function IA(A){if(!A)return;try{let t=new URL(A);return t.protocol==="http:"||t.protocol==="https:"?t.href:void 0}catch{return}}function uA(A){if(!A.linkUri)return"";return A.linkKey??`fallback\x00${A.linkId??""}\x00${A.linkUri}`}function wA(A,t,e,s,i){let r=A,o=t,n=s,Q=i;if(e&32){if([r,o]=[o,r],[n,Q]=[Q,n],n===void 0&&r===256)r=0;if(Q===void 0&&o===256)o=7}return{fg:gA(r,n)||"var(--term-fg)",bg:Y(o,Q)||"var(--term-bg)"}}var M="round(calc(var(--term-row-height) * 0.125), 1px)",eA="round(calc(var(--term-row-height) * 0.25), 1px)",sA="round(calc(var(--term-row-height) * 0.375), 1px)",J="round(calc(var(--term-row-height) * 0.5), 1px)",iA="round(calc(var(--term-row-height) * 0.625), 1px)",rA="round(calc(var(--term-row-height) * 0.75), 1px)",oA="round(calc(var(--term-row-height) * 0.875), 1px)";function dA(A,t,e){switch(A){case 9600:return`linear-gradient(${t} ${J},${e} ${J})`;case 9601:return`linear-gradient(${e} ${oA},${t} ${oA})`;case 9602:return`linear-gradient(${e} ${rA},${t} ${rA})`;case 9603:return`linear-gradient(${e} ${iA},${t} ${iA})`;case 9604:return`linear-gradient(${e} ${J},${t} ${J})`;case 9605:return`linear-gradient(${e} ${sA},${t} ${sA})`;case 9606:return`linear-gradient(${e} ${eA},${t} ${eA})`;case 9607:return`linear-gradient(${e} ${M},${t} ${M})`;case 9608:return t;case 9609:return`linear-gradient(to right,${t} 87.5%,${e} 87.5%)`;case 9610:return`linear-gradient(to right,${t} 75%,${e} 75%)`;case 9611:return`linear-gradient(to right,${t} 62.5%,${e} 62.5%)`;case 9612:return`linear-gradient(to right,${t} 50%,${e} 50%)`;case 9613:return`linear-gradient(to right,${t} 37.5%,${e} 37.5%)`;case 9614:return`linear-gradient(to right,${t} 25%,${e} 25%)`;case 9615:return`linear-gradient(to right,${t} 12.5%,${e} 12.5%)`;case 9616:return`linear-gradient(to right,${e} 50%,${t} 50%)`;case 9617:return`color-mix(in srgb,${t} 25%,${e})`;case 9618:return`color-mix(in srgb,${t} 50%,${e})`;case 9619:return`color-mix(in srgb,${t} 75%,${e})`;case 9620:return`linear-gradient(${t} ${M},${e} ${M})`;case 9621:return`linear-gradient(to right,${e} 87.5%,${t} 87.5%)`;default:{let i={9622:[!1,!1,!0,!1],9623:[!1,!1,!1,!0],9624:[!0,!1,!1,!1],9625:[!0,!1,!0,!0],9626:[!0,!1,!1,!0],9627:[!0,!0,!0,!1],9628:[!0,!0,!1,!0],9629:[!1,!0,!1,!1],9630:[!1,!0,!0,!1],9631:[!1,!0,!0,!0]}[A];if(!i)return t;let[r,o,n,Q]=i;if(r&&o&&n&&Q)return t;let B=[],c=["0 0","100% 0","0 100%","100% 100%"];return i.forEach((a,E)=>{if(a)B.push(`linear-gradient(${t},${t}) ${c[E]}/50% 50% no-repeat`)}),B.push(e),B.join(",")}}}class N{constructor(A){this.rows=0,this.cols=0,this.rowEls=[],this.prevCursorRow=-1,this.prevCursorCol=-1,this.prevContainerBg="",this.prevRowBg=[],this._scrollbackRowEls=[],this._scrollbackStartKey=0,this._renderedScrollbackCount=-1,this._renderedDiscardedCount=-1,this._scrollbackTopSpacer=null,this._scrollbackBottomSpacer=null,this.container=A}setup(A,t){this.cols=A,this.rows=t,this.container.innerHTML="",this.rowEls=[],this.prevRowBg=[],this._scrollbackRowEls=[],this._scrollbackStartKey=0,this._renderedScrollbackCount=-1,this._renderedDiscardedCount=-1;let e=document.createDocumentFragment();this._scrollbackTopSpacer=document.createElement("div"),this._scrollbackTopSpacer.className="term-scrollback-spacer",e.appendChild(this._scrollbackTopSpacer),this._scrollbackBottomSpacer=document.createElement("div"),this._scrollbackBottomSpacer.className="term-scrollback-spacer",e.appendChild(this._scrollbackBottomSpacer);for(let s=0;s<t;s++){let i=document.createElement("div");i.className="term-row",e.appendChild(i),this.rowEls.push(i)}this.container.appendChild(e),this.prevCursorRow=-1,this.prevCursorCol=-1}_buildRowContent(A,t,e,s,i){let r="",o="",n="",Q=[],B=0,c="",a,E="",C=(h,g,l)=>{let I=IA(l),p=I?g:"";if(p!==E){if(E)r+="</a>";if(p)r+=`<a class="term-link" href="${y(I)}" target="_blank" rel="noopener noreferrer">`;E=p}r+=h},f=(h)=>{if(!n)return;let g=y(n),l="";if(s>=B&&s<h){let I=s-B,p=Q.slice(0,I).join(""),w=Q[I]||" ",u=Q.slice(I+1).join("");if(p)l+=o?`<span style="${o}">${y(p)}</span>`:`<span>${y(p)}</span>`;if(l+=o?`<span class="term-cursor" style="${o}">${y(w)}</span>`:`<span class="term-cursor">${y(w)}</span>`,u)l+=o?`<span style="${o}">${y(u)}</span>`:`<span>${y(u)}</span>`}else l+=o?`<span style="${o}">${g}</span>`:`<span>${g}</span>`;C(l,c,a),n="",Q=[]},b=(h,g,l,I,p)=>{let w=h?` class="${h}"`:"",u=g?` style="${g}"`:"";C(`<span${w}${u}>${y(l)}</span>`,I,p)};for(let h=0;h<this.cols;h++){let g=t(h),l=h<e,I=l?g.char:0,p=l?g.width??1:1,w=l?uA(g):"",u=l?g.linkUri:void 0;if(l&&p===0){if(f(h),!(h>0&&(t(h-1).width??1)===2))b(h===s?"term-cursor":"",""," ",w,u);o="",c="",a=void 0,n="",Q=[],B=h+1;continue}if(l&&p===2){if(f(h),h+1>=this.cols){b(h===s?"term-cursor":"",""," ",w,u),o="",c="",a=void 0,n="",Q=[],B=h+1;continue}let d=g.chars??(I>=32?String.fromCodePoint(I):" "),x=tA(g.fg,g.bg,g.flags,g.fgRgb,g.bgRgb),U=s>=h&&s<h+2?"term-wide term-cursor":"term-wide";b(U,x,d,w,u),o="",c="",a=void 0,n="",Q=[],B=h+2;continue}if(l&&I>=9600&&I<=9631){f(h);let d=wA(g.fg,g.bg,g.flags,g.fgRgb,g.bgRgb),x=h===s?"term-block term-cursor":"term-block",U=dA(I,d.fg,d.bg),EA=g.flags&2?"opacity:0.5;":"";C(`<span class="${x}" style="background:${U};${EA}"></span>`,w,u),o="",c="",a=void 0,n="",Q=[],B=h+1}else{let d=g.chars??(l&&I>=32?String.fromCodePoint(I):" "),x=l?tA(g.fg,g.bg,g.flags,g.fgRgb,g.bgRgb):"";if(x!==o||w!==c)f(h),o=x,c=w,a=u,n=d,Q=[d],B=h;else n+=d,Q.push(d)}}if(f(this.cols),E)r+="</a>";A.innerHTML=r;let m="";if(e>=this.cols&&this.cols>0){let h=t(this.cols-1),g=h.bg,l=h.bgRgb;if(h.flags&32){if(g=h.fg,l=h.fgRgb,l===void 0&&g===256)g=7}m=Y(g,l)||""}let S=m?`0 1px 0 ${m}`:"";if(i>=0){if(m!==(this.prevRowBg[i]??""))A.style.background=m,A.style.boxShadow=S,this.prevRowBg[i]=m}else A.style.background=m,A.style.boxShadow=S}_buildScrollbackRowEl(A,t){let e=document.createElement("div");e.className="term-row term-scrollback-row";let s=A.getScrollbackLineLen(t);return this._buildRowContent(e,(i)=>A.getScrollbackCell(t,i),s,-1,-1),e}syncScrollback(A,t){let e=A.getScrollbackCount(),s=t?.rowHeight??0,i=t!==void 0&&s>0,r=t?.overscanRows??10,o=t?.scrollbackDiscardedCount!==void 0,n=t?.scrollbackDiscardedCount??0,Q=t&&t.clientHeight>0?t.clientHeight:this.rows*s,B=i?Math.floor(t.scrollTop/s):0,c=i?Math.ceil(Q/s):e,a=i?Math.max(0,Math.min(e,B-r)):0,E=i?Math.max(a,Math.min(e,B+c+r)):e,C=this.container.ownerDocument.getSelection();if(C!==null&&!C.isCollapsed&&(this.container.contains(C.anchorNode)||this.container.contains(C.focusNode))&&this._scrollbackRowEls.length>0)a=Math.min(a,Math.max(0,this._scrollbackStartKey-n)),E=Math.max(E,Math.min(e,this._scrollbackStartKey-n+this._scrollbackRowEls.length));let b=n+a;if(o&&e===this._renderedScrollbackCount&&n===this._renderedDiscardedCount&&b===this._scrollbackStartKey&&E-a===this._scrollbackRowEls.length)return;let m=new Map;for(let l=0;l<this._scrollbackRowEls.length;l++)m.set(this._scrollbackStartKey+l,this._scrollbackRowEls[l]);let S=n+E;for(let[l,I]of m)if(l<b||l>=S)I.remove();let h=[],g=this._scrollbackTopSpacer?.nextSibling??null;for(let l=a;l<E;l++){let I=n+l,p=e-1-l,w=this._buildScrollbackRowEl(A,p),u=m.get(I),d=w,x=!1;if(u&&u.innerHTML===w.innerHTML&&u.style.cssText===w.style.cssText)d=u;else if(u)u.replaceWith(w),x=!0;if(!x&&d!==g)this.container.insertBefore(d,g??this._scrollbackBottomSpacer);g=d.nextSibling,h.push(d)}if(this._scrollbackRowEls=h,this._scrollbackStartKey=b,this._renderedScrollbackCount=e,this._renderedDiscardedCount=n,this._scrollbackTopSpacer)this._scrollbackTopSpacer.style.height=`${a*s}px`;if(this._scrollbackBottomSpacer)this._scrollbackBottomSpacer.style.height=`${(e-E)*s}px`}render(A,t){let e=A.getRows(),s=A.getCols(),i=!1;if(e!==this.rows||s!==this.cols)this.setup(s,e),i=!0;this.syncScrollback(A,t);let r=A.getCursor(),o=r.visible,n=r.row!==this.prevCursorRow||r.col!==this.prevCursorCol;for(let B=0;B<this.rows;B++){let c=i||A.isDirtyRow(B),a=B===this.prevCursorRow&&n,E=B===r.row;if(c||a||E&&n){let C=E&&o?r.col:-1;this._buildRowContent(this.rowEls[B],(f)=>A.getCell(B,f),this.cols,C,B)}}if(this.prevCursorRow=r.row,this.prevCursorCol=r.col,i||A.isDirtyRow(this.rows-1)){let B=A.getCell(this.rows-1,this.cols-1),c=B.bg,a=B.bgRgb;if(B.flags&32){if(c=B.fg,a=B.fgRgb,a===void 0&&c===256)c=7}let E=Y(c,a)||"";if(E!==this.prevContainerBg)this.container.style.background=E,this.prevContainerBg=E}A.clearDirty()}}function G(A,t){return t.platform.startsWith("Mac")?A.metaKey:A.ctrlKey}var fA={ArrowUp:"\x1B[A",ArrowDown:"\x1B[B",ArrowRight:"\x1B[C",ArrowLeft:"\x1B[D",Home:"\x1B[H",End:"\x1B[F"},pA={ArrowUp:"\x1BOA",ArrowDown:"\x1BOB",ArrowRight:"\x1BOC",ArrowLeft:"\x1BOD",Home:"\x1BOH",End:"\x1BOF"},mA={Enter:"\r",Backspace:"",Tab:"\t",Escape:"\x1B",Insert:"\x1B[2~",Delete:"\x1B[3~",PageUp:"\x1B[5~",PageDown:"\x1B[6~",F1:"\x1BOP",F2:"\x1BOQ",F3:"\x1BOR",F4:"\x1BOS",F5:"\x1B[15~",F6:"\x1B[17~",F7:"\x1B[18~",F8:"\x1B[19~",F9:"\x1B[20~",F10:"\x1B[21~",F11:"\x1B[23~",F12:"\x1B[24~"};class K{constructor(A,t,e,s=()=>null){this.composing=!1,this.mouseButtons=0,this.focused=!1,this.element=A,this.onData=t,this.getBridge=e,this.getCellSize=s,this.textarea=document.createElement("textarea"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("autocomplete","off"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("spellcheck","false"),this.textarea.setAttribute("enterkeyhint","send"),this.textarea.setAttribute("tabindex","0"),this.textarea.setAttribute("aria-hidden","true");let i=this.textarea.style;i.position="absolute",i.left="-9999px",i.top="0",i.width="1px",i.height="1px",i.opacity="0",i.overflow="hidden",i.border="0",i.padding="0",i.margin="0",i.outline="none",i.resize="none",i.pointerEvents="none",i.caretColor="transparent",i.color="transparent",i.background="transparent",A.appendChild(this.textarea),this._onKeyDown=this.handleKeyDown.bind(this),this._onPaste=this.handlePaste.bind(this),this._onCompositionStart=this.handleCompositionStart.bind(this),this._onCompositionEnd=this.handleCompositionEnd.bind(this),this._onInput=this.handleInput.bind(this),this._onFocus=()=>{if(this.focused)return;if(this.focused=!0,this.element.classList.add("focused"),this.getBridge()?.focusEvents?.())this.onData("\x1B[I")},this._onBlur=()=>{if(this.focused=!1,this.element.classList.remove("focused"),this.stopMouseCapture(),this.getBridge()?.focusEvents?.())this.onData("\x1B[O")},this._onMouseDown=(r)=>this.handleMouse(r,"press"),this._onMouseMove=(r)=>{if(this.mouseButtons!==0)this.handleMouse(r,"move")},this._onMouseUp=(r)=>{if(this.mouseButtons===0)return;if(this.handleMouse(r,"release"),this.mouseButtons=r.buttons&7,this.mouseButtons===0)this.stopMouseCapture()},this._onWheel=(r)=>this.handleMouse(r,"wheel"),this.textarea.addEventListener("keydown",this._onKeyDown),this.textarea.addEventListener("paste",this._onPaste),this.textarea.addEventListener("compositionstart",this._onCompositionStart),this.textarea.addEventListener("compositionend",this._onCompositionEnd),this.textarea.addEventListener("input",this._onInput),this.textarea.addEventListener("focus",this._onFocus),this.textarea.addEventListener("blur",this._onBlur),this.element.addEventListener("mousedown",this._onMouseDown),this.element.addEventListener("wheel",this._onWheel,{passive:!1})}focus(){this.textarea.focus({preventScroll:!0})}destroy(){this.textarea.removeEventListener("keydown",this._onKeyDown),this.textarea.removeEventListener("paste",this._onPaste),this.textarea.removeEventListener("compositionstart",this._onCompositionStart),this.textarea.removeEventListener("compositionend",this._onCompositionEnd),this.textarea.removeEventListener("input",this._onInput),this.textarea.removeEventListener("focus",this._onFocus),this.textarea.removeEventListener("blur",this._onBlur),this.element.removeEventListener("mousedown",this._onMouseDown),this.stopMouseCapture(),this.element.removeEventListener("wheel",this._onWheel),this.element.classList.remove("focused"),this.textarea.remove()}handleKeyDown(A){if(this.composing)return;if((A.metaKey||A.ctrlKey)&&A.key==="c"){let e=window.getSelection();if(e&&e.toString().length>0)return}if((A.metaKey||A.ctrlKey)&&A.key==="v"){this.textarea.focus();return}if(A.metaKey&&!A.ctrlKey){if(A.key==="Backspace")A.preventDefault(),this.onData("\x15");else if(A.key==="a"){A.preventDefault();let e=window.getSelection();if(e){let s=document.createRange();s.selectNodeContents(this.element),e.removeAllRanges(),e.addRange(s)}}return}A.preventDefault();let t=this.keyToSequence(A);if(t)this.onData(t)}handlePaste(A){A.preventDefault();let t=A.clipboardData?.getData("text");if(!t)return;let e=this.getBridge();if(e&&e.bracketedPaste()){let s=t.replace(/\x1b/g,"");this.onData("\x1B[200~"+s+"\x1B[201~")}else this.onData(t)}handleCompositionStart(){this.composing=!0}handleCompositionEnd(A){if(this.composing=!1,A.data)this.onData(A.data);this.textarea.value=""}handleInput(){if(this.composing)return;let A=this.textarea.value;if(A)this.onData(A),this.textarea.value=""}handleMouse(A,t){let e=this.getBridge(),s=e?.mouseTracking?.()??0;if(!e||s===0||!e.mouseSgr?.())return;if(t==="press"&&G(A,this.element.ownerDocument.defaultView?.navigator??navigator)&&A.target instanceof Element&&A.target.closest(".term-link"))return;if(t==="press"&&(A.shiftKey||A.button>2))return;if(t==="release"&&A.button>2)return;let i=A.buttons&7;if(t==="move"&&(s!==1002||i===0))return;let r=this.element.ownerDocument.defaultView;if(!r)return;let o=this.element.querySelector(".term-row:not(.term-scrollback-row)"),n=this.element.getBoundingClientRect(),Q=o?.getBoundingClientRect(),B=this.getCellSize(),c,a,E,C;if(Q&&B)c=Q.left,a=Q.top,E=B.charWidth,C=B.rowHeight;else{let g=r.getComputedStyle(this.element),l=parseFloat(g.borderLeftWidth)||0,I=parseFloat(g.borderRightWidth)||0,p=parseFloat(g.borderTopWidth)||0,w=parseFloat(g.borderBottomWidth)||0,u=parseFloat(g.paddingLeft)||0,d=parseFloat(g.paddingRight)||0,x=parseFloat(g.paddingTop)||0,U=parseFloat(g.paddingBottom)||0;c=Q?.left??n.left+l+u,a=Q?.top??n.top+p+x,E=(n.width-l-I-u-d)/e.getCols(),C=(n.height-p-w-x-U)/e.getRows()}if(E<=0||C<=0)return;if(t==="press"){if(this.textarea.focus({preventScroll:!0}),!this.focused)this._onFocus();this.mouseButtons=i||(A.button===1?4:A.button===2?2:1),r.addEventListener("mousemove",this._onMouseMove),r.addEventListener("mouseup",this._onMouseUp)}let f=Math.max(1,Math.min(e.getCols(),Math.floor((A.clientX-c)/E)+1)),b=Math.max(1,Math.min(e.getRows(),Math.floor((A.clientY-a)/C)+1)),m=(A.shiftKey?4:0)|(A.altKey?8:0)|(A.ctrlKey?16:0),S,h="M";if(t==="wheel"){let g=A;if(Math.abs(g.deltaX)>Math.abs(g.deltaY)){if(g.deltaX===0)return;S=(g.deltaX<0?66:67)|m}else{if(g.deltaY===0)return;S=(g.deltaY<0?64:65)|m}}else if(S=(t==="move"?i&4?1:i&2?2:0:A.button===1?1:A.button===2?2:0)|m|(t==="move"?32:0),t==="release")h="m";A.preventDefault(),this.onData(`\x1B[<${S};${f};${b}${h}`)}stopMouseCapture(){this.mouseButtons=0;let A=this.element.ownerDocument.defaultView;A?.removeEventListener("mousemove",this._onMouseMove),A?.removeEventListener("mouseup",this._onMouseUp)}keyToSequence(A){if(A.ctrlKey&&!A.altKey&&!A.metaKey){if(A.key.length===1){let o=A.key.toLowerCase().charCodeAt(0);if(o>=97&&o<=122)return String.fromCharCode(o-96)}if(A.key==="[")return"\x1B";if(A.key==="\\")return"\x1C";if(A.key==="]")return"\x1D";if(A.key==="^")return"\x1E";if(A.key==="_")return"\x1F"}if(A.key==="Enter"&&A.shiftKey)return"\x1B[13;2u";if(A.key==="Tab"&&A.shiftKey)return"\x1B[Z";let t=mA[A.key];if(t)return A.altKey?"\x1B"+t:t;let e=this.getBridge(),r=(e&&e.cursorKeysApp()?pA:fA)[A.key];if(r)return A.altKey?"\x1B"+r:r;if(A.key.length===1&&!A.ctrlKey&&!A.metaKey)return A.altKey?"\x1B"+A.key:A.key;return null}}var bA={1:"bold",2:"dim",4:"italic",8:"underline",16:"blink",32:"reverse",64:"invisible",128:"strikethrough"};function xA(A){let t=[];for(let[e,s]of Object.entries(bA))if(A&Number(e))t.push(s);return t}var z=27;function SA(A){let t=[],e=Date.now(),s=0,i=0,r=()=>{if(s>i){let o=A.slice(i,s);if(o.length>0&&!/^[\x00-\x1f]+$/.test(o))t.push({ts:e,type:"text",raw:o.slice(0,60)})}};while(s<A.length){if(A.charCodeAt(s)!==z){s++;continue}r();let o=s;if(s++,s>=A.length)break;let n=A[s];if(n==="["){s++;let Q="";if(s<A.length&&(A[s]==="?"||A[s]===">"||A[s]==="!"))Q=A[s],s++;let B="";while(s<A.length&&(A.charCodeAt(s)>=48&&A.charCodeAt(s)<=59||A[s]===":"))B+=A[s],s++;while(s<A.length&&A.charCodeAt(s)>=32&&A.charCodeAt(s)<=47)s++;let c="";if(s<A.length&&A.charCodeAt(s)>=64&&A.charCodeAt(s)<=126)c=A[s],s++;let a=A.slice(o,s),E=B?B.split(/[;:]/).map(Number).filter((f)=>!isNaN(f)):[],C=c==="m"?"sgr":"csi";t.push({ts:e,type:C,raw:a,params:E.length>0?E:void 0,private:Q||void 0,final:c})}else if(n==="]"){s++;while(s<A.length&&A.charCodeAt(s)!==7&&!(A.charCodeAt(s)===z&&s+1<A.length&&A[s+1]==="\\"))s++;if(s<A.length){if(A.charCodeAt(s)===7)s++;else if(A.charCodeAt(s)===z)s+=2}let Q=A.slice(o,s);t.push({ts:e,type:"osc",raw:Q.slice(0,80)})}else if(n>=" "&&n<="~")s++,t.push({ts:e,type:"esc",raw:A.slice(o,s),final:n});else s++;i=s}return r(),t}var QA=500;class T{constructor(){this._traces=[],this._bridge=null,this._perf={frameCount:0,totalRenderMs:0,avgRenderMs:0,maxRenderMs:0,lastDirtyRows:0}}get traces(){return this._traces}get perf(){return this._perf}setBridge(A){this._bridge=A}traceWrite(A){let t=typeof A==="string"?A:new TextDecoder().decode(A),e=SA(t);for(let s of e)this._traces.push(s);if(this._traces.length>QA)this._traces=this._traces.slice(-QA)}recordRender(A,t){if(this._perf.frameCount++,this._perf.totalRenderMs+=A,this._perf.avgRenderMs=this._perf.totalRenderMs/this._perf.frameCount,A>this._perf.maxRenderMs)this._perf.maxRenderMs=A;this._perf.lastDirtyRows=t}resetPerf(){this._perf={frameCount:0,totalRenderMs:0,avgRenderMs:0,maxRenderMs:0,lastDirtyRows:0}}cell(A,t){if(!this._bridge)return null;let e=this._bridge.getCell(A,t);return{...e,charStr:e.chars??(e.char>=32?String.fromCodePoint(e.char):""),flagNames:xA(e.flags)}}row(A){if(!this._bridge)return null;let t=this._bridge.getCols(),e=[];for(let s=0;s<t;s++)e.push(this.cell(A,s));return e}grid(){if(!this._bridge)return null;let A=this._bridge.getCursor();return{rows:this._bridge.getRows(),cols:this._bridge.getCols(),cursor:A,altScreen:this._bridge.usingAltScreen(),scrollbackCount:this._bridge.getScrollbackCount()}}unhandled(){if(!this._bridge)return[];return this._bridge.getUnhandledSequences()}dump(A=50){let t=this._traces.slice(-A);console.group(`%cwterm debug — last ${t.length} traces`,"color: #569cd6; font-weight: bold");for(let e of t){let s=e.type==="sgr"?"%cSGR":e.type==="csi"?"%cCSI":e.type==="osc"?"%cOSC":e.type==="esc"?"%cESC":"%cTXT",i=e.type==="sgr"?"background:#2d5a27;color:#fff;padding:1px 4px;border-radius:2px":e.type==="csi"?"background:#1e4a7a;color:#fff;padding:1px 4px;border-radius:2px":"background:#555;color:#fff;padding:1px 4px;border-radius:2px",r=[e.private?`private=${e.private}`:"",e.params?`params=[${e.params}]`:"",e.final?`final=${e.final}`:""].filter(Boolean).join(" ");console.log(`${s} ${e.raw.slice(0,40)}`,i,r?` ${r}`:"")}console.groupEnd()}dumpUnhandled(){let A=this.unhandled();if(A.length===0){console.log("%cwterm debug — no unhandled sequences","color: #6a9955");return}console.group(`%cwterm debug — ${A.length} unhandled sequences`,"color: #d7ba7d; font-weight: bold");for(let t of A)console.log(` final=${t.final} private=${t.private||"-"} params=[${t.params.slice(0,t.paramCount)}]`);console.groupEnd()}}var yA=1000;class O{constructor(A,t={}){if(this.bridge=null,this.debug=null,this.renderer=null,this.input=null,this.rafId=null,this._synchronizedOutputTimer=null,this._synchronizedOutputState="idle",this._synchronizedOutputGeneration=0,this._rendererNeedsSetup=!1,this.resizeObserver=null,this._destroyed=!1,this._shouldScrollToBottom=!1,this._scrollbackDiscardedCount=0,this._programmaticScrollTop=null,this._pendingResizeScrollTop=null,this._rowHeight=0,this._charWidth=0,this.element=A,this._coreOption=t.core,this.wasmUrl=t.wasmUrl,this.cols=t.cols||80,this.rows=t.rows||24,this.autoResize=t.autoResize!==!1,this._debugEnabled=t.debug??!1,this.onData=t.onData||null,this.onTitle=t.onTitle||null,this.onResize=t.onResize||null,this._container=document.createElement("div"),this._container.className="term-grid",this.element.appendChild(this._container),this.element.classList.add("wterm"),t.cursorBlink)this.element.classList.add("cursor-blink");this._onClickFocus=(e)=>{let s=e.target;if(s instanceof Element&&s.closest(".term-link")){if(G(e,this.element.ownerDocument.defaultView?.navigator??navigator)||e.detail===0)return;e.preventDefault()}let i=window.getSelection();if(!i||i.isCollapsed)this.input?.focus()},this.element.addEventListener("click",this._onClickFocus),this._onModifierChange=(e)=>{this.element.classList.toggle("link-modifier-active",G(e,this.element.ownerDocument.defaultView?.navigator??navigator))},this._onWindowBlur=()=>{this.element.classList.remove("link-modifier-active")},this.element.ownerDocument.addEventListener("keydown",this._onModifierChange),this.element.ownerDocument.addEventListener("keyup",this._onModifierChange),this.element.ownerDocument.defaultView?.addEventListener("blur",this._onWindowBlur),this._onScroll=()=>{if(this._pendingResizeScrollTop!==null)return;if(this._programmaticScrollTop!==null&&this.element.scrollTop===this._programmaticScrollTop){this._programmaticScrollTop=null;return}this._programmaticScrollTop=null,this._shouldScrollToBottom=!1,this._scheduleRender()},this.element.addEventListener("scroll",this._onScroll,{passive:!0})}async init(){try{if(this._coreOption)this.bridge=this._coreOption;else this.bridge=await L.load(this.wasmUrl);if(this._destroyed)return this;if(this.bridge.init(this.cols,this.rows),this._debugEnabled)this.debug=new T,this.debug.setBridge(this.bridge),globalThis.__wterm=this;if(this._setRowHeight(),this._measureCharSize(),this.renderer=new N(this._container),this.renderer.setup(this.cols,this.rows),this.input=new K(this.element,(A)=>{if(this._scrollToBottom(),this.onData)this.onData(A);else this.write(A)},()=>this.bridge,()=>this._charWidth>0&&this._rowHeight>0?{charWidth:this._charWidth,rowHeight:this._rowHeight}:null),this.autoResize)this._setupResizeObserver();else this._lockHeight();this.input.focus(),this._initialRender()}catch(A){throw this.destroy(),Error(`wterm: failed to initialize: ${A instanceof Error?A.message:A}`)}return this}_isScrolledToBottom(){let A=this.element;return A.scrollHeight-A.scrollTop-A.clientHeight<5}_scrollToBottom(){let A=this.element,t=A.scrollHeight-A.clientHeight;if(t<=0){this._setScrollTop(0);return}this._setScrollTop(t)}_setScrollTop(A){if(this.element.scrollTop===A)return;this._programmaticScrollTop=A,this.element.scrollTop=A}write(A){if(!this.bridge)return;if(this.debug)this.debug.traceWrite(A);this._shouldScrollToBottom=this._isScrolledToBottom();let t,e=!1,s=()=>{let o=this._drainResponses();if(!e&&o.hasError)e=!0,t=o.error};if(typeof A==="string")this.bridge.writeString(A,s);else this.bridge.writeRaw(A,s);let i=this.bridge.synchronizedOutput?.()??!1,r=this.bridge.synchronizedOutputGeneration?.()??0;if(this._updateSynchronizedOutput(i,r),this._synchronizedOutputState!=="held")this._setupRendererIfNeeded(),this._scheduleRender();if(s(),e)throw t}resize(A,t){if(!this.bridge)return;this._shouldScrollToBottom=this._pendingResizeScrollTop===null&&this._isScrolledToBottom(),this.cols=A,this.rows=t,this.bridge.resize(A,t);let e=this.bridge.synchronizedOutput?.()??!1,s=this.bridge.synchronizedOutputGeneration?.()??0;if(this._updateSynchronizedOutput(e,s))this._rendererNeedsSetup=!0;else this._setupRenderer(A,t),this._scheduleRender();if(this.onResize)this.onResize(A,t)}focus(){if(this.input)this.input.focus();else this.element.focus()}_scheduleRender(){if(this.rafId!=null)return;this.rafId=requestAnimationFrame(()=>{this.rafId=null,this._doRender()})}_cancelScheduledRender(){if(this.rafId!=null)cancelAnimationFrame(this.rafId),this.rafId=null}_updateSynchronizedOutput(A,t){if(!A){if(this._synchronizedOutputState==="held")this._cancelSynchronizedOutputFallback();return this._synchronizedOutputState="idle",!1}if(this._synchronizedOutputState==="held"&&t!==this._synchronizedOutputGeneration)return this._armSynchronizedOutputFallback(t),!0;else if(this._synchronizedOutputState==="passthrough"&&t!==this._synchronizedOutputGeneration)this._synchronizedOutputState="idle";if(this._synchronizedOutputState!=="idle")return this._synchronizedOutputState==="held";return this._synchronizedOutputState="held",this._cancelScheduledRender(),this._armSynchronizedOutputFallback(t),!0}_armSynchronizedOutputFallback(A){this._cancelSynchronizedOutputFallback(),this._synchronizedOutputGeneration=A,this._synchronizedOutputTimer=setTimeout(()=>{if(this._synchronizedOutputState!=="held"||this._synchronizedOutputGeneration!==A)return;this._synchronizedOutputTimer=null,this._synchronizedOutputState="passthrough",this._setupRendererIfNeeded(),this._cancelScheduledRender(),this._doRender()},yA)}_cancelSynchronizedOutputFallback(){if(this._synchronizedOutputTimer==null)return;clearTimeout(this._synchronizedOutputTimer),this._synchronizedOutputTimer=null}_setupRendererIfNeeded(){if(!this._rendererNeedsSetup)return;this._setupRenderer(this.cols,this.rows),this._rendererNeedsSetup=!1}_setupRenderer(A,t){if(!this._shouldScrollToBottom&&this._pendingResizeScrollTop===null)this._pendingResizeScrollTop=this.element.scrollTop;this.renderer?.setup(A,t)}_initialRender(){this._doRender()}_doRender(){if(!this.bridge||!this.renderer)return;let A=0,t=this.debug?performance.now():0;if(this.debug){for(let B=0;B<this.rows;B++)if(this.bridge.isDirtyRow(B))A++}let e=this._rowHeight||17,s=this.bridge.getScrollbackCount(),i=this.bridge.getScrollbackDiscardedCount?.(),r=i!==void 0&&i>=this._scrollbackDiscardedCount?i-this._scrollbackDiscardedCount:0;if(i!==void 0)this._scrollbackDiscardedCount=i;let o=this._pendingResizeScrollTop!==null?this._pendingResizeScrollTop:this.element.scrollTop;if(!this._shouldScrollToBottom&&r>0)if(o=Math.max(0,o-r*e),this._pendingResizeScrollTop!==null)this._pendingResizeScrollTop=o;else this._setScrollTop(o);if(this.renderer.render(this.bridge,{scrollTop:this._shouldScrollToBottom?Math.max(0,(s+this.rows)*e-this.element.clientHeight):o,clientHeight:this.element.clientHeight,rowHeight:e,scrollbackDiscardedCount:i}),this.debug)this.debug.recordRender(performance.now()-t,A);let n=s>0;if(this.element.classList.toggle("has-scrollback",n),this._shouldScrollToBottom)this._scrollToBottom();else if(this._pendingResizeScrollTop!==null){let B=this._pendingResizeScrollTop;this._pendingResizeScrollTop=null,this._setScrollTop(B)}else if(!n&&this.element.scrollTop!==0)this.element.scrollTop=0;let Q=this.bridge.getTitle();if(Q!==null&&this.onTitle)this.onTitle(Q);this._drainResponses()}_drainResponses(){if(!this.bridge)return{hasError:!1};let A,t,e=!1;while((A=this.bridge.getResponse())!==null)try{if(this.onData)this.onData(A)}catch(s){if(!e)e=!0,t=s}return{hasError:e,error:t}}_lockHeight(){let A=this._rowHeight||17,t=this.rows*A,e=getComputedStyle(this.element),s=(parseFloat(e.paddingTop)||0)+(parseFloat(e.paddingBottom)||0);if(e.boxSizing==="border-box")s+=(parseFloat(e.borderTopWidth)||0)+(parseFloat(e.borderBottomWidth)||0);this.element.style.height=`${t+s}px`}_setRowHeight(){let A=document.createElement("div");A.className="term-row",A.style.visibility="hidden",A.style.position="absolute",A.textContent="W",this._container.appendChild(A);let t=A.getBoundingClientRect().height;if(A.remove(),t>0){let e=Math.ceil(t);this._rowHeight=e,this.element.style.setProperty("--term-row-height",`${e}px`)}}_measureCharSize(){let A=document.createElement("div");A.className="term-row",A.style.visibility="hidden",A.style.position="absolute";let t=document.createElement("span");t.textContent="W",A.appendChild(t),this._container.appendChild(A);let e=t.getBoundingClientRect().width,s=A.getBoundingClientRect().height;if(A.remove(),e===0||s===0)return null;return this._charWidth=e,this._rowHeight=s,{charWidth:e,rowHeight:s}}_setupResizeObserver(){let A=this._measureCharSize();if(!A)return;let{charWidth:t,rowHeight:e}=A;this.resizeObserver=new ResizeObserver((s)=>{let i=this._measureCharSize();if(i)t=i.charWidth,e=i.rowHeight;for(let r of s){let{width:o,height:n}=r.contentRect,Q=Math.max(1,Math.floor(o/t)),B=Math.max(1,Math.floor(n/e));if(Q!==this.cols||B!==this.rows)this.resize(Q,B)}}),this.resizeObserver.observe(this.element)}destroy(){if(this._destroyed=!0,this._cancelScheduledRender(),this._cancelSynchronizedOutputFallback(),this.resizeObserver)this.resizeObserver.disconnect();if(this.input)this.input.destroy();if(this.element.removeEventListener("click",this._onClickFocus),this.element.removeEventListener("scroll",this._onScroll),this.element.ownerDocument.removeEventListener("keydown",this._onModifierChange),this.element.ownerDocument.removeEventListener("keyup",this._onModifierChange),this.element.ownerDocument.defaultView?.removeEventListener("blur",this._onWindowBlur),this.element.classList.remove("link-modifier-active"),this.element.innerHTML="",this.debug&&globalThis.__wterm===this)delete globalThis.__wterm;this.debug=null}}var k=16,W='Serve the binary from your app and pass its URL: GhosttyCore.load({ wasmPath: "/ghostty-vt.wasm" }). The file ships with the package as @wterm/ghostty/ghostty-vt.wasm. See the Bundlers section of the @wterm/ghostty README.';function _A(){return new URL("../wasm/ghostty-vt.wasm",import.meta.url).href}function DA(A){if(A.byteLength<4)return!1;let t=new Uint8Array(A,0,4);return t[0]===0&&t[1]===97&&t[2]===115&&t[3]===109}async function aA(A){let t=A??_A();if(A===void 0&&t.startsWith("file:")&&typeof document<"u")throw Error(`@wterm/ghostty: your bundler resolved the WASM URL to ${t}, a path on the machine that built the bundle, so the browser cannot fetch it. ${W}`);let e=await fetch(t);if(!e.ok)throw Error(`@wterm/ghostty: fetching ${t} returned ${e.status} ${e.statusText}. ${W}`);let s=await e.arrayBuffer();if(!DA(s))throw Error(`@wterm/ghostty: ${t} did not return a WASM module. ${W}`);let i,{instance:r}=await WebAssembly.instantiate(s,{env:{log(n,Q){let B=new TextDecoder().decode(new Uint8Array(i.buffer,n,Q));console.log("[ghostty-vt]",B)}}});return i=r.exports.memory,{exports:r.exports,instance:r}}function V(A,t){return{codepoint:A.getUint32(t,!0),fgR:A.getUint8(t+4),fgG:A.getUint8(t+5),fgB:A.getUint8(t+6),bgR:A.getUint8(t+7),bgG:A.getUint8(t+8),bgB:A.getUint8(t+9),flags:A.getUint8(t+10),width:A.getUint8(t+11),colorFlags:A.getUint8(t+12),hasGrapheme:(A.getUint8(t+13)&1)!==0,hasHyperlink:(A.getUint8(t+13)&2)!==0}}function _(A,t){return A.exports.alloc_buffer(t)}function D(A,t,e){A.exports.free_buffer(t,e)}function hA(A,t,e){let s=new TextEncoder().encode(e);Z(A,t,s)}function Z(A,t,e){if(e.length===0)return;let s=_(A,e.length);if(s===0)return;new Uint8Array(A.exports.memory.buffer,s,e.length).set(e),A.exports.write(t,s,e.length),D(A,s,e.length)}var R=256,lA=256,X=1024,LA="#d4d4d4",kA="#1e1e1e";function P(A,t,e){return A<<16|t<<8|e}var q={char:32,fg:R,bg:R,flags:0,width:1};function cA(A,t){if(!/^#[0-9a-f]{6}$/i.test(A))throw Error(`@wterm/ghostty: ${t} must be a #RRGGBB color`);return Number.parseInt(A.slice(1),16)}class H{constructor(A,t){this.termPtr=0,this._viewportBufPtr=0,this._viewportBufSize=0,this._viewportView=null,this._viewportStale=!0,this._cols=0,this._rows=0,this._scrollbackBufPtr=0,this._scrollbackBufSize=0,this._scrollbackView=null,this._scrollbackOffset=-1,this._scrollbackLen=0,this._graphemeBufPtr=0,this._graphemeBufSize=lA,this._hyperlinkBufPtr=0,this._hyperlinkBufSize=X,this.wasm=A,this._options=t,this._foregroundRgb=cA(t.foregroundColor??LA,"foregroundColor"),this._backgroundRgb=cA(t.backgroundColor??kA,"backgroundColor")}static async load(A={}){let t=await aA(A.wasmPath);return new H(t,A)}init(A,t){this._cols=A,this._rows=t;let e=this._options.scrollbackLimit??1e4;if(this.termPtr=this.wasm.exports.init(A,t,e,this._foregroundRgb,this._backgroundRgb),this._graphemeBufPtr=_(this.wasm,lA),this._hyperlinkBufPtr!==0)D(this.wasm,this._hyperlinkBufPtr,this._hyperlinkBufSize);this._hyperlinkBufSize=X,this._hyperlinkBufPtr=_(this.wasm,X),this._allocViewportBuffer(),this._invalidate()}resize(A,t){this._cols=A,this._rows=t,this.wasm.exports.resize(this.termPtr,A,t),this._allocViewportBuffer(),this._invalidate()}writeString(A){hA(this.wasm,this.termPtr,A),this._invalidate()}writeRaw(A){Z(this.wasm,this.termPtr,A),this._invalidate()}getCell(A,t){this._ensureViewport();let e=this._viewportView;if(!e)return q;let i=(A*this._cols+t)*k;if(i+k>this._viewportBufSize)return q;let r=V(e,i);if(r.codepoint===0&&r.flags===0&&r.colorFlags===0&&!r.hasHyperlink&&r.width!==0)return q;let o={char:r.codepoint||32,fg:R,bg:R,flags:r.flags,width:r.width};if(r.hasGrapheme)o.chars=this._readGrapheme(A,t);if(r.hasHyperlink)Object.assign(o,this._readHyperlink(A,t,!1));if(r.colorFlags&1)o.fgRgb=P(r.fgR,r.fgG,r.fgB);if(r.colorFlags&2)o.bgRgb=P(r.bgR,r.bgG,r.bgB);return o}isDirtyRow(A){return this._ensureViewport(),this.wasm.exports.is_dirty_row(this.termPtr,A)!==0}clearDirty(){this.wasm.exports.clear_dirty(this.termPtr),this._viewportStale=!0}getCols(){return this._cols}getRows(){return this._rows}getCursor(){return this._ensureViewport(),{row:this.wasm.exports.get_cursor_row(this.termPtr),col:this.wasm.exports.get_cursor_col(this.termPtr),visible:this.wasm.exports.get_cursor_visible(this.termPtr)!==0}}cursorKeysApp(){return this.wasm.exports.cursor_keys_app(this.termPtr)!==0}bracketedPaste(){return this.wasm.exports.bracketed_paste(this.termPtr)!==0}usingAltScreen(){return this.wasm.exports.using_alt_screen(this.termPtr)!==0}mouseTracking(){let A=this.wasm.exports.mouse_tracking(this.termPtr);return A===1000||A===1002?A:0}mouseSgr(){return this.wasm.exports.mouse_sgr(this.termPtr)!==0}focusEvents(){return this.wasm.exports.focus_events(this.termPtr)!==0}synchronizedOutput(){return this.wasm.exports.synchronized_output(this.termPtr)!==0}synchronizedOutputGeneration(){return this.wasm.exports.synchronized_output_generation(this.termPtr)}getTitle(){return null}getResponse(){let t=_(this.wasm,4096);if(t===0)return null;let e=this.wasm.exports.read_response(this.termPtr,t,4096);if(e===0)return D(this.wasm,t,4096),null;let s=new Uint8Array(this.wasm.exports.memory.buffer,t,e),i=new TextDecoder().decode(s);return D(this.wasm,t,4096),i}getScrollbackCount(){return this.wasm.exports.get_scrollback_count(this.termPtr)}getScrollbackDiscardedCount(){return this.wasm.exports.get_scrollback_discarded_count(this.termPtr)}getScrollbackCell(A,t){let e=this._ensureScrollbackLine(A),s=this._scrollbackView;if(!s||t>=e)return q;let i=V(s,t*k),r={char:i.codepoint||32,fg:R,bg:R,flags:i.flags,width:i.width};if(i.hasGrapheme)r.chars=this._readScrollbackGrapheme(A,t);if(i.hasHyperlink)Object.assign(r,this._readHyperlink(A,t,!0));if(i.colorFlags&1)r.fgRgb=P(i.fgR,i.fgG,i.fgB);if(i.colorFlags&2)r.bgRgb=P(i.bgR,i.bgG,i.bgB);return r}getScrollbackLineLen(A){return this._ensureScrollbackLine(A)}getUnhandledSequences(){return[]}_invalidate(){this._viewportStale=!0,this._scrollbackOffset=-1}_decodeGrapheme(A){if(A===0||this._graphemeBufPtr===0)return;return new TextDecoder().decode(new Uint8Array(this.wasm.exports.memory.buffer,this._graphemeBufPtr,A))}_ensureGraphemeBuffer(A){if(A<=this._graphemeBufSize)return;if(this._graphemeBufPtr!==0)D(this.wasm,this._graphemeBufPtr,this._graphemeBufSize);this._graphemeBufSize=A,this._graphemeBufPtr=_(this.wasm,A)}_ensureHyperlinkBuffer(A){if(A<=this._hyperlinkBufSize)return;if(this._hyperlinkBufPtr!==0)D(this.wasm,this._hyperlinkBufPtr,this._hyperlinkBufSize);this._hyperlinkBufSize=A,this._hyperlinkBufPtr=_(this.wasm,A)}_readHyperlink(A,t,e){if(this._hyperlinkBufPtr===0)return;let s=e?this.wasm.exports.get_scrollback_hyperlink:this.wasm.exports.get_viewport_hyperlink,i=s(this.termPtr,A,t,this._hyperlinkBufPtr,this._hyperlinkBufSize);if(i>this._hyperlinkBufSize){if(this._ensureHyperlinkBuffer(i),this._hyperlinkBufPtr===0)return;i=s(this.termPtr,A,t,this._hyperlinkBufPtr,this._hyperlinkBufSize)}if(i===0||i>this._hyperlinkBufSize)return;let r=new TextDecoder().decode(new Uint8Array(this.wasm.exports.memory.buffer,this._hyperlinkBufPtr,i)),[o,n="",Q=""]=r.split("\x00");if(!o)return;let B=n?`e\x00${n}\x00${o}`:`g\x00${Q}\x00${o}`;return{linkUri:o,linkId:n||void 0,linkKey:B}}_readGrapheme(A,t){if(this._graphemeBufPtr===0||!this.wasm.exports.get_viewport_grapheme)return;let e=this.wasm.exports.get_viewport_grapheme(this.termPtr,A,t,this._graphemeBufPtr,this._graphemeBufSize);if(e>this._graphemeBufSize)this._ensureGraphemeBuffer(e),e=this.wasm.exports.get_viewport_grapheme(this.termPtr,A,t,this._graphemeBufPtr,this._graphemeBufSize);return this._decodeGrapheme(e)}_readScrollbackGrapheme(A,t){if(this._graphemeBufPtr===0||!this.wasm.exports.get_scrollback_grapheme)return;let e=this.wasm.exports.get_scrollback_grapheme(this.termPtr,A,t,this._graphemeBufPtr,this._graphemeBufSize);if(e>this._graphemeBufSize)this._ensureGraphemeBuffer(e),e=this.wasm.exports.get_scrollback_grapheme(this.termPtr,A,t,this._graphemeBufPtr,this._graphemeBufSize);return this._decodeGrapheme(e)}_allocViewportBuffer(){if(this._viewportBufPtr!==0)D(this.wasm,this._viewportBufPtr,this._viewportBufSize);if(this._viewportBufSize=this._cols*this._rows*k,this._viewportBufPtr=_(this.wasm,this._viewportBufSize),this._viewportView=null,this._viewportStale=!0,this._scrollbackBufPtr!==0)D(this.wasm,this._scrollbackBufPtr,this._scrollbackBufSize);this._scrollbackBufSize=this._cols*k,this._scrollbackBufPtr=_(this.wasm,this._scrollbackBufSize),this._scrollbackView=null,this._scrollbackOffset=-1}_ensureScrollbackLine(A){if(this._scrollbackBufPtr===0)return 0;if(this._scrollbackOffset!==A)this._scrollbackLen=this.wasm.exports.get_scrollback_line(this.termPtr,A,this._scrollbackBufPtr,this._cols),this._scrollbackOffset=A;if(this._scrollbackView?.buffer!==this.wasm.exports.memory.buffer)this._scrollbackView=new DataView(this.wasm.exports.memory.buffer,this._scrollbackBufPtr,this._scrollbackBufSize);return this._scrollbackLen}_ensureViewport(){if(this._viewportStale)this.wasm.exports.update(this.termPtr),this.wasm.exports.get_viewport(this.termPtr,this._viewportBufPtr),this._viewportStale=!1;if(this._viewportView?.buffer!==this.wasm.exports.memory.buffer)this._viewportView=new DataView(this.wasm.exports.memory.buffer,this._viewportBufPtr,this._viewportBufSize)}}var v=null,j=null,F=()=>new Promise((A)=>requestAnimationFrame(()=>requestAnimationFrame(()=>A(!0)))),RA={async boot(A){j=A.core==="lite"?await L.load():await H.load({wasmPath:A.wasmUrl,foregroundColor:A.foreground,backgroundColor:A.background});let t=document.getElementById("term");if(v=new O(t,{cols:A.cols,rows:A.rows,core:j,autoResize:!1,cursorBlink:!1,onData:()=>{}}),await v.init(),t.classList.add("focused"),document.fonts?.ready)await document.fonts.ready;return await F(),!0},measure(){let A=document.createElement("div");A.className="term-row",A.style.cssText="position:absolute;visibility:hidden";let t=document.createElement("span");t.textContent="W",A.appendChild(t),document.querySelector(".term-grid").appendChild(A);let e=t.getBoundingClientRect().width,s=A.getBoundingClientRect().height;return A.remove(),{w:e,h:s}},layout(A,t,e,s,i,r){let o=document.getElementById("frame");if(o.style.width=`${A}px`,o.style.height=`${t}px`,i!==void 0&&r!==void 0)o.style.setProperty("--pad-x",`${i}px`),o.style.setProperty("--pad-y",`${r}px`);let n=document.getElementById("browser"),Q=document.getElementById("stage"),B=Q?/column/.test(getComputedStyle(Q).flexDirection):!1,c=getComputedStyle(o).position==="absolute";if(n&&!c)if(B)n.style.width=`${A}px`;else n.style.height=`${t}px`;let a=document.getElementById("term");return a.style.width=`${e}px`,a.style.height=`${s}px`,!0},browserOffset(A,t,e,s){let i=document.getElementById("browser");if(!i)return!1;return i.style.left=`${A}px`,i.style.top=`${t}px`,i.style.width=`${e}px`,i.style.height=`${s}px`,!0},keys(A){let t=document.getElementById("keys");if(!t)return!1;return t.replaceChildren(...A.map((e)=>Object.assign(document.createElement("span"),{textContent:e}))),!0},zoom(A){let t=document.getElementById("zoom"),e=document.getElementById("term");if(!A)t.style.transform="";else{let{clientWidth:s,clientHeight:i}=e,r=Math.min(s/A.w,i/A.h),o=(s-A.w*r)/2-A.x*r,n=(i-A.h*r)/2-A.y*r;o=Math.min(0,Math.max(s-s*r,o)),n=Math.min(0,Math.max(i-i*r,n)),t.style.transform=`translate(${o}px, ${n}px) scale(${r})`}return F()},focus(A){return document.getElementById("stage")?.classList.toggle("front-browser",A==="browser"),!0},browserFrame(A,t){let e=document.getElementById("bframe");if(!e)return Promise.resolve(!1);if(t!==void 0){let s=document.getElementById("browser-url");if(s)s.textContent=t}return new Promise((s)=>{e.onload=()=>F().then(()=>s(!0)),e.onerror=()=>s(!1),e.src=A})},async applyUrl(A){let t=await(await fetch(A)).json();for(let e of t)if(e.type==="o")v.write(e.data);else if(e.type==="r"){let[s,i]=e.data.split("x").map(Number);if(s>0&&i>0)v.resize(s,i)}return await F(),!0},async writeUrl(A){return v.write(await(await fetch(A)).text()),await F(),!0},title(A){let t=document.querySelector("#bar .title");if(!t)return!1;return t.textContent=A,!0},syncing(){return j?.synchronizedOutput?.()??!1},background(A){return document.documentElement.style.background=A,document.body.style.background=A,F()},cursor(A){return document.getElementById("blink").textContent=A?"":".wterm.focused .term-cursor{background:transparent!important;color:inherit!important;outline:none!important}",!0}};window.__vt=RA;
1
+ var tA="AGFzbQEAAAABQAtgAAF/YAAAYAF/AX9gAX8AYAJ/fwBgBH9/f38AYAN/f38AYAJ/fwF/YAV/f39/fwBgBH9/f38Bf2ADf39/AX8DQUAAAAAAAAEAAAICAAAAAAACAgICAAAAAAAAAAAAAAAAAAAAAAEAAAMDBAQFBQUEBgcBCAkGAQEECgYGBAQDAAQEBAUBcAEBAQUDAQBkBgkBfwFBgIDAAAsH/gUsBm1lbW9yeQIACmdldE1heENvbHMAAAtnZXRDZWxsU2l6ZQABDmdldERlYnVnTG9nTWF4AAIUZ2V0RGVidWdMb2dFbnRyeVNpemUAARBnZXREZWJ1Z0xvZ0NvdW50AAMOZ2V0RGVidWdMb2dQdHIABA1jbGVhclJlc3BvbnNlAAUOZ2V0UmVzcG9uc2VMZW4ABg5nZXRSZXNwb25zZVB0cgAHFGdldFNjcm9sbGJhY2tMaW5lTGVuAAgRZ2V0U2Nyb2xsYmFja0xpbmUACRtnZXRTY3JvbGxiYWNrRGlzY2FyZGVkQ291bnQAChJnZXRTY3JvbGxiYWNrQ291bnQACxlnZXRIeXBlcmxpbmtSZWplY3RlZENvdW50AAwRZ2V0SHlwZXJsaW5rQ291bnQADRRnZXRIeXBlcmxpbmtDYXBhY2l0eQAODGdldExpbmtJZExlbgAPDGdldExpbmtJZFB0cgAQDWdldExpbmtVcmlMZW4AEQ1nZXRMaW5rVXJpUHRyABIPZ2V0VGl0bGVDaGFuZ2VkABMLZ2V0VGl0bGVMZW4AFAtnZXRUaXRsZVB0cgAVH2dldFN5bmNocm9uaXplZE91dHB1dEdlbmVyYXRpb24AFhVnZXRTeW5jaHJvbml6ZWRPdXRwdXQAFw5nZXRGb2N1c0V2ZW50cwAYC2dldE1vdXNlU2dyABkQZ2V0TW91c2VUcmFja2luZwAaEWdldFVzaW5nQWx0U2NyZWVuABsRZ2V0QnJhY2tldGVkUGFzdGUAHBBnZXRDdXJzb3JLZXlzQXBwAB0HZ2V0Um93cwAeB2dldENvbHMAHxBnZXRDdXJzb3JWaXNpYmxlACAMZ2V0Q3Vyc29yQ29sACEMZ2V0Q3Vyc29yUm93ACIKY2xlYXJEaXJ0eQAjC2dldERpcnR5UHRyACQKZ2V0R3JpZFB0cgAlCndyaXRlQnl0ZXMAJg5nZXRXcml0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AzsB9rGYgQAMAQtBACADOwH2sZiBAAsgAUECaiEBDAALC+YBAQJ/I4CAgIAAQRBrIgIkgICAgABBACEDIAJBADoACyACIAE6AAkgAiAAOgAIIAJCADcDACACQQAtAKCK8IAAIgE6AAogAUEEIAFBBEkbQQF0IQECQANAIAEgA0YNASACIANqIANB/InwgABqLwEAOwEAIANBAmohAwwACwtBAC0AlMSggQAiA0EMbCIBIAIpAwA3AeaumIEAIAFB7q6YgQBqIAJBCGooAgA2AQBBACADQQFqQR9xOgCUxKCBAEEAQQAoAsyumIEAQQFqIgNBfyADGzYCzK6YgQAgAkEQaiSAgICAAAt4AQJ/AkAgAEH//wNxIgJBAC8B9ofwgABPDQAgAkGAGGxB9IfAgABqIQBBACEDAkADQCADQQAvAfSH8IAATw0BIAAgASkCADcCACAAQQhqIAFBCGooAgA2AgAgAEEMaiEAIANBAWohAwwACwsgAkEBOgD4h/CAAAsLsAIBA38CQCAAQf//A3EiBEEALwH2h/CAAE8NACABQf//A3EiBUEALwH0h/CAACIAIAUgAEkbIQECQCAFIAJB//8DcSIGIAAgBiAASRsiBk8NACABIARBgBhsQfSHwIAAaiIFIAFBDGxqLQAJRSABQf//A3FBAEdxayEBIAJB//8DcSAATw0AAkAgBSAGQQxsai0ACQ0AIAZBAWohBgwBCyAGIAUgBkF/akH//wNxQQxsai0ACUECRmohBgtBACAGQf//A3EiACABQf//A3EiAmsiASABIABLGyEBIARBgBhsIAJBDGxqQfSHwIAAaiEAAkADQCABRQ0BIAAgAykCADcCACAAQQhqIANBCGooAgA2AgAgAEEMaiEAIAFBf2ohAQwACwsgBEEBOgD4h/CAAAsL4QEBBH8CQCACQf//A3FFDQAgAUH//wNxIABB//8DcU0NACABIABrIgQgAkH//wNxIgIgBEH//wNxIgQgAiAESRsiBWtB//8DcSEGQQAhAgNAAkAgBiACRw0AIAUgAGpB//8DcSECA0AgAEH//wNxIAJPDQMgACADEKmAgIAAIABBAWohAAwACwsgASACQX9zaiIHQf//A3EhBAJAQYAYRQ0AIARBgBhsQfSHwIAAaiAHIAVrQf//A3FBgBhsQfSHwIAAakGAGPwKAAALIARB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";function dA(A){let t=atob(A),e=new Uint8Array(t.length);for(let s=0;s<t.length;s++)e[s]=t.charCodeAt(s);return e.buffer}class k{get dv(){if(this._dvBuffer!==this.memory.buffer)this._dvBuffer=this.memory.buffer,this._dv=new DataView(this.memory.buffer);return this._dv}constructor(A){this.gridPtr=0,this.dirtyPtr=0,this.writeBufferPtr=0,this.cellSize=12,this.maxCols=256,this.encoder=new TextEncoder,this.decoder=new TextDecoder,this._dvBuffer=null,this.linkCache=new Map,this.exports=A.exports,this.memory=this.exports.memory}static async load(A){let t;if(A){let s=await fetch(A);if(!s.ok)throw Error(`[wterm] Failed to load WASM from ${A}: ${s.status} ${s.statusText}`);t=await s.arrayBuffer()}else t=dA(tA);let{instance:e}=await WebAssembly.instantiate(t);return new k(e)}init(A,t){this.exports.init(A,t),this.linkCache.clear(),this._updatePointers()}_updatePointers(){this.gridPtr=this.exports.getGridPtr(),this.dirtyPtr=this.exports.getDirtyPtr(),this.writeBufferPtr=this.exports.getWriteBuffer(),this.cellSize=this.exports.getCellSize(),this.maxCols=this.exports.getMaxCols()}writeString(A,t){let e=this.encoder.encode(A);this.writeRaw(e,t)}writeRaw(A,t){let e=0;while(e<A.length){let s=Math.min(A.length-e,8192);new Uint8Array(this.memory.buffer,this.writeBufferPtr,8192).set(A.subarray(e,e+s)),this.exports.writeBytes(s),e+=s,t?.()}}getCell(A,t){let e=this.gridPtr+(A*this.maxCols+t)*this.cellSize,s=this.dv,i={char:s.getUint32(e,!0),fg:s.getUint16(e+4,!0),bg:s.getUint16(e+6,!0),flags:s.getUint8(e+8),width:s.getUint8(e+9)};return Object.assign(i,this._readLink(s.getUint16(e+10,!0))),i}isDirtyRow(A){return new Uint8Array(this.memory.buffer,this.dirtyPtr,256)[A]!==0}clearDirty(){this.exports.clearDirty()}getCursor(){return{row:this.exports.getCursorRow(),col:this.exports.getCursorCol(),visible:this.exports.getCursorVisible()!==0}}getCols(){return this.exports.getCols()}getRows(){return this.exports.getRows()}cursorKeysApp(){return this.exports.getCursorKeysApp()!==0}bracketedPaste(){return this.exports.getBracketedPaste()!==0}usingAltScreen(){return this.exports.getUsingAltScreen()!==0}mouseTracking(){let A=this.exports.getMouseTracking();return A===1000||A===1002?A:0}mouseSgr(){return this.exports.getMouseSgr()!==0}focusEvents(){return this.exports.getFocusEvents()!==0}synchronizedOutput(){return this.exports.getSynchronizedOutput()!==0}synchronizedOutputGeneration(){return this.exports.getSynchronizedOutputGeneration()}getTitle(){if(this.exports.getTitleChanged()===0)return null;let A=this.exports.getTitlePtr(),t=this.exports.getTitleLen(),e=new Uint8Array(this.memory.buffer,A,t);return this.decoder.decode(e)}getResponse(){let A=this.exports.getResponseLen();if(A===0)return null;let t=this.exports.getResponsePtr(),e=new Uint8Array(this.memory.buffer,t,A),s=this.decoder.decode(e);return this.exports.clearResponse(),s}getResourceState(){let A=this.exports.getHyperlinkCapacity?.(),t=this.exports.getHyperlinkCount?.(),e=this.exports.getHyperlinkRejectedCount?.();if(A===void 0||t===void 0||e===void 0)return{};return{hyperlinks:{capacity:A,used:t,rejected:e,saturated:t>=A}}}getScrollbackCount(){return this.exports.getScrollbackCount()}getScrollbackDiscardedCount(){return this.exports.getScrollbackDiscardedCount()}getScrollbackCell(A,t){let s=this.exports.getScrollbackLine(A)+t*this.cellSize,i=this.dv,r={char:i.getUint32(s,!0),fg:i.getUint16(s+4,!0),bg:i.getUint16(s+6,!0),flags:i.getUint8(s+8),width:i.getUint8(s+9)};return Object.assign(r,this._readLink(i.getUint16(s+10,!0))),r}getScrollbackLineLen(A){return this.exports.getScrollbackLineLen(A)}getUnhandledSequences(){let A=this.exports.getDebugLogCount();if(A===0)return[];let t=this.exports.getDebugLogPtr(),e=this.exports.getDebugLogEntrySize(),s=this.exports.getDebugLogMax(),i=Math.min(A,s),r=new DataView(this.memory.buffer),o=[],n=A>=s?A%s:0;for(let Q=0;Q<i;Q++){let B=(n+Q)%s,h=t+B*e,a=r.getUint8(h);if(a===0)continue;let E=r.getUint8(h+1),C=r.getUint8(h+2),w=[];for(let b=0;b<Math.min(C,4);b++)w.push(r.getUint16(h+4+b*2,!0));o.push({final:String.fromCharCode(a),private:E?String.fromCharCode(E):"",paramCount:C,params:w})}return o}resize(A,t){this.exports.resizeTerminal(A,t),this._updatePointers()}_readLink(A){if(A===0)return;let t=this.linkCache.get(A);if(t)return t;let e=this.exports.getLinkUriLen(A);if(e===0)return;let s=this.decoder.decode(new Uint8Array(this.memory.buffer,this.exports.getLinkUriPtr(A),e)),i=this.exports.getLinkIdLen(A),r=i===0?void 0:this.decoder.decode(new Uint8Array(this.memory.buffer,this.exports.getLinkIdPtr(A),i)),o={linkUri:s,linkId:r,linkKey:r?`e\x00${r}\x00${s}`:`b\x00${A}`};return this.linkCache.set(A,o),o}}function BA(A){let t=A>>16&255,e=A>>8&255,s=A&255;return`rgb(${t},${e},${s})`}function gA(A){if(A===256)return null;if(A<16)return`var(--term-color-${A})`;if(A<232){let e=A-16,s=Math.floor(e/36)*51,i=Math.floor(e/6)%6*51,r=e%6*51;return`rgb(${s},${i},${r})`}let t=(A-232)*10+8;return`rgb(${t},${t},${t})`}function QA(A,t){if(t!==void 0)return BA(t);return gA(A)}function N(A,t){if(t!==void 0)return BA(t);return gA(A)}function eA(A,t,e,s,i){let r=A,o=t,n=s,Q=i;if(e&32){let C=r;r=o,o=C;let w=n;if(n=Q,Q=w,n===void 0&&r===256)r=0;if(Q===void 0&&o===256)o=7}let B=QA(r,n),h=N(o,Q),a="";if(B)a+=`color:${B};`;if(h)a+=`background:${h};`;if(e&1)a+="font-weight:bold;";if(e&2)a+="opacity:0.5;";if(e&4)a+="font-style:italic;";let E=[];if(e&8)E.push("underline");if(e&128)E.push("line-through");if(E.length)a+=`text-decoration:${E.join(" ")};`;if(e&64)a+="visibility:hidden;";return a}function y(A){return A.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function fA(A){if(!A)return;try{let t=new URL(A);return t.protocol==="http:"||t.protocol==="https:"?t.href:void 0}catch{return}}function wA(A){if(!A.linkUri)return"";return A.linkKey??`fallback\x00${A.linkId??""}\x00${A.linkUri}`}function pA(A,t,e,s,i){let r=A,o=t,n=s,Q=i;if(e&32){if([r,o]=[o,r],[n,Q]=[Q,n],n===void 0&&r===256)r=0;if(Q===void 0&&o===256)o=7}return{fg:QA(r,n)||"var(--term-fg)",bg:N(o,Q)||"var(--term-bg)"}}var M="round(calc(var(--term-row-height) * 0.125), 1px)",sA="round(calc(var(--term-row-height) * 0.25), 1px)",iA="round(calc(var(--term-row-height) * 0.375), 1px)",J="round(calc(var(--term-row-height) * 0.5), 1px)",rA="round(calc(var(--term-row-height) * 0.625), 1px)",oA="round(calc(var(--term-row-height) * 0.75), 1px)",nA="round(calc(var(--term-row-height) * 0.875), 1px)";function mA(A,t,e){switch(A){case 9600:return`linear-gradient(${t} ${J},${e} ${J})`;case 9601:return`linear-gradient(${e} ${nA},${t} ${nA})`;case 9602:return`linear-gradient(${e} ${oA},${t} ${oA})`;case 9603:return`linear-gradient(${e} ${rA},${t} ${rA})`;case 9604:return`linear-gradient(${e} ${J},${t} ${J})`;case 9605:return`linear-gradient(${e} ${iA},${t} ${iA})`;case 9606:return`linear-gradient(${e} ${sA},${t} ${sA})`;case 9607:return`linear-gradient(${e} ${M},${t} ${M})`;case 9608:return t;case 9609:return`linear-gradient(to right,${t} 87.5%,${e} 87.5%)`;case 9610:return`linear-gradient(to right,${t} 75%,${e} 75%)`;case 9611:return`linear-gradient(to right,${t} 62.5%,${e} 62.5%)`;case 9612:return`linear-gradient(to right,${t} 50%,${e} 50%)`;case 9613:return`linear-gradient(to right,${t} 37.5%,${e} 37.5%)`;case 9614:return`linear-gradient(to right,${t} 25%,${e} 25%)`;case 9615:return`linear-gradient(to right,${t} 12.5%,${e} 12.5%)`;case 9616:return`linear-gradient(to right,${e} 50%,${t} 50%)`;case 9617:return`color-mix(in srgb,${t} 25%,${e})`;case 9618:return`color-mix(in srgb,${t} 50%,${e})`;case 9619:return`color-mix(in srgb,${t} 75%,${e})`;case 9620:return`linear-gradient(${t} ${M},${e} ${M})`;case 9621:return`linear-gradient(to right,${e} 87.5%,${t} 87.5%)`;default:{let i={9622:[!1,!1,!0,!1],9623:[!1,!1,!1,!0],9624:[!0,!1,!1,!1],9625:[!0,!1,!0,!0],9626:[!0,!1,!1,!0],9627:[!0,!0,!0,!1],9628:[!0,!0,!1,!0],9629:[!1,!0,!1,!1],9630:[!1,!0,!0,!1],9631:[!1,!0,!0,!0]}[A];if(!i)return t;let[r,o,n,Q]=i;if(r&&o&&n&&Q)return t;let B=[],h=["0 0","100% 0","0 100%","100% 100%"];return i.forEach((a,E)=>{if(a)B.push(`linear-gradient(${t},${t}) ${h[E]}/50% 50% no-repeat`)}),B.push(e),B.join(",")}}}class Y{constructor(A){this.rows=0,this.cols=0,this.rowEls=[],this.prevCursorRow=-1,this.prevCursorCol=-1,this.prevContainerBg="",this.prevRowBg=[],this._scrollbackRowEls=[],this._scrollbackStartKey=0,this._renderedScrollbackCount=-1,this._renderedDiscardedCount=-1,this._scrollbackTopSpacer=null,this._scrollbackBottomSpacer=null,this.container=A}setup(A,t){this.cols=A,this.rows=t,this.container.innerHTML="",this.rowEls=[],this.prevRowBg=[],this._scrollbackRowEls=[],this._scrollbackStartKey=0,this._renderedScrollbackCount=-1,this._renderedDiscardedCount=-1;let e=document.createDocumentFragment();this._scrollbackTopSpacer=document.createElement("div"),this._scrollbackTopSpacer.className="term-scrollback-spacer",e.appendChild(this._scrollbackTopSpacer),this._scrollbackBottomSpacer=document.createElement("div"),this._scrollbackBottomSpacer.className="term-scrollback-spacer",e.appendChild(this._scrollbackBottomSpacer);for(let s=0;s<t;s++){let i=document.createElement("div");i.className="term-row",e.appendChild(i),this.rowEls.push(i)}this.container.appendChild(e),this.prevCursorRow=-1,this.prevCursorCol=-1}_buildRowContent(A,t,e,s,i){let r="",o="",n="",Q=[],B=0,h="",a,E="",C=(l,g,c)=>{let I=fA(c),p=I?g:"";if(p!==E){if(E)r+="</a>";if(p)r+=`<a class="term-link" href="${y(I)}" target="_blank" rel="noopener noreferrer">`;E=p}r+=l},w=(l)=>{if(!n)return;let g=y(n),c="";if(s>=B&&s<l){let I=s-B,p=Q.slice(0,I).join(""),d=Q[I]||" ",u=Q.slice(I+1).join("");if(p)c+=o?`<span style="${o}">${y(p)}</span>`:`<span>${y(p)}</span>`;if(c+=o?`<span class="term-cursor" style="${o}">${y(d)}</span>`:`<span class="term-cursor">${y(d)}</span>`,u)c+=o?`<span style="${o}">${y(u)}</span>`:`<span>${y(u)}</span>`}else c+=o?`<span style="${o}">${g}</span>`:`<span>${g}</span>`;C(c,h,a),n="",Q=[]},b=(l,g,c,I,p)=>{let d=l?` class="${l}"`:"",u=g?` style="${g}"`:"";C(`<span${d}${u}>${y(c)}</span>`,I,p)};for(let l=0;l<this.cols;l++){let g=t(l),c=l<e,I=c?g.char:0,p=c?g.width??1:1,d=c?wA(g):"",u=c?g.linkUri:void 0;if(c&&p===0){if(w(l),!(l>0&&(t(l-1).width??1)===2))b(l===s?"term-cursor":"",""," ",d,u);o="",h="",a=void 0,n="",Q=[],B=l+1;continue}if(c&&p===2){if(w(l),l+1>=this.cols){b(l===s?"term-cursor":"",""," ",d,u),o="",h="",a=void 0,n="",Q=[],B=l+1;continue}let f=g.chars??(I>=32?String.fromCodePoint(I):" "),x=eA(g.fg,g.bg,g.flags,g.fgRgb,g.bgRgb),U=s>=l&&s<l+2?"term-wide term-cursor":"term-wide";b(U,x,f,d,u),o="",h="",a=void 0,n="",Q=[],B=l+2;continue}if(c&&I>=9600&&I<=9631){w(l);let f=pA(g.fg,g.bg,g.flags,g.fgRgb,g.bgRgb),x=l===s?"term-block term-cursor":"term-block",U=mA(I,f.fg,f.bg),uA=g.flags&2?"opacity:0.5;":"";C(`<span class="${x}" style="background:${U};${uA}"></span>`,d,u),o="",h="",a=void 0,n="",Q=[],B=l+1}else{let f=g.chars??(c&&I>=32?String.fromCodePoint(I):" "),x=c?eA(g.fg,g.bg,g.flags,g.fgRgb,g.bgRgb):"";if(x!==o||d!==h)w(l),o=x,h=d,a=u,n=f,Q=[f],B=l;else n+=f,Q.push(f)}}if(w(this.cols),E)r+="</a>";A.innerHTML=r;let m="";if(e>=this.cols&&this.cols>0){let l=t(this.cols-1),g=l.bg,c=l.bgRgb;if(l.flags&32){if(g=l.fg,c=l.fgRgb,c===void 0&&g===256)g=7}m=N(g,c)||""}let S=m?`0 1px 0 ${m}`:"";if(i>=0){if(m!==(this.prevRowBg[i]??""))A.style.background=m,A.style.boxShadow=S,this.prevRowBg[i]=m}else A.style.background=m,A.style.boxShadow=S}_buildScrollbackRowEl(A,t){let e=document.createElement("div");e.className="term-row term-scrollback-row";let s=A.getScrollbackLineLen(t);return this._buildRowContent(e,(i)=>A.getScrollbackCell(t,i),s,-1,-1),e}syncScrollback(A,t){let e=A.getScrollbackCount(),s=t?.rowHeight??0,i=t!==void 0&&s>0,r=t?.overscanRows??10,o=t?.scrollbackDiscardedCount!==void 0,n=t?.scrollbackDiscardedCount??0,Q=t&&t.clientHeight>0?t.clientHeight:this.rows*s,B=i?Math.floor(t.scrollTop/s):0,h=i?Math.ceil(Q/s):e,a=i?Math.max(0,Math.min(e,B-r)):0,E=i?Math.max(a,Math.min(e,B+h+r)):e,C=this.container.ownerDocument.getSelection();if(C!==null&&!C.isCollapsed&&(this.container.contains(C.anchorNode)||this.container.contains(C.focusNode))&&this._scrollbackRowEls.length>0)a=Math.min(a,Math.max(0,this._scrollbackStartKey-n)),E=Math.max(E,Math.min(e,this._scrollbackStartKey-n+this._scrollbackRowEls.length));let b=n+a;if(o&&e===this._renderedScrollbackCount&&n===this._renderedDiscardedCount&&b===this._scrollbackStartKey&&E-a===this._scrollbackRowEls.length)return;let m=new Map;for(let c=0;c<this._scrollbackRowEls.length;c++)m.set(this._scrollbackStartKey+c,this._scrollbackRowEls[c]);let S=n+E;for(let[c,I]of m)if(c<b||c>=S)I.remove();let l=[],g=this._scrollbackTopSpacer?.nextSibling??null;for(let c=a;c<E;c++){let I=n+c,p=e-1-c,d=this._buildScrollbackRowEl(A,p),u=m.get(I),f=d,x=!1;if(u&&u.innerHTML===d.innerHTML&&u.style.cssText===d.style.cssText)f=u;else if(u)u.replaceWith(d),x=!0;if(!x&&f!==g)this.container.insertBefore(f,g??this._scrollbackBottomSpacer);g=f.nextSibling,l.push(f)}if(this._scrollbackRowEls=l,this._scrollbackStartKey=b,this._renderedScrollbackCount=e,this._renderedDiscardedCount=n,this._scrollbackTopSpacer)this._scrollbackTopSpacer.style.height=`${a*s}px`;if(this._scrollbackBottomSpacer)this._scrollbackBottomSpacer.style.height=`${(e-E)*s}px`}render(A,t){let e=A.getRows(),s=A.getCols(),i=!1;if(e!==this.rows||s!==this.cols)this.setup(s,e),i=!0;this.syncScrollback(A,t);let r=A.getCursor(),o=r.visible,n=r.row!==this.prevCursorRow||r.col!==this.prevCursorCol;for(let B=0;B<this.rows;B++){let h=i||A.isDirtyRow(B),a=B===this.prevCursorRow&&n,E=B===r.row;if(h||a||E&&n){let C=E&&o?r.col:-1;this._buildRowContent(this.rowEls[B],(w)=>A.getCell(B,w),this.cols,C,B)}}if(this.prevCursorRow=r.row,this.prevCursorCol=r.col,i||A.isDirtyRow(this.rows-1)){let B=A.getCell(this.rows-1,this.cols-1),h=B.bg,a=B.bgRgb;if(B.flags&32){if(h=B.fg,a=B.fgRgb,a===void 0&&h===256)h=7}let E=N(h,a)||"";if(E!==this.prevContainerBg)this.container.style.background=E,this.prevContainerBg=E}A.clearDirty()}}function G(A,t){return t.platform.startsWith("Mac")?A.metaKey:A.ctrlKey}var bA={ArrowUp:"\x1B[A",ArrowDown:"\x1B[B",ArrowRight:"\x1B[C",ArrowLeft:"\x1B[D",Home:"\x1B[H",End:"\x1B[F"},xA={ArrowUp:"\x1BOA",ArrowDown:"\x1BOB",ArrowRight:"\x1BOC",ArrowLeft:"\x1BOD",Home:"\x1BOH",End:"\x1BOF"},SA={Enter:"\r",Backspace:"",Tab:"\t",Escape:"\x1B",Insert:"\x1B[2~",Delete:"\x1B[3~",PageUp:"\x1B[5~",PageDown:"\x1B[6~",F1:"\x1BOP",F2:"\x1BOQ",F3:"\x1BOR",F4:"\x1BOS",F5:"\x1B[15~",F6:"\x1B[17~",F7:"\x1B[18~",F8:"\x1B[19~",F9:"\x1B[20~",F10:"\x1B[21~",F11:"\x1B[23~",F12:"\x1B[24~"};class K{constructor(A,t,e,s=()=>null){this.composing=!1,this.mouseButtons=0,this.focused=!1,this.element=A,this.onData=t,this.getBridge=e,this.getCellSize=s,this.textarea=document.createElement("textarea"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("autocomplete","off"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("spellcheck","false"),this.textarea.setAttribute("enterkeyhint","send"),this.textarea.setAttribute("tabindex","0"),this.textarea.setAttribute("aria-hidden","true");let i=this.textarea.style;i.position="absolute",i.left="-9999px",i.top="0",i.width="1px",i.height="1px",i.opacity="0",i.overflow="hidden",i.border="0",i.padding="0",i.margin="0",i.outline="none",i.resize="none",i.pointerEvents="none",i.caretColor="transparent",i.color="transparent",i.background="transparent",A.appendChild(this.textarea),this._onKeyDown=this.handleKeyDown.bind(this),this._onPaste=this.handlePaste.bind(this),this._onCompositionStart=this.handleCompositionStart.bind(this),this._onCompositionEnd=this.handleCompositionEnd.bind(this),this._onInput=this.handleInput.bind(this),this._onFocus=()=>{if(this.focused)return;if(this.focused=!0,this.element.classList.add("focused"),this.getBridge()?.focusEvents?.())this.onData("\x1B[I")},this._onBlur=()=>{if(this.focused=!1,this.element.classList.remove("focused"),this.stopMouseCapture(),this.getBridge()?.focusEvents?.())this.onData("\x1B[O")},this._onMouseDown=(r)=>this.handleMouse(r,"press"),this._onMouseMove=(r)=>{if(this.mouseButtons!==0)this.handleMouse(r,"move")},this._onMouseUp=(r)=>{if(this.mouseButtons===0)return;if(this.handleMouse(r,"release"),this.mouseButtons=r.buttons&7,this.mouseButtons===0)this.stopMouseCapture()},this._onWheel=(r)=>this.handleMouse(r,"wheel"),this.textarea.addEventListener("keydown",this._onKeyDown),this.textarea.addEventListener("paste",this._onPaste),this.textarea.addEventListener("compositionstart",this._onCompositionStart),this.textarea.addEventListener("compositionend",this._onCompositionEnd),this.textarea.addEventListener("input",this._onInput),this.textarea.addEventListener("focus",this._onFocus),this.textarea.addEventListener("blur",this._onBlur),this.element.addEventListener("mousedown",this._onMouseDown),this.element.addEventListener("wheel",this._onWheel,{passive:!1})}focus(){this.textarea.focus({preventScroll:!0})}destroy(){this.textarea.removeEventListener("keydown",this._onKeyDown),this.textarea.removeEventListener("paste",this._onPaste),this.textarea.removeEventListener("compositionstart",this._onCompositionStart),this.textarea.removeEventListener("compositionend",this._onCompositionEnd),this.textarea.removeEventListener("input",this._onInput),this.textarea.removeEventListener("focus",this._onFocus),this.textarea.removeEventListener("blur",this._onBlur),this.element.removeEventListener("mousedown",this._onMouseDown),this.stopMouseCapture(),this.element.removeEventListener("wheel",this._onWheel),this.element.classList.remove("focused"),this.textarea.remove()}handleKeyDown(A){if(this.composing)return;if((A.metaKey||A.ctrlKey)&&A.key==="c"){let e=window.getSelection();if(e&&e.toString().length>0)return}if((A.metaKey||A.ctrlKey)&&A.key==="v"){this.textarea.focus();return}if(A.metaKey&&!A.ctrlKey){if(A.key==="Backspace")A.preventDefault(),this.onData("\x15");else if(A.key==="a"){A.preventDefault();let e=window.getSelection();if(e){let s=document.createRange();s.selectNodeContents(this.element),e.removeAllRanges(),e.addRange(s)}}return}A.preventDefault();let t=this.keyToSequence(A);if(t)this.onData(t)}handlePaste(A){A.preventDefault();let t=A.clipboardData?.getData("text");if(!t)return;let e=this.getBridge();if(e&&e.bracketedPaste()){let s=t.replace(/\x1b/g,"");this.onData("\x1B[200~"+s+"\x1B[201~")}else this.onData(t)}handleCompositionStart(){this.composing=!0}handleCompositionEnd(A){if(this.composing=!1,A.data)this.onData(A.data);this.textarea.value=""}handleInput(){if(this.composing)return;let A=this.textarea.value;if(A)this.onData(A),this.textarea.value=""}handleMouse(A,t){let e=this.getBridge(),s=e?.mouseTracking?.()??0;if(!e||s===0||!e.mouseSgr?.())return;if(t==="press"&&G(A,this.element.ownerDocument.defaultView?.navigator??navigator)&&A.target instanceof Element&&A.target.closest(".term-link"))return;if(t==="press"&&(A.shiftKey||A.button>2))return;if(t==="release"&&A.button>2)return;let i=A.buttons&7;if(t==="move"&&(s!==1002||i===0))return;let r=this.element.ownerDocument.defaultView;if(!r)return;let o=this.element.querySelector(".term-row:not(.term-scrollback-row)"),n=this.element.getBoundingClientRect(),Q=o?.getBoundingClientRect(),B=this.getCellSize(),h,a,E,C;if(Q&&B)h=Q.left,a=Q.top,E=B.charWidth,C=B.rowHeight;else{let g=r.getComputedStyle(this.element),c=parseFloat(g.borderLeftWidth)||0,I=parseFloat(g.borderRightWidth)||0,p=parseFloat(g.borderTopWidth)||0,d=parseFloat(g.borderBottomWidth)||0,u=parseFloat(g.paddingLeft)||0,f=parseFloat(g.paddingRight)||0,x=parseFloat(g.paddingTop)||0,U=parseFloat(g.paddingBottom)||0;h=Q?.left??n.left+c+u,a=Q?.top??n.top+p+x,E=(n.width-c-I-u-f)/e.getCols(),C=(n.height-p-d-x-U)/e.getRows()}if(E<=0||C<=0)return;if(t==="press"){if(this.textarea.focus({preventScroll:!0}),!this.focused)this._onFocus();this.mouseButtons=i||(A.button===1?4:A.button===2?2:1),r.addEventListener("mousemove",this._onMouseMove),r.addEventListener("mouseup",this._onMouseUp)}let w=Math.max(1,Math.min(e.getCols(),Math.floor((A.clientX-h)/E)+1)),b=Math.max(1,Math.min(e.getRows(),Math.floor((A.clientY-a)/C)+1)),m=(A.shiftKey?4:0)|(A.altKey?8:0)|(A.ctrlKey?16:0),S,l="M";if(t==="wheel"){let g=A;if(Math.abs(g.deltaX)>Math.abs(g.deltaY)){if(g.deltaX===0)return;S=(g.deltaX<0?66:67)|m}else{if(g.deltaY===0)return;S=(g.deltaY<0?64:65)|m}}else if(S=(t==="move"?i&4?1:i&2?2:0:A.button===1?1:A.button===2?2:0)|m|(t==="move"?32:0),t==="release")l="m";A.preventDefault(),this.onData(`\x1B[<${S};${w};${b}${l}`)}stopMouseCapture(){this.mouseButtons=0;let A=this.element.ownerDocument.defaultView;A?.removeEventListener("mousemove",this._onMouseMove),A?.removeEventListener("mouseup",this._onMouseUp)}keyToSequence(A){if(A.ctrlKey&&!A.altKey&&!A.metaKey){if(A.key.length===1){let o=A.key.toLowerCase().charCodeAt(0);if(o>=97&&o<=122)return String.fromCharCode(o-96)}if(A.key==="[")return"\x1B";if(A.key==="\\")return"\x1C";if(A.key==="]")return"\x1D";if(A.key==="^")return"\x1E";if(A.key==="_")return"\x1F"}if(A.key==="Enter"&&A.shiftKey)return"\x1B[13;2u";if(A.key==="Tab"&&A.shiftKey)return"\x1B[Z";let t=SA[A.key];if(t)return A.altKey?"\x1B"+t:t;let e=this.getBridge(),r=(e&&e.cursorKeysApp()?xA:bA)[A.key];if(r)return A.altKey?"\x1B"+r:r;if(A.key.length===1&&!A.ctrlKey&&!A.metaKey)return A.altKey?"\x1B"+A.key:A.key;return null}}var yA={1:"bold",2:"dim",4:"italic",8:"underline",16:"blink",32:"reverse",64:"invisible",128:"strikethrough"};function _A(A){let t=[];for(let[e,s]of Object.entries(yA))if(A&Number(e))t.push(s);return t}var W=27;function DA(A){let t=[],e=Date.now(),s=0,i=0,r=()=>{if(s>i){let o=A.slice(i,s);if(o.length>0&&!/^[\x00-\x1f]+$/.test(o))t.push({ts:e,type:"text",raw:o.slice(0,60)})}};while(s<A.length){if(A.charCodeAt(s)!==W){s++;continue}r();let o=s;if(s++,s>=A.length)break;let n=A[s];if(n==="["){s++;let Q="";if(s<A.length&&(A[s]==="?"||A[s]===">"||A[s]==="!"))Q=A[s],s++;let B="";while(s<A.length&&(A.charCodeAt(s)>=48&&A.charCodeAt(s)<=59||A[s]===":"))B+=A[s],s++;while(s<A.length&&A.charCodeAt(s)>=32&&A.charCodeAt(s)<=47)s++;let h="";if(s<A.length&&A.charCodeAt(s)>=64&&A.charCodeAt(s)<=126)h=A[s],s++;let a=A.slice(o,s),E=B?B.split(/[;:]/).map(Number).filter((w)=>!isNaN(w)):[],C=h==="m"?"sgr":"csi";t.push({ts:e,type:C,raw:a,params:E.length>0?E:void 0,private:Q||void 0,final:h})}else if(n==="]"){s++;while(s<A.length&&A.charCodeAt(s)!==7&&!(A.charCodeAt(s)===W&&s+1<A.length&&A[s+1]==="\\"))s++;if(s<A.length){if(A.charCodeAt(s)===7)s++;else if(A.charCodeAt(s)===W)s+=2}let Q=A.slice(o,s);t.push({ts:e,type:"osc",raw:Q.slice(0,80)})}else if(n>=" "&&n<="~")s++,t.push({ts:e,type:"esc",raw:A.slice(o,s),final:n});else s++;i=s}return r(),t}var aA=500;class T{constructor(){this._traces=[],this._bridge=null,this._perf={frameCount:0,totalRenderMs:0,avgRenderMs:0,maxRenderMs:0,lastDirtyRows:0}}get traces(){return this._traces}get perf(){return this._perf}setBridge(A){this._bridge=A}traceWrite(A){let t=typeof A==="string"?A:new TextDecoder().decode(A),e=DA(t);for(let s of e)this._traces.push(s);if(this._traces.length>aA)this._traces=this._traces.slice(-aA)}recordRender(A,t){if(this._perf.frameCount++,this._perf.totalRenderMs+=A,this._perf.avgRenderMs=this._perf.totalRenderMs/this._perf.frameCount,A>this._perf.maxRenderMs)this._perf.maxRenderMs=A;this._perf.lastDirtyRows=t}resetPerf(){this._perf={frameCount:0,totalRenderMs:0,avgRenderMs:0,maxRenderMs:0,lastDirtyRows:0}}cell(A,t){if(!this._bridge)return null;let e=this._bridge.getCell(A,t);return{...e,charStr:e.chars??(e.char>=32?String.fromCodePoint(e.char):""),flagNames:_A(e.flags)}}row(A){if(!this._bridge)return null;let t=this._bridge.getCols(),e=[];for(let s=0;s<t;s++)e.push(this.cell(A,s));return e}grid(){if(!this._bridge)return null;let A=this._bridge.getCursor();return{rows:this._bridge.getRows(),cols:this._bridge.getCols(),cursor:A,altScreen:this._bridge.usingAltScreen(),scrollbackCount:this._bridge.getScrollbackCount()}}unhandled(){if(!this._bridge)return[];return this._bridge.getUnhandledSequences()}dump(A=50){let t=this._traces.slice(-A);console.group(`%cwterm debug — last ${t.length} traces`,"color: #569cd6; font-weight: bold");for(let e of t){let s=e.type==="sgr"?"%cSGR":e.type==="csi"?"%cCSI":e.type==="osc"?"%cOSC":e.type==="esc"?"%cESC":"%cTXT",i=e.type==="sgr"?"background:#2d5a27;color:#fff;padding:1px 4px;border-radius:2px":e.type==="csi"?"background:#1e4a7a;color:#fff;padding:1px 4px;border-radius:2px":"background:#555;color:#fff;padding:1px 4px;border-radius:2px",r=[e.private?`private=${e.private}`:"",e.params?`params=[${e.params}]`:"",e.final?`final=${e.final}`:""].filter(Boolean).join(" ");console.log(`${s} ${e.raw.slice(0,40)}`,i,r?` ${r}`:"")}console.groupEnd()}dumpUnhandled(){let A=this.unhandled();if(A.length===0){console.log("%cwterm debug — no unhandled sequences","color: #6a9955");return}console.group(`%cwterm debug — ${A.length} unhandled sequences`,"color: #d7ba7d; font-weight: bold");for(let t of A)console.log(` final=${t.final} private=${t.private||"-"} params=[${t.params.slice(0,t.paramCount)}]`);console.groupEnd()}}var LA=1000;class O{constructor(A,t={}){if(this.bridge=null,this.debug=null,this.renderer=null,this.input=null,this.rafId=null,this._synchronizedOutputTimer=null,this._synchronizedOutputState="idle",this._synchronizedOutputGeneration=0,this._rendererNeedsSetup=!1,this.resizeObserver=null,this._destroyed=!1,this._shouldScrollToBottom=!1,this._scrollbackDiscardedCount=0,this._programmaticScrollTop=null,this._pendingResizeScrollTop=null,this._rowHeight=0,this._charWidth=0,this.element=A,this._coreOption=t.core,this.wasmUrl=t.wasmUrl,this.cols=t.cols||80,this.rows=t.rows||24,this.autoResize=t.autoResize!==!1,this._debugEnabled=t.debug??!1,this.onData=t.onData||null,this.onTitle=t.onTitle||null,this.onResize=t.onResize||null,this._container=document.createElement("div"),this._container.className="term-grid",this.element.appendChild(this._container),this.element.classList.add("wterm"),t.cursorBlink)this.element.classList.add("cursor-blink");this._onClickFocus=(e)=>{let s=e.target;if(s instanceof Element&&s.closest(".term-link")){if(G(e,this.element.ownerDocument.defaultView?.navigator??navigator)||e.detail===0)return;e.preventDefault()}let i=window.getSelection();if(!i||i.isCollapsed)this.input?.focus()},this.element.addEventListener("click",this._onClickFocus),this._onModifierChange=(e)=>{this.element.classList.toggle("link-modifier-active",G(e,this.element.ownerDocument.defaultView?.navigator??navigator))},this._onWindowBlur=()=>{this.element.classList.remove("link-modifier-active")},this.element.ownerDocument.addEventListener("keydown",this._onModifierChange),this.element.ownerDocument.addEventListener("keyup",this._onModifierChange),this.element.ownerDocument.defaultView?.addEventListener("blur",this._onWindowBlur),this._onScroll=()=>{if(this._pendingResizeScrollTop!==null)return;if(this._programmaticScrollTop!==null&&this.element.scrollTop===this._programmaticScrollTop){this._programmaticScrollTop=null;return}this._programmaticScrollTop=null,this._shouldScrollToBottom=!1,this._scheduleRender()},this.element.addEventListener("scroll",this._onScroll,{passive:!0})}async init(){try{if(this._coreOption)this.bridge=this._coreOption;else this.bridge=await k.load(this.wasmUrl);if(this._destroyed)return this;if(this.bridge.init(this.cols,this.rows),this._debugEnabled)this.debug=new T,this.debug.setBridge(this.bridge),globalThis.__wterm=this;if(this._setRowHeight(),this._measureCharSize(),this.renderer=new Y(this._container),this.renderer.setup(this.cols,this.rows),this.input=new K(this.element,(A)=>{if(this._scrollToBottom(),this.onData)this.onData(A);else this.write(A)},()=>this.bridge,()=>this._charWidth>0&&this._rowHeight>0?{charWidth:this._charWidth,rowHeight:this._rowHeight}:null),this.autoResize)this._setupResizeObserver();else this._lockHeight();this.input.focus(),this._initialRender()}catch(A){throw this.destroy(),Error(`wterm: failed to initialize: ${A instanceof Error?A.message:A}`)}return this}_isScrolledToBottom(){let A=this.element;return A.scrollHeight-A.scrollTop-A.clientHeight<5}_scrollToBottom(){let A=this.element,t=A.scrollHeight-A.clientHeight;if(t<=0){this._setScrollTop(0);return}this._setScrollTop(t)}_setScrollTop(A){if(this.element.scrollTop===A)return;this._programmaticScrollTop=A,this.element.scrollTop=A}write(A){if(!this.bridge)return;if(this.debug)this.debug.traceWrite(A);this._shouldScrollToBottom=this._isScrolledToBottom();let t,e=!1,s=()=>{let o=this._drainResponses();if(!e&&o.hasError)e=!0,t=o.error};if(typeof A==="string")this.bridge.writeString(A,s);else this.bridge.writeRaw(A,s);let i=this.bridge.synchronizedOutput?.()??!1,r=this.bridge.synchronizedOutputGeneration?.()??0;if(this._updateSynchronizedOutput(i,r),this._synchronizedOutputState!=="held")this._setupRendererIfNeeded(),this._scheduleRender();if(s(),e)throw t}resize(A,t){if(!this.bridge)return;this._shouldScrollToBottom=this._pendingResizeScrollTop===null&&this._isScrolledToBottom(),this.cols=A,this.rows=t,this.bridge.resize(A,t);let e=this.bridge.synchronizedOutput?.()??!1,s=this.bridge.synchronizedOutputGeneration?.()??0;if(this._updateSynchronizedOutput(e,s))this._rendererNeedsSetup=!0;else this._setupRenderer(A,t),this._scheduleRender();if(this.onResize)this.onResize(A,t)}focus(){if(this.input)this.input.focus();else this.element.focus()}_scheduleRender(){if(this.rafId!=null)return;this.rafId=requestAnimationFrame(()=>{this.rafId=null,this._doRender()})}_cancelScheduledRender(){if(this.rafId!=null)cancelAnimationFrame(this.rafId),this.rafId=null}_updateSynchronizedOutput(A,t){if(!A){if(this._synchronizedOutputState==="held")this._cancelSynchronizedOutputFallback();return this._synchronizedOutputState="idle",!1}if(this._synchronizedOutputState==="held"&&t!==this._synchronizedOutputGeneration)return this._armSynchronizedOutputFallback(t),!0;else if(this._synchronizedOutputState==="passthrough"&&t!==this._synchronizedOutputGeneration)this._synchronizedOutputState="idle";if(this._synchronizedOutputState!=="idle")return this._synchronizedOutputState==="held";return this._synchronizedOutputState="held",this._cancelScheduledRender(),this._armSynchronizedOutputFallback(t),!0}_armSynchronizedOutputFallback(A){this._cancelSynchronizedOutputFallback(),this._synchronizedOutputGeneration=A,this._synchronizedOutputTimer=setTimeout(()=>{if(this._synchronizedOutputState!=="held"||this._synchronizedOutputGeneration!==A)return;this._synchronizedOutputTimer=null,this._synchronizedOutputState="passthrough",this._setupRendererIfNeeded(),this._cancelScheduledRender(),this._doRender()},LA)}_cancelSynchronizedOutputFallback(){if(this._synchronizedOutputTimer==null)return;clearTimeout(this._synchronizedOutputTimer),this._synchronizedOutputTimer=null}_setupRendererIfNeeded(){if(!this._rendererNeedsSetup)return;this._setupRenderer(this.cols,this.rows),this._rendererNeedsSetup=!1}_setupRenderer(A,t){if(!this._shouldScrollToBottom&&this._pendingResizeScrollTop===null)this._pendingResizeScrollTop=this.element.scrollTop;this.renderer?.setup(A,t)}_initialRender(){this._doRender()}_doRender(){if(!this.bridge||!this.renderer)return;let A=0,t=this.debug?performance.now():0;if(this.debug){for(let B=0;B<this.rows;B++)if(this.bridge.isDirtyRow(B))A++}let e=this._rowHeight||17,s=this.bridge.getScrollbackCount(),i=this.bridge.getScrollbackDiscardedCount?.(),r=i!==void 0&&i>=this._scrollbackDiscardedCount?i-this._scrollbackDiscardedCount:0;if(i!==void 0)this._scrollbackDiscardedCount=i;let o=this._pendingResizeScrollTop!==null?this._pendingResizeScrollTop:this.element.scrollTop;if(!this._shouldScrollToBottom&&r>0)if(o=Math.max(0,o-r*e),this._pendingResizeScrollTop!==null)this._pendingResizeScrollTop=o;else this._setScrollTop(o);if(this.renderer.render(this.bridge,{scrollTop:this._shouldScrollToBottom?Math.max(0,(s+this.rows)*e-this.element.clientHeight):o,clientHeight:this.element.clientHeight,rowHeight:e,scrollbackDiscardedCount:i}),this.debug)this.debug.recordRender(performance.now()-t,A);let n=s>0;if(this.element.classList.toggle("has-scrollback",n),this._shouldScrollToBottom)this._scrollToBottom();else if(this._pendingResizeScrollTop!==null){let B=this._pendingResizeScrollTop;this._pendingResizeScrollTop=null,this._setScrollTop(B)}else if(!n&&this.element.scrollTop!==0)this.element.scrollTop=0;let Q=this.bridge.getTitle();if(Q!==null&&this.onTitle)this.onTitle(Q);this._drainResponses()}_drainResponses(){if(!this.bridge)return{hasError:!1};let A,t,e=!1;while((A=this.bridge.getResponse())!==null)try{if(this.onData)this.onData(A)}catch(s){if(!e)e=!0,t=s}return{hasError:e,error:t}}_lockHeight(){let A=this._rowHeight||17,t=this.rows*A,e=getComputedStyle(this.element),s=(parseFloat(e.paddingTop)||0)+(parseFloat(e.paddingBottom)||0);if(e.boxSizing==="border-box")s+=(parseFloat(e.borderTopWidth)||0)+(parseFloat(e.borderBottomWidth)||0);this.element.style.height=`${t+s}px`}_setRowHeight(){let A=document.createElement("div");A.className="term-row",A.style.visibility="hidden",A.style.position="absolute",A.textContent="W",this._container.appendChild(A);let t=A.getBoundingClientRect().height;if(A.remove(),t>0){let e=Math.ceil(t);this._rowHeight=e,this.element.style.setProperty("--term-row-height",`${e}px`)}}_measureCharSize(){let A=document.createElement("div");A.className="term-row",A.style.visibility="hidden",A.style.position="absolute";let t=document.createElement("span");t.textContent="W",A.appendChild(t),this._container.appendChild(A);let e=t.getBoundingClientRect().width,s=A.getBoundingClientRect().height;if(A.remove(),e===0||s===0)return null;return this._charWidth=e,this._rowHeight=s,{charWidth:e,rowHeight:s}}_setupResizeObserver(){let A=this._measureCharSize();if(!A)return;let{charWidth:t,rowHeight:e}=A;this.resizeObserver=new ResizeObserver((s)=>{let i=this._measureCharSize();if(i)t=i.charWidth,e=i.rowHeight;for(let r of s){let{width:o,height:n}=r.contentRect,Q=Math.max(1,Math.floor(o/t)),B=Math.max(1,Math.floor(n/e));if(Q!==this.cols||B!==this.rows)this.resize(Q,B)}}),this.resizeObserver.observe(this.element)}destroy(){if(this._destroyed=!0,this._cancelScheduledRender(),this._cancelSynchronizedOutputFallback(),this.resizeObserver)this.resizeObserver.disconnect();if(this.input)this.input.destroy();if(this.element.removeEventListener("click",this._onClickFocus),this.element.removeEventListener("scroll",this._onScroll),this.element.ownerDocument.removeEventListener("keydown",this._onModifierChange),this.element.ownerDocument.removeEventListener("keyup",this._onModifierChange),this.element.ownerDocument.defaultView?.removeEventListener("blur",this._onWindowBlur),this.element.classList.remove("link-modifier-active"),this.element.innerHTML="",this.debug&&globalThis.__wterm===this)delete globalThis.__wterm;this.debug=null}}var R=16,V='Serve the binary from your app and pass its URL: GhosttyCore.load({ wasmPath: "/ghostty-vt.wasm" }). The file ships with the package as @wterm/ghostty/ghostty-vt.wasm. See the Bundlers section of the @wterm/ghostty README.';function kA(){return new URL("../wasm/ghostty-vt.wasm",import.meta.url).href}function RA(A){if(A.byteLength<4)return!1;let t=new Uint8Array(A,0,4);return t[0]===0&&t[1]===97&&t[2]===115&&t[3]===109}async function lA(A){let t=A??kA();if(A===void 0&&t.startsWith("file:")&&typeof document<"u")throw Error(`@wterm/ghostty: your bundler resolved the WASM URL to ${t}, a path on the machine that built the bundle, so the browser cannot fetch it. ${V}`);let e=await fetch(t);if(!e.ok)throw Error(`@wterm/ghostty: fetching ${t} returned ${e.status} ${e.statusText}. ${V}`);let s=await e.arrayBuffer();if(!RA(s))throw Error(`@wterm/ghostty: ${t} did not return a WASM module. ${V}`);let i,{instance:r}=await WebAssembly.instantiate(s,{env:{log(n,Q){let B=new TextDecoder().decode(new Uint8Array(i.buffer,n,Q));console.log("[ghostty-vt]",B)}}});return i=r.exports.memory,{exports:r.exports,instance:r}}function Z(A,t){return{codepoint:A.getUint32(t,!0),fgR:A.getUint8(t+4),fgG:A.getUint8(t+5),fgB:A.getUint8(t+6),bgR:A.getUint8(t+7),bgG:A.getUint8(t+8),bgB:A.getUint8(t+9),flags:A.getUint8(t+10),width:A.getUint8(t+11),colorFlags:A.getUint8(t+12),hasGrapheme:(A.getUint8(t+13)&1)!==0,hasHyperlink:(A.getUint8(t+13)&2)!==0}}function _(A,t){return A.exports.alloc_buffer(t)}function D(A,t,e){A.exports.free_buffer(t,e)}function cA(A,t,e){let s=new TextEncoder().encode(e);X(A,t,s)}function X(A,t,e){if(e.length===0)return;let s=_(A,e.length);if(s===0)return;new Uint8Array(A.exports.memory.buffer,s,e.length).set(e),A.exports.write(t,s,e.length),D(A,s,e.length)}var F=256,hA=256,j=1024,FA="#d4d4d4",UA="#1e1e1e";function P(A,t,e){return A<<16|t<<8|e}var q={char:32,fg:F,bg:F,flags:0,width:1};function EA(A,t){if(!/^#[0-9a-f]{6}$/i.test(A))throw Error(`@wterm/ghostty: ${t} must be a #RRGGBB color`);return Number.parseInt(A.slice(1),16)}class H{constructor(A,t){this.termPtr=0,this._viewportBufPtr=0,this._viewportBufSize=0,this._viewportView=null,this._viewportStale=!0,this._cols=0,this._rows=0,this._scrollbackBufPtr=0,this._scrollbackBufSize=0,this._scrollbackView=null,this._scrollbackOffset=-1,this._scrollbackLen=0,this._graphemeBufPtr=0,this._graphemeBufSize=hA,this._hyperlinkBufPtr=0,this._hyperlinkBufSize=j,this.wasm=A,this._options=t,this._foregroundRgb=EA(t.foregroundColor??FA,"foregroundColor"),this._backgroundRgb=EA(t.backgroundColor??UA,"backgroundColor")}static async load(A={}){let t=await lA(A.wasmPath);return new H(t,A)}init(A,t){this._cols=A,this._rows=t;let e=this._options.scrollbackLimit??1e4;if(this.termPtr=this.wasm.exports.init(A,t,e,this._foregroundRgb,this._backgroundRgb),this._graphemeBufPtr=_(this.wasm,hA),this._hyperlinkBufPtr!==0)D(this.wasm,this._hyperlinkBufPtr,this._hyperlinkBufSize);this._hyperlinkBufSize=j,this._hyperlinkBufPtr=_(this.wasm,j),this._allocViewportBuffer(),this._invalidate()}resize(A,t){this._cols=A,this._rows=t,this.wasm.exports.resize(this.termPtr,A,t),this._allocViewportBuffer(),this._invalidate()}writeString(A){cA(this.wasm,this.termPtr,A),this._invalidate()}writeRaw(A){X(this.wasm,this.termPtr,A),this._invalidate()}getCell(A,t){this._ensureViewport();let e=this._viewportView;if(!e)return q;let i=(A*this._cols+t)*R;if(i+R>this._viewportBufSize)return q;let r=Z(e,i);if(r.codepoint===0&&r.flags===0&&r.colorFlags===0&&!r.hasHyperlink&&r.width!==0)return q;let o={char:r.codepoint||32,fg:F,bg:F,flags:r.flags,width:r.width};if(r.hasGrapheme)o.chars=this._readGrapheme(A,t);if(r.hasHyperlink)Object.assign(o,this._readHyperlink(A,t,!1));if(r.colorFlags&1)o.fgRgb=P(r.fgR,r.fgG,r.fgB);if(r.colorFlags&2)o.bgRgb=P(r.bgR,r.bgG,r.bgB);return o}isDirtyRow(A){return this._ensureViewport(),this.wasm.exports.is_dirty_row(this.termPtr,A)!==0}clearDirty(){this.wasm.exports.clear_dirty(this.termPtr),this._viewportStale=!0}getCols(){return this._cols}getRows(){return this._rows}getCursor(){return this._ensureViewport(),{row:this.wasm.exports.get_cursor_row(this.termPtr),col:this.wasm.exports.get_cursor_col(this.termPtr),visible:this.wasm.exports.get_cursor_visible(this.termPtr)!==0}}cursorKeysApp(){return this.wasm.exports.cursor_keys_app(this.termPtr)!==0}bracketedPaste(){return this.wasm.exports.bracketed_paste(this.termPtr)!==0}usingAltScreen(){return this.wasm.exports.using_alt_screen(this.termPtr)!==0}mouseTracking(){let A=this.wasm.exports.mouse_tracking(this.termPtr);return A===1000||A===1002?A:0}mouseSgr(){return this.wasm.exports.mouse_sgr(this.termPtr)!==0}focusEvents(){return this.wasm.exports.focus_events(this.termPtr)!==0}synchronizedOutput(){return this.wasm.exports.synchronized_output(this.termPtr)!==0}synchronizedOutputGeneration(){return this.wasm.exports.synchronized_output_generation(this.termPtr)}getTitle(){return null}getResponse(){let t=_(this.wasm,4096);if(t===0)return null;let e=this.wasm.exports.read_response(this.termPtr,t,4096);if(e===0)return D(this.wasm,t,4096),null;let s=new Uint8Array(this.wasm.exports.memory.buffer,t,e),i=new TextDecoder().decode(s);return D(this.wasm,t,4096),i}getScrollbackCount(){return this.wasm.exports.get_scrollback_count(this.termPtr)}getScrollbackDiscardedCount(){return this.wasm.exports.get_scrollback_discarded_count(this.termPtr)}getScrollbackCell(A,t){let e=this._ensureScrollbackLine(A),s=this._scrollbackView;if(!s||t>=e)return q;let i=Z(s,t*R),r={char:i.codepoint||32,fg:F,bg:F,flags:i.flags,width:i.width};if(i.hasGrapheme)r.chars=this._readScrollbackGrapheme(A,t);if(i.hasHyperlink)Object.assign(r,this._readHyperlink(A,t,!0));if(i.colorFlags&1)r.fgRgb=P(i.fgR,i.fgG,i.fgB);if(i.colorFlags&2)r.bgRgb=P(i.bgR,i.bgG,i.bgB);return r}getScrollbackLineLen(A){return this._ensureScrollbackLine(A)}getUnhandledSequences(){return[]}_invalidate(){this._viewportStale=!0,this._scrollbackOffset=-1}_decodeGrapheme(A){if(A===0||this._graphemeBufPtr===0)return;return new TextDecoder().decode(new Uint8Array(this.wasm.exports.memory.buffer,this._graphemeBufPtr,A))}_ensureGraphemeBuffer(A){if(A<=this._graphemeBufSize)return;if(this._graphemeBufPtr!==0)D(this.wasm,this._graphemeBufPtr,this._graphemeBufSize);this._graphemeBufSize=A,this._graphemeBufPtr=_(this.wasm,A)}_ensureHyperlinkBuffer(A){if(A<=this._hyperlinkBufSize)return;if(this._hyperlinkBufPtr!==0)D(this.wasm,this._hyperlinkBufPtr,this._hyperlinkBufSize);this._hyperlinkBufSize=A,this._hyperlinkBufPtr=_(this.wasm,A)}_readHyperlink(A,t,e){if(this._hyperlinkBufPtr===0)return;let s=e?this.wasm.exports.get_scrollback_hyperlink:this.wasm.exports.get_viewport_hyperlink,i=s(this.termPtr,A,t,this._hyperlinkBufPtr,this._hyperlinkBufSize);if(i>this._hyperlinkBufSize){if(this._ensureHyperlinkBuffer(i),this._hyperlinkBufPtr===0)return;i=s(this.termPtr,A,t,this._hyperlinkBufPtr,this._hyperlinkBufSize)}if(i===0||i>this._hyperlinkBufSize)return;let r=new TextDecoder().decode(new Uint8Array(this.wasm.exports.memory.buffer,this._hyperlinkBufPtr,i)),[o,n="",Q=""]=r.split("\x00");if(!o)return;let B=n?`e\x00${n}\x00${o}`:`g\x00${Q}\x00${o}`;return{linkUri:o,linkId:n||void 0,linkKey:B}}_readGrapheme(A,t){if(this._graphemeBufPtr===0||!this.wasm.exports.get_viewport_grapheme)return;let e=this.wasm.exports.get_viewport_grapheme(this.termPtr,A,t,this._graphemeBufPtr,this._graphemeBufSize);if(e>this._graphemeBufSize)this._ensureGraphemeBuffer(e),e=this.wasm.exports.get_viewport_grapheme(this.termPtr,A,t,this._graphemeBufPtr,this._graphemeBufSize);return this._decodeGrapheme(e)}_readScrollbackGrapheme(A,t){if(this._graphemeBufPtr===0||!this.wasm.exports.get_scrollback_grapheme)return;let e=this.wasm.exports.get_scrollback_grapheme(this.termPtr,A,t,this._graphemeBufPtr,this._graphemeBufSize);if(e>this._graphemeBufSize)this._ensureGraphemeBuffer(e),e=this.wasm.exports.get_scrollback_grapheme(this.termPtr,A,t,this._graphemeBufPtr,this._graphemeBufSize);return this._decodeGrapheme(e)}_allocViewportBuffer(){if(this._viewportBufPtr!==0)D(this.wasm,this._viewportBufPtr,this._viewportBufSize);if(this._viewportBufSize=this._cols*this._rows*R,this._viewportBufPtr=_(this.wasm,this._viewportBufSize),this._viewportView=null,this._viewportStale=!0,this._scrollbackBufPtr!==0)D(this.wasm,this._scrollbackBufPtr,this._scrollbackBufSize);this._scrollbackBufSize=this._cols*R,this._scrollbackBufPtr=_(this.wasm,this._scrollbackBufSize),this._scrollbackView=null,this._scrollbackOffset=-1}_ensureScrollbackLine(A){if(this._scrollbackBufPtr===0)return 0;if(this._scrollbackOffset!==A)this._scrollbackLen=this.wasm.exports.get_scrollback_line(this.termPtr,A,this._scrollbackBufPtr,this._cols),this._scrollbackOffset=A;if(this._scrollbackView?.buffer!==this.wasm.exports.memory.buffer)this._scrollbackView=new DataView(this.wasm.exports.memory.buffer,this._scrollbackBufPtr,this._scrollbackBufSize);return this._scrollbackLen}_ensureViewport(){if(this._viewportStale)this.wasm.exports.update(this.termPtr),this.wasm.exports.get_viewport(this.termPtr,this._viewportBufPtr),this._viewportStale=!1;if(this._viewportView?.buffer!==this.wasm.exports.memory.buffer)this._viewportView=new DataView(this.wasm.exports.memory.buffer,this._viewportBufPtr,this._viewportBufSize)}}var CA=/^[\x20-\x7e]*$/;var IA="Segmenter"in Intl?new Intl.Segmenter(void 0,{granularity:"grapheme"}):null;function GA(A){if(!IA)return[...A];let t=[];for(let e of IA.segment(A))t.push(e.segment);return t}function z(A){for(let t of A.querySelectorAll(".term-row span")){if(t.dataset.pinned==="1"||t.classList.contains("term-wide")||t.classList.contains("vt-pin"))continue;if(t.children.length>0)continue;let e=t.textContent??"";if(CA.test(e))continue;let s=document.createDocumentFragment(),i="",r=()=>{if(i)s.append(i);i=""};for(let o of GA(e)){if(CA.test(o)){i+=o;continue}r();let n=document.createElement("span");n.className="vt-pin",n.textContent=o,s.append(n)}r(),t.replaceChildren(s),t.dataset.pinned="1"}}var v=null,AA=null,L=()=>new Promise((A)=>requestAnimationFrame(()=>requestAnimationFrame(()=>A(!0)))),HA={async boot(A){AA=A.core==="lite"?await k.load():await H.load({wasmPath:A.wasmUrl,foregroundColor:A.foreground,backgroundColor:A.background});let t=document.getElementById("term");if(v=new O(t,{cols:A.cols,rows:A.rows,core:AA,autoResize:!1,cursorBlink:!1,onData:()=>{}}),await v.init(),t.classList.add("focused"),document.fonts?.ready)await document.fonts.ready;return await L(),z(t),await L(),!0},measure(){let A=document.createElement("div");A.className="term-row",A.style.cssText="position:absolute;visibility:hidden";let t=document.createElement("span");t.textContent="W",A.appendChild(t),document.querySelector(".term-grid").appendChild(A);let e=t.getBoundingClientRect().width,s=A.getBoundingClientRect().height;return A.remove(),{w:e,h:s}},layout(A,t,e,s,i,r){let o=document.getElementById("frame");if(o.style.width=`${A}px`,o.style.height=`${t}px`,i!==void 0&&r!==void 0)o.style.setProperty("--pad-x",`${i}px`),o.style.setProperty("--pad-y",`${r}px`);let n=document.getElementById("browser"),Q=document.getElementById("stage"),B=Q?/column/.test(getComputedStyle(Q).flexDirection):!1,h=getComputedStyle(o).position==="absolute";if(n&&!h)if(B)n.style.width=`${A}px`;else n.style.height=`${t}px`;let a=document.getElementById("term");return a.style.width=`${e}px`,a.style.height=`${s}px`,!0},browserOffset(A,t,e,s){let i=document.getElementById("browser");if(!i)return!1;return i.style.left=`${A}px`,i.style.top=`${t}px`,i.style.width=`${e}px`,i.style.height=`${s}px`,!0},keys(A){let t=document.getElementById("keys");if(!t)return!1;return t.replaceChildren(...A.map((e)=>Object.assign(document.createElement("span"),{textContent:e}))),!0},zoom(A){let t=document.getElementById("zoom"),e=document.getElementById("term");if(!A)t.style.transform="";else{let{clientWidth:s,clientHeight:i}=e,r=Math.min(s/A.w,i/A.h),o=(s-A.w*r)/2-A.x*r,n=(i-A.h*r)/2-A.y*r;o=Math.min(0,Math.max(s-s*r,o)),n=Math.min(0,Math.max(i-i*r,n)),t.style.transform=`translate(${o}px, ${n}px) scale(${r})`}return L()},focus(A){return document.getElementById("stage")?.classList.toggle("front-browser",A==="browser"),!0},browserFrame(A,t){let e=document.getElementById("bframe");if(!e)return Promise.resolve(!1);if(t!==void 0){let s=document.getElementById("browser-url");if(s)s.textContent=t}return new Promise((s)=>{e.onload=()=>L().then(()=>s(!0)),e.onerror=()=>s(!1),e.src=A})},async applyUrl(A){let t=await(await fetch(A)).json();for(let e of t)if(e.type==="o")v.write(e.data);else if(e.type==="r"){let[s,i]=e.data.split("x").map(Number);if(s>0&&i>0)v.resize(s,i)}return await L(),z(document.getElementById("term")),await L(),!0},async writeUrl(A){return v.write(await(await fetch(A)).text()),await L(),z(document.getElementById("term")),await L(),!0},title(A){let t=document.querySelector("#bar .title");if(!t)return!1;return t.textContent=A,!0},syncing(){return AA?.synchronizedOutput?.()??!1},background(A){return document.documentElement.style.background=A,document.body.style.background=A,L()},cursor(A){return document.getElementById("blink").textContent=A?"":".wterm.focused .term-cursor{background:transparent!important;color:inherit!important;outline:none!important}",!0}};window.__vt=HA;
@@ -1 +1 @@
1
- var K="AGFzbQEAAAABQAtgAAF/YAAAYAF/AX9gAX8AYAJ/fwBgBH9/f38AYAN/f38AYAJ/fwF/YAV/f39/fwBgBH9/f38Bf2ADf39/AX8DQUAAAAAAAAEAAAICAAAAAAACAgICAAAAAAAAAAAAAAAAAAAAAAEAAAMDBAQFBQUEBgcBCAkGAQEECgYGBAQDAAQEBAUBcAEBAQUDAQBkBgkBfwFBgIDAAAsH/gUsBm1lbW9yeQIACmdldE1heENvbHMAAAtnZXRDZWxsU2l6ZQABDmdldERlYnVnTG9nTWF4AAIUZ2V0RGVidWdMb2dFbnRyeVNpemUAARBnZXREZWJ1Z0xvZ0NvdW50AAMOZ2V0RGVidWdMb2dQdHIABA1jbGVhclJlc3BvbnNlAAUOZ2V0UmVzcG9uc2VMZW4ABg5nZXRSZXNwb25zZVB0cgAHFGdldFNjcm9sbGJhY2tMaW5lTGVuAAgRZ2V0U2Nyb2xsYmFja0xpbmUACRtnZXRTY3JvbGxiYWNrRGlzY2FyZGVkQ291bnQAChJnZXRTY3JvbGxiYWNrQ291bnQACxlnZXRIeXBlcmxpbmtSZWplY3RlZENvdW50AAwRZ2V0SHlwZXJsaW5rQ291bnQADRRnZXRIeXBlcmxpbmtDYXBhY2l0eQAODGdldExpbmtJZExlbgAPDGdldExpbmtJZFB0cgAQDWdldExpbmtVcmlMZW4AEQ1nZXRMaW5rVXJpUHRyABIPZ2V0VGl0bGVDaGFuZ2VkABMLZ2V0VGl0bGVMZW4AFAtnZXRUaXRsZVB0cgAVH2dldFN5bmNocm9uaXplZE91dHB1dEdlbmVyYXRpb24AFhVnZXRTeW5jaHJvbml6ZWRPdXRwdXQAFw5nZXRGb2N1c0V2ZW50cwAYC2dldE1vdXNlU2dyABkQZ2V0TW91c2VUcmFja2luZwAaEWdldFVzaW5nQWx0U2NyZWVuABsRZ2V0QnJhY2tldGVkUGFzdGUAHBBnZXRDdXJzb3JLZXlzQXBwAB0HZ2V0Um93cwAeB2dldENvbHMAHxBnZXRDdXJzb3JWaXNpYmxlACAMZ2V0Q3Vyc29yQ29sACEMZ2V0Q3Vyc29yUm93ACIKY2xlYXJEaXJ0eQAjC2dldERpcnR5UHRyACQKZ2V0R3JpZFB0cgAlCndyaXRlQnl0ZXMAJg5nZXRXcml0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AzsB9rGYgQAMAQtBACADOwH2sZiBAAsgAUECaiEBDAALC+YBAQJ/I4CAgIAAQRBrIgIkgICAgABBACEDIAJBADoACyACIAE6AAkgAiAAOgAIIAJCADcDACACQQAtAKCK8IAAIgE6AAogAUEEIAFBBEkbQQF0IQECQANAIAEgA0YNASACIANqIANB/InwgABqLwEAOwEAIANBAmohAwwACwtBAC0AlMSggQAiA0EMbCIBIAIpAwA3AeaumIEAIAFB7q6YgQBqIAJBCGooAgA2AQBBACADQQFqQR9xOgCUxKCBAEEAQQAoAsyumIEAQQFqIgNBfyADGzYCzK6YgQAgAkEQaiSAgICAAAt4AQJ/AkAgAEH//wNxIgJBAC8B9ofwgABPDQAgAkGAGGxB9IfAgABqIQBBACEDAkADQCADQQAvAfSH8IAATw0BIAAgASkCADcCACAAQQhqIAFBCGooAgA2AgAgAEEMaiEAIANBAWohAwwACwsgAkEBOgD4h/CAAAsLsAIBA38CQCAAQf//A3EiBEEALwH2h/CAAE8NACABQf//A3EiBUEALwH0h/CAACIAIAUgAEkbIQECQCAFIAJB//8DcSIGIAAgBiAASRsiBk8NACABIARBgBhsQfSHwIAAaiIFIAFBDGxqLQAJRSABQf//A3FBAEdxayEBIAJB//8DcSAATw0AAkAgBSAGQQxsai0ACQ0AIAZBAWohBgwBCyAGIAUgBkF/akH//wNxQQxsai0ACUECRmohBgtBACAGQf//A3EiACABQf//A3EiAmsiASABIABLGyEBIARBgBhsIAJBDGxqQfSHwIAAaiEAAkADQCABRQ0BIAAgAykCADcCACAAQQhqIANBCGooAgA2AgAgAEEMaiEAIAFBf2ohAQwACwsgBEEBOgD4h/CAAAsL4QEBBH8CQCACQf//A3FFDQAgAUH//wNxIABB//8DcU0NACABIABrIgQgAkH//wNxIgIgBEH//wNxIgQgAiAESRsiBWtB//8DcSEGQQAhAgNAAkAgBiACRw0AIAUgAGpB//8DcSECA0AgAEH//wNxIAJPDQMgACADEKmAgIAAIABBAWohAAwACwsgASACQX9zaiIHQf//A3EhBAJAQYAYRQ0AIARBgBhsQfSHwIAAaiAHIAVrQf//A3FBgBhsQfSHwIAAakGAGPwKAAALIARBAToA+IfwgAAgAkEBaiECDAALCwvYAQEDfwJAIAJB//8DcUUNACABQf//A3EgAEH//wNxTQ0AIAJB//8DcSICIAEgAGtB//8DcSIEIAIgBEkbIgRBgBhsQfSHwIAAaiEFIAFB//8DcSEGIABB//8DcSIAQYAYbCECA0ACQCAEIABqIAZJDQADQCAAQf//A3EgAUH//wNxTw0DIAAgAxCpgICAACAAQQFqIQAMAAsLAkBBgBhFDQAgAkH0h8CAAGogBSACakGAGPwKAAALIABB+IfwgABqQQE6AAAgAkGAGGohAiAAQQFqIQAMAAsLCysAAkAgAEH//wNxQQAvAdqumIEATw0AIABBAC8B3K6YgQAgARC5gICAAAsLtQECA38BfiACQf//A3EhAyAAIAAoAqTfuwFBhBhsaiIEIQUCQANAIANFDQEgASkCACEGIAVBCGogAUEIaigCADYCACAFIAY3AgAgAUEMaiEBIAVBDGohBSADQX9qIQMMAAsLIAQgAjsBgBggACAAKAKk37sBQQFqQegHcDYCpN+7AQJAIAAoAqDfuwEiAUHoB0kNACAAIAAoAqjfuwFBAWo2AqjfuwEPCyAAIAFBAWo2AqDfuwEL3QIBA39BACECAkAgAEEBakH/AXEiA0EALQCgivCAACIETw0AAkACQAJAIANBAXQvAfyJ8IAAQX5qDgQBAwMAAwsgAEECakH/AXEiACAETw0CIABBAXQvAfyJ8IAAIQBBAiECDAELIABBBGpB/wFxIgMgBE8NASADQQF0LwH8ifCAACECAkAgAEECakH/AXFBAXQvAfyJ8IAAIgMgAEEDakH/AXFBAXQvAfyJ8IAAIgBHDQAgACACQf//A3FHDQBBBCECAkAgA0H/AXEiAEEITw0AQRAhAAwCCwJAIABB+AFNDQBB5wEhAAwCCyADQXhqQf8BcUEKbkHoAWoiAEH/ASAAQf8BSRshAAwBCyADQQVsQf8AakH//wNxQf8BbkEkbCAAQQVsQf8AakH//wNxQf8BbkEGbGogAkEFbEH/AGpB//8DcUH/AW5qQRBqIQBBBCECCyABIAA7AQALIAIL7QEBBH8jgICAgABBEGsiACSAgICAAAJAAkACQEEALwGCspiBAEEBaiIBQf//A3FBAC8B8LGYgQAiAkkNAEEALwHusZiBACEBQQAtAI2ymIEADQEgAUH//wNxDQFBACEBQQAoAsCO8IAAIgNFDQEgA0H0h8CAAEEALwHcrpiBABCugICAAEEALwHwsZiBACECQQAvAe6xmIEAIQEMAQtBACABOwGCspiBAAwBCyAAQYACNgIMIABBgAI7AQggAEEgNgIEIABBAC8B6LGYgQA7AQogASACQQEgAEEEahCsgICAAAsgAEEQaiSAgICAAAtYAAJAIAMgAkkNACAAQgA3AgAPCyAEQf8BcSEEAkADQCACIANGDQECQCABIANqLQAAIARHDQAgAEEBOgAEIAAgAzYCAA8LIANBAWohAwwACwsgAEIANwIAC/UCAQV/I4CAgIAAQRBrIgQkgICAgAACQAJAIAEgA0cNAEEBIQUgAUUNASAAQQEgARsiBiACQQEgAxsiB0YNAQJAIAFBEEsNAAJAIAFBBE8NACAALQAAIActAABGIAAgAUF/aiIDai0AACAHIANqLQAARnEgACABQQF2IgNqLQAAIAcgA2otAABGcSEFDAMLQQAhAyAEQQA2AgAgBCABQXxqIgU2AgQgBCABQQF2QQxxIgA2AgggBCAFIABrNgIMQQAhBQJAA0AgA0EQRg0BIAcgBCADaigCACIAaigAACAGIABqKAAAcyAFciEFIANBBGohAwwACwsgBUUhBQwCCyABQX9qQQJ2QQFqIQAgBiEDIAchBQJAA0AgAEF/aiIARQ0BIAUoAAAhAiADKAAAIQggA0EEaiEDIAVBBGohBSAIIAJHDQIMAAsLIAYgAUF8aiIDaigAACAHIANqKAAARiEFDAELQQAhBQsgBEEQaiSAgICAACAFC3UAAkAgAEH//wNxQQAvAfaH8IAATw0AIAFB//8DcUEALwH0h/CAAEH//wNxTw0AIABB//8DcSIAQYAYbCABQf//A3FBDGxqIgEgAikCADcC9IfAgAAgAUH8h8CAAGogAkEIaigCADYCACAAQQE6APiH8IAACwtKAEEAQQAvAYKymIEAOwHerpiBAEEAQQAvAfixmIEAOwHgrpiBAEEAQQAoAeaxmIEANgHirpiBAEEAQQAtAJLEoIEAOgCTxKCBAAtVAEEAQQAvAd6umIEAOwGCspiBAEEAQQAvAeCumIEAOwH4sZiBAEEAQQAoAeKumIEANgHmsZiBAEEAQQAtAJPEoIEAOgCSxKCBAEEAQQA6AJXEoIEAC8wDAQF/I4CAgIAAQYACayICJICAgIAAIAAgARC7gICAAAJAQcgERQ0AQfiJ8IAAQQBByAT8CwALQQAgATsB2q6YgQBBACAAOwHcrpiBAEEAQQE6AIiymIEAQQBCgICAgICggIABNwHerpiBAEEAQYCCgAg2AeaxmIEAQQBBAToAkcSggQBBACABOwHwsZiBAEEAQQA7AYKymIEAQQBBADoAlcSggQBBAEEAOwGSxKCBAEEAQQA2AuyxmIEAQQBBADoAkMSggQBBAEEAOgCLspiBAEEAQQA6AI60mIEAQQBBADoAirKYgQBBAEEANgH2sZiBAEEAQQA6AImymIEAQQBBADoAhrKYgQBBAEEAOgCHspiBAEEAQoCAgIiAIDcB+rGYgQBBAEEAOwGEspiBAEEAQQA6AIyymIEAQQBBADoAjbKYgQBBAEEAOwHYrpiBAEEAQQA6AI+0mIEAQQBBADYB8rGYgQBBAEEAOwHqsZiBAAJAQYACRQ0AIAJBAEGAAvwLAAtBCCEBAkADQCABQf8BSw0BIAIgAWpBAToAACABQQhqIQEMAAsLAkBBgAJFDQBBlsSggQAgAkGAAvwKAAALIAJBgAJqJICAgIAAC50BAQN/I4CAgIAAQRBrIgMkgICAgABBACEEA38CQCACQf//A3EiBQ0AIAFB/wFxIQIgA0ELakF/aiEFAkADQCAERQ0BIAAgAmogBSAEai0AADoAACACQQFqIQIgBEF/aiEEDAALCyADQRBqJICAgIAAIAIPCyADQQtqIARqIAIgBUEKbiIFQQpsa0EwcjoAACAEQQFqIQQgBSECDAALC5ICAQN/AkAgAEH//wNxQQAvAdqumIEATw0AIAFB//8DcUEALwHcrpiBAEH//wNxTw0AAkACQAJAAkAgAEH//wNxIgNBgBhsQfSHwIAAaiIEIAFB//8DcSIFQQxsaiIALQAJDgMABAEECyAFRQ0BIAQgAUF/akH//wNxQQxsaiIBLQAJQQJHDQEgASACKQIANwIAIAFBCGogAkEIaigCADYCAAwBCyAAIAIpAgA3AgAgAEEIaiACQQhqKAIANgIAIAFBAWoiAUH//wNxQQAvAdyumIEATw0BIAQgAUH//wNxQQxsaiIALQAJDQELIAAgAikCADcCACAAQQhqIAJBCGooAgA2AgALIANBAToA+IfwgAALC50CAQd/IABB//8DcSIDQYAYbEH0h8CAAGohBEEAIQBBACEFA0ACQAJAIABB//8DcSIGIAFB//8DcSIHTw0AAkACQAJAIAQgBkEMbGoiCC0ACQ4DAAQBAgsCQCAGRQ0AIAQgAEF/akH//wNxQQxsai0ACUECRg0ECyAIIAIpAgA3AgAgCEEIaiACQQhqKAIANgIAQQEhBQwDCwJAAkAgAEEBaiIJQf//A3EiBiAHTw0AIAQgBkEMbGotAAlFDQELIAggAikCADcCACAIQQhqIAJBCGooAgA2AgBBASEFIAkhAAwECyAAQQJqIQAMAwtBASEFIAhBAToACQwBCwJAIAVBAXFFDQAgA0EBOgD4h/CAAAsPCyAAQQFqIQAMAAsL0wMBAX8CQCAAQQFxQQAtAI2ymIEARg0AQQAoAtCumIEAIgJFDQACQAJAAkACQAJAAkAgAEEBcUUNAEEAQQAvAeyxmIEAOwHYrpiBAEEAQQA7AeyxmIEAIAFBAXENAQwECwJAQYSCMEUNAEH0h8CAACACQYSCMPwKAAALQQAhAEEAQQAvAdiumIEAOwHssZiBAEEAQQA6AI2ymIEAIAFBAXENAQwCC0EAQQAvAYKymIEAOwGEspiBAEEAQQAvAfixmIEAOwGAspiBAEEAQQAtAJLEoIEAOgCMspiBAEEAQQAoAeaxmIEAQRB3NgL8sZiBAAwCC0EAQQAvAYSymIEAOwGCspiBAEEAQQAvAYCymIEAOwH4sZiBAEEAQQAtAIyymIEAOgCSxKCBAEEAQQAoAvyxmIEAQRB3NgHmsZiBAEEAQQA6AJXEoIEAC0EALwHarpiBACEBA0AgASAARg0CIABB+IfwgABqQQE6AAAgAEEBaiEADAALCwJAQYSCMEUNACACQfSHwIAAQYSCMPwKAAALQQAvAdyumIEAQQAvAdqumIEAELuAgIAAQQBBAToAjbKYgQALQQBBAC8B2q6YgQA7AfCxmIEAQQBBADsB7rGYgQALC08AQQAgATsB9ofwgABBACAAOwH0h/CAAEEAIQACQANAIABB//8DcSABQf//A3FPDQEgABC8gICAACAAQQFqIQBBAC8B9ofwgAAhAQwACwsLEAAgAEGEgMCAABCpgICAAAsIAEHEvdyCAAvTCgENfyOAgICAAEEQayICJICAgIAAQYACIAFB//8DcSIDQQEgA0EBSxsiA0GAAiADQYACSRsgAUGAAksbIQRBAC8B2q6YgQAhBQJAAkBBgAIgAEH//wNxIgFBASABQQFLGyIBQYACIAFBgAJJGyAAQYACSxsiBkEALwHcrpiBACIDRw0AIAQgBUH//wNxRg0BCwJAIAYgA0kiB0UNACAEIAVB//8DcSIBIAQgAUkbIQggBkEMbEH0h8CAAGohCUEAIQoDQCAKIAhGDQEgCSEBIAYhAAJAA0AgAyAAQf//A3FGDQEgAUEIakEAKAKMgMCAADYCACABQQApAoSAwIAANwIAIAFBDGohASAAQQFqIQAMAAsLIAlBgBhqIQkgCkEBaiEKDAALCwJAIAQgBUH//wNxIghPDQBBAC8BgrKYgQAiASAESSIADQBBACABIARrQQFqIgEgABshCwJAQQAtAI2ymIEADQBBACgCwI7wgABFDQAgBiADIAcbIQogAUH//wNxIQlB9IfAgAAhAEEAIQEDQCAJIAFGDQEgASAKQYSAwIAAELmAgIAAQQAoAsCO8IAAIAAgChCugICAACAAQYAYaiEAIAFBAWohAQwACwtBACAFIAtBhIDAgAAQrICAgABBAEEAQQAvAYKymIEAIgEgC0H//wNxayIAIAAgAUsbOwGCspiBAAtBACEBQQAgBDsB2q6YgQBBACAGOwHcrpiBAEEAIAQ7AfaH8IAAQQAgBjsB9IfwgAACQCAEIAhNDQACQEEALQCNspiBAA0AQQAhAUEAKALAjvCAACIARQ0AIAAoAqDfuwEiACAEIAVrQf//A3EiCiAAIApJGyIMRQ0AQQAgBSAMaiAMQYSAwIAAEKuAgIAAIAxBf2ohC0EAIQcCQANAIAcgDEYNAUEAKALAjvCAACIKKAKg37sBIgFFDQEgC0H//wNxQYAYbEH0h8CAAGohACAKIAFBf2o2AqDfuwEgCiAKKAKk37sBQecHakHoB3AiCTYCpN+7ASAHQX9zIAxqIg1B//8DcSEOQQAhASAKIAlBhBhsaiIIIQkDQAJAAkAgBiABRg0AQYSAwIAAIQogASAILwGAGE8NASACQQhqIAlBCGooAgA2AgAgAiAJKQIANwMAIAIhCgwBCyANIAZBhIDAgAAQuYCAgAAgDkEBOgD4h/CAACALQX9qIQsgB0EBaiEHDAILIAAgCikCADcCACAAQQhqIApBCGooAgA2AgAgAEEMaiEAIAlBDGohCSABQQFqIQEMAAsLC0EAQQAvAYKymIEAIAxqOwGCspiBACAMIQELIAEgBWohAQNAIAFB//8DcSAETw0BIAEQvICAgAAgAUEBaiEBDAALCwJAIAYgA00NACAEIAVB//8DcSIBIAQgAUkbIQkgBiADayEIIANBDGxB9IfAgABqIQpBACEDA0AgAyAJRg0BIAghACAKIQECQANAIABFDQEgAUEIakEAKAKMgMCAADYCACABQQApAoSAwIAANwIAIABBf2ohACABQQxqIQEMAAsLIANBAToA+IfwgAAgCkGAGGohCiADQQFqIQMMAAsLQQAhAUEAIAQ7AfCxmIEAQQBBADsB7rGYgQACQANAIAFB//8DcSAETw0BIAFBhIDAgAAQrYCAgAAgAUEBaiEBDAALCwJAQQAvAfixmIEAIAZJDQBBACAGQX9qOwH4sZiBAAsCQEEALwGCspiBACAESQ0AQQAgBEF/ajsBgrKYgQALQQAhAQNAIAQgAUYNASABQfiH8IAAakEBOgAAIAFBAWohAQwACwsgAkEQaiSAgICAAAt0AEGAAiAAQQEgABsgAEGAAksbQYACIAFBASABGyABQYACSxsQtoCAgABBAEHE/dyCADYC0K6YgQBBAEGY3qCBADYCwI7wgABBAEIANwK4vdyCAEEAQQA2AsSO8IAAQQBBADsByK6YgQBBAEEANgLAvdyCAAsL/gcBAEGAgMAAC/QHaWQ9ACAAAAAAAQABAAEAAEUAAAAAAQABAAEAAAARAABfEQAAGiMAABsjAAApIwAAKiMAAOkjAADsIwAA8CMAAPAjAADzIwAA8yMAAP0lAAD+JQAAFCYAABUmAAAwJgAANyYAAEgmAABTJgAAfyYAAH8mAACKJgAAjyYAAJMmAACTJgAAoSYAAKEmAACqJgAAqyYAAL0mAAC+JgAAxCYAAMUmAADOJgAAziYAANQmAADUJgAA6iYAAOomAADyJgAA8yYAAPUmAAD1JgAA+iYAAPomAAD9JgAA/SYAAAUnAAAFJwAACicAAAsnAAAoJwAAKCcAAEwnAABMJwAATicAAE4nAABTJwAAVScAAFcnAABXJwAAlScAAJcnAACwJwAAsCcAAL8nAAC/JwAAGysAABwrAABQKwAAUCsAAFUrAABVKwAAgC4AAJkuAACbLgAA8y4AAAAvAADVLwAA8C8AAD4wAABBMAAAljAAAJkwAAD/MAAABTEAAC8xAAAxMQAAjjEAAJAxAADlMQAA7zEAAB4yAAAgMgAARzIAAFAyAACMpAAAkKQAAMakAABgqQAAfKkAAACsAACj1wAAAPkAAP/6AAAQ/gAAGf4AADD+AABS/gAAVP4AAGb+AABo/gAAa/4AAAH/AABg/wAA4P8AAOb/AADgbwEA5G8BAPBvAQD2bwEAAHABANWMAQD/jAEAHo0BAICNAQDyjQEA8K8BAPOvAQD1rwEA+68BAP2vAQD+rwEAALABACKxAQAysQEAMrEBAFCxAQBSsQEAVbEBAFWxAQBksQEAZ7EBAHCxAQD7sgEAANMBAFbTAQBg0wEAdtMBAATwAQAE8AEAz/ABAM/wAQCO8QEAjvEBAJHxAQCa8QEAAPIBAALyAQAQ8gEAO/IBAEDyAQBI8gEAUPIBAFHyAQBg8gEAZfIBAADzAQAg8wEALfMBADXzAQA38wEAfPMBAH7zAQCT8wEAoPMBAMrzAQDP8wEA0/MBAODzAQDw8wEA9PMBAPTzAQD48wEAPvQBAED0AQBA9AEAQvQBAPz0AQD/9AEAPfUBAEv1AQBO9QEAUPUBAGf1AQB69QEAevUBAJX1AQCW9QEApPUBAKT1AQD79QEAT/YBAID2AQDF9gEAzPYBAMz2AQDQ9gEA0vYBANX2AQDY9gEA3PYBAN/2AQDr9gEA7PYBAPT2AQD89gEA4PcBAOv3AQDw9wEA8PcBAAz5AQA6+QEAPPkBAEX5AQBH+QEA//kBAHD6AQB8+gEAgPoBAIr6AQCO+gEAxvoBAMj6AQDI+gEAzfoBANz6AQDf+gEA6voBAO/6AQD4+gEAAAACAP3/AgAAAAMA/f8DAA==";function rA(A){let t=atob(A),e=new Uint8Array(t.length);for(let s=0;s<t.length;s++)e[s]=t.charCodeAt(s);return e.buffer}class y{get dv(){if(this._dvBuffer!==this.memory.buffer)this._dvBuffer=this.memory.buffer,this._dv=new DataView(this.memory.buffer);return this._dv}constructor(A){this.gridPtr=0,this.dirtyPtr=0,this.writeBufferPtr=0,this.cellSize=12,this.maxCols=256,this.encoder=new TextEncoder,this.decoder=new TextDecoder,this._dvBuffer=null,this.linkCache=new Map,this.exports=A.exports,this.memory=this.exports.memory}static async load(A){let t;if(A){let s=await fetch(A);if(!s.ok)throw Error(`[wterm] Failed to load WASM from ${A}: ${s.status} ${s.statusText}`);t=await s.arrayBuffer()}else t=rA(K);let{instance:e}=await WebAssembly.instantiate(t);return new y(e)}init(A,t){this.exports.init(A,t),this.linkCache.clear(),this._updatePointers()}_updatePointers(){this.gridPtr=this.exports.getGridPtr(),this.dirtyPtr=this.exports.getDirtyPtr(),this.writeBufferPtr=this.exports.getWriteBuffer(),this.cellSize=this.exports.getCellSize(),this.maxCols=this.exports.getMaxCols()}writeString(A,t){let e=this.encoder.encode(A);this.writeRaw(e,t)}writeRaw(A,t){let e=0;while(e<A.length){let s=Math.min(A.length-e,8192);new Uint8Array(this.memory.buffer,this.writeBufferPtr,8192).set(A.subarray(e,e+s)),this.exports.writeBytes(s),e+=s,t?.()}}getCell(A,t){let e=this.gridPtr+(A*this.maxCols+t)*this.cellSize,s=this.dv,i={char:s.getUint32(e,!0),fg:s.getUint16(e+4,!0),bg:s.getUint16(e+6,!0),flags:s.getUint8(e+8),width:s.getUint8(e+9)};return Object.assign(i,this._readLink(s.getUint16(e+10,!0))),i}isDirtyRow(A){return new Uint8Array(this.memory.buffer,this.dirtyPtr,256)[A]!==0}clearDirty(){this.exports.clearDirty()}getCursor(){return{row:this.exports.getCursorRow(),col:this.exports.getCursorCol(),visible:this.exports.getCursorVisible()!==0}}getCols(){return this.exports.getCols()}getRows(){return this.exports.getRows()}cursorKeysApp(){return this.exports.getCursorKeysApp()!==0}bracketedPaste(){return this.exports.getBracketedPaste()!==0}usingAltScreen(){return this.exports.getUsingAltScreen()!==0}mouseTracking(){let A=this.exports.getMouseTracking();return A===1000||A===1002?A:0}mouseSgr(){return this.exports.getMouseSgr()!==0}focusEvents(){return this.exports.getFocusEvents()!==0}synchronizedOutput(){return this.exports.getSynchronizedOutput()!==0}synchronizedOutputGeneration(){return this.exports.getSynchronizedOutputGeneration()}getTitle(){if(this.exports.getTitleChanged()===0)return null;let A=this.exports.getTitlePtr(),t=this.exports.getTitleLen(),e=new Uint8Array(this.memory.buffer,A,t);return this.decoder.decode(e)}getResponse(){let A=this.exports.getResponseLen();if(A===0)return null;let t=this.exports.getResponsePtr(),e=new Uint8Array(this.memory.buffer,t,A),s=this.decoder.decode(e);return this.exports.clearResponse(),s}getResourceState(){let A=this.exports.getHyperlinkCapacity?.(),t=this.exports.getHyperlinkCount?.(),e=this.exports.getHyperlinkRejectedCount?.();if(A===void 0||t===void 0||e===void 0)return{};return{hyperlinks:{capacity:A,used:t,rejected:e,saturated:t>=A}}}getScrollbackCount(){return this.exports.getScrollbackCount()}getScrollbackDiscardedCount(){return this.exports.getScrollbackDiscardedCount()}getScrollbackCell(A,t){let s=this.exports.getScrollbackLine(A)+t*this.cellSize,i=this.dv,r={char:i.getUint32(s,!0),fg:i.getUint16(s+4,!0),bg:i.getUint16(s+6,!0),flags:i.getUint8(s+8),width:i.getUint8(s+9)};return Object.assign(r,this._readLink(i.getUint16(s+10,!0))),r}getScrollbackLineLen(A){return this.exports.getScrollbackLineLen(A)}getUnhandledSequences(){let A=this.exports.getDebugLogCount();if(A===0)return[];let t=this.exports.getDebugLogPtr(),e=this.exports.getDebugLogEntrySize(),s=this.exports.getDebugLogMax(),i=Math.min(A,s),r=new DataView(this.memory.buffer),o=[],Q=A>=s?A%s:0;for(let g=0;g<i;g++){let n=(Q+g)%s,l=t+n*e,E=r.getUint8(l);if(E===0)continue;let c=r.getUint8(l+1),h=r.getUint8(l+2),I=[];for(let f=0;f<Math.min(h,4);f++)I.push(r.getUint16(l+4+f*2,!0));o.push({final:String.fromCharCode(E),private:c?String.fromCharCode(c):"",paramCount:h,params:I})}return o}resize(A,t){this.exports.resizeTerminal(A,t),this._updatePointers()}_readLink(A){if(A===0)return;let t=this.linkCache.get(A);if(t)return t;let e=this.exports.getLinkUriLen(A);if(e===0)return;let s=this.decoder.decode(new Uint8Array(this.memory.buffer,this.exports.getLinkUriPtr(A),e)),i=this.exports.getLinkIdLen(A),r=i===0?void 0:this.decoder.decode(new Uint8Array(this.memory.buffer,this.exports.getLinkIdPtr(A),i)),o={linkUri:s,linkId:r,linkKey:r?`e\x00${r}\x00${s}`:`b\x00${A}`};return this.linkCache.set(A,o),o}}function W(A){let t=A>>16&255,e=A>>8&255,s=A&255;return`rgb(${t},${e},${s})`}function X(A){if(A===256)return null;if(A<16)return`var(--term-color-${A})`;if(A<232){let e=A-16,s=Math.floor(e/36)*51,i=Math.floor(e/6)%6*51,r=e%6*51;return`rgb(${s},${i},${r})`}let t=(A-232)*10+8;return`rgb(${t},${t},${t})`}function V(A,t){if(t!==void 0)return W(t);return X(A)}function U(A,t){if(t!==void 0)return W(t);return X(A)}function O(A,t,e,s,i){let r=A,o=t,Q=s,g=i;if(e&32){let h=r;r=o,o=h;let I=Q;if(Q=g,g=I,Q===void 0&&r===256)r=0;if(g===void 0&&o===256)o=7}let n=V(r,Q),l=U(o,g),E="";if(n)E+=`color:${n};`;if(l)E+=`background:${l};`;if(e&1)E+="font-weight:bold;";if(e&2)E+="opacity:0.5;";if(e&4)E+="font-style:italic;";let c=[];if(e&8)c.push("underline");if(e&128)c.push("line-through");if(c.length)E+=`text-decoration:${c.join(" ")};`;if(e&64)E+="visibility:hidden;";return E}function b(A){return A.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function oA(A){if(!A)return;try{let t=new URL(A);return t.protocol==="http:"||t.protocol==="https:"?t.href:void 0}catch{return}}function nA(A){if(!A.linkUri)return"";return A.linkKey??`fallback\x00${A.linkId??""}\x00${A.linkUri}`}function BA(A,t,e,s,i){let r=A,o=t,Q=s,g=i;if(e&32){if([r,o]=[o,r],[Q,g]=[g,Q],Q===void 0&&r===256)r=0;if(g===void 0&&o===256)o=7}return{fg:V(r,Q)||"var(--term-fg)",bg:U(o,g)||"var(--term-bg)"}}var R="round(calc(var(--term-row-height) * 0.125), 1px)",T="round(calc(var(--term-row-height) * 0.25), 1px)",q="round(calc(var(--term-row-height) * 0.375), 1px)",_="round(calc(var(--term-row-height) * 0.5), 1px)",P="round(calc(var(--term-row-height) * 0.625), 1px)",z="round(calc(var(--term-row-height) * 0.75), 1px)",Z="round(calc(var(--term-row-height) * 0.875), 1px)";function QA(A,t,e){switch(A){case 9600:return`linear-gradient(${t} ${_},${e} ${_})`;case 9601:return`linear-gradient(${e} ${Z},${t} ${Z})`;case 9602:return`linear-gradient(${e} ${z},${t} ${z})`;case 9603:return`linear-gradient(${e} ${P},${t} ${P})`;case 9604:return`linear-gradient(${e} ${_},${t} ${_})`;case 9605:return`linear-gradient(${e} ${q},${t} ${q})`;case 9606:return`linear-gradient(${e} ${T},${t} ${T})`;case 9607:return`linear-gradient(${e} ${R},${t} ${R})`;case 9608:return t;case 9609:return`linear-gradient(to right,${t} 87.5%,${e} 87.5%)`;case 9610:return`linear-gradient(to right,${t} 75%,${e} 75%)`;case 9611:return`linear-gradient(to right,${t} 62.5%,${e} 62.5%)`;case 9612:return`linear-gradient(to right,${t} 50%,${e} 50%)`;case 9613:return`linear-gradient(to right,${t} 37.5%,${e} 37.5%)`;case 9614:return`linear-gradient(to right,${t} 25%,${e} 25%)`;case 9615:return`linear-gradient(to right,${t} 12.5%,${e} 12.5%)`;case 9616:return`linear-gradient(to right,${e} 50%,${t} 50%)`;case 9617:return`color-mix(in srgb,${t} 25%,${e})`;case 9618:return`color-mix(in srgb,${t} 50%,${e})`;case 9619:return`color-mix(in srgb,${t} 75%,${e})`;case 9620:return`linear-gradient(${t} ${R},${e} ${R})`;case 9621:return`linear-gradient(to right,${e} 87.5%,${t} 87.5%)`;default:{let i={9622:[!1,!1,!0,!1],9623:[!1,!1,!1,!0],9624:[!0,!1,!1,!1],9625:[!0,!1,!0,!0],9626:[!0,!1,!1,!0],9627:[!0,!0,!0,!1],9628:[!0,!0,!1,!0],9629:[!1,!0,!1,!1],9630:[!1,!0,!0,!1],9631:[!1,!0,!0,!0]}[A];if(!i)return t;let[r,o,Q,g]=i;if(r&&o&&Q&&g)return t;let n=[],l=["0 0","100% 0","0 100%","100% 100%"];return i.forEach((E,c)=>{if(E)n.push(`linear-gradient(${t},${t}) ${l[c]}/50% 50% no-repeat`)}),n.push(e),n.join(",")}}}class H{constructor(A){this.rows=0,this.cols=0,this.rowEls=[],this.prevCursorRow=-1,this.prevCursorCol=-1,this.prevContainerBg="",this.prevRowBg=[],this._scrollbackRowEls=[],this._scrollbackStartKey=0,this._renderedScrollbackCount=-1,this._renderedDiscardedCount=-1,this._scrollbackTopSpacer=null,this._scrollbackBottomSpacer=null,this.container=A}setup(A,t){this.cols=A,this.rows=t,this.container.innerHTML="",this.rowEls=[],this.prevRowBg=[],this._scrollbackRowEls=[],this._scrollbackStartKey=0,this._renderedScrollbackCount=-1,this._renderedDiscardedCount=-1;let e=document.createDocumentFragment();this._scrollbackTopSpacer=document.createElement("div"),this._scrollbackTopSpacer.className="term-scrollback-spacer",e.appendChild(this._scrollbackTopSpacer),this._scrollbackBottomSpacer=document.createElement("div"),this._scrollbackBottomSpacer.className="term-scrollback-spacer",e.appendChild(this._scrollbackBottomSpacer);for(let s=0;s<t;s++){let i=document.createElement("div");i.className="term-row",e.appendChild(i),this.rowEls.push(i)}this.container.appendChild(e),this.prevCursorRow=-1,this.prevCursorCol=-1}_buildRowContent(A,t,e,s,i){let r="",o="",Q="",g=[],n=0,l="",E,c="",h=(C,B,a)=>{let u=oA(a),D=u?B:"";if(D!==c){if(c)r+="</a>";if(D)r+=`<a class="term-link" href="${b(u)}" target="_blank" rel="noopener noreferrer">`;c=D}r+=C},I=(C)=>{if(!Q)return;let B=b(Q),a="";if(s>=n&&s<C){let u=s-n,D=g.slice(0,u).join(""),p=g[u]||" ",w=g.slice(u+1).join("");if(D)a+=o?`<span style="${o}">${b(D)}</span>`:`<span>${b(D)}</span>`;if(a+=o?`<span class="term-cursor" style="${o}">${b(p)}</span>`:`<span class="term-cursor">${b(p)}</span>`,w)a+=o?`<span style="${o}">${b(w)}</span>`:`<span>${b(w)}</span>`}else a+=o?`<span style="${o}">${B}</span>`:`<span>${B}</span>`;h(a,l,E),Q="",g=[]},f=(C,B,a,u,D)=>{let p=C?` class="${C}"`:"",w=B?` style="${B}"`:"";h(`<span${p}${w}>${b(a)}</span>`,u,D)};for(let C=0;C<this.cols;C++){let B=t(C),a=C<e,u=a?B.char:0,D=a?B.width??1:1,p=a?nA(B):"",w=a?B.linkUri:void 0;if(a&&D===0){if(I(C),!(C>0&&(t(C-1).width??1)===2))f(C===s?"term-cursor":"",""," ",p,w);o="",l="",E=void 0,Q="",g=[],n=C+1;continue}if(a&&D===2){if(I(C),C+1>=this.cols){f(C===s?"term-cursor":"",""," ",p,w),o="",l="",E=void 0,Q="",g=[],n=C+1;continue}let m=B.chars??(u>=32?String.fromCodePoint(u):" "),x=O(B.fg,B.bg,B.flags,B.fgRgb,B.bgRgb),k=s>=C&&s<C+2?"term-wide term-cursor":"term-wide";f(k,x,m,p,w),o="",l="",E=void 0,Q="",g=[],n=C+2;continue}if(a&&u>=9600&&u<=9631){I(C);let m=BA(B.fg,B.bg,B.flags,B.fgRgb,B.bgRgb),x=C===s?"term-block term-cursor":"term-block",k=QA(u,m.fg,m.bg),iA=B.flags&2?"opacity:0.5;":"";h(`<span class="${x}" style="background:${k};${iA}"></span>`,p,w),o="",l="",E=void 0,Q="",g=[],n=C+1}else{let m=B.chars??(a&&u>=32?String.fromCodePoint(u):" "),x=a?O(B.fg,B.bg,B.flags,B.fgRgb,B.bgRgb):"";if(x!==o||p!==l)I(C),o=x,l=p,E=w,Q=m,g=[m],n=C;else Q+=m,g.push(m)}}if(I(this.cols),c)r+="</a>";A.innerHTML=r;let d="";if(e>=this.cols&&this.cols>0){let C=t(this.cols-1),B=C.bg,a=C.bgRgb;if(C.flags&32){if(B=C.fg,a=C.fgRgb,a===void 0&&B===256)B=7}d=U(B,a)||""}let L=d?`0 1px 0 ${d}`:"";if(i>=0){if(d!==(this.prevRowBg[i]??""))A.style.background=d,A.style.boxShadow=L,this.prevRowBg[i]=d}else A.style.background=d,A.style.boxShadow=L}_buildScrollbackRowEl(A,t){let e=document.createElement("div");e.className="term-row term-scrollback-row";let s=A.getScrollbackLineLen(t);return this._buildRowContent(e,(i)=>A.getScrollbackCell(t,i),s,-1,-1),e}syncScrollback(A,t){let e=A.getScrollbackCount(),s=t?.rowHeight??0,i=t!==void 0&&s>0,r=t?.overscanRows??10,o=t?.scrollbackDiscardedCount!==void 0,Q=t?.scrollbackDiscardedCount??0,g=t&&t.clientHeight>0?t.clientHeight:this.rows*s,n=i?Math.floor(t.scrollTop/s):0,l=i?Math.ceil(g/s):e,E=i?Math.max(0,Math.min(e,n-r)):0,c=i?Math.max(E,Math.min(e,n+l+r)):e,h=this.container.ownerDocument.getSelection();if(h!==null&&!h.isCollapsed&&(this.container.contains(h.anchorNode)||this.container.contains(h.focusNode))&&this._scrollbackRowEls.length>0)E=Math.min(E,Math.max(0,this._scrollbackStartKey-Q)),c=Math.max(c,Math.min(e,this._scrollbackStartKey-Q+this._scrollbackRowEls.length));let f=Q+E;if(o&&e===this._renderedScrollbackCount&&Q===this._renderedDiscardedCount&&f===this._scrollbackStartKey&&c-E===this._scrollbackRowEls.length)return;let d=new Map;for(let a=0;a<this._scrollbackRowEls.length;a++)d.set(this._scrollbackStartKey+a,this._scrollbackRowEls[a]);let L=Q+c;for(let[a,u]of d)if(a<f||a>=L)u.remove();let C=[],B=this._scrollbackTopSpacer?.nextSibling??null;for(let a=E;a<c;a++){let u=Q+a,D=e-1-a,p=this._buildScrollbackRowEl(A,D),w=d.get(u),m=p,x=!1;if(w&&w.innerHTML===p.innerHTML&&w.style.cssText===p.style.cssText)m=w;else if(w)w.replaceWith(p),x=!0;if(!x&&m!==B)this.container.insertBefore(m,B??this._scrollbackBottomSpacer);B=m.nextSibling,C.push(m)}if(this._scrollbackRowEls=C,this._scrollbackStartKey=f,this._renderedScrollbackCount=e,this._renderedDiscardedCount=Q,this._scrollbackTopSpacer)this._scrollbackTopSpacer.style.height=`${E*s}px`;if(this._scrollbackBottomSpacer)this._scrollbackBottomSpacer.style.height=`${(e-c)*s}px`}render(A,t){let e=A.getRows(),s=A.getCols(),i=!1;if(e!==this.rows||s!==this.cols)this.setup(s,e),i=!0;this.syncScrollback(A,t);let r=A.getCursor(),o=r.visible,Q=r.row!==this.prevCursorRow||r.col!==this.prevCursorCol;for(let n=0;n<this.rows;n++){let l=i||A.isDirtyRow(n),E=n===this.prevCursorRow&&Q,c=n===r.row;if(l||E||c&&Q){let h=c&&o?r.col:-1;this._buildRowContent(this.rowEls[n],(I)=>A.getCell(n,I),this.cols,h,n)}}if(this.prevCursorRow=r.row,this.prevCursorCol=r.col,i||A.isDirtyRow(this.rows-1)){let n=A.getCell(this.rows-1,this.cols-1),l=n.bg,E=n.bgRgb;if(n.flags&32){if(l=n.fg,E=n.fgRgb,E===void 0&&l===256)l=7}let c=U(l,E)||"";if(c!==this.prevContainerBg)this.container.style.background=c,this.prevContainerBg=c}A.clearDirty()}}function F(A,t){return t.platform.startsWith("Mac")?A.metaKey:A.ctrlKey}var gA={ArrowUp:"\x1B[A",ArrowDown:"\x1B[B",ArrowRight:"\x1B[C",ArrowLeft:"\x1B[D",Home:"\x1B[H",End:"\x1B[F"},EA={ArrowUp:"\x1BOA",ArrowDown:"\x1BOB",ArrowRight:"\x1BOC",ArrowLeft:"\x1BOD",Home:"\x1BOH",End:"\x1BOF"},CA={Enter:"\r",Backspace:"",Tab:"\t",Escape:"\x1B",Insert:"\x1B[2~",Delete:"\x1B[3~",PageUp:"\x1B[5~",PageDown:"\x1B[6~",F1:"\x1BOP",F2:"\x1BOQ",F3:"\x1BOR",F4:"\x1BOS",F5:"\x1B[15~",F6:"\x1B[17~",F7:"\x1B[18~",F8:"\x1B[19~",F9:"\x1B[20~",F10:"\x1B[21~",F11:"\x1B[23~",F12:"\x1B[24~"};class G{constructor(A,t,e,s=()=>null){this.composing=!1,this.mouseButtons=0,this.focused=!1,this.element=A,this.onData=t,this.getBridge=e,this.getCellSize=s,this.textarea=document.createElement("textarea"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("autocomplete","off"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("spellcheck","false"),this.textarea.setAttribute("enterkeyhint","send"),this.textarea.setAttribute("tabindex","0"),this.textarea.setAttribute("aria-hidden","true");let i=this.textarea.style;i.position="absolute",i.left="-9999px",i.top="0",i.width="1px",i.height="1px",i.opacity="0",i.overflow="hidden",i.border="0",i.padding="0",i.margin="0",i.outline="none",i.resize="none",i.pointerEvents="none",i.caretColor="transparent",i.color="transparent",i.background="transparent",A.appendChild(this.textarea),this._onKeyDown=this.handleKeyDown.bind(this),this._onPaste=this.handlePaste.bind(this),this._onCompositionStart=this.handleCompositionStart.bind(this),this._onCompositionEnd=this.handleCompositionEnd.bind(this),this._onInput=this.handleInput.bind(this),this._onFocus=()=>{if(this.focused)return;if(this.focused=!0,this.element.classList.add("focused"),this.getBridge()?.focusEvents?.())this.onData("\x1B[I")},this._onBlur=()=>{if(this.focused=!1,this.element.classList.remove("focused"),this.stopMouseCapture(),this.getBridge()?.focusEvents?.())this.onData("\x1B[O")},this._onMouseDown=(r)=>this.handleMouse(r,"press"),this._onMouseMove=(r)=>{if(this.mouseButtons!==0)this.handleMouse(r,"move")},this._onMouseUp=(r)=>{if(this.mouseButtons===0)return;if(this.handleMouse(r,"release"),this.mouseButtons=r.buttons&7,this.mouseButtons===0)this.stopMouseCapture()},this._onWheel=(r)=>this.handleMouse(r,"wheel"),this.textarea.addEventListener("keydown",this._onKeyDown),this.textarea.addEventListener("paste",this._onPaste),this.textarea.addEventListener("compositionstart",this._onCompositionStart),this.textarea.addEventListener("compositionend",this._onCompositionEnd),this.textarea.addEventListener("input",this._onInput),this.textarea.addEventListener("focus",this._onFocus),this.textarea.addEventListener("blur",this._onBlur),this.element.addEventListener("mousedown",this._onMouseDown),this.element.addEventListener("wheel",this._onWheel,{passive:!1})}focus(){this.textarea.focus({preventScroll:!0})}destroy(){this.textarea.removeEventListener("keydown",this._onKeyDown),this.textarea.removeEventListener("paste",this._onPaste),this.textarea.removeEventListener("compositionstart",this._onCompositionStart),this.textarea.removeEventListener("compositionend",this._onCompositionEnd),this.textarea.removeEventListener("input",this._onInput),this.textarea.removeEventListener("focus",this._onFocus),this.textarea.removeEventListener("blur",this._onBlur),this.element.removeEventListener("mousedown",this._onMouseDown),this.stopMouseCapture(),this.element.removeEventListener("wheel",this._onWheel),this.element.classList.remove("focused"),this.textarea.remove()}handleKeyDown(A){if(this.composing)return;if((A.metaKey||A.ctrlKey)&&A.key==="c"){let e=window.getSelection();if(e&&e.toString().length>0)return}if((A.metaKey||A.ctrlKey)&&A.key==="v"){this.textarea.focus();return}if(A.metaKey&&!A.ctrlKey){if(A.key==="Backspace")A.preventDefault(),this.onData("\x15");else if(A.key==="a"){A.preventDefault();let e=window.getSelection();if(e){let s=document.createRange();s.selectNodeContents(this.element),e.removeAllRanges(),e.addRange(s)}}return}A.preventDefault();let t=this.keyToSequence(A);if(t)this.onData(t)}handlePaste(A){A.preventDefault();let t=A.clipboardData?.getData("text");if(!t)return;let e=this.getBridge();if(e&&e.bracketedPaste()){let s=t.replace(/\x1b/g,"");this.onData("\x1B[200~"+s+"\x1B[201~")}else this.onData(t)}handleCompositionStart(){this.composing=!0}handleCompositionEnd(A){if(this.composing=!1,A.data)this.onData(A.data);this.textarea.value=""}handleInput(){if(this.composing)return;let A=this.textarea.value;if(A)this.onData(A),this.textarea.value=""}handleMouse(A,t){let e=this.getBridge(),s=e?.mouseTracking?.()??0;if(!e||s===0||!e.mouseSgr?.())return;if(t==="press"&&F(A,this.element.ownerDocument.defaultView?.navigator??navigator)&&A.target instanceof Element&&A.target.closest(".term-link"))return;if(t==="press"&&(A.shiftKey||A.button>2))return;if(t==="release"&&A.button>2)return;let i=A.buttons&7;if(t==="move"&&(s!==1002||i===0))return;let r=this.element.ownerDocument.defaultView;if(!r)return;let o=this.element.querySelector(".term-row:not(.term-scrollback-row)"),Q=this.element.getBoundingClientRect(),g=o?.getBoundingClientRect(),n=this.getCellSize(),l,E,c,h;if(g&&n)l=g.left,E=g.top,c=n.charWidth,h=n.rowHeight;else{let B=r.getComputedStyle(this.element),a=parseFloat(B.borderLeftWidth)||0,u=parseFloat(B.borderRightWidth)||0,D=parseFloat(B.borderTopWidth)||0,p=parseFloat(B.borderBottomWidth)||0,w=parseFloat(B.paddingLeft)||0,m=parseFloat(B.paddingRight)||0,x=parseFloat(B.paddingTop)||0,k=parseFloat(B.paddingBottom)||0;l=g?.left??Q.left+a+w,E=g?.top??Q.top+D+x,c=(Q.width-a-u-w-m)/e.getCols(),h=(Q.height-D-p-x-k)/e.getRows()}if(c<=0||h<=0)return;if(t==="press"){if(this.textarea.focus({preventScroll:!0}),!this.focused)this._onFocus();this.mouseButtons=i||(A.button===1?4:A.button===2?2:1),r.addEventListener("mousemove",this._onMouseMove),r.addEventListener("mouseup",this._onMouseUp)}let I=Math.max(1,Math.min(e.getCols(),Math.floor((A.clientX-l)/c)+1)),f=Math.max(1,Math.min(e.getRows(),Math.floor((A.clientY-E)/h)+1)),d=(A.shiftKey?4:0)|(A.altKey?8:0)|(A.ctrlKey?16:0),L,C="M";if(t==="wheel"){let B=A;if(Math.abs(B.deltaX)>Math.abs(B.deltaY)){if(B.deltaX===0)return;L=(B.deltaX<0?66:67)|d}else{if(B.deltaY===0)return;L=(B.deltaY<0?64:65)|d}}else if(L=(t==="move"?i&4?1:i&2?2:0:A.button===1?1:A.button===2?2:0)|d|(t==="move"?32:0),t==="release")C="m";A.preventDefault(),this.onData(`\x1B[<${L};${I};${f}${C}`)}stopMouseCapture(){this.mouseButtons=0;let A=this.element.ownerDocument.defaultView;A?.removeEventListener("mousemove",this._onMouseMove),A?.removeEventListener("mouseup",this._onMouseUp)}keyToSequence(A){if(A.ctrlKey&&!A.altKey&&!A.metaKey){if(A.key.length===1){let o=A.key.toLowerCase().charCodeAt(0);if(o>=97&&o<=122)return String.fromCharCode(o-96)}if(A.key==="[")return"\x1B";if(A.key==="\\")return"\x1C";if(A.key==="]")return"\x1D";if(A.key==="^")return"\x1E";if(A.key==="_")return"\x1F"}if(A.key==="Enter"&&A.shiftKey)return"\x1B[13;2u";if(A.key==="Tab"&&A.shiftKey)return"\x1B[Z";let t=CA[A.key];if(t)return A.altKey?"\x1B"+t:t;let e=this.getBridge(),r=(e&&e.cursorKeysApp()?EA:gA)[A.key];if(r)return A.altKey?"\x1B"+r:r;if(A.key.length===1&&!A.ctrlKey&&!A.metaKey)return A.altKey?"\x1B"+A.key:A.key;return null}}var cA={1:"bold",2:"dim",4:"italic",8:"underline",16:"blink",32:"reverse",64:"invisible",128:"strikethrough"};function aA(A){let t=[];for(let[e,s]of Object.entries(cA))if(A&Number(e))t.push(s);return t}var M=27;function lA(A){let t=[],e=Date.now(),s=0,i=0,r=()=>{if(s>i){let o=A.slice(i,s);if(o.length>0&&!/^[\x00-\x1f]+$/.test(o))t.push({ts:e,type:"text",raw:o.slice(0,60)})}};while(s<A.length){if(A.charCodeAt(s)!==M){s++;continue}r();let o=s;if(s++,s>=A.length)break;let Q=A[s];if(Q==="["){s++;let g="";if(s<A.length&&(A[s]==="?"||A[s]===">"||A[s]==="!"))g=A[s],s++;let n="";while(s<A.length&&(A.charCodeAt(s)>=48&&A.charCodeAt(s)<=59||A[s]===":"))n+=A[s],s++;while(s<A.length&&A.charCodeAt(s)>=32&&A.charCodeAt(s)<=47)s++;let l="";if(s<A.length&&A.charCodeAt(s)>=64&&A.charCodeAt(s)<=126)l=A[s],s++;let E=A.slice(o,s),c=n?n.split(/[;:]/).map(Number).filter((I)=>!isNaN(I)):[],h=l==="m"?"sgr":"csi";t.push({ts:e,type:h,raw:E,params:c.length>0?c:void 0,private:g||void 0,final:l})}else if(Q==="]"){s++;while(s<A.length&&A.charCodeAt(s)!==7&&!(A.charCodeAt(s)===M&&s+1<A.length&&A[s+1]==="\\"))s++;if(s<A.length){if(A.charCodeAt(s)===7)s++;else if(A.charCodeAt(s)===M)s+=2}let g=A.slice(o,s);t.push({ts:e,type:"osc",raw:g.slice(0,80)})}else if(Q>=" "&&Q<="~")s++,t.push({ts:e,type:"esc",raw:A.slice(o,s),final:Q});else s++;i=s}return r(),t}var j=500;class v{constructor(){this._traces=[],this._bridge=null,this._perf={frameCount:0,totalRenderMs:0,avgRenderMs:0,maxRenderMs:0,lastDirtyRows:0}}get traces(){return this._traces}get perf(){return this._perf}setBridge(A){this._bridge=A}traceWrite(A){let t=typeof A==="string"?A:new TextDecoder().decode(A),e=lA(t);for(let s of e)this._traces.push(s);if(this._traces.length>j)this._traces=this._traces.slice(-j)}recordRender(A,t){if(this._perf.frameCount++,this._perf.totalRenderMs+=A,this._perf.avgRenderMs=this._perf.totalRenderMs/this._perf.frameCount,A>this._perf.maxRenderMs)this._perf.maxRenderMs=A;this._perf.lastDirtyRows=t}resetPerf(){this._perf={frameCount:0,totalRenderMs:0,avgRenderMs:0,maxRenderMs:0,lastDirtyRows:0}}cell(A,t){if(!this._bridge)return null;let e=this._bridge.getCell(A,t);return{...e,charStr:e.chars??(e.char>=32?String.fromCodePoint(e.char):""),flagNames:aA(e.flags)}}row(A){if(!this._bridge)return null;let t=this._bridge.getCols(),e=[];for(let s=0;s<t;s++)e.push(this.cell(A,s));return e}grid(){if(!this._bridge)return null;let A=this._bridge.getCursor();return{rows:this._bridge.getRows(),cols:this._bridge.getCols(),cursor:A,altScreen:this._bridge.usingAltScreen(),scrollbackCount:this._bridge.getScrollbackCount()}}unhandled(){if(!this._bridge)return[];return this._bridge.getUnhandledSequences()}dump(A=50){let t=this._traces.slice(-A);console.group(`%cwterm debug — last ${t.length} traces`,"color: #569cd6; font-weight: bold");for(let e of t){let s=e.type==="sgr"?"%cSGR":e.type==="csi"?"%cCSI":e.type==="osc"?"%cOSC":e.type==="esc"?"%cESC":"%cTXT",i=e.type==="sgr"?"background:#2d5a27;color:#fff;padding:1px 4px;border-radius:2px":e.type==="csi"?"background:#1e4a7a;color:#fff;padding:1px 4px;border-radius:2px":"background:#555;color:#fff;padding:1px 4px;border-radius:2px",r=[e.private?`private=${e.private}`:"",e.params?`params=[${e.params}]`:"",e.final?`final=${e.final}`:""].filter(Boolean).join(" ");console.log(`${s} ${e.raw.slice(0,40)}`,i,r?` ${r}`:"")}console.groupEnd()}dumpUnhandled(){let A=this.unhandled();if(A.length===0){console.log("%cwterm debug — no unhandled sequences","color: #6a9955");return}console.group(`%cwterm debug — ${A.length} unhandled sequences`,"color: #d7ba7d; font-weight: bold");for(let t of A)console.log(` final=${t.final} private=${t.private||"-"} params=[${t.params.slice(0,t.paramCount)}]`);console.groupEnd()}}var hA=1000;class J{constructor(A,t={}){if(this.bridge=null,this.debug=null,this.renderer=null,this.input=null,this.rafId=null,this._synchronizedOutputTimer=null,this._synchronizedOutputState="idle",this._synchronizedOutputGeneration=0,this._rendererNeedsSetup=!1,this.resizeObserver=null,this._destroyed=!1,this._shouldScrollToBottom=!1,this._scrollbackDiscardedCount=0,this._programmaticScrollTop=null,this._pendingResizeScrollTop=null,this._rowHeight=0,this._charWidth=0,this.element=A,this._coreOption=t.core,this.wasmUrl=t.wasmUrl,this.cols=t.cols||80,this.rows=t.rows||24,this.autoResize=t.autoResize!==!1,this._debugEnabled=t.debug??!1,this.onData=t.onData||null,this.onTitle=t.onTitle||null,this.onResize=t.onResize||null,this._container=document.createElement("div"),this._container.className="term-grid",this.element.appendChild(this._container),this.element.classList.add("wterm"),t.cursorBlink)this.element.classList.add("cursor-blink");this._onClickFocus=(e)=>{let s=e.target;if(s instanceof Element&&s.closest(".term-link")){if(F(e,this.element.ownerDocument.defaultView?.navigator??navigator)||e.detail===0)return;e.preventDefault()}let i=window.getSelection();if(!i||i.isCollapsed)this.input?.focus()},this.element.addEventListener("click",this._onClickFocus),this._onModifierChange=(e)=>{this.element.classList.toggle("link-modifier-active",F(e,this.element.ownerDocument.defaultView?.navigator??navigator))},this._onWindowBlur=()=>{this.element.classList.remove("link-modifier-active")},this.element.ownerDocument.addEventListener("keydown",this._onModifierChange),this.element.ownerDocument.addEventListener("keyup",this._onModifierChange),this.element.ownerDocument.defaultView?.addEventListener("blur",this._onWindowBlur),this._onScroll=()=>{if(this._pendingResizeScrollTop!==null)return;if(this._programmaticScrollTop!==null&&this.element.scrollTop===this._programmaticScrollTop){this._programmaticScrollTop=null;return}this._programmaticScrollTop=null,this._shouldScrollToBottom=!1,this._scheduleRender()},this.element.addEventListener("scroll",this._onScroll,{passive:!0})}async init(){try{if(this._coreOption)this.bridge=this._coreOption;else this.bridge=await y.load(this.wasmUrl);if(this._destroyed)return this;if(this.bridge.init(this.cols,this.rows),this._debugEnabled)this.debug=new v,this.debug.setBridge(this.bridge),globalThis.__wterm=this;if(this._setRowHeight(),this._measureCharSize(),this.renderer=new H(this._container),this.renderer.setup(this.cols,this.rows),this.input=new G(this.element,(A)=>{if(this._scrollToBottom(),this.onData)this.onData(A);else this.write(A)},()=>this.bridge,()=>this._charWidth>0&&this._rowHeight>0?{charWidth:this._charWidth,rowHeight:this._rowHeight}:null),this.autoResize)this._setupResizeObserver();else this._lockHeight();this.input.focus(),this._initialRender()}catch(A){throw this.destroy(),Error(`wterm: failed to initialize: ${A instanceof Error?A.message:A}`)}return this}_isScrolledToBottom(){let A=this.element;return A.scrollHeight-A.scrollTop-A.clientHeight<5}_scrollToBottom(){let A=this.element,t=A.scrollHeight-A.clientHeight;if(t<=0){this._setScrollTop(0);return}this._setScrollTop(t)}_setScrollTop(A){if(this.element.scrollTop===A)return;this._programmaticScrollTop=A,this.element.scrollTop=A}write(A){if(!this.bridge)return;if(this.debug)this.debug.traceWrite(A);this._shouldScrollToBottom=this._isScrolledToBottom();let t,e=!1,s=()=>{let o=this._drainResponses();if(!e&&o.hasError)e=!0,t=o.error};if(typeof A==="string")this.bridge.writeString(A,s);else this.bridge.writeRaw(A,s);let i=this.bridge.synchronizedOutput?.()??!1,r=this.bridge.synchronizedOutputGeneration?.()??0;if(this._updateSynchronizedOutput(i,r),this._synchronizedOutputState!=="held")this._setupRendererIfNeeded(),this._scheduleRender();if(s(),e)throw t}resize(A,t){if(!this.bridge)return;this._shouldScrollToBottom=this._pendingResizeScrollTop===null&&this._isScrolledToBottom(),this.cols=A,this.rows=t,this.bridge.resize(A,t);let e=this.bridge.synchronizedOutput?.()??!1,s=this.bridge.synchronizedOutputGeneration?.()??0;if(this._updateSynchronizedOutput(e,s))this._rendererNeedsSetup=!0;else this._setupRenderer(A,t),this._scheduleRender();if(this.onResize)this.onResize(A,t)}focus(){if(this.input)this.input.focus();else this.element.focus()}_scheduleRender(){if(this.rafId!=null)return;this.rafId=requestAnimationFrame(()=>{this.rafId=null,this._doRender()})}_cancelScheduledRender(){if(this.rafId!=null)cancelAnimationFrame(this.rafId),this.rafId=null}_updateSynchronizedOutput(A,t){if(!A){if(this._synchronizedOutputState==="held")this._cancelSynchronizedOutputFallback();return this._synchronizedOutputState="idle",!1}if(this._synchronizedOutputState==="held"&&t!==this._synchronizedOutputGeneration)return this._armSynchronizedOutputFallback(t),!0;else if(this._synchronizedOutputState==="passthrough"&&t!==this._synchronizedOutputGeneration)this._synchronizedOutputState="idle";if(this._synchronizedOutputState!=="idle")return this._synchronizedOutputState==="held";return this._synchronizedOutputState="held",this._cancelScheduledRender(),this._armSynchronizedOutputFallback(t),!0}_armSynchronizedOutputFallback(A){this._cancelSynchronizedOutputFallback(),this._synchronizedOutputGeneration=A,this._synchronizedOutputTimer=setTimeout(()=>{if(this._synchronizedOutputState!=="held"||this._synchronizedOutputGeneration!==A)return;this._synchronizedOutputTimer=null,this._synchronizedOutputState="passthrough",this._setupRendererIfNeeded(),this._cancelScheduledRender(),this._doRender()},hA)}_cancelSynchronizedOutputFallback(){if(this._synchronizedOutputTimer==null)return;clearTimeout(this._synchronizedOutputTimer),this._synchronizedOutputTimer=null}_setupRendererIfNeeded(){if(!this._rendererNeedsSetup)return;this._setupRenderer(this.cols,this.rows),this._rendererNeedsSetup=!1}_setupRenderer(A,t){if(!this._shouldScrollToBottom&&this._pendingResizeScrollTop===null)this._pendingResizeScrollTop=this.element.scrollTop;this.renderer?.setup(A,t)}_initialRender(){this._doRender()}_doRender(){if(!this.bridge||!this.renderer)return;let A=0,t=this.debug?performance.now():0;if(this.debug){for(let n=0;n<this.rows;n++)if(this.bridge.isDirtyRow(n))A++}let e=this._rowHeight||17,s=this.bridge.getScrollbackCount(),i=this.bridge.getScrollbackDiscardedCount?.(),r=i!==void 0&&i>=this._scrollbackDiscardedCount?i-this._scrollbackDiscardedCount:0;if(i!==void 0)this._scrollbackDiscardedCount=i;let o=this._pendingResizeScrollTop!==null?this._pendingResizeScrollTop:this.element.scrollTop;if(!this._shouldScrollToBottom&&r>0)if(o=Math.max(0,o-r*e),this._pendingResizeScrollTop!==null)this._pendingResizeScrollTop=o;else this._setScrollTop(o);if(this.renderer.render(this.bridge,{scrollTop:this._shouldScrollToBottom?Math.max(0,(s+this.rows)*e-this.element.clientHeight):o,clientHeight:this.element.clientHeight,rowHeight:e,scrollbackDiscardedCount:i}),this.debug)this.debug.recordRender(performance.now()-t,A);let Q=s>0;if(this.element.classList.toggle("has-scrollback",Q),this._shouldScrollToBottom)this._scrollToBottom();else if(this._pendingResizeScrollTop!==null){let n=this._pendingResizeScrollTop;this._pendingResizeScrollTop=null,this._setScrollTop(n)}else if(!Q&&this.element.scrollTop!==0)this.element.scrollTop=0;let g=this.bridge.getTitle();if(g!==null&&this.onTitle)this.onTitle(g);this._drainResponses()}_drainResponses(){if(!this.bridge)return{hasError:!1};let A,t,e=!1;while((A=this.bridge.getResponse())!==null)try{if(this.onData)this.onData(A)}catch(s){if(!e)e=!0,t=s}return{hasError:e,error:t}}_lockHeight(){let A=this._rowHeight||17,t=this.rows*A,e=getComputedStyle(this.element),s=(parseFloat(e.paddingTop)||0)+(parseFloat(e.paddingBottom)||0);if(e.boxSizing==="border-box")s+=(parseFloat(e.borderTopWidth)||0)+(parseFloat(e.borderBottomWidth)||0);this.element.style.height=`${t+s}px`}_setRowHeight(){let A=document.createElement("div");A.className="term-row",A.style.visibility="hidden",A.style.position="absolute",A.textContent="W",this._container.appendChild(A);let t=A.getBoundingClientRect().height;if(A.remove(),t>0){let e=Math.ceil(t);this._rowHeight=e,this.element.style.setProperty("--term-row-height",`${e}px`)}}_measureCharSize(){let A=document.createElement("div");A.className="term-row",A.style.visibility="hidden",A.style.position="absolute";let t=document.createElement("span");t.textContent="W",A.appendChild(t),this._container.appendChild(A);let e=t.getBoundingClientRect().width,s=A.getBoundingClientRect().height;if(A.remove(),e===0||s===0)return null;return this._charWidth=e,this._rowHeight=s,{charWidth:e,rowHeight:s}}_setupResizeObserver(){let A=this._measureCharSize();if(!A)return;let{charWidth:t,rowHeight:e}=A;this.resizeObserver=new ResizeObserver((s)=>{let i=this._measureCharSize();if(i)t=i.charWidth,e=i.rowHeight;for(let r of s){let{width:o,height:Q}=r.contentRect,g=Math.max(1,Math.floor(o/t)),n=Math.max(1,Math.floor(Q/e));if(g!==this.cols||n!==this.rows)this.resize(g,n)}}),this.resizeObserver.observe(this.element)}destroy(){if(this._destroyed=!0,this._cancelScheduledRender(),this._cancelSynchronizedOutputFallback(),this.resizeObserver)this.resizeObserver.disconnect();if(this.input)this.input.destroy();if(this.element.removeEventListener("click",this._onClickFocus),this.element.removeEventListener("scroll",this._onScroll),this.element.ownerDocument.removeEventListener("keydown",this._onModifierChange),this.element.ownerDocument.removeEventListener("keyup",this._onModifierChange),this.element.ownerDocument.defaultView?.removeEventListener("blur",this._onWindowBlur),this.element.classList.remove("link-modifier-active"),this.element.innerHTML="",this.debug&&globalThis.__wterm===this)delete globalThis.__wterm;this.debug=null}}var IA=(A)=>A.replaceAll("\x1B","").replaceAll("\x07","");function uA(A){return[...IA(A).matchAll(/\](?:0|2);([^]*)(?:|\\)/g)].map((t)=>t[1]??"")}function AA(A){let t=uA(A);return t.length?t[t.length-1]:null}var sA=document.getElementById("tcut-cast");if(!sA)throw Error("tcut player: missing cast data");var S=JSON.parse(sA.textContent||"{}"),Y=document.getElementById("term"),tA=document.getElementById("play"),N=document.getElementById("progress"),dA=document.getElementById("loop"),wA=document.getElementById("time"),eA=(A)=>`${Math.floor(A/60)}:${String(Math.floor(A%60)).padStart(2,"0")}`;(async()=>{let A=await y.load(),t=new J(Y,{cols:S.cols,rows:S.rows,core:A,autoResize:!1,cursorBlink:!0,onData:()=>{}});await t.init(),Y.classList.add("focused");let e=0,s=0,i=!1,r=0,o=0,Q=()=>{t.write("\x1Bc"),t.resize(S.cols,S.rows),e=0,s=0},g=(h)=>{while(e<S.events.length&&S.events[e].vt<=h){let I=S.events[e++];if(I.type==="o"){if(t.write(I.data),S.autoTitle){let f=AA(I.data);if(f!==null){let d=document.querySelector("#bar .title");if(d)d.textContent=f}}}else if(I.type==="r"){let[f,d]=I.data.split("x").map(Number);if(f>0&&d>0)t.resize(f,d)}}},n=()=>{N.value=String(Math.min(1000,Math.round(s/S.duration*1000))),wA.textContent=`${eA(s)} / ${eA(S.duration)}`,tA.textContent=i?"❚❚":"▶"},l=(h)=>{if(!i)return;if(s+=(h-r)/1000*S.speed,r=h,g(s),s>=S.duration)if(dA.checked)Q();else i=!1,s=S.duration;if(n(),i)o=requestAnimationFrame(l)},E=()=>{if(i)return;if(s>=S.duration)Q();i=!0,r=performance.now(),o=requestAnimationFrame(l),n()},c=()=>{i=!1,cancelAnimationFrame(o),n()};tA.addEventListener("click",()=>i?c():E()),N.addEventListener("input",()=>{let h=Number(N.value)/1000*S.duration;if(h<s)Q();s=h,g(s),n()}),Y.addEventListener("click",()=>i?c():E()),g(0),n(),E()})();
1
+ var K="AGFzbQEAAAABQAtgAAF/YAAAYAF/AX9gAX8AYAJ/fwBgBH9/f38AYAN/f38AYAJ/fwF/YAV/f39/fwBgBH9/f38Bf2ADf39/AX8DQUAAAAAAAAEAAAICAAAAAAACAgICAAAAAAAAAAAAAAAAAAAAAAEAAAMDBAQFBQUEBgcBCAkGAQEECgYGBAQDAAQEBAUBcAEBAQUDAQBkBgkBfwFBgIDAAAsH/gUsBm1lbW9yeQIACmdldE1heENvbHMAAAtnZXRDZWxsU2l6ZQABDmdldERlYnVnTG9nTWF4AAIUZ2V0RGVidWdMb2dFbnRyeVNpemUAARBnZXREZWJ1Z0xvZ0NvdW50AAMOZ2V0RGVidWdMb2dQdHIABA1jbGVhclJlc3BvbnNlAAUOZ2V0UmVzcG9uc2VMZW4ABg5nZXRSZXNwb25zZVB0cgAHFGdldFNjcm9sbGJhY2tMaW5lTGVuAAgRZ2V0U2Nyb2xsYmFja0xpbmUACRtnZXRTY3JvbGxiYWNrRGlzY2FyZGVkQ291bnQAChJnZXRTY3JvbGxiYWNrQ291bnQACxlnZXRIeXBlcmxpbmtSZWplY3RlZENvdW50AAwRZ2V0SHlwZXJsaW5rQ291bnQADRRnZXRIeXBlcmxpbmtDYXBhY2l0eQAODGdldExpbmtJZExlbgAPDGdldExpbmtJZFB0cgAQDWdldExpbmtVcmlMZW4AEQ1nZXRMaW5rVXJpUHRyABIPZ2V0VGl0bGVDaGFuZ2VkABMLZ2V0VGl0bGVMZW4AFAtnZXRUaXRsZVB0cgAVH2dldFN5bmNocm9uaXplZE91dHB1dEdlbmVyYXRpb24AFhVnZXRTeW5jaHJvbml6ZWRPdXRwdXQAFw5nZXRGb2N1c0V2ZW50cwAYC2dldE1vdXNlU2dyABkQZ2V0TW91c2VUcmFja2luZwAaEWdldFVzaW5nQWx0U2NyZWVuABsRZ2V0QnJhY2tldGVkUGFzdGUAHBBnZXRDdXJzb3JLZXlzQXBwAB0HZ2V0Um93cwAeB2dldENvbHMAHxBnZXRDdXJzb3JWaXNpYmxlACAMZ2V0Q3Vyc29yQ29sACEMZ2V0Q3Vyc29yUm93ACIKY2xlYXJEaXJ0eQAjC2dldERpcnR5UHRyACQKZ2V0R3JpZFB0cgAlCndyaXRlQnl0ZXMAJg5nZXRXcml0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AzsB9rGYgQAMAQtBACADOwH2sZiBAAsgAUECaiEBDAALC+YBAQJ/I4CAgIAAQRBrIgIkgICAgABBACEDIAJBADoACyACIAE6AAkgAiAAOgAIIAJCADcDACACQQAtAKCK8IAAIgE6AAogAUEEIAFBBEkbQQF0IQECQANAIAEgA0YNASACIANqIANB/InwgABqLwEAOwEAIANBAmohAwwACwtBAC0AlMSggQAiA0EMbCIBIAIpAwA3AeaumIEAIAFB7q6YgQBqIAJBCGooAgA2AQBBACADQQFqQR9xOgCUxKCBAEEAQQAoAsyumIEAQQFqIgNBfyADGzYCzK6YgQAgAkEQaiSAgICAAAt4AQJ/AkAgAEH//wNxIgJBAC8B9ofwgABPDQAgAkGAGGxB9IfAgABqIQBBACEDAkADQCADQQAvAfSH8IAATw0BIAAgASkCADcCACAAQQhqIAFBCGooAgA2AgAgAEEMaiEAIANBAWohAwwACwsgAkEBOgD4h/CAAAsLsAIBA38CQCAAQf//A3EiBEEALwH2h/CAAE8NACABQf//A3EiBUEALwH0h/CAACIAIAUgAEkbIQECQCAFIAJB//8DcSIGIAAgBiAASRsiBk8NACABIARBgBhsQfSHwIAAaiIFIAFBDGxqLQAJRSABQf//A3FBAEdxayEBIAJB//8DcSAATw0AAkAgBSAGQQxsai0ACQ0AIAZBAWohBgwBCyAGIAUgBkF/akH//wNxQQxsai0ACUECRmohBgtBACAGQf//A3EiACABQf//A3EiAmsiASABIABLGyEBIARBgBhsIAJBDGxqQfSHwIAAaiEAAkADQCABRQ0BIAAgAykCADcCACAAQQhqIANBCGooAgA2AgAgAEEMaiEAIAFBf2ohAQwACwsgBEEBOgD4h/CAAAsL4QEBBH8CQCACQf//A3FFDQAgAUH//wNxIABB//8DcU0NACABIABrIgQgAkH//wNxIgIgBEH//wNxIgQgAiAESRsiBWtB//8DcSEGQQAhAgNAAkAgBiACRw0AIAUgAGpB//8DcSECA0AgAEH//wNxIAJPDQMgACADEKmAgIAAIABBAWohAAwACwsgASACQX9zaiIHQf//A3EhBAJAQYAYRQ0AIARBgBhsQfSHwIAAaiAHIAVrQf//A3FBgBhsQfSHwIAAakGAGPwKAAALIARB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";function BA(A){let t=atob(A),e=new Uint8Array(t.length);for(let s=0;s<t.length;s++)e[s]=t.charCodeAt(s);return e.buffer}class y{get dv(){if(this._dvBuffer!==this.memory.buffer)this._dvBuffer=this.memory.buffer,this._dv=new DataView(this.memory.buffer);return this._dv}constructor(A){this.gridPtr=0,this.dirtyPtr=0,this.writeBufferPtr=0,this.cellSize=12,this.maxCols=256,this.encoder=new TextEncoder,this.decoder=new TextDecoder,this._dvBuffer=null,this.linkCache=new Map,this.exports=A.exports,this.memory=this.exports.memory}static async load(A){let t;if(A){let s=await fetch(A);if(!s.ok)throw Error(`[wterm] Failed to load WASM from ${A}: ${s.status} ${s.statusText}`);t=await s.arrayBuffer()}else t=BA(K);let{instance:e}=await WebAssembly.instantiate(t);return new y(e)}init(A,t){this.exports.init(A,t),this.linkCache.clear(),this._updatePointers()}_updatePointers(){this.gridPtr=this.exports.getGridPtr(),this.dirtyPtr=this.exports.getDirtyPtr(),this.writeBufferPtr=this.exports.getWriteBuffer(),this.cellSize=this.exports.getCellSize(),this.maxCols=this.exports.getMaxCols()}writeString(A,t){let e=this.encoder.encode(A);this.writeRaw(e,t)}writeRaw(A,t){let e=0;while(e<A.length){let s=Math.min(A.length-e,8192);new Uint8Array(this.memory.buffer,this.writeBufferPtr,8192).set(A.subarray(e,e+s)),this.exports.writeBytes(s),e+=s,t?.()}}getCell(A,t){let e=this.gridPtr+(A*this.maxCols+t)*this.cellSize,s=this.dv,i={char:s.getUint32(e,!0),fg:s.getUint16(e+4,!0),bg:s.getUint16(e+6,!0),flags:s.getUint8(e+8),width:s.getUint8(e+9)};return Object.assign(i,this._readLink(s.getUint16(e+10,!0))),i}isDirtyRow(A){return new Uint8Array(this.memory.buffer,this.dirtyPtr,256)[A]!==0}clearDirty(){this.exports.clearDirty()}getCursor(){return{row:this.exports.getCursorRow(),col:this.exports.getCursorCol(),visible:this.exports.getCursorVisible()!==0}}getCols(){return this.exports.getCols()}getRows(){return this.exports.getRows()}cursorKeysApp(){return this.exports.getCursorKeysApp()!==0}bracketedPaste(){return this.exports.getBracketedPaste()!==0}usingAltScreen(){return this.exports.getUsingAltScreen()!==0}mouseTracking(){let A=this.exports.getMouseTracking();return A===1000||A===1002?A:0}mouseSgr(){return this.exports.getMouseSgr()!==0}focusEvents(){return this.exports.getFocusEvents()!==0}synchronizedOutput(){return this.exports.getSynchronizedOutput()!==0}synchronizedOutputGeneration(){return this.exports.getSynchronizedOutputGeneration()}getTitle(){if(this.exports.getTitleChanged()===0)return null;let A=this.exports.getTitlePtr(),t=this.exports.getTitleLen(),e=new Uint8Array(this.memory.buffer,A,t);return this.decoder.decode(e)}getResponse(){let A=this.exports.getResponseLen();if(A===0)return null;let t=this.exports.getResponsePtr(),e=new Uint8Array(this.memory.buffer,t,A),s=this.decoder.decode(e);return this.exports.clearResponse(),s}getResourceState(){let A=this.exports.getHyperlinkCapacity?.(),t=this.exports.getHyperlinkCount?.(),e=this.exports.getHyperlinkRejectedCount?.();if(A===void 0||t===void 0||e===void 0)return{};return{hyperlinks:{capacity:A,used:t,rejected:e,saturated:t>=A}}}getScrollbackCount(){return this.exports.getScrollbackCount()}getScrollbackDiscardedCount(){return this.exports.getScrollbackDiscardedCount()}getScrollbackCell(A,t){let s=this.exports.getScrollbackLine(A)+t*this.cellSize,i=this.dv,r={char:i.getUint32(s,!0),fg:i.getUint16(s+4,!0),bg:i.getUint16(s+6,!0),flags:i.getUint8(s+8),width:i.getUint8(s+9)};return Object.assign(r,this._readLink(i.getUint16(s+10,!0))),r}getScrollbackLineLen(A){return this.exports.getScrollbackLineLen(A)}getUnhandledSequences(){let A=this.exports.getDebugLogCount();if(A===0)return[];let t=this.exports.getDebugLogPtr(),e=this.exports.getDebugLogEntrySize(),s=this.exports.getDebugLogMax(),i=Math.min(A,s),r=new DataView(this.memory.buffer),o=[],n=A>=s?A%s:0;for(let g=0;g<i;g++){let B=(n+g)%s,l=t+B*e,E=r.getUint8(l);if(E===0)continue;let c=r.getUint8(l+1),h=r.getUint8(l+2),I=[];for(let f=0;f<Math.min(h,4);f++)I.push(r.getUint16(l+4+f*2,!0));o.push({final:String.fromCharCode(E),private:c?String.fromCharCode(c):"",paramCount:h,params:I})}return o}resize(A,t){this.exports.resizeTerminal(A,t),this._updatePointers()}_readLink(A){if(A===0)return;let t=this.linkCache.get(A);if(t)return t;let e=this.exports.getLinkUriLen(A);if(e===0)return;let s=this.decoder.decode(new Uint8Array(this.memory.buffer,this.exports.getLinkUriPtr(A),e)),i=this.exports.getLinkIdLen(A),r=i===0?void 0:this.decoder.decode(new Uint8Array(this.memory.buffer,this.exports.getLinkIdPtr(A),i)),o={linkUri:s,linkId:r,linkKey:r?`e\x00${r}\x00${s}`:`b\x00${A}`};return this.linkCache.set(A,o),o}}var O=/^[\x20-\x7e]*$/;var T="Segmenter"in Intl?new Intl.Segmenter(void 0,{granularity:"grapheme"}):null;function QA(A){if(!T)return[...A];let t=[];for(let e of T.segment(A))t.push(e.segment);return t}function q(A){for(let t of A.querySelectorAll(".term-row span")){if(t.dataset.pinned==="1"||t.classList.contains("term-wide")||t.classList.contains("vt-pin"))continue;if(t.children.length>0)continue;let e=t.textContent??"";if(O.test(e))continue;let s=document.createDocumentFragment(),i="",r=()=>{if(i)s.append(i);i=""};for(let o of QA(e)){if(O.test(o)){i+=o;continue}r();let n=document.createElement("span");n.className="vt-pin",n.textContent=o,s.append(n)}r(),t.replaceChildren(s),t.dataset.pinned="1"}}function j(A){let t=A>>16&255,e=A>>8&255,s=A&255;return`rgb(${t},${e},${s})`}function AA(A){if(A===256)return null;if(A<16)return`var(--term-color-${A})`;if(A<232){let e=A-16,s=Math.floor(e/36)*51,i=Math.floor(e/6)%6*51,r=e%6*51;return`rgb(${s},${i},${r})`}let t=(A-232)*10+8;return`rgb(${t},${t},${t})`}function tA(A,t){if(t!==void 0)return j(t);return AA(A)}function H(A,t){if(t!==void 0)return j(t);return AA(A)}function P(A,t,e,s,i){let r=A,o=t,n=s,g=i;if(e&32){let h=r;r=o,o=h;let I=n;if(n=g,g=I,n===void 0&&r===256)r=0;if(g===void 0&&o===256)o=7}let B=tA(r,n),l=H(o,g),E="";if(B)E+=`color:${B};`;if(l)E+=`background:${l};`;if(e&1)E+="font-weight:bold;";if(e&2)E+="opacity:0.5;";if(e&4)E+="font-style:italic;";let c=[];if(e&8)c.push("underline");if(e&128)c.push("line-through");if(c.length)E+=`text-decoration:${c.join(" ")};`;if(e&64)E+="visibility:hidden;";return E}function b(A){return A.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function gA(A){if(!A)return;try{let t=new URL(A);return t.protocol==="http:"||t.protocol==="https:"?t.href:void 0}catch{return}}function EA(A){if(!A.linkUri)return"";return A.linkKey??`fallback\x00${A.linkId??""}\x00${A.linkUri}`}function CA(A,t,e,s,i){let r=A,o=t,n=s,g=i;if(e&32){if([r,o]=[o,r],[n,g]=[g,n],n===void 0&&r===256)r=0;if(g===void 0&&o===256)o=7}return{fg:tA(r,n)||"var(--term-fg)",bg:H(o,g)||"var(--term-bg)"}}var R="round(calc(var(--term-row-height) * 0.125), 1px)",z="round(calc(var(--term-row-height) * 0.25), 1px)",Z="round(calc(var(--term-row-height) * 0.375), 1px)",_="round(calc(var(--term-row-height) * 0.5), 1px)",W="round(calc(var(--term-row-height) * 0.625), 1px)",X="round(calc(var(--term-row-height) * 0.75), 1px)",V="round(calc(var(--term-row-height) * 0.875), 1px)";function cA(A,t,e){switch(A){case 9600:return`linear-gradient(${t} ${_},${e} ${_})`;case 9601:return`linear-gradient(${e} ${V},${t} ${V})`;case 9602:return`linear-gradient(${e} ${X},${t} ${X})`;case 9603:return`linear-gradient(${e} ${W},${t} ${W})`;case 9604:return`linear-gradient(${e} ${_},${t} ${_})`;case 9605:return`linear-gradient(${e} ${Z},${t} ${Z})`;case 9606:return`linear-gradient(${e} ${z},${t} ${z})`;case 9607:return`linear-gradient(${e} ${R},${t} ${R})`;case 9608:return t;case 9609:return`linear-gradient(to right,${t} 87.5%,${e} 87.5%)`;case 9610:return`linear-gradient(to right,${t} 75%,${e} 75%)`;case 9611:return`linear-gradient(to right,${t} 62.5%,${e} 62.5%)`;case 9612:return`linear-gradient(to right,${t} 50%,${e} 50%)`;case 9613:return`linear-gradient(to right,${t} 37.5%,${e} 37.5%)`;case 9614:return`linear-gradient(to right,${t} 25%,${e} 25%)`;case 9615:return`linear-gradient(to right,${t} 12.5%,${e} 12.5%)`;case 9616:return`linear-gradient(to right,${e} 50%,${t} 50%)`;case 9617:return`color-mix(in srgb,${t} 25%,${e})`;case 9618:return`color-mix(in srgb,${t} 50%,${e})`;case 9619:return`color-mix(in srgb,${t} 75%,${e})`;case 9620:return`linear-gradient(${t} ${R},${e} ${R})`;case 9621:return`linear-gradient(to right,${e} 87.5%,${t} 87.5%)`;default:{let i={9622:[!1,!1,!0,!1],9623:[!1,!1,!1,!0],9624:[!0,!1,!1,!1],9625:[!0,!1,!0,!0],9626:[!0,!1,!1,!0],9627:[!0,!0,!0,!1],9628:[!0,!0,!1,!0],9629:[!1,!0,!1,!1],9630:[!1,!0,!0,!1],9631:[!1,!0,!0,!0]}[A];if(!i)return t;let[r,o,n,g]=i;if(r&&o&&n&&g)return t;let B=[],l=["0 0","100% 0","0 100%","100% 100%"];return i.forEach((E,c)=>{if(E)B.push(`linear-gradient(${t},${t}) ${l[c]}/50% 50% no-repeat`)}),B.push(e),B.join(",")}}}class U{constructor(A){this.rows=0,this.cols=0,this.rowEls=[],this.prevCursorRow=-1,this.prevCursorCol=-1,this.prevContainerBg="",this.prevRowBg=[],this._scrollbackRowEls=[],this._scrollbackStartKey=0,this._renderedScrollbackCount=-1,this._renderedDiscardedCount=-1,this._scrollbackTopSpacer=null,this._scrollbackBottomSpacer=null,this.container=A}setup(A,t){this.cols=A,this.rows=t,this.container.innerHTML="",this.rowEls=[],this.prevRowBg=[],this._scrollbackRowEls=[],this._scrollbackStartKey=0,this._renderedScrollbackCount=-1,this._renderedDiscardedCount=-1;let e=document.createDocumentFragment();this._scrollbackTopSpacer=document.createElement("div"),this._scrollbackTopSpacer.className="term-scrollback-spacer",e.appendChild(this._scrollbackTopSpacer),this._scrollbackBottomSpacer=document.createElement("div"),this._scrollbackBottomSpacer.className="term-scrollback-spacer",e.appendChild(this._scrollbackBottomSpacer);for(let s=0;s<t;s++){let i=document.createElement("div");i.className="term-row",e.appendChild(i),this.rowEls.push(i)}this.container.appendChild(e),this.prevCursorRow=-1,this.prevCursorCol=-1}_buildRowContent(A,t,e,s,i){let r="",o="",n="",g=[],B=0,l="",E,c="",h=(C,Q,a)=>{let u=gA(a),D=u?Q:"";if(D!==c){if(c)r+="</a>";if(D)r+=`<a class="term-link" href="${b(u)}" target="_blank" rel="noopener noreferrer">`;c=D}r+=C},I=(C)=>{if(!n)return;let Q=b(n),a="";if(s>=B&&s<C){let u=s-B,D=g.slice(0,u).join(""),p=g[u]||" ",w=g.slice(u+1).join("");if(D)a+=o?`<span style="${o}">${b(D)}</span>`:`<span>${b(D)}</span>`;if(a+=o?`<span class="term-cursor" style="${o}">${b(p)}</span>`:`<span class="term-cursor">${b(p)}</span>`,w)a+=o?`<span style="${o}">${b(w)}</span>`:`<span>${b(w)}</span>`}else a+=o?`<span style="${o}">${Q}</span>`:`<span>${Q}</span>`;h(a,l,E),n="",g=[]},f=(C,Q,a,u,D)=>{let p=C?` class="${C}"`:"",w=Q?` style="${Q}"`:"";h(`<span${p}${w}>${b(a)}</span>`,u,D)};for(let C=0;C<this.cols;C++){let Q=t(C),a=C<e,u=a?Q.char:0,D=a?Q.width??1:1,p=a?EA(Q):"",w=a?Q.linkUri:void 0;if(a&&D===0){if(I(C),!(C>0&&(t(C-1).width??1)===2))f(C===s?"term-cursor":"",""," ",p,w);o="",l="",E=void 0,n="",g=[],B=C+1;continue}if(a&&D===2){if(I(C),C+1>=this.cols){f(C===s?"term-cursor":"",""," ",p,w),o="",l="",E=void 0,n="",g=[],B=C+1;continue}let m=Q.chars??(u>=32?String.fromCodePoint(u):" "),x=P(Q.fg,Q.bg,Q.flags,Q.fgRgb,Q.bgRgb),k=s>=C&&s<C+2?"term-wide term-cursor":"term-wide";f(k,x,m,p,w),o="",l="",E=void 0,n="",g=[],B=C+2;continue}if(a&&u>=9600&&u<=9631){I(C);let m=CA(Q.fg,Q.bg,Q.flags,Q.fgRgb,Q.bgRgb),x=C===s?"term-block term-cursor":"term-block",k=cA(u,m.fg,m.bg),nA=Q.flags&2?"opacity:0.5;":"";h(`<span class="${x}" style="background:${k};${nA}"></span>`,p,w),o="",l="",E=void 0,n="",g=[],B=C+1}else{let m=Q.chars??(a&&u>=32?String.fromCodePoint(u):" "),x=a?P(Q.fg,Q.bg,Q.flags,Q.fgRgb,Q.bgRgb):"";if(x!==o||p!==l)I(C),o=x,l=p,E=w,n=m,g=[m],B=C;else n+=m,g.push(m)}}if(I(this.cols),c)r+="</a>";A.innerHTML=r;let d="";if(e>=this.cols&&this.cols>0){let C=t(this.cols-1),Q=C.bg,a=C.bgRgb;if(C.flags&32){if(Q=C.fg,a=C.fgRgb,a===void 0&&Q===256)Q=7}d=H(Q,a)||""}let L=d?`0 1px 0 ${d}`:"";if(i>=0){if(d!==(this.prevRowBg[i]??""))A.style.background=d,A.style.boxShadow=L,this.prevRowBg[i]=d}else A.style.background=d,A.style.boxShadow=L}_buildScrollbackRowEl(A,t){let e=document.createElement("div");e.className="term-row term-scrollback-row";let s=A.getScrollbackLineLen(t);return this._buildRowContent(e,(i)=>A.getScrollbackCell(t,i),s,-1,-1),e}syncScrollback(A,t){let e=A.getScrollbackCount(),s=t?.rowHeight??0,i=t!==void 0&&s>0,r=t?.overscanRows??10,o=t?.scrollbackDiscardedCount!==void 0,n=t?.scrollbackDiscardedCount??0,g=t&&t.clientHeight>0?t.clientHeight:this.rows*s,B=i?Math.floor(t.scrollTop/s):0,l=i?Math.ceil(g/s):e,E=i?Math.max(0,Math.min(e,B-r)):0,c=i?Math.max(E,Math.min(e,B+l+r)):e,h=this.container.ownerDocument.getSelection();if(h!==null&&!h.isCollapsed&&(this.container.contains(h.anchorNode)||this.container.contains(h.focusNode))&&this._scrollbackRowEls.length>0)E=Math.min(E,Math.max(0,this._scrollbackStartKey-n)),c=Math.max(c,Math.min(e,this._scrollbackStartKey-n+this._scrollbackRowEls.length));let f=n+E;if(o&&e===this._renderedScrollbackCount&&n===this._renderedDiscardedCount&&f===this._scrollbackStartKey&&c-E===this._scrollbackRowEls.length)return;let d=new Map;for(let a=0;a<this._scrollbackRowEls.length;a++)d.set(this._scrollbackStartKey+a,this._scrollbackRowEls[a]);let L=n+c;for(let[a,u]of d)if(a<f||a>=L)u.remove();let C=[],Q=this._scrollbackTopSpacer?.nextSibling??null;for(let a=E;a<c;a++){let u=n+a,D=e-1-a,p=this._buildScrollbackRowEl(A,D),w=d.get(u),m=p,x=!1;if(w&&w.innerHTML===p.innerHTML&&w.style.cssText===p.style.cssText)m=w;else if(w)w.replaceWith(p),x=!0;if(!x&&m!==Q)this.container.insertBefore(m,Q??this._scrollbackBottomSpacer);Q=m.nextSibling,C.push(m)}if(this._scrollbackRowEls=C,this._scrollbackStartKey=f,this._renderedScrollbackCount=e,this._renderedDiscardedCount=n,this._scrollbackTopSpacer)this._scrollbackTopSpacer.style.height=`${E*s}px`;if(this._scrollbackBottomSpacer)this._scrollbackBottomSpacer.style.height=`${(e-c)*s}px`}render(A,t){let e=A.getRows(),s=A.getCols(),i=!1;if(e!==this.rows||s!==this.cols)this.setup(s,e),i=!0;this.syncScrollback(A,t);let r=A.getCursor(),o=r.visible,n=r.row!==this.prevCursorRow||r.col!==this.prevCursorCol;for(let B=0;B<this.rows;B++){let l=i||A.isDirtyRow(B),E=B===this.prevCursorRow&&n,c=B===r.row;if(l||E||c&&n){let h=c&&o?r.col:-1;this._buildRowContent(this.rowEls[B],(I)=>A.getCell(B,I),this.cols,h,B)}}if(this.prevCursorRow=r.row,this.prevCursorCol=r.col,i||A.isDirtyRow(this.rows-1)){let B=A.getCell(this.rows-1,this.cols-1),l=B.bg,E=B.bgRgb;if(B.flags&32){if(l=B.fg,E=B.fgRgb,E===void 0&&l===256)l=7}let c=H(l,E)||"";if(c!==this.prevContainerBg)this.container.style.background=c,this.prevContainerBg=c}A.clearDirty()}}function F(A,t){return t.platform.startsWith("Mac")?A.metaKey:A.ctrlKey}var aA={ArrowUp:"\x1B[A",ArrowDown:"\x1B[B",ArrowRight:"\x1B[C",ArrowLeft:"\x1B[D",Home:"\x1B[H",End:"\x1B[F"},lA={ArrowUp:"\x1BOA",ArrowDown:"\x1BOB",ArrowRight:"\x1BOC",ArrowLeft:"\x1BOD",Home:"\x1BOH",End:"\x1BOF"},hA={Enter:"\r",Backspace:"",Tab:"\t",Escape:"\x1B",Insert:"\x1B[2~",Delete:"\x1B[3~",PageUp:"\x1B[5~",PageDown:"\x1B[6~",F1:"\x1BOP",F2:"\x1BOQ",F3:"\x1BOR",F4:"\x1BOS",F5:"\x1B[15~",F6:"\x1B[17~",F7:"\x1B[18~",F8:"\x1B[19~",F9:"\x1B[20~",F10:"\x1B[21~",F11:"\x1B[23~",F12:"\x1B[24~"};class G{constructor(A,t,e,s=()=>null){this.composing=!1,this.mouseButtons=0,this.focused=!1,this.element=A,this.onData=t,this.getBridge=e,this.getCellSize=s,this.textarea=document.createElement("textarea"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("autocomplete","off"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("spellcheck","false"),this.textarea.setAttribute("enterkeyhint","send"),this.textarea.setAttribute("tabindex","0"),this.textarea.setAttribute("aria-hidden","true");let i=this.textarea.style;i.position="absolute",i.left="-9999px",i.top="0",i.width="1px",i.height="1px",i.opacity="0",i.overflow="hidden",i.border="0",i.padding="0",i.margin="0",i.outline="none",i.resize="none",i.pointerEvents="none",i.caretColor="transparent",i.color="transparent",i.background="transparent",A.appendChild(this.textarea),this._onKeyDown=this.handleKeyDown.bind(this),this._onPaste=this.handlePaste.bind(this),this._onCompositionStart=this.handleCompositionStart.bind(this),this._onCompositionEnd=this.handleCompositionEnd.bind(this),this._onInput=this.handleInput.bind(this),this._onFocus=()=>{if(this.focused)return;if(this.focused=!0,this.element.classList.add("focused"),this.getBridge()?.focusEvents?.())this.onData("\x1B[I")},this._onBlur=()=>{if(this.focused=!1,this.element.classList.remove("focused"),this.stopMouseCapture(),this.getBridge()?.focusEvents?.())this.onData("\x1B[O")},this._onMouseDown=(r)=>this.handleMouse(r,"press"),this._onMouseMove=(r)=>{if(this.mouseButtons!==0)this.handleMouse(r,"move")},this._onMouseUp=(r)=>{if(this.mouseButtons===0)return;if(this.handleMouse(r,"release"),this.mouseButtons=r.buttons&7,this.mouseButtons===0)this.stopMouseCapture()},this._onWheel=(r)=>this.handleMouse(r,"wheel"),this.textarea.addEventListener("keydown",this._onKeyDown),this.textarea.addEventListener("paste",this._onPaste),this.textarea.addEventListener("compositionstart",this._onCompositionStart),this.textarea.addEventListener("compositionend",this._onCompositionEnd),this.textarea.addEventListener("input",this._onInput),this.textarea.addEventListener("focus",this._onFocus),this.textarea.addEventListener("blur",this._onBlur),this.element.addEventListener("mousedown",this._onMouseDown),this.element.addEventListener("wheel",this._onWheel,{passive:!1})}focus(){this.textarea.focus({preventScroll:!0})}destroy(){this.textarea.removeEventListener("keydown",this._onKeyDown),this.textarea.removeEventListener("paste",this._onPaste),this.textarea.removeEventListener("compositionstart",this._onCompositionStart),this.textarea.removeEventListener("compositionend",this._onCompositionEnd),this.textarea.removeEventListener("input",this._onInput),this.textarea.removeEventListener("focus",this._onFocus),this.textarea.removeEventListener("blur",this._onBlur),this.element.removeEventListener("mousedown",this._onMouseDown),this.stopMouseCapture(),this.element.removeEventListener("wheel",this._onWheel),this.element.classList.remove("focused"),this.textarea.remove()}handleKeyDown(A){if(this.composing)return;if((A.metaKey||A.ctrlKey)&&A.key==="c"){let e=window.getSelection();if(e&&e.toString().length>0)return}if((A.metaKey||A.ctrlKey)&&A.key==="v"){this.textarea.focus();return}if(A.metaKey&&!A.ctrlKey){if(A.key==="Backspace")A.preventDefault(),this.onData("\x15");else if(A.key==="a"){A.preventDefault();let e=window.getSelection();if(e){let s=document.createRange();s.selectNodeContents(this.element),e.removeAllRanges(),e.addRange(s)}}return}A.preventDefault();let t=this.keyToSequence(A);if(t)this.onData(t)}handlePaste(A){A.preventDefault();let t=A.clipboardData?.getData("text");if(!t)return;let e=this.getBridge();if(e&&e.bracketedPaste()){let s=t.replace(/\x1b/g,"");this.onData("\x1B[200~"+s+"\x1B[201~")}else this.onData(t)}handleCompositionStart(){this.composing=!0}handleCompositionEnd(A){if(this.composing=!1,A.data)this.onData(A.data);this.textarea.value=""}handleInput(){if(this.composing)return;let A=this.textarea.value;if(A)this.onData(A),this.textarea.value=""}handleMouse(A,t){let e=this.getBridge(),s=e?.mouseTracking?.()??0;if(!e||s===0||!e.mouseSgr?.())return;if(t==="press"&&F(A,this.element.ownerDocument.defaultView?.navigator??navigator)&&A.target instanceof Element&&A.target.closest(".term-link"))return;if(t==="press"&&(A.shiftKey||A.button>2))return;if(t==="release"&&A.button>2)return;let i=A.buttons&7;if(t==="move"&&(s!==1002||i===0))return;let r=this.element.ownerDocument.defaultView;if(!r)return;let o=this.element.querySelector(".term-row:not(.term-scrollback-row)"),n=this.element.getBoundingClientRect(),g=o?.getBoundingClientRect(),B=this.getCellSize(),l,E,c,h;if(g&&B)l=g.left,E=g.top,c=B.charWidth,h=B.rowHeight;else{let Q=r.getComputedStyle(this.element),a=parseFloat(Q.borderLeftWidth)||0,u=parseFloat(Q.borderRightWidth)||0,D=parseFloat(Q.borderTopWidth)||0,p=parseFloat(Q.borderBottomWidth)||0,w=parseFloat(Q.paddingLeft)||0,m=parseFloat(Q.paddingRight)||0,x=parseFloat(Q.paddingTop)||0,k=parseFloat(Q.paddingBottom)||0;l=g?.left??n.left+a+w,E=g?.top??n.top+D+x,c=(n.width-a-u-w-m)/e.getCols(),h=(n.height-D-p-x-k)/e.getRows()}if(c<=0||h<=0)return;if(t==="press"){if(this.textarea.focus({preventScroll:!0}),!this.focused)this._onFocus();this.mouseButtons=i||(A.button===1?4:A.button===2?2:1),r.addEventListener("mousemove",this._onMouseMove),r.addEventListener("mouseup",this._onMouseUp)}let I=Math.max(1,Math.min(e.getCols(),Math.floor((A.clientX-l)/c)+1)),f=Math.max(1,Math.min(e.getRows(),Math.floor((A.clientY-E)/h)+1)),d=(A.shiftKey?4:0)|(A.altKey?8:0)|(A.ctrlKey?16:0),L,C="M";if(t==="wheel"){let Q=A;if(Math.abs(Q.deltaX)>Math.abs(Q.deltaY)){if(Q.deltaX===0)return;L=(Q.deltaX<0?66:67)|d}else{if(Q.deltaY===0)return;L=(Q.deltaY<0?64:65)|d}}else if(L=(t==="move"?i&4?1:i&2?2:0:A.button===1?1:A.button===2?2:0)|d|(t==="move"?32:0),t==="release")C="m";A.preventDefault(),this.onData(`\x1B[<${L};${I};${f}${C}`)}stopMouseCapture(){this.mouseButtons=0;let A=this.element.ownerDocument.defaultView;A?.removeEventListener("mousemove",this._onMouseMove),A?.removeEventListener("mouseup",this._onMouseUp)}keyToSequence(A){if(A.ctrlKey&&!A.altKey&&!A.metaKey){if(A.key.length===1){let o=A.key.toLowerCase().charCodeAt(0);if(o>=97&&o<=122)return String.fromCharCode(o-96)}if(A.key==="[")return"\x1B";if(A.key==="\\")return"\x1C";if(A.key==="]")return"\x1D";if(A.key==="^")return"\x1E";if(A.key==="_")return"\x1F"}if(A.key==="Enter"&&A.shiftKey)return"\x1B[13;2u";if(A.key==="Tab"&&A.shiftKey)return"\x1B[Z";let t=hA[A.key];if(t)return A.altKey?"\x1B"+t:t;let e=this.getBridge(),r=(e&&e.cursorKeysApp()?lA:aA)[A.key];if(r)return A.altKey?"\x1B"+r:r;if(A.key.length===1&&!A.ctrlKey&&!A.metaKey)return A.altKey?"\x1B"+A.key:A.key;return null}}var IA={1:"bold",2:"dim",4:"italic",8:"underline",16:"blink",32:"reverse",64:"invisible",128:"strikethrough"};function uA(A){let t=[];for(let[e,s]of Object.entries(IA))if(A&Number(e))t.push(s);return t}var N=27;function dA(A){let t=[],e=Date.now(),s=0,i=0,r=()=>{if(s>i){let o=A.slice(i,s);if(o.length>0&&!/^[\x00-\x1f]+$/.test(o))t.push({ts:e,type:"text",raw:o.slice(0,60)})}};while(s<A.length){if(A.charCodeAt(s)!==N){s++;continue}r();let o=s;if(s++,s>=A.length)break;let n=A[s];if(n==="["){s++;let g="";if(s<A.length&&(A[s]==="?"||A[s]===">"||A[s]==="!"))g=A[s],s++;let B="";while(s<A.length&&(A.charCodeAt(s)>=48&&A.charCodeAt(s)<=59||A[s]===":"))B+=A[s],s++;while(s<A.length&&A.charCodeAt(s)>=32&&A.charCodeAt(s)<=47)s++;let l="";if(s<A.length&&A.charCodeAt(s)>=64&&A.charCodeAt(s)<=126)l=A[s],s++;let E=A.slice(o,s),c=B?B.split(/[;:]/).map(Number).filter((I)=>!isNaN(I)):[],h=l==="m"?"sgr":"csi";t.push({ts:e,type:h,raw:E,params:c.length>0?c:void 0,private:g||void 0,final:l})}else if(n==="]"){s++;while(s<A.length&&A.charCodeAt(s)!==7&&!(A.charCodeAt(s)===N&&s+1<A.length&&A[s+1]==="\\"))s++;if(s<A.length){if(A.charCodeAt(s)===7)s++;else if(A.charCodeAt(s)===N)s+=2}let g=A.slice(o,s);t.push({ts:e,type:"osc",raw:g.slice(0,80)})}else if(n>=" "&&n<="~")s++,t.push({ts:e,type:"esc",raw:A.slice(o,s),final:n});else s++;i=s}return r(),t}var eA=500;class v{constructor(){this._traces=[],this._bridge=null,this._perf={frameCount:0,totalRenderMs:0,avgRenderMs:0,maxRenderMs:0,lastDirtyRows:0}}get traces(){return this._traces}get perf(){return this._perf}setBridge(A){this._bridge=A}traceWrite(A){let t=typeof A==="string"?A:new TextDecoder().decode(A),e=dA(t);for(let s of e)this._traces.push(s);if(this._traces.length>eA)this._traces=this._traces.slice(-eA)}recordRender(A,t){if(this._perf.frameCount++,this._perf.totalRenderMs+=A,this._perf.avgRenderMs=this._perf.totalRenderMs/this._perf.frameCount,A>this._perf.maxRenderMs)this._perf.maxRenderMs=A;this._perf.lastDirtyRows=t}resetPerf(){this._perf={frameCount:0,totalRenderMs:0,avgRenderMs:0,maxRenderMs:0,lastDirtyRows:0}}cell(A,t){if(!this._bridge)return null;let e=this._bridge.getCell(A,t);return{...e,charStr:e.chars??(e.char>=32?String.fromCodePoint(e.char):""),flagNames:uA(e.flags)}}row(A){if(!this._bridge)return null;let t=this._bridge.getCols(),e=[];for(let s=0;s<t;s++)e.push(this.cell(A,s));return e}grid(){if(!this._bridge)return null;let A=this._bridge.getCursor();return{rows:this._bridge.getRows(),cols:this._bridge.getCols(),cursor:A,altScreen:this._bridge.usingAltScreen(),scrollbackCount:this._bridge.getScrollbackCount()}}unhandled(){if(!this._bridge)return[];return this._bridge.getUnhandledSequences()}dump(A=50){let t=this._traces.slice(-A);console.group(`%cwterm debug — last ${t.length} traces`,"color: #569cd6; font-weight: bold");for(let e of t){let s=e.type==="sgr"?"%cSGR":e.type==="csi"?"%cCSI":e.type==="osc"?"%cOSC":e.type==="esc"?"%cESC":"%cTXT",i=e.type==="sgr"?"background:#2d5a27;color:#fff;padding:1px 4px;border-radius:2px":e.type==="csi"?"background:#1e4a7a;color:#fff;padding:1px 4px;border-radius:2px":"background:#555;color:#fff;padding:1px 4px;border-radius:2px",r=[e.private?`private=${e.private}`:"",e.params?`params=[${e.params}]`:"",e.final?`final=${e.final}`:""].filter(Boolean).join(" ");console.log(`${s} ${e.raw.slice(0,40)}`,i,r?` ${r}`:"")}console.groupEnd()}dumpUnhandled(){let A=this.unhandled();if(A.length===0){console.log("%cwterm debug — no unhandled sequences","color: #6a9955");return}console.group(`%cwterm debug — ${A.length} unhandled sequences`,"color: #d7ba7d; font-weight: bold");for(let t of A)console.log(` final=${t.final} private=${t.private||"-"} params=[${t.params.slice(0,t.paramCount)}]`);console.groupEnd()}}var wA=1000;class J{constructor(A,t={}){if(this.bridge=null,this.debug=null,this.renderer=null,this.input=null,this.rafId=null,this._synchronizedOutputTimer=null,this._synchronizedOutputState="idle",this._synchronizedOutputGeneration=0,this._rendererNeedsSetup=!1,this.resizeObserver=null,this._destroyed=!1,this._shouldScrollToBottom=!1,this._scrollbackDiscardedCount=0,this._programmaticScrollTop=null,this._pendingResizeScrollTop=null,this._rowHeight=0,this._charWidth=0,this.element=A,this._coreOption=t.core,this.wasmUrl=t.wasmUrl,this.cols=t.cols||80,this.rows=t.rows||24,this.autoResize=t.autoResize!==!1,this._debugEnabled=t.debug??!1,this.onData=t.onData||null,this.onTitle=t.onTitle||null,this.onResize=t.onResize||null,this._container=document.createElement("div"),this._container.className="term-grid",this.element.appendChild(this._container),this.element.classList.add("wterm"),t.cursorBlink)this.element.classList.add("cursor-blink");this._onClickFocus=(e)=>{let s=e.target;if(s instanceof Element&&s.closest(".term-link")){if(F(e,this.element.ownerDocument.defaultView?.navigator??navigator)||e.detail===0)return;e.preventDefault()}let i=window.getSelection();if(!i||i.isCollapsed)this.input?.focus()},this.element.addEventListener("click",this._onClickFocus),this._onModifierChange=(e)=>{this.element.classList.toggle("link-modifier-active",F(e,this.element.ownerDocument.defaultView?.navigator??navigator))},this._onWindowBlur=()=>{this.element.classList.remove("link-modifier-active")},this.element.ownerDocument.addEventListener("keydown",this._onModifierChange),this.element.ownerDocument.addEventListener("keyup",this._onModifierChange),this.element.ownerDocument.defaultView?.addEventListener("blur",this._onWindowBlur),this._onScroll=()=>{if(this._pendingResizeScrollTop!==null)return;if(this._programmaticScrollTop!==null&&this.element.scrollTop===this._programmaticScrollTop){this._programmaticScrollTop=null;return}this._programmaticScrollTop=null,this._shouldScrollToBottom=!1,this._scheduleRender()},this.element.addEventListener("scroll",this._onScroll,{passive:!0})}async init(){try{if(this._coreOption)this.bridge=this._coreOption;else this.bridge=await y.load(this.wasmUrl);if(this._destroyed)return this;if(this.bridge.init(this.cols,this.rows),this._debugEnabled)this.debug=new v,this.debug.setBridge(this.bridge),globalThis.__wterm=this;if(this._setRowHeight(),this._measureCharSize(),this.renderer=new U(this._container),this.renderer.setup(this.cols,this.rows),this.input=new G(this.element,(A)=>{if(this._scrollToBottom(),this.onData)this.onData(A);else this.write(A)},()=>this.bridge,()=>this._charWidth>0&&this._rowHeight>0?{charWidth:this._charWidth,rowHeight:this._rowHeight}:null),this.autoResize)this._setupResizeObserver();else this._lockHeight();this.input.focus(),this._initialRender()}catch(A){throw this.destroy(),Error(`wterm: failed to initialize: ${A instanceof Error?A.message:A}`)}return this}_isScrolledToBottom(){let A=this.element;return A.scrollHeight-A.scrollTop-A.clientHeight<5}_scrollToBottom(){let A=this.element,t=A.scrollHeight-A.clientHeight;if(t<=0){this._setScrollTop(0);return}this._setScrollTop(t)}_setScrollTop(A){if(this.element.scrollTop===A)return;this._programmaticScrollTop=A,this.element.scrollTop=A}write(A){if(!this.bridge)return;if(this.debug)this.debug.traceWrite(A);this._shouldScrollToBottom=this._isScrolledToBottom();let t,e=!1,s=()=>{let o=this._drainResponses();if(!e&&o.hasError)e=!0,t=o.error};if(typeof A==="string")this.bridge.writeString(A,s);else this.bridge.writeRaw(A,s);let i=this.bridge.synchronizedOutput?.()??!1,r=this.bridge.synchronizedOutputGeneration?.()??0;if(this._updateSynchronizedOutput(i,r),this._synchronizedOutputState!=="held")this._setupRendererIfNeeded(),this._scheduleRender();if(s(),e)throw t}resize(A,t){if(!this.bridge)return;this._shouldScrollToBottom=this._pendingResizeScrollTop===null&&this._isScrolledToBottom(),this.cols=A,this.rows=t,this.bridge.resize(A,t);let e=this.bridge.synchronizedOutput?.()??!1,s=this.bridge.synchronizedOutputGeneration?.()??0;if(this._updateSynchronizedOutput(e,s))this._rendererNeedsSetup=!0;else this._setupRenderer(A,t),this._scheduleRender();if(this.onResize)this.onResize(A,t)}focus(){if(this.input)this.input.focus();else this.element.focus()}_scheduleRender(){if(this.rafId!=null)return;this.rafId=requestAnimationFrame(()=>{this.rafId=null,this._doRender()})}_cancelScheduledRender(){if(this.rafId!=null)cancelAnimationFrame(this.rafId),this.rafId=null}_updateSynchronizedOutput(A,t){if(!A){if(this._synchronizedOutputState==="held")this._cancelSynchronizedOutputFallback();return this._synchronizedOutputState="idle",!1}if(this._synchronizedOutputState==="held"&&t!==this._synchronizedOutputGeneration)return this._armSynchronizedOutputFallback(t),!0;else if(this._synchronizedOutputState==="passthrough"&&t!==this._synchronizedOutputGeneration)this._synchronizedOutputState="idle";if(this._synchronizedOutputState!=="idle")return this._synchronizedOutputState==="held";return this._synchronizedOutputState="held",this._cancelScheduledRender(),this._armSynchronizedOutputFallback(t),!0}_armSynchronizedOutputFallback(A){this._cancelSynchronizedOutputFallback(),this._synchronizedOutputGeneration=A,this._synchronizedOutputTimer=setTimeout(()=>{if(this._synchronizedOutputState!=="held"||this._synchronizedOutputGeneration!==A)return;this._synchronizedOutputTimer=null,this._synchronizedOutputState="passthrough",this._setupRendererIfNeeded(),this._cancelScheduledRender(),this._doRender()},wA)}_cancelSynchronizedOutputFallback(){if(this._synchronizedOutputTimer==null)return;clearTimeout(this._synchronizedOutputTimer),this._synchronizedOutputTimer=null}_setupRendererIfNeeded(){if(!this._rendererNeedsSetup)return;this._setupRenderer(this.cols,this.rows),this._rendererNeedsSetup=!1}_setupRenderer(A,t){if(!this._shouldScrollToBottom&&this._pendingResizeScrollTop===null)this._pendingResizeScrollTop=this.element.scrollTop;this.renderer?.setup(A,t)}_initialRender(){this._doRender()}_doRender(){if(!this.bridge||!this.renderer)return;let A=0,t=this.debug?performance.now():0;if(this.debug){for(let B=0;B<this.rows;B++)if(this.bridge.isDirtyRow(B))A++}let e=this._rowHeight||17,s=this.bridge.getScrollbackCount(),i=this.bridge.getScrollbackDiscardedCount?.(),r=i!==void 0&&i>=this._scrollbackDiscardedCount?i-this._scrollbackDiscardedCount:0;if(i!==void 0)this._scrollbackDiscardedCount=i;let o=this._pendingResizeScrollTop!==null?this._pendingResizeScrollTop:this.element.scrollTop;if(!this._shouldScrollToBottom&&r>0)if(o=Math.max(0,o-r*e),this._pendingResizeScrollTop!==null)this._pendingResizeScrollTop=o;else this._setScrollTop(o);if(this.renderer.render(this.bridge,{scrollTop:this._shouldScrollToBottom?Math.max(0,(s+this.rows)*e-this.element.clientHeight):o,clientHeight:this.element.clientHeight,rowHeight:e,scrollbackDiscardedCount:i}),this.debug)this.debug.recordRender(performance.now()-t,A);let n=s>0;if(this.element.classList.toggle("has-scrollback",n),this._shouldScrollToBottom)this._scrollToBottom();else if(this._pendingResizeScrollTop!==null){let B=this._pendingResizeScrollTop;this._pendingResizeScrollTop=null,this._setScrollTop(B)}else if(!n&&this.element.scrollTop!==0)this.element.scrollTop=0;let g=this.bridge.getTitle();if(g!==null&&this.onTitle)this.onTitle(g);this._drainResponses()}_drainResponses(){if(!this.bridge)return{hasError:!1};let A,t,e=!1;while((A=this.bridge.getResponse())!==null)try{if(this.onData)this.onData(A)}catch(s){if(!e)e=!0,t=s}return{hasError:e,error:t}}_lockHeight(){let A=this._rowHeight||17,t=this.rows*A,e=getComputedStyle(this.element),s=(parseFloat(e.paddingTop)||0)+(parseFloat(e.paddingBottom)||0);if(e.boxSizing==="border-box")s+=(parseFloat(e.borderTopWidth)||0)+(parseFloat(e.borderBottomWidth)||0);this.element.style.height=`${t+s}px`}_setRowHeight(){let A=document.createElement("div");A.className="term-row",A.style.visibility="hidden",A.style.position="absolute",A.textContent="W",this._container.appendChild(A);let t=A.getBoundingClientRect().height;if(A.remove(),t>0){let e=Math.ceil(t);this._rowHeight=e,this.element.style.setProperty("--term-row-height",`${e}px`)}}_measureCharSize(){let A=document.createElement("div");A.className="term-row",A.style.visibility="hidden",A.style.position="absolute";let t=document.createElement("span");t.textContent="W",A.appendChild(t),this._container.appendChild(A);let e=t.getBoundingClientRect().width,s=A.getBoundingClientRect().height;if(A.remove(),e===0||s===0)return null;return this._charWidth=e,this._rowHeight=s,{charWidth:e,rowHeight:s}}_setupResizeObserver(){let A=this._measureCharSize();if(!A)return;let{charWidth:t,rowHeight:e}=A;this.resizeObserver=new ResizeObserver((s)=>{let i=this._measureCharSize();if(i)t=i.charWidth,e=i.rowHeight;for(let r of s){let{width:o,height:n}=r.contentRect,g=Math.max(1,Math.floor(o/t)),B=Math.max(1,Math.floor(n/e));if(g!==this.cols||B!==this.rows)this.resize(g,B)}}),this.resizeObserver.observe(this.element)}destroy(){if(this._destroyed=!0,this._cancelScheduledRender(),this._cancelSynchronizedOutputFallback(),this.resizeObserver)this.resizeObserver.disconnect();if(this.input)this.input.destroy();if(this.element.removeEventListener("click",this._onClickFocus),this.element.removeEventListener("scroll",this._onScroll),this.element.ownerDocument.removeEventListener("keydown",this._onModifierChange),this.element.ownerDocument.removeEventListener("keyup",this._onModifierChange),this.element.ownerDocument.defaultView?.removeEventListener("blur",this._onWindowBlur),this.element.classList.remove("link-modifier-active"),this.element.innerHTML="",this.debug&&globalThis.__wterm===this)delete globalThis.__wterm;this.debug=null}}var fA=(A)=>A.replaceAll("\x1B","").replaceAll("\x07","");function pA(A){return[...fA(A).matchAll(/\](?:0|2);([^]*)(?:|\\)/g)].map((t)=>t[1]??"")}function sA(A){let t=pA(A);return t.length?t[t.length-1]:null}var oA=document.getElementById("tcut-cast");if(!oA)throw Error("tcut player: missing cast data");var S=JSON.parse(oA.textContent||"{}"),M=document.getElementById("term"),iA=document.getElementById("play"),Y=document.getElementById("progress"),mA=document.getElementById("loop"),DA=document.getElementById("time"),rA=(A)=>`${Math.floor(A/60)}:${String(Math.floor(A%60)).padStart(2,"0")}`;(async()=>{let A=await y.load(),t=new J(M,{cols:S.cols,rows:S.rows,core:A,autoResize:!1,cursorBlink:!0,onData:()=>{}});await t.init(),M.classList.add("focused");let e=0,s=0,i=!1,r=0,o=0,n=()=>{t.write("\x1Bc"),t.resize(S.cols,S.rows),e=0,s=0},g=(h)=>{while(e<S.events.length&&S.events[e].vt<=h){let I=S.events[e++];if(I.type==="o"){if(t.write(I.data),S.autoTitle){let f=sA(I.data);if(f!==null){let d=document.querySelector("#bar .title");if(d)d.textContent=f}}}else if(I.type==="r"){let[f,d]=I.data.split("x").map(Number);if(f>0&&d>0)t.resize(f,d)}}},B=()=>{Y.value=String(Math.min(1000,Math.round(s/S.duration*1000))),DA.textContent=`${rA(s)} / ${rA(S.duration)}`,iA.textContent=i?"❚❚":"▶"},l=(h)=>{if(!i)return;if(s+=(h-r)/1000*S.speed,r=h,g(s),q(M),s>=S.duration)if(mA.checked)n();else i=!1,s=S.duration;if(B(),i)o=requestAnimationFrame(l)},E=()=>{if(i)return;if(s>=S.duration)n();i=!0,r=performance.now(),o=requestAnimationFrame(l),B()},c=()=>{i=!1,cancelAnimationFrame(o),B()};iA.addEventListener("click",()=>i?c():E()),Y.addEventListener("input",()=>{let h=Number(Y.value)/1000*S.duration;if(h<s)n();s=h,g(s),B()}),M.addEventListener("click",()=>i?c():E()),g(0),B(),E()})();
@@ -4,6 +4,7 @@ import { WasmBridge, type TerminalCore } from "@wterm/core";
4
4
  import { WTerm } from "@wterm/dom";
5
5
  import { GhosttyCore } from "@wterm/ghostty";
6
6
  import type { CellSize } from "../config";
7
+ import { pinGlyphs } from "./pin";
7
8
 
8
9
  declare global {
9
10
  interface Window {
@@ -55,6 +56,8 @@ const api = {
55
56
  el.classList.add("focused");
56
57
  if (document.fonts?.ready) await document.fonts.ready;
57
58
  await paint();
59
+ pinGlyphs(el);
60
+ await paint();
58
61
  return true;
59
62
  },
60
63
 
@@ -165,6 +168,8 @@ const api = {
165
168
  if (c! > 0 && r! > 0) term!.resize(c!, r!);
166
169
  }
167
170
  }
171
+ await paint(); // wterm has rendered the rows
172
+ pinGlyphs(document.getElementById("term")!);
168
173
  await paint();
169
174
  return true;
170
175
  },
@@ -173,6 +178,8 @@ const api = {
173
178
  async writeUrl(url: string): Promise<boolean> {
174
179
  term!.write(await (await fetch(url)).text());
175
180
  await paint();
181
+ pinGlyphs(document.getElementById("term")!);
182
+ await paint();
176
183
  return true;
177
184
  },
178
185
 
@@ -1,4 +1,5 @@
1
1
  import type { ResolvedConfig, Theme } from "../types";
2
+ import { PIN_CSS } from "./pin";
2
3
 
3
4
  const BAR_HEIGHT = 36;
4
5
  /** Gap between the terminal window and the browser window. */
@@ -233,10 +234,12 @@ export function renderHtml(config: ResolvedConfig): string {
233
234
  --term-line-height: ${font.lineHeight};
234
235
  --term-row-height: ${Math.ceil(font.size * font.lineHeight)}px;
235
236
  letter-spacing: ${font.letterSpacing}px;
237
+ --vt-letter-spacing: ${font.letterSpacing}px;
236
238
  padding: 0; border-radius: 0; box-shadow: none; background: transparent;
237
239
  overflow: hidden;
238
240
  }
239
241
  #term .term-row { overflow: hidden; }
242
+ ${PIN_CSS}
240
243
  /* Key overlay: chips for recent key presses, driven by the renderer on the render clock. */
241
244
  #keys {
242
245
  position: absolute; left: 0; right: 0; ${config.keys?.position === "top" ? "top" : "bottom"}: ${Math.max(10, config.padding - 6)}px;
@@ -0,0 +1,49 @@
1
+ // Fallback fonts are not monospace. A terminal clips every glyph into its cell; the DOM renderer lays a row
2
+ // out as text runs and trusts the font, so one symbol that the primary font lacks (a progress-bar block, a
3
+ // Nerd Font icon) renders a few pixels narrow or wide and shifts everything after it on that row — and when
4
+ // an animation swaps such glyphs, the rest of the row jitters. Pinning every non-ASCII narrow glyph to a
5
+ // 1ch box restores the grid. Wide cells are already their own `term-wide` boxes.
6
+
7
+ const ASCII_ONLY = /^[\x20-\x7e]*$/;
8
+ export const PIN_CLASS = "vt-pin";
9
+ export const PIN_CSS = `.${PIN_CLASS}{display:inline-block;width:calc(1ch + var(--vt-letter-spacing,0px));overflow:hidden;text-align:center;vertical-align:top}`;
10
+
11
+ const segmenter = "Segmenter" in Intl ? new Intl.Segmenter(undefined, { granularity: "grapheme" }) : null;
12
+
13
+ /** Grapheme clusters: a base character plus its combining marks / variation selectors stays one cell. */
14
+ function clusters(text: string): string[] {
15
+ if (!segmenter) return [...text];
16
+ const out: string[] = [];
17
+ for (const s of segmenter.segment(text)) out.push(s.segment);
18
+ return out;
19
+ }
20
+
21
+ /** Wrap non-ASCII glyphs in fixed-width boxes. Safe to call after every write: already-pinned runs are skipped. */
22
+ export function pinGlyphs(root: ParentNode): void {
23
+ for (const span of root.querySelectorAll<HTMLElement>(".term-row span")) {
24
+ if (span.dataset.pinned === "1" || span.classList.contains("term-wide") || span.classList.contains(PIN_CLASS)) continue;
25
+ if (span.children.length > 0) continue; // only leaf runs hold text
26
+ const text = span.textContent ?? "";
27
+ if (ASCII_ONLY.test(text)) continue;
28
+ const frag = document.createDocumentFragment();
29
+ let ascii = "";
30
+ const flush = () => {
31
+ if (ascii) frag.append(ascii);
32
+ ascii = "";
33
+ };
34
+ for (const c of clusters(text)) {
35
+ if (ASCII_ONLY.test(c)) {
36
+ ascii += c;
37
+ continue;
38
+ }
39
+ flush();
40
+ const pin = document.createElement("span");
41
+ pin.className = PIN_CLASS;
42
+ pin.textContent = c;
43
+ frag.append(pin);
44
+ }
45
+ flush();
46
+ span.replaceChildren(frag);
47
+ span.dataset.pinned = "1";
48
+ }
49
+ }
@@ -1,5 +1,6 @@
1
1
  // Browser-side player for `.html` exports. Uses wterm's lite core (inline WASM) so the file is self-contained.
2
2
  import { WasmBridge } from "@wterm/core";
3
+ import { pinGlyphs } from "./pin";
3
4
  import { WTerm } from "@wterm/dom";
4
5
  import { extractTitle } from "../osc";
5
6
 
@@ -74,6 +75,7 @@ const fmt = (s: number) => `${Math.floor(s / 60)}:${String(Math.floor(s % 60)).p
74
75
  elapsed += ((now - last) / 1000) * data.speed;
75
76
  last = now;
76
77
  applyUntil(elapsed);
78
+ pinGlyphs(el);
77
79
  if (elapsed >= data.duration) {
78
80
  if (loopBox.checked) {
79
81
  reset();
@@ -216,7 +216,7 @@ export async function render(
216
216
 
217
217
  const blinkOn = !config.cursor.blink || Math.floor((time / blinkPeriod) * 2) % 2 === 0;
218
218
  const drawable = batch.filter((e) => e.type === "o" || e.type === "r");
219
- const shots = batch.filter((e) => e.type === "m" && e.data.startsWith(MARKER.screenshot));
219
+ const shots = batch.filter((e) => e.type === "m" && e.data.startsWith(MARKER.screenshot) && !e.data.toLowerCase().endsWith(".svg"));
220
220
  const browserFrame = hasBrowser ? batch.filter((e) => e.type === "b").at(-1) : undefined;
221
221
  const focusChanged = hasBrowser && batch.some((e) => e.type === "m" && e.data.startsWith(MARKER.focus));
222
222
  let dirty = lastPng === null || drawable.length > 0 || blinkOn !== lastBlink || browserFrame !== undefined || focusChanged;
package/src/types.ts CHANGED
@@ -353,7 +353,14 @@ export interface TerminalSession {
353
353
 
354
354
  /** Everything inside `fn` happens, but is cut from the video (state changes are kept). */
355
355
  hide<T>(fn: () => Promise<T>): Promise<T>;
356
- /** Save a PNG of the current frame during rendering. */
356
+ /**
357
+ * Save a still of this exact moment when the video renders: `.png` (pixel-perfect raster) or `.svg`
358
+ * (vector, selectable text — produced headlessly, no WebView). Written by `tcut <script>` and
359
+ * `tcut render`, even when no video output is configured, so one script keeps the video and its
360
+ * screenshots in sync.
361
+ */
362
+ snapshot(path: string): Promise<void>;
363
+ /** Alias of `snapshot` (pre-1.0 name). */
357
364
  screenshot(path: string): Promise<void>;
358
365
  /** Insert a named marker (written to the .cast, useful for chapters/tooling). */
359
366
  marker(name: string): Promise<void>;