silvery 0.23.0 → 0.23.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/dist/{Text-Ci6UCSTL.mjs → Text-4tWKabKH.mjs} +5 -5
- package/dist/{Text-Ci6UCSTL.mjs.map → Text-4tWKabKH.mjs.map} +1 -1
- package/dist/{ag-q9lRlKlt.mjs → ag-B-7XAHL8.mjs} +9 -9
- package/dist/{ag-q9lRlKlt.mjs.map → ag-B-7XAHL8.mjs.map} +1 -1
- package/dist/animation-CZ4x2R7C.mjs.map +1 -1
- package/dist/{ansi-zmNzgkPB.d.mts → ansi-qYRTDp5m.d.mts} +1 -1
- package/dist/{ansi-zmNzgkPB.d.mts.map → ansi-qYRTDp5m.d.mts.map} +1 -1
- package/dist/{chain-bridge-CkYcMxlq.mjs → chain-bridge-B7LNJwVF.mjs} +8 -8
- package/dist/{chain-bridge-CkYcMxlq.mjs.map → chain-bridge-B7LNJwVF.mjs.map} +1 -1
- package/dist/{chunk-BEJ448es.mjs → chunk-hT5z_Zn9.mjs} +1 -1
- package/dist/cli-CuNV0hTE.mjs +4 -0
- package/dist/devtools-BuTq07Zb.mjs +2 -0
- package/dist/{devtools-td2AjFwc.mjs → devtools-akTjVxxX.mjs} +4 -5
- package/dist/{devtools-td2AjFwc.mjs.map → devtools-akTjVxxX.mjs.map} +1 -1
- package/dist/{easing-C5MrdO7V.d.mts → easing-8OlNopWv.d.mts} +1 -1
- package/dist/{easing-C5MrdO7V.d.mts.map → easing-8OlNopWv.d.mts.map} +1 -1
- package/dist/{eta-BwYWEjfS.mjs → eta-CPZ45g_P.mjs} +5 -1
- package/dist/{eta-BwYWEjfS.mjs.map → eta-CPZ45g_P.mjs.map} +1 -1
- package/dist/flexily-zero-adapter-VoBGHG14.mjs.map +1 -1
- package/dist/{hit-registry-D_nxOivS.d.mts → hit-registry-DRV2ig-Y.d.mts} +2 -2
- package/dist/{hit-registry-D_nxOivS.d.mts.map → hit-registry-DRV2ig-Y.d.mts.map} +1 -1
- package/dist/{image-CIF75xMr.mjs → image-o2WpbrD1.mjs} +22 -22
- package/dist/image-o2WpbrD1.mjs.map +1 -0
- package/dist/{index-377zdPLP.d.mts → index-3vAxA_EQ.d.mts} +1 -1
- package/dist/{index-377zdPLP.d.mts.map → index-3vAxA_EQ.d.mts.map} +1 -1
- package/dist/{index-BcSr0RAQ.d.mts → index-BKujGENR.d.mts} +6 -6
- package/dist/index-BKujGENR.d.mts.map +1 -0
- package/dist/{index-DlNmckTq.d.mts → index-C6oOd9eE.d.mts} +2 -2
- package/dist/{index-DlNmckTq.d.mts.map → index-C6oOd9eE.d.mts.map} +1 -1
- package/dist/{index-DLnpxDAm.d.mts → index-DhYF3m7V.d.mts} +2 -2
- package/dist/{index-DLnpxDAm.d.mts.map → index-DhYF3m7V.d.mts.map} +1 -1
- package/dist/index.d.mts +9 -9
- package/dist/index.mjs +14 -14
- package/dist/index.mjs.map +1 -1
- package/dist/{layout-engine-BgR58vL0.mjs → layout-engine-BYp49XPD.mjs} +2 -2
- package/dist/{layout-engine-BgR58vL0.mjs.map → layout-engine-BYp49XPD.mjs.map} +1 -1
- package/dist/{layout-engine-DNjTha8f.mjs → layout-engine-D0dXw5fr.mjs} +1 -1
- package/dist/{layout-signals-CGYbHmxy.mjs → layout-signals-uQadGDmO.mjs} +2 -2
- package/dist/{layout-signals-CGYbHmxy.mjs.map → layout-signals-uQadGDmO.mjs.map} +1 -1
- package/dist/{mouse-events-WQ2h-uqG.mjs → mouse-events-Pg-XKR3T.mjs} +24 -3
- package/dist/{mouse-events-WQ2h-uqG.mjs.map → mouse-events-Pg-XKR3T.mjs.map} +1 -1
- package/dist/{mouse-events-B2z5tbsL.d.mts → mouse-events-UoUWNIdS.d.mts} +22 -3
- package/dist/{mouse-events-B2z5tbsL.d.mts.map → mouse-events-UoUWNIdS.d.mts.map} +1 -1
- package/dist/{multi-progress-zCWHEm9P.mjs → multi-progress-Bvd1BYED.mjs} +2 -2
- package/dist/{multi-progress-zCWHEm9P.mjs.map → multi-progress-Bvd1BYED.mjs.map} +1 -1
- package/dist/{multi-progress-BaEFfHKP.d.mts → multi-progress-DPOCjomS.d.mts} +2 -2
- package/dist/{multi-progress-BaEFfHKP.d.mts.map → multi-progress-DPOCjomS.d.mts.map} +1 -1
- package/dist/{node-CJ3J_rW-.mjs → node-Cl-kzQcl.mjs} +4 -4
- package/dist/node-Cl-kzQcl.mjs.map +1 -0
- package/dist/{progress-6vJ7nxUg.mjs → progress-1r6M_ZAP.mjs} +4 -4
- package/dist/{progress-6vJ7nxUg.mjs.map → progress-1r6M_ZAP.mjs.map} +1 -1
- package/dist/{progress-bar-BlFNsZL8.mjs → progress-bar-DzW1DzNj.mjs} +3 -3
- package/dist/{progress-bar-BlFNsZL8.mjs.map → progress-bar-DzW1DzNj.mjs.map} +1 -1
- package/dist/{reconciler--_-biN23.mjs → reconciler-lsTL1y8i.mjs} +45 -5
- package/dist/{reconciler--_-biN23.mjs.map → reconciler-lsTL1y8i.mjs.map} +1 -1
- package/dist/{render-string-DtHZP0cU.mjs → render-string-2ZcV8n3B.mjs} +6 -6
- package/dist/{render-string-DtHZP0cU.mjs.map → render-string-2ZcV8n3B.mjs.map} +1 -1
- package/dist/{render-string-DaghHpLN.mjs → render-string-BJZqo5Rr.mjs} +1 -1
- package/dist/runtime.d.mts +3 -3
- package/dist/runtime.mjs +3 -3
- package/dist/{schemes-DWQPxXAi.mjs → schemes-C4SUgVea.mjs} +2 -2
- package/dist/{schemes-DWQPxXAi.mjs.map → schemes-C4SUgVea.mjs.map} +1 -1
- package/dist/{spinner-B50hILqx.mjs → spinner-Ck3SdCpW.mjs} +2 -2
- package/dist/{spinner-B50hILqx.mjs.map → spinner-Ck3SdCpW.mjs.map} +1 -1
- package/dist/{spinner-DN10UfF0.d.mts → spinner-CpcGtQ9L.d.mts} +2 -2
- package/dist/{spinner-DN10UfF0.d.mts.map → spinner-CpcGtQ9L.d.mts.map} +1 -1
- package/dist/{src-BqeBFB3X.mjs → src-B6MuVlOK.mjs} +3 -3
- package/dist/src-B6MuVlOK.mjs.map +1 -0
- package/dist/{src-DbqcSrhy.mjs → src-BZOfzNeo.mjs} +32 -9
- package/dist/src-BZOfzNeo.mjs.map +1 -0
- package/dist/{src-BXeTHHlL.mjs → src-ChuXo--x.mjs} +25 -23
- package/dist/src-ChuXo--x.mjs.map +1 -0
- package/dist/{src-BOLdi3WG.mjs → src-DdGaRDi9.mjs} +3 -3
- package/dist/{src-BOLdi3WG.mjs.map → src-DdGaRDi9.mjs.map} +1 -1
- package/dist/{src-B8lf1kiR.mjs → src-DorsnS70.mjs} +8 -1
- package/dist/src-DorsnS70.mjs.map +1 -0
- package/dist/{steps-B2kBmFpb.d.mts → steps-DV34gm_Z.d.mts} +1 -1
- package/dist/{steps-B2kBmFpb.d.mts.map → steps-DV34gm_Z.d.mts.map} +1 -1
- package/dist/svg-NmV9dgB9.mjs.map +1 -1
- package/dist/{svg-VUr78l5d.d.mts → svg-wvIEu-RS.d.mts} +1 -1
- package/dist/{svg-VUr78l5d.d.mts.map → svg-wvIEu-RS.d.mts.map} +1 -1
- package/dist/term.d.mts +3 -3
- package/dist/term.mjs +4 -4
- package/dist/test.d.mts +3 -3
- package/dist/test.mjs +9 -9
- package/dist/test.mjs.map +1 -1
- package/dist/theme.d.mts +2 -2
- package/dist/theme.mjs +3 -3
- package/dist/{types-D_E0FbqA.d.mts → types-VyreAPAB.d.mts} +1 -1
- package/dist/{types-D_E0FbqA.d.mts.map → types-VyreAPAB.d.mts.map} +1 -1
- package/dist/ui/animation.d.mts +2 -2
- package/dist/ui/ansi.d.mts +1 -1
- package/dist/ui/cli.d.mts +3 -3
- package/dist/ui/cli.mjs +4 -4
- package/dist/ui/image.d.mts +1 -1
- package/dist/ui/image.mjs +1 -1
- package/dist/ui/progress.d.mts +4 -4
- package/dist/ui/progress.mjs +4 -4
- package/dist/ui/react.d.mts +1 -1
- package/dist/ui/react.mjs +2 -2
- package/dist/ui/react.mjs.map +1 -1
- package/dist/ui/recording-chrome-react.d.mts +1 -1
- package/dist/ui/recording-chrome-react.mjs +1 -1
- package/dist/ui/recording-chrome.d.mts +1 -1
- package/dist/ui/utils.mjs +1 -1
- package/dist/ui/wrappers.d.mts +2 -2
- package/dist/ui/wrappers.mjs +1 -1
- package/dist/ui.d.mts +6 -6
- package/dist/ui.mjs +6 -6
- package/dist/{unicode-CxyxVGmB.mjs → unicode-X43-fdGF.mjs} +3 -3
- package/dist/unicode-X43-fdGF.mjs.map +1 -0
- package/dist/{useLatest-UOvWy0ZW.d.mts → useLatest-D9p0ZDAC.d.mts} +2 -2
- package/dist/{useLatest-UOvWy0ZW.d.mts.map → useLatest-D9p0ZDAC.d.mts.map} +1 -1
- package/dist/{useLayout-D5cE8OCI.mjs → useLayout-Cx01rHVI.mjs} +3 -3
- package/dist/{useLayout-D5cE8OCI.mjs.map → useLayout-Cx01rHVI.mjs.map} +1 -1
- package/dist/{with-text-input-DLoSCBrm.d.mts → with-text-input-CW8MR9Th.d.mts} +3 -3
- package/dist/{with-text-input-DLoSCBrm.d.mts.map → with-text-input-CW8MR9Th.d.mts.map} +1 -1
- package/dist/{wrap-measurer-registration-IV2HtcCd.d.mts → wrap-measurer-registration-DNBmtFNM.d.mts} +3 -3
- package/dist/{wrap-measurer-registration-IV2HtcCd.d.mts.map → wrap-measurer-registration-DNBmtFNM.d.mts.map} +1 -1
- package/dist/{wrapper-CD29afOs.mjs → wrapper-DpMauwdI.mjs} +51 -33
- package/dist/wrapper-DpMauwdI.mjs.map +1 -0
- package/dist/{wrappers-CInBJm44.mjs → wrappers-DHMzvbRo.mjs} +5 -5
- package/dist/{wrappers-CInBJm44.mjs.map → wrappers-DHMzvbRo.mjs.map} +1 -1
- package/dist/yoga-adapter-B-DCP4Bx.mjs +2 -0
- package/dist/{yoga-adapter-9uab5Qn-.mjs → yoga-adapter-CB_7pLyl.mjs} +2 -2
- package/dist/{yoga-adapter-9uab5Qn-.mjs.map → yoga-adapter-CB_7pLyl.mjs.map} +1 -1
- package/package.json +2 -2
- package/dist/backend-DSiSIc-h.mjs +0 -13396
- package/dist/backend-DSiSIc-h.mjs.map +0 -1
- package/dist/cli-VNqUKlXw.mjs +0 -4
- package/dist/devtools-BF4IMumr.mjs +0 -2
- package/dist/image-CIF75xMr.mjs.map +0 -1
- package/dist/index-BcSr0RAQ.d.mts.map +0 -1
- package/dist/node-CJ3J_rW-.mjs.map +0 -1
- package/dist/src-B8lf1kiR.mjs.map +0 -1
- package/dist/src-BXeTHHlL.mjs.map +0 -1
- package/dist/src-BqeBFB3X.mjs.map +0 -1
- package/dist/src-DbqcSrhy.mjs.map +0 -1
- package/dist/unicode-CxyxVGmB.mjs.map +0 -1
- package/dist/wrapper-CD29afOs.mjs.map +0 -1
- package/dist/yoga-adapter-yqTl1aXK.mjs +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { f as createStyle, j as createTerminalProfile } from "./src-
|
|
1
|
+
import { f as createStyle, j as createTerminalProfile } from "./src-DorsnS70.mjs";
|
|
2
2
|
import { f as isTTY, i as CURSOR_HIDE, m as write, s as CURSOR_SHOW } from "./ansi-CLmIMnop.mjs";
|
|
3
3
|
//#region packages/ink/src/chalk.ts
|
|
4
4
|
/**
|
|
@@ -310,4 +310,4 @@ function createSpinner(options) {
|
|
|
310
310
|
//#endregion
|
|
311
311
|
export { chalk as a, createSpinner as i, SPINNER_INTERVALS as n, Spinner as r, SPINNER_FRAMES as t };
|
|
312
312
|
|
|
313
|
-
//# sourceMappingURL=spinner-
|
|
313
|
+
//# sourceMappingURL=spinner-Ck3SdCpW.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spinner-B50hILqx.mjs","names":[],"sources":["../packages/ink/src/chalk.ts","../packages/ag-react/src/ui/cli/spinner.ts"],"sourcesContent":["/**\n * silvery/chalk — Drop-in chalk replacement powered by @silvery/ansi.\n *\n * ```ts\n * // Before:\n * import chalk from 'chalk'\n *\n * // After:\n * import chalk from 'silvery/chalk'\n * ```\n *\n * The default export is a chainable styling function with chalk-compatible API.\n * Under the hood it uses @silvery/ansi — no chalk dependency.\n *\n * @packageDocumentation\n */\n\nimport { createStyle, createTerminalProfile, type Style, type ColorLevel } from \"@silvery/ansi\"\n\n// =============================================================================\n// Color tier conversion (chalk uses 0-3, silvery uses ColorLevel)\n// =============================================================================\n\ntype ChalkLevel = 0 | 1 | 2 | 3\n\nfunction toChalkLevel(cl: ColorLevel): ChalkLevel {\n if (cl === \"mono\") return 0\n if (cl === \"ansi16\") return 1\n if (cl === \"256\") return 2\n return 3 // truecolor\n}\n\nfunction fromChalkLevel(level: ChalkLevel): ColorLevel {\n if (level === 0) return \"mono\"\n if (level === 1) return \"ansi16\"\n if (level === 2) return \"256\"\n return \"truecolor\"\n}\n\n// =============================================================================\n// Default instance (auto-detected)\n// =============================================================================\n\n// Post km-silvery.plateau-delete-legacy-shims (H6): `createTerminalProfile`\n// is the canonical single-source-of-truth entry point, replacing the former\n// `detectColor()` shim. Its `colorLevel` is the resolved tier through the\n// full FORCE_COLOR > NO_COLOR > auto precedence chain.\nconst detectedColor: ColorLevel =\n typeof process !== \"undefined\" && process.stdout\n ? createTerminalProfile({ stdout: process.stdout }).colorLevel\n : \"mono\"\n\n/**\n * Default chalk instance — drop-in replacement for `import chalk from 'chalk'`.\n *\n * Supports the full chainable API: `chalk.bold.red('error')`, `chalk.hex('#ff0')('hi')`, etc.\n * Also supports mutable `chalk.level` for chalk compat (0=none, 1=basic, 2=256, 3=truecolor).\n */\nconst chalk: Style = createStyle({ level: detectedColor })\nexport default chalk\n\n// =============================================================================\n// Named exports (chalk 5.x compatibility)\n// =============================================================================\n\n/**\n * Chalk constructor — creates a new style instance with a specific level.\n * Returns a callable Style (the constructor return overrides `this`).\n *\n * ```ts\n * const instance = new Chalk({ level: 3 })\n * console.log(instance.red('error'))\n * instance.level = 0 // disable colors\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface Chalk extends Style {}\nexport class Chalk {\n constructor(options?: { level?: ChalkLevel }) {\n // chalk compat: validate level is 0-3\n if (options?.level !== undefined) {\n const lvl = options.level\n if (typeof lvl !== \"number\" || !Number.isInteger(lvl) || lvl < 0 || lvl > 3) {\n throw new Error(\"The `level` option should be an integer from 0 to 3\")\n }\n }\n // Returning an object from a constructor overrides `this` — chalk compat pattern\n return createStyle({\n level: fromChalkLevel(options?.level ?? toChalkLevel(detectedColor)),\n }) as any\n }\n}\n\nexport type ChalkInstance = Style\n\n/**\n * Color support detection for stdout.\n * Returns false if no color, or an object with the chalk level.\n */\nconst detectedLevel = toChalkLevel(detectedColor)\nexport const supportsColor: false | { level: ChalkLevel } =\n detectedLevel === 0 ? false : { level: detectedLevel }\n\n/**\n * Color support detection for stderr.\n */\nexport const supportsColorStderr: false | { level: ChalkLevel } = (() => {\n if (!process?.stderr) return false\n // stderr gets its own profile pass — a pipe may have different TTY state\n // than stdout (though in practice they track together). `createTerminalProfile`\n // accepts any `{ isTTY?: boolean }` structural shape.\n const level = toChalkLevel(createTerminalProfile({ stdout: process.stderr }).colorLevel)\n return level === 0 ? false : { level }\n})()\n\n// =============================================================================\n// Chalk name lists (for programmatic access)\n// =============================================================================\n\nexport const modifierNames = [\n \"reset\",\n \"bold\",\n \"dim\",\n \"italic\",\n \"underline\",\n \"overline\",\n \"inverse\",\n \"hidden\",\n \"strikethrough\",\n \"visible\",\n] as const\n\nexport const foregroundColorNames = [\n \"black\",\n \"red\",\n \"green\",\n \"yellow\",\n \"blue\",\n \"magenta\",\n \"cyan\",\n \"white\",\n \"gray\",\n \"grey\",\n \"blackBright\",\n \"redBright\",\n \"greenBright\",\n \"yellowBright\",\n \"blueBright\",\n \"magentaBright\",\n \"cyanBright\",\n \"whiteBright\",\n] as const\n\nexport const backgroundColorNames = [\n \"bgBlack\",\n \"bgRed\",\n \"bgGreen\",\n \"bgYellow\",\n \"bgBlue\",\n \"bgMagenta\",\n \"bgCyan\",\n \"bgWhite\",\n \"bgGray\",\n \"bgGrey\",\n \"bgBlackBright\",\n \"bgRedBright\",\n \"bgGreenBright\",\n \"bgYellowBright\",\n \"bgBlueBright\",\n \"bgMagentaBright\",\n \"bgCyanBright\",\n \"bgWhiteBright\",\n] as const\n\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames] as const\n\n// Re-export detection utilities that chalk users often need.\n// Post H6 (km-silvery.plateau-delete-legacy-shims): `detectColor` is gone —\n// chalk users reach for `createTerminalProfile` instead (it's a one-shot\n// call that returns a full TerminalProfile, of which `colorLevel` is one\n// field).\nexport { createTerminalProfile, toChalkLevel, fromChalkLevel }\nexport type { ColorLevel, ChalkLevel }\n","/**\n * CLI Spinner - Animated indeterminate progress indicator\n */\n\nimport chalk from \"@silvery/ink/chalk\"\nimport type { SpinnerOptions, SpinnerStyle } from \"../types.js\"\nimport { CURSOR_HIDE, CURSOR_SHOW, CURSOR_TO_START, CLEAR_LINE_END, write, isTTY } from \"./ansi\"\n\n/** Spinner animation frames by style */\nexport const SPINNER_FRAMES: Record<SpinnerStyle, string[]> = {\n dots: [\"⠋\", \"⠙\", \"⠹\", \"⠸\", \"⠼\", \"⠴\", \"⠦\", \"⠧\", \"⠇\", \"⠏\"],\n line: [\"-\", \"\\\\\", \"|\", \"/\"],\n arc: [\"◜\", \"◠\", \"◝\", \"◞\", \"◡\", \"◟\"],\n bounce: [\"⠁\", \"⠂\", \"⠄\", \"⠂\"],\n pulse: [\"█\", \"▓\", \"▒\", \"░\", \"▒\", \"▓\"],\n}\n\n/** Default intervals for each style (ms) */\nexport const SPINNER_INTERVALS: Record<SpinnerStyle, number> = {\n dots: 80,\n line: 120,\n arc: 100,\n bounce: 120,\n pulse: 100,\n}\n\n/**\n * Spinner class for CLI progress indication\n *\n * @example\n * ```ts\n * const spinner = new Spinner(\"Loading...\");\n * spinner.start();\n * await doWork();\n * spinner.succeed(\"Done!\");\n * ```\n */\nexport class Spinner {\n private text: string\n private style: SpinnerStyle\n private color: string\n private stream: NodeJS.WriteStream\n private hideCursor: boolean\n private interval: number\n\n private frameIndex = 0\n private timer: ReturnType<typeof setInterval> | null = null\n private isSpinning = false\n\n constructor(textOrOptions?: string | SpinnerOptions) {\n const options: SpinnerOptions =\n typeof textOrOptions === \"string\" ? { text: textOrOptions } : (textOrOptions ?? {})\n\n this.text = options.text ?? \"\"\n this.style = options.style ?? \"dots\"\n this.color = options.color ?? \"cyan\"\n this.stream = options.stream ?? process.stdout\n this.hideCursor = options.hideCursor ?? true\n this.interval = options.interval ?? SPINNER_INTERVALS[this.style]\n }\n\n /** Get current spinner text */\n get currentText(): string {\n return this.text\n }\n\n /** Set spinner text (updates immediately if spinning) */\n set currentText(value: string) {\n this.text = value\n if (this.isSpinning) {\n this.render()\n }\n }\n\n /** Check if spinner is currently active */\n get spinning(): boolean {\n return this.isSpinning\n }\n\n /**\n * Start the spinner animation\n */\n start(text?: string): this {\n if (text !== undefined) {\n this.text = text\n }\n\n if (this.isSpinning) {\n return this\n }\n\n this.isSpinning = true\n this.frameIndex = 0\n\n if (this.hideCursor && isTTY(this.stream)) {\n write(CURSOR_HIDE, this.stream)\n }\n\n this.render()\n this.timer = setInterval(() => {\n this.frameIndex = (this.frameIndex + 1) % SPINNER_FRAMES[this.style].length\n this.render()\n }, this.interval)\n\n return this\n }\n\n /**\n * Stop the spinner\n */\n stop(): this {\n if (!this.isSpinning) {\n return this\n }\n\n this.isSpinning = false\n\n if (this.timer) {\n clearInterval(this.timer)\n this.timer = null\n }\n\n this.clear()\n\n if (this.hideCursor && isTTY(this.stream)) {\n write(CURSOR_SHOW, this.stream)\n }\n\n return this\n }\n\n /**\n * Stop with success message (green checkmark)\n */\n succeed(text?: string): this {\n return this.stopWithSymbol(chalk.green(\"✔\"), text ?? this.text)\n }\n\n /**\n * Stop with failure message (red X)\n */\n fail(text?: string): this {\n return this.stopWithSymbol(chalk.red(\"✖\"), text ?? this.text)\n }\n\n /**\n * Stop with warning message (yellow warning)\n */\n warn(text?: string): this {\n return this.stopWithSymbol(chalk.yellow(\"⚠\"), text ?? this.text)\n }\n\n /**\n * Stop with info message (blue info)\n */\n info(text?: string): this {\n return this.stopWithSymbol(chalk.blue(\"ℹ\"), text ?? this.text)\n }\n\n /**\n * Clear the spinner line\n */\n clear(): this {\n if (isTTY(this.stream)) {\n write(`${CURSOR_TO_START}${CLEAR_LINE_END}`, this.stream)\n }\n return this\n }\n\n private render(): void {\n const frame = SPINNER_FRAMES[this.style][this.frameIndex]\n const colorFn = (chalk as unknown as Record<string, (s: string) => string>)[this.color]\n const coloredFrame = colorFn ? colorFn(frame!) : frame!\n const output = this.text ? `${coloredFrame} ${this.text}` : coloredFrame\n\n if (isTTY(this.stream)) {\n write(`${CURSOR_TO_START}${output}${CLEAR_LINE_END}`, this.stream)\n }\n }\n\n private stopWithSymbol(symbol: string, text: string): this {\n this.stop()\n write(`${symbol} ${text}\\n`, this.stream)\n return this\n }\n\n /**\n * Dispose the spinner (calls stop)\n */\n [Symbol.dispose](): void {\n this.stop()\n }\n\n /**\n * Static helper to quickly start a spinner\n * Returns a stop function\n *\n * @example\n * ```ts\n * const stop = Spinner.start(\"Loading...\");\n * await doWork();\n * stop();\n * ```\n */\n static start(textOrOptions?: string | SpinnerOptions): () => void {\n const spinner = new Spinner(textOrOptions)\n spinner.start()\n return () => spinner.stop()\n }\n}\n\n/**\n * Callable spinner interface - call with text to show/update\n *\n * @example\n * ```ts\n * {\n * using spinner = createSpinner({ style: \"dots\" });\n * spinner(\"Loading...\"); // Shows spinner with text\n * spinner(\"Still loading...\"); // Updates text\n * } // Auto-stops via Symbol.dispose\n * ```\n */\nexport interface CallableSpinner extends Disposable {\n /** Call with text to show/update the spinner */\n (text: string): void\n /** Stop the spinner */\n stop(): void\n /** Stop with success message (green checkmark) */\n succeed(text?: string): void\n /** Stop with failure message (red X) */\n fail(text?: string): void\n /** Stop with warning message (yellow warning) */\n warn(text?: string): void\n /** Stop with info message (blue info) */\n info(text?: string): void\n}\n\n/**\n * Create a callable, disposable spinner\n *\n * The spinner is lazy - it won't show anything until you call it with text.\n * Use with `using` for automatic cleanup:\n *\n * @example\n * ```ts\n * {\n * using spinner = createSpinner({ style: \"dots\" });\n * // Nothing visible yet\n *\n * spinner(\"Loading repo...\"); // Now shows spinner\n * spinner(\"Applying events...\"); // Updates text\n * } // Auto-stops via Symbol.dispose\n * ```\n */\nexport function createSpinner(options?: SpinnerOptions): CallableSpinner {\n const spinner = new Spinner({ ...options, text: \"\" })\n\n const callable = ((text: string) => {\n // Always restart if not spinning (handles initial call and after succeed/fail/etc)\n if (!spinner.spinning) {\n spinner.start(text)\n } else {\n spinner.currentText = text\n }\n }) as CallableSpinner\n\n callable.stop = () => spinner.stop()\n callable.succeed = (text) => spinner.succeed(text)\n callable.fail = (text) => spinner.fail(text)\n callable.warn = (text) => spinner.warn(text)\n callable.info = (text) => spinner.info(text)\n callable[Symbol.dispose] = () => spinner.stop()\n\n return callable\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAyBA,SAAS,aAAa,IAA4B;AAChD,KAAI,OAAO,OAAQ,QAAO;AAC1B,KAAI,OAAO,SAAU,QAAO;AAC5B,KAAI,OAAO,MAAO,QAAO;AACzB,QAAO;;AAkBT,MAAM,gBACJ,OAAO,YAAY,eAAe,QAAQ,SACtC,sBAAsB,EAAE,QAAQ,QAAQ,QAAQ,CAAC,CAAC,aAClD;;;;;;;AAQN,MAAM,QAAe,YAAY,EAAE,OAAO,eAAe,CAAC;AAyCpC,aAAa,cAAc;OAOwB;AACvE,KAAI,CAAC,SAAS,OAAQ,QAAO;CAI7B,MAAM,QAAQ,aAAa,sBAAsB,EAAE,QAAQ,QAAQ,QAAQ,CAAC,CAAC,WAAW;AACxF,QAAO,UAAU,IAAI,QAAQ,EAAE,OAAO;IACpC;AAmBJ,MAAa,uBAAuB;CAClC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,uBAAuB;CAClC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAEyB,CAAC,GAAG,sBAAsB,GAAG,qBAAqB;;;;;;;ACrK5E,MAAa,iBAAiD;CAC5D,MAAM;EAAC;EAAK;EAAK;EAAK;EAAK;EAAK;EAAK;EAAK;EAAK;EAAK;EAAI;CACxD,MAAM;EAAC;EAAK;EAAM;EAAK;EAAI;CAC3B,KAAK;EAAC;EAAK;EAAK;EAAK;EAAK;EAAK;EAAI;CACnC,QAAQ;EAAC;EAAK;EAAK;EAAK;EAAI;CAC5B,OAAO;EAAC;EAAK;EAAK;EAAK;EAAK;EAAK;EAAI;CACtC;;AAGD,MAAa,oBAAkD;CAC7D,MAAM;CACN,MAAM;CACN,KAAK;CACL,QAAQ;CACR,OAAO;CACR;;;;;;;;;;;;AAaD,IAAa,UAAb,MAAa,QAAQ;CACnB;CACA;CACA;CACA;CACA;CACA;CAEA,aAAqB;CACrB,QAAuD;CACvD,aAAqB;CAErB,YAAY,eAAyC;EACnD,MAAM,UACJ,OAAO,kBAAkB,WAAW,EAAE,MAAM,eAAe,GAAI,iBAAiB,EAAE;AAEpF,OAAK,OAAO,QAAQ,QAAQ;AAC5B,OAAK,QAAQ,QAAQ,SAAS;AAC9B,OAAK,QAAQ,QAAQ,SAAS;AAC9B,OAAK,SAAS,QAAQ,UAAU,QAAQ;AACxC,OAAK,aAAa,QAAQ,cAAc;AACxC,OAAK,WAAW,QAAQ,YAAY,kBAAkB,KAAK;;;CAI7D,IAAI,cAAsB;AACxB,SAAO,KAAK;;;CAId,IAAI,YAAY,OAAe;AAC7B,OAAK,OAAO;AACZ,MAAI,KAAK,WACP,MAAK,QAAQ;;;CAKjB,IAAI,WAAoB;AACtB,SAAO,KAAK;;;;;CAMd,MAAM,MAAqB;AACzB,MAAI,SAAS,KAAA,EACX,MAAK,OAAO;AAGd,MAAI,KAAK,WACP,QAAO;AAGT,OAAK,aAAa;AAClB,OAAK,aAAa;AAElB,MAAI,KAAK,cAAc,MAAM,KAAK,OAAO,CACvC,OAAM,aAAa,KAAK,OAAO;AAGjC,OAAK,QAAQ;AACb,OAAK,QAAQ,kBAAkB;AAC7B,QAAK,cAAc,KAAK,aAAa,KAAK,eAAe,KAAK,OAAO;AACrE,QAAK,QAAQ;KACZ,KAAK,SAAS;AAEjB,SAAO;;;;;CAMT,OAAa;AACX,MAAI,CAAC,KAAK,WACR,QAAO;AAGT,OAAK,aAAa;AAElB,MAAI,KAAK,OAAO;AACd,iBAAc,KAAK,MAAM;AACzB,QAAK,QAAQ;;AAGf,OAAK,OAAO;AAEZ,MAAI,KAAK,cAAc,MAAM,KAAK,OAAO,CACvC,OAAM,aAAa,KAAK,OAAO;AAGjC,SAAO;;;;;CAMT,QAAQ,MAAqB;AAC3B,SAAO,KAAK,eAAe,MAAM,MAAM,IAAI,EAAE,QAAQ,KAAK,KAAK;;;;;CAMjE,KAAK,MAAqB;AACxB,SAAO,KAAK,eAAe,MAAM,IAAI,IAAI,EAAE,QAAQ,KAAK,KAAK;;;;;CAM/D,KAAK,MAAqB;AACxB,SAAO,KAAK,eAAe,MAAM,OAAO,IAAI,EAAE,QAAQ,KAAK,KAAK;;;;;CAMlE,KAAK,MAAqB;AACxB,SAAO,KAAK,eAAe,MAAM,KAAK,IAAI,EAAE,QAAQ,KAAK,KAAK;;;;;CAMhE,QAAc;AACZ,MAAI,MAAM,KAAK,OAAO,CACpB,OAAM;MAAuC,KAAK,OAAO;AAE3D,SAAO;;CAGT,SAAuB;EACrB,MAAM,QAAQ,eAAe,KAAK,OAAO,KAAK;EAC9C,MAAM,UAAW,MAA2D,KAAK;EACjF,MAAM,eAAe,UAAU,QAAQ,MAAO,GAAG;EACjD,MAAM,SAAS,KAAK,OAAO,GAAG,aAAa,GAAG,KAAK,SAAS;AAE5D,MAAI,MAAM,KAAK,OAAO,CACpB,OAAM;EAAqB,aAA2B,KAAK,OAAO;;CAItE,eAAuB,QAAgB,MAAoB;AACzD,OAAK,MAAM;AACX,QAAM,GAAG,OAAO,GAAG,KAAK,KAAK,KAAK,OAAO;AACzC,SAAO;;;;;CAMT,CAAC,OAAO,WAAiB;AACvB,OAAK,MAAM;;;;;;;;;;;;;CAcb,OAAO,MAAM,eAAqD;EAChE,MAAM,UAAU,IAAI,QAAQ,cAAc;AAC1C,UAAQ,OAAO;AACf,eAAa,QAAQ,MAAM;;;;;;;;;;;;;;;;;;;;AAgD/B,SAAgB,cAAc,SAA2C;CACvE,MAAM,UAAU,IAAI,QAAQ;EAAE,GAAG;EAAS,MAAM;EAAI,CAAC;CAErD,MAAM,aAAa,SAAiB;AAElC,MAAI,CAAC,QAAQ,SACX,SAAQ,MAAM,KAAK;MAEnB,SAAQ,cAAc;;AAI1B,UAAS,aAAa,QAAQ,MAAM;AACpC,UAAS,WAAW,SAAS,QAAQ,QAAQ,KAAK;AAClD,UAAS,QAAQ,SAAS,QAAQ,KAAK,KAAK;AAC5C,UAAS,QAAQ,SAAS,QAAQ,KAAK,KAAK;AAC5C,UAAS,QAAQ,SAAS,QAAQ,KAAK,KAAK;AAC5C,UAAS,OAAO,iBAAiB,QAAQ,MAAM;AAE/C,QAAO"}
|
|
1
|
+
{"version":3,"file":"spinner-Ck3SdCpW.mjs","names":[],"sources":["../packages/ink/src/chalk.ts","../packages/ag-react/src/ui/cli/spinner.ts"],"sourcesContent":["/**\n * silvery/chalk — Drop-in chalk replacement powered by @silvery/ansi.\n *\n * ```ts\n * // Before:\n * import chalk from 'chalk'\n *\n * // After:\n * import chalk from 'silvery/chalk'\n * ```\n *\n * The default export is a chainable styling function with chalk-compatible API.\n * Under the hood it uses @silvery/ansi — no chalk dependency.\n *\n * @packageDocumentation\n */\n\nimport { createStyle, createTerminalProfile, type Style, type ColorLevel } from \"@silvery/ansi\"\n\n// =============================================================================\n// Color tier conversion (chalk uses 0-3, silvery uses ColorLevel)\n// =============================================================================\n\ntype ChalkLevel = 0 | 1 | 2 | 3\n\nfunction toChalkLevel(cl: ColorLevel): ChalkLevel {\n if (cl === \"mono\") return 0\n if (cl === \"ansi16\") return 1\n if (cl === \"256\") return 2\n return 3 // truecolor\n}\n\nfunction fromChalkLevel(level: ChalkLevel): ColorLevel {\n if (level === 0) return \"mono\"\n if (level === 1) return \"ansi16\"\n if (level === 2) return \"256\"\n return \"truecolor\"\n}\n\n// =============================================================================\n// Default instance (auto-detected)\n// =============================================================================\n\n// Post km-silvery.plateau-delete-legacy-shims (H6): `createTerminalProfile`\n// is the canonical single-source-of-truth entry point, replacing the former\n// `detectColor()` shim. Its `colorLevel` is the resolved tier through the\n// full FORCE_COLOR > NO_COLOR > auto precedence chain.\nconst detectedColor: ColorLevel =\n typeof process !== \"undefined\" && process.stdout\n ? createTerminalProfile({ stdout: process.stdout }).colorLevel\n : \"mono\"\n\n/**\n * Default chalk instance — drop-in replacement for `import chalk from 'chalk'`.\n *\n * Supports the full chainable API: `chalk.bold.red('error')`, `chalk.hex('#ff0')('hi')`, etc.\n * Also supports mutable `chalk.level` for chalk compat (0=none, 1=basic, 2=256, 3=truecolor).\n */\nconst chalk: Style = createStyle({ level: detectedColor })\nexport default chalk\n\n// =============================================================================\n// Named exports (chalk 5.x compatibility)\n// =============================================================================\n\n/**\n * Chalk constructor — creates a new style instance with a specific level.\n * Returns a callable Style (the constructor return overrides `this`).\n *\n * ```ts\n * const instance = new Chalk({ level: 3 })\n * console.log(instance.red('error'))\n * instance.level = 0 // disable colors\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface Chalk extends Style {}\nexport class Chalk {\n constructor(options?: { level?: ChalkLevel }) {\n // chalk compat: validate level is 0-3\n if (options?.level !== undefined) {\n const lvl = options.level\n if (typeof lvl !== \"number\" || !Number.isInteger(lvl) || lvl < 0 || lvl > 3) {\n throw new Error(\"The `level` option should be an integer from 0 to 3\")\n }\n }\n // Returning an object from a constructor overrides `this` — chalk compat pattern\n return createStyle({\n level: fromChalkLevel(options?.level ?? toChalkLevel(detectedColor)),\n }) as any\n }\n}\n\nexport type ChalkInstance = Style\n\n/**\n * Color support detection for stdout.\n * Returns false if no color, or an object with the chalk level.\n */\nconst detectedLevel = toChalkLevel(detectedColor)\nexport const supportsColor: false | { level: ChalkLevel } =\n detectedLevel === 0 ? false : { level: detectedLevel }\n\n/**\n * Color support detection for stderr.\n */\nexport const supportsColorStderr: false | { level: ChalkLevel } = (() => {\n if (!process?.stderr) return false\n // stderr gets its own profile pass — a pipe may have different TTY state\n // than stdout (though in practice they track together). `createTerminalProfile`\n // accepts any `{ isTTY?: boolean }` structural shape.\n const level = toChalkLevel(createTerminalProfile({ stdout: process.stderr }).colorLevel)\n return level === 0 ? false : { level }\n})()\n\n// =============================================================================\n// Chalk name lists (for programmatic access)\n// =============================================================================\n\nexport const modifierNames = [\n \"reset\",\n \"bold\",\n \"dim\",\n \"italic\",\n \"underline\",\n \"overline\",\n \"inverse\",\n \"hidden\",\n \"strikethrough\",\n \"visible\",\n] as const\n\nexport const foregroundColorNames = [\n \"black\",\n \"red\",\n \"green\",\n \"yellow\",\n \"blue\",\n \"magenta\",\n \"cyan\",\n \"white\",\n \"gray\",\n \"grey\",\n \"blackBright\",\n \"redBright\",\n \"greenBright\",\n \"yellowBright\",\n \"blueBright\",\n \"magentaBright\",\n \"cyanBright\",\n \"whiteBright\",\n] as const\n\nexport const backgroundColorNames = [\n \"bgBlack\",\n \"bgRed\",\n \"bgGreen\",\n \"bgYellow\",\n \"bgBlue\",\n \"bgMagenta\",\n \"bgCyan\",\n \"bgWhite\",\n \"bgGray\",\n \"bgGrey\",\n \"bgBlackBright\",\n \"bgRedBright\",\n \"bgGreenBright\",\n \"bgYellowBright\",\n \"bgBlueBright\",\n \"bgMagentaBright\",\n \"bgCyanBright\",\n \"bgWhiteBright\",\n] as const\n\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames] as const\n\n// Re-export detection utilities that chalk users often need.\n// Post H6 (km-silvery.plateau-delete-legacy-shims): `detectColor` is gone —\n// chalk users reach for `createTerminalProfile` instead (it's a one-shot\n// call that returns a full TerminalProfile, of which `colorLevel` is one\n// field).\nexport { createTerminalProfile, toChalkLevel, fromChalkLevel }\nexport type { ColorLevel, ChalkLevel }\n","/**\n * CLI Spinner - Animated indeterminate progress indicator\n */\n\nimport chalk from \"@silvery/ink/chalk\"\nimport type { SpinnerOptions, SpinnerStyle } from \"../types.js\"\nimport { CURSOR_HIDE, CURSOR_SHOW, CURSOR_TO_START, CLEAR_LINE_END, write, isTTY } from \"./ansi\"\n\n/** Spinner animation frames by style */\nexport const SPINNER_FRAMES: Record<SpinnerStyle, string[]> = {\n dots: [\"⠋\", \"⠙\", \"⠹\", \"⠸\", \"⠼\", \"⠴\", \"⠦\", \"⠧\", \"⠇\", \"⠏\"],\n line: [\"-\", \"\\\\\", \"|\", \"/\"],\n arc: [\"◜\", \"◠\", \"◝\", \"◞\", \"◡\", \"◟\"],\n bounce: [\"⠁\", \"⠂\", \"⠄\", \"⠂\"],\n pulse: [\"█\", \"▓\", \"▒\", \"░\", \"▒\", \"▓\"],\n}\n\n/** Default intervals for each style (ms) */\nexport const SPINNER_INTERVALS: Record<SpinnerStyle, number> = {\n dots: 80,\n line: 120,\n arc: 100,\n bounce: 120,\n pulse: 100,\n}\n\n/**\n * Spinner class for CLI progress indication\n *\n * @example\n * ```ts\n * const spinner = new Spinner(\"Loading...\");\n * spinner.start();\n * await doWork();\n * spinner.succeed(\"Done!\");\n * ```\n */\nexport class Spinner {\n private text: string\n private style: SpinnerStyle\n private color: string\n private stream: NodeJS.WriteStream\n private hideCursor: boolean\n private interval: number\n\n private frameIndex = 0\n private timer: ReturnType<typeof setInterval> | null = null\n private isSpinning = false\n\n constructor(textOrOptions?: string | SpinnerOptions) {\n const options: SpinnerOptions =\n typeof textOrOptions === \"string\" ? { text: textOrOptions } : (textOrOptions ?? {})\n\n this.text = options.text ?? \"\"\n this.style = options.style ?? \"dots\"\n this.color = options.color ?? \"cyan\"\n this.stream = options.stream ?? process.stdout\n this.hideCursor = options.hideCursor ?? true\n this.interval = options.interval ?? SPINNER_INTERVALS[this.style]\n }\n\n /** Get current spinner text */\n get currentText(): string {\n return this.text\n }\n\n /** Set spinner text (updates immediately if spinning) */\n set currentText(value: string) {\n this.text = value\n if (this.isSpinning) {\n this.render()\n }\n }\n\n /** Check if spinner is currently active */\n get spinning(): boolean {\n return this.isSpinning\n }\n\n /**\n * Start the spinner animation\n */\n start(text?: string): this {\n if (text !== undefined) {\n this.text = text\n }\n\n if (this.isSpinning) {\n return this\n }\n\n this.isSpinning = true\n this.frameIndex = 0\n\n if (this.hideCursor && isTTY(this.stream)) {\n write(CURSOR_HIDE, this.stream)\n }\n\n this.render()\n this.timer = setInterval(() => {\n this.frameIndex = (this.frameIndex + 1) % SPINNER_FRAMES[this.style].length\n this.render()\n }, this.interval)\n\n return this\n }\n\n /**\n * Stop the spinner\n */\n stop(): this {\n if (!this.isSpinning) {\n return this\n }\n\n this.isSpinning = false\n\n if (this.timer) {\n clearInterval(this.timer)\n this.timer = null\n }\n\n this.clear()\n\n if (this.hideCursor && isTTY(this.stream)) {\n write(CURSOR_SHOW, this.stream)\n }\n\n return this\n }\n\n /**\n * Stop with success message (green checkmark)\n */\n succeed(text?: string): this {\n return this.stopWithSymbol(chalk.green(\"✔\"), text ?? this.text)\n }\n\n /**\n * Stop with failure message (red X)\n */\n fail(text?: string): this {\n return this.stopWithSymbol(chalk.red(\"✖\"), text ?? this.text)\n }\n\n /**\n * Stop with warning message (yellow warning)\n */\n warn(text?: string): this {\n return this.stopWithSymbol(chalk.yellow(\"⚠\"), text ?? this.text)\n }\n\n /**\n * Stop with info message (blue info)\n */\n info(text?: string): this {\n return this.stopWithSymbol(chalk.blue(\"ℹ\"), text ?? this.text)\n }\n\n /**\n * Clear the spinner line\n */\n clear(): this {\n if (isTTY(this.stream)) {\n write(`${CURSOR_TO_START}${CLEAR_LINE_END}`, this.stream)\n }\n return this\n }\n\n private render(): void {\n const frame = SPINNER_FRAMES[this.style][this.frameIndex]\n const colorFn = (chalk as unknown as Record<string, (s: string) => string>)[this.color]\n const coloredFrame = colorFn ? colorFn(frame!) : frame!\n const output = this.text ? `${coloredFrame} ${this.text}` : coloredFrame\n\n if (isTTY(this.stream)) {\n write(`${CURSOR_TO_START}${output}${CLEAR_LINE_END}`, this.stream)\n }\n }\n\n private stopWithSymbol(symbol: string, text: string): this {\n this.stop()\n write(`${symbol} ${text}\\n`, this.stream)\n return this\n }\n\n /**\n * Dispose the spinner (calls stop)\n */\n [Symbol.dispose](): void {\n this.stop()\n }\n\n /**\n * Static helper to quickly start a spinner\n * Returns a stop function\n *\n * @example\n * ```ts\n * const stop = Spinner.start(\"Loading...\");\n * await doWork();\n * stop();\n * ```\n */\n static start(textOrOptions?: string | SpinnerOptions): () => void {\n const spinner = new Spinner(textOrOptions)\n spinner.start()\n return () => spinner.stop()\n }\n}\n\n/**\n * Callable spinner interface - call with text to show/update\n *\n * @example\n * ```ts\n * {\n * using spinner = createSpinner({ style: \"dots\" });\n * spinner(\"Loading...\"); // Shows spinner with text\n * spinner(\"Still loading...\"); // Updates text\n * } // Auto-stops via Symbol.dispose\n * ```\n */\nexport interface CallableSpinner extends Disposable {\n /** Call with text to show/update the spinner */\n (text: string): void\n /** Stop the spinner */\n stop(): void\n /** Stop with success message (green checkmark) */\n succeed(text?: string): void\n /** Stop with failure message (red X) */\n fail(text?: string): void\n /** Stop with warning message (yellow warning) */\n warn(text?: string): void\n /** Stop with info message (blue info) */\n info(text?: string): void\n}\n\n/**\n * Create a callable, disposable spinner\n *\n * The spinner is lazy - it won't show anything until you call it with text.\n * Use with `using` for automatic cleanup:\n *\n * @example\n * ```ts\n * {\n * using spinner = createSpinner({ style: \"dots\" });\n * // Nothing visible yet\n *\n * spinner(\"Loading repo...\"); // Now shows spinner\n * spinner(\"Applying events...\"); // Updates text\n * } // Auto-stops via Symbol.dispose\n * ```\n */\nexport function createSpinner(options?: SpinnerOptions): CallableSpinner {\n const spinner = new Spinner({ ...options, text: \"\" })\n\n const callable = ((text: string) => {\n // Always restart if not spinning (handles initial call and after succeed/fail/etc)\n if (!spinner.spinning) {\n spinner.start(text)\n } else {\n spinner.currentText = text\n }\n }) as CallableSpinner\n\n callable.stop = () => spinner.stop()\n callable.succeed = (text) => spinner.succeed(text)\n callable.fail = (text) => spinner.fail(text)\n callable.warn = (text) => spinner.warn(text)\n callable.info = (text) => spinner.info(text)\n callable[Symbol.dispose] = () => spinner.stop()\n\n return callable\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as SpinnerOptions, u as SpinnerStyle } from "./types-
|
|
1
|
+
import { c as SpinnerOptions, u as SpinnerStyle } from "./types-VyreAPAB.mjs";
|
|
2
2
|
|
|
3
3
|
//#region packages/ag-react/src/ui/cli/spinner.d.ts
|
|
4
4
|
/** Spinner animation frames by style */
|
|
@@ -124,4 +124,4 @@ interface CallableSpinner extends Disposable {
|
|
|
124
124
|
declare function createSpinner(options?: SpinnerOptions): CallableSpinner;
|
|
125
125
|
//#endregion
|
|
126
126
|
export { createSpinner as i, SPINNER_FRAMES as n, Spinner as r, CallableSpinner as t };
|
|
127
|
-
//# sourceMappingURL=spinner-
|
|
127
|
+
//# sourceMappingURL=spinner-CpcGtQ9L.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spinner-
|
|
1
|
+
{"version":3,"file":"spinner-CpcGtQ9L.d.mts","names":[],"sources":["../packages/ag-react/src/ui/cli/spinner.ts"],"mappings":";;;;cASa,cAAA,EAAgB,MAAA,CAAO,YAAA;AA4BpC;;;;;;;;;;;AAAA,cAAa,OAAA;EAAA,QACH,IAAA;EAAA,QACA,KAAA;EAAA,QACA,KAAA;EAAA,QACA,MAAA;EAAA,QACA,UAAA;EAAA,QACA,QAAA;EAAA,QAEA,UAAA;EAAA,QACA,KAAA;EAAA,QACA,UAAA;cAEI,aAAA,YAAyB,cAAA;EAkBrB;EAAA,IALZ,WAAA,CAAA;EAoBJ;EAAA,IAfI,WAAA,CAAY,KAAA;EA2ChB;EAAA,IAnCI,QAAA,CAAA;EA2DI;;;EApDR,KAAA,CAAM,IAAA;EAkED;;;EAtCL,IAAA,CAAA;EA2DQ;;;EAnCR,OAAA,CAAQ,IAAA;EAsED;;;EA/DP,IAAA,CAAK,IAAA;EA+D+C;AAmBtD;;EA3EE,IAAA,CAAK,IAAA;EA2E4C;;;EApEjD,IAAA,CAAK,IAAA;EA0EL;;;EAnEA,KAAA,CAAA;EAAA,QAOQ,MAAA;EAAA,QAWA,cAAA;EAuDR;;;EAAA,CA9CC,MAAA,CAAO,OAAA;EAkEM;;;;;;;;;;;EAAA,OAnDP,KAAA,CAAM,aAAA,YAAyB,cAAA;AAAA;;;;;;;;;;;;;UAmBvB,eAAA,SAAwB,UAAA;;GAEtC,IAAA;;EAED,IAAA;;EAEA,OAAA,CAAQ,IAAA;;EAER,IAAA,CAAK,IAAA;;EAEL,IAAA,CAAK,IAAA;;EAEL,IAAA,CAAK,IAAA;AAAA;;;;;;;;;;;;;;;;;;iBAoBS,aAAA,CAAc,OAAA,GAAU,cAAA,GAAiB,eAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region
|
|
1
|
+
//#region node_modules/alien-signals/esm/system.mjs
|
|
2
2
|
function createReactiveSystem({ update, notify, unwatched }) {
|
|
3
3
|
return {
|
|
4
4
|
link,
|
|
@@ -163,7 +163,7 @@ function createReactiveSystem({ update, notify, unwatched }) {
|
|
|
163
163
|
}
|
|
164
164
|
}
|
|
165
165
|
//#endregion
|
|
166
|
-
//#region
|
|
166
|
+
//#region node_modules/alien-signals/esm/index.mjs
|
|
167
167
|
const HasChildEffect = 64;
|
|
168
168
|
let cycle = 0;
|
|
169
169
|
let runDepth = 0;
|
|
@@ -448,4 +448,4 @@ function watch(read, onChange, opts = {}) {
|
|
|
448
448
|
//#endregion
|
|
449
449
|
export { signal as i, computed as n, effect as r, watch as t };
|
|
450
450
|
|
|
451
|
-
//# sourceMappingURL=src-
|
|
451
|
+
//# sourceMappingURL=src-B6MuVlOK.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src-B6MuVlOK.mjs","names":[],"sources":["../node_modules/alien-signals/esm/system.mjs","../node_modules/alien-signals/esm/index.mjs","../packages/signals/src/index.ts"],"sourcesContent":["export const ReactiveFlags = {\n None: 0,\n Mutable: 1,\n Watching: 2,\n RecursedCheck: 4,\n Recursed: 8,\n Dirty: 16,\n Pending: 32,\n};\nexport function createReactiveSystem({ update, notify, unwatched, }) {\n return {\n link,\n unlink,\n propagate,\n checkDirty,\n shallowPropagate,\n };\n function link(dep, sub, version) {\n const prevDep = sub.depsTail;\n if (prevDep !== undefined && prevDep.dep === dep) {\n return;\n }\n const nextDep = prevDep !== undefined ? prevDep.nextDep : sub.deps;\n if (nextDep !== undefined && nextDep.dep === dep) {\n nextDep.version = version;\n sub.depsTail = nextDep;\n return;\n }\n const prevSub = dep.subsTail;\n if (prevSub !== undefined && prevSub.version === version && prevSub.sub === sub) {\n return;\n }\n const newLink = sub.depsTail\n = dep.subsTail\n = {\n version,\n dep,\n sub,\n prevDep,\n nextDep,\n prevSub,\n nextSub: undefined,\n };\n if (nextDep !== undefined) {\n nextDep.prevDep = newLink;\n }\n if (prevDep !== undefined) {\n prevDep.nextDep = newLink;\n }\n else {\n sub.deps = newLink;\n }\n if (prevSub !== undefined) {\n prevSub.nextSub = newLink;\n }\n else {\n dep.subs = newLink;\n }\n }\n function unlink(link, sub = link.sub) {\n const { dep, prevDep, nextDep, nextSub, prevSub } = link;\n if (nextDep !== undefined) {\n nextDep.prevDep = prevDep;\n }\n else {\n sub.depsTail = prevDep;\n }\n if (prevDep !== undefined) {\n prevDep.nextDep = nextDep;\n }\n else {\n sub.deps = nextDep;\n }\n if (nextSub !== undefined) {\n nextSub.prevSub = prevSub;\n }\n else {\n dep.subsTail = prevSub;\n }\n if (prevSub !== undefined) {\n prevSub.nextSub = nextSub;\n }\n else if ((dep.subs = nextSub) === undefined) {\n unwatched(dep);\n }\n return nextDep;\n }\n function propagate(link, innerWrite) {\n let next = link.nextSub;\n let stack;\n top: do {\n const sub = link.sub;\n let flags = sub.flags;\n if (!(flags & (4 | 8 | 16 | 32))) {\n sub.flags = flags | 32;\n if (innerWrite) {\n sub.flags |= 8;\n }\n }\n else if (!(flags & (4 | 8))) {\n flags = 0;\n }\n else if (!(flags & 4)) {\n sub.flags = (flags & ~8) | 32;\n }\n else if (!(flags & (16 | 32)) && isValidLink(link, sub)) {\n sub.flags = flags | (8 | 32);\n flags &= 1;\n }\n else {\n flags = 0;\n }\n if (flags & 2) {\n notify(sub);\n }\n if (flags & 1) {\n const subSubs = sub.subs;\n if (subSubs !== undefined) {\n const nextSub = (link = subSubs).nextSub;\n if (nextSub !== undefined) {\n stack = { value: next, prev: stack };\n next = nextSub;\n }\n continue;\n }\n }\n if ((link = next) !== undefined) {\n next = link.nextSub;\n continue;\n }\n while (stack !== undefined) {\n link = stack.value;\n stack = stack.prev;\n if (link !== undefined) {\n next = link.nextSub;\n continue top;\n }\n }\n break;\n } while (true);\n }\n function checkDirty(link, sub) {\n let stack;\n let checkDepth = 0;\n let dirty = false;\n top: do {\n const dep = link.dep;\n const flags = dep.flags;\n if (sub.flags & 16) {\n dirty = true;\n }\n else if ((flags & (1 | 16)) === (1 | 16)) {\n const subs = dep.subs;\n if (update(dep)) {\n if (subs.nextSub !== undefined) {\n shallowPropagate(subs);\n }\n dirty = true;\n }\n }\n else if ((flags & (1 | 32)) === (1 | 32)) {\n stack = { value: link, prev: stack };\n link = dep.deps;\n sub = dep;\n ++checkDepth;\n continue;\n }\n if (!dirty) {\n const nextDep = link.nextDep;\n if (nextDep !== undefined) {\n link = nextDep;\n continue;\n }\n }\n while (checkDepth--) {\n link = stack.value;\n stack = stack.prev;\n if (dirty) {\n const subs = sub.subs;\n if (update(sub)) {\n if (subs.nextSub !== undefined) {\n shallowPropagate(subs);\n }\n sub = link.sub;\n continue;\n }\n dirty = false;\n }\n else {\n sub.flags &= ~32;\n }\n sub = link.sub;\n const nextDep = link.nextDep;\n if (nextDep !== undefined) {\n link = nextDep;\n continue top;\n }\n }\n return dirty && !!sub.flags;\n } while (true);\n }\n function shallowPropagate(link) {\n do {\n const sub = link.sub;\n const flags = sub.flags;\n if ((flags & (32 | 16)) === 32) {\n sub.flags = flags | 16;\n if ((flags & (2 | 4)) === 2) {\n notify(sub);\n }\n }\n } while ((link = link.nextSub) !== undefined);\n }\n function isValidLink(checkLink, sub) {\n let link = sub.depsTail;\n while (link !== undefined) {\n if (link === checkLink) {\n return true;\n }\n link = link.prevDep;\n }\n return false;\n }\n}\n","import { createReactiveSystem } from './system.mjs';\nconst HasChildEffect = 64;\nlet cycle = 0;\nlet runDepth = 0;\nlet batchDepth = 0;\nlet notifyIndex = 0;\nlet queuedLength = 0;\nlet activeSub;\nconst queued = [];\nconst { link, unlink, propagate, checkDirty, shallowPropagate, } = createReactiveSystem({\n update(node) {\n if ('getter' in node) {\n return updateComputed(node);\n }\n if ('currentValue' in node) {\n return updateSignal(node);\n }\n node.flags = 1;\n return true;\n },\n notify(effect) {\n let insertIndex = queuedLength;\n let firstInsertedIndex = insertIndex;\n do {\n queued[insertIndex++] = effect;\n effect.flags &= ~2;\n effect = effect.subs?.sub;\n if (effect === undefined || !(effect.flags & 2)) {\n break;\n }\n } while (true);\n queuedLength = insertIndex;\n while (firstInsertedIndex < --insertIndex) {\n const left = queued[firstInsertedIndex];\n queued[firstInsertedIndex++] = queued[insertIndex];\n queued[insertIndex] = left;\n }\n },\n unwatched(node) {\n if ('getter' in node) {\n if (node.depsTail !== undefined) {\n node.flags = 1 | 16;\n disposeAllDepsInReverse(node);\n }\n }\n else if ('currentValue' in node) {\n }\n else if ('fn' in node) {\n effectOper.call(node);\n }\n else {\n effectScopeOper.call(node);\n }\n },\n});\nexport function getActiveSub() {\n return activeSub;\n}\nexport function setActiveSub(sub) {\n const prevSub = activeSub;\n activeSub = sub;\n return prevSub;\n}\nexport function getBatchDepth() {\n return batchDepth;\n}\nexport function startBatch() {\n ++batchDepth;\n}\nexport function endBatch() {\n if (!--batchDepth) {\n flush();\n }\n}\nexport function isSignal(fn) {\n return fn.name === 'bound ' + signalOper.name;\n}\nexport function isComputed(fn) {\n return fn.name === 'bound ' + computedOper.name;\n}\nexport function isEffect(fn) {\n return fn.name === 'bound ' + effectOper.name;\n}\nexport function isEffectScope(fn) {\n return fn.name === 'bound ' + effectScopeOper.name;\n}\nexport function signal(initialValue) {\n return signalOper.bind({\n currentValue: initialValue,\n pendingValue: initialValue,\n subs: undefined,\n subsTail: undefined,\n flags: 1,\n });\n}\nexport function computed(getter) {\n return computedOper.bind({\n value: undefined,\n subs: undefined,\n subsTail: undefined,\n deps: undefined,\n depsTail: undefined,\n flags: 0,\n getter: getter,\n });\n}\nexport function effect(fn) {\n const e = {\n fn,\n cleanup: undefined,\n subs: undefined,\n subsTail: undefined,\n deps: undefined,\n depsTail: undefined,\n flags: 2 | 4,\n };\n const prevSub = setActiveSub(e);\n if (prevSub !== undefined) {\n link(e, prevSub, 0);\n prevSub.flags |= HasChildEffect;\n }\n try {\n ++runDepth;\n e.cleanup = e.fn();\n }\n finally {\n --runDepth;\n activeSub = prevSub;\n e.flags &= ~4;\n }\n return effectOper.bind(e);\n}\nexport function effectScope(fn) {\n const e = {\n deps: undefined,\n depsTail: undefined,\n subs: undefined,\n subsTail: undefined,\n flags: 1,\n };\n const prevSub = setActiveSub(e);\n if (prevSub !== undefined) {\n link(e, prevSub, 0);\n prevSub.flags |= HasChildEffect;\n }\n try {\n fn();\n }\n finally {\n activeSub = prevSub;\n }\n return effectScopeOper.bind(e);\n}\nexport function trigger(fn) {\n const sub = {\n deps: undefined,\n depsTail: undefined,\n flags: 2,\n };\n const prevSub = setActiveSub(sub);\n try {\n fn();\n }\n finally {\n activeSub = prevSub;\n sub.flags = 0;\n let link = sub.deps;\n while (link !== undefined) {\n const dep = link.dep;\n link = unlink(link, sub);\n const subs = dep.subs;\n if (subs !== undefined) {\n propagate(subs, !!runDepth);\n shallowPropagate(subs);\n }\n }\n if (!batchDepth) {\n flush();\n }\n }\n}\nfunction updateComputed(c) {\n if (c.flags & HasChildEffect) {\n let link = c.depsTail;\n while (link !== undefined) {\n const prev = link.prevDep;\n const dep = link.dep;\n if (!('getter' in dep) && !('currentValue' in dep)) {\n unlink(link, c);\n }\n link = prev;\n }\n }\n c.depsTail = undefined;\n c.flags = 1 | 4;\n const prevSub = setActiveSub(c);\n try {\n ++cycle;\n const oldValue = c.value;\n return oldValue !== (c.value = c.getter(oldValue));\n }\n finally {\n activeSub = prevSub;\n c.flags &= ~4;\n purgeDeps(c);\n }\n}\nfunction updateSignal(s) {\n s.flags = 1;\n return s.currentValue !== (s.currentValue = s.pendingValue);\n}\nfunction run(e) {\n const flags = e.flags;\n if (flags & 16\n || (flags & 32\n && checkDirty(e.deps, e))) {\n if (flags & HasChildEffect) {\n let link = e.depsTail;\n while (link !== undefined) {\n const prev = link.prevDep;\n const dep = link.dep;\n if (!('getter' in dep) && !('currentValue' in dep)) {\n unlink(link, e);\n }\n link = prev;\n }\n }\n if (e.cleanup) {\n runCleanup(e);\n if (!e.flags) {\n return;\n }\n }\n e.depsTail = undefined;\n e.flags = 2 | 4;\n const prevSub = setActiveSub(e);\n try {\n ++cycle;\n ++runDepth;\n e.cleanup = e.fn();\n }\n finally {\n --runDepth;\n activeSub = prevSub;\n e.flags &= ~4;\n purgeDeps(e);\n }\n }\n else if (e.deps !== undefined) {\n e.flags = 2 | (flags & HasChildEffect);\n }\n}\nfunction flush() {\n try {\n while (notifyIndex < queuedLength) {\n const effect = queued[notifyIndex];\n queued[notifyIndex++] = undefined;\n run(effect);\n }\n }\n finally {\n while (notifyIndex < queuedLength) {\n const effect = queued[notifyIndex];\n queued[notifyIndex++] = undefined;\n effect.flags |= 2 | 8;\n }\n notifyIndex = 0;\n queuedLength = 0;\n }\n}\nfunction computedOper() {\n const flags = this.flags;\n if (flags & 16\n || (flags & 32\n && (checkDirty(this.deps, this)\n || (this.flags = flags & ~32, false)))) {\n if (updateComputed(this)) {\n const subs = this.subs;\n if (subs !== undefined) {\n shallowPropagate(subs);\n }\n }\n }\n else if (!flags) {\n this.flags = 1 | 4;\n const prevSub = setActiveSub(this);\n try {\n this.value = this.getter();\n }\n finally {\n activeSub = prevSub;\n this.flags &= ~4;\n }\n }\n const sub = activeSub;\n if (sub !== undefined) {\n link(this, sub, cycle);\n }\n return this.value;\n}\nfunction signalOper(...value) {\n if (value.length) {\n if (this.pendingValue !== (this.pendingValue = value[0])) {\n this.flags = 1 | 16;\n const subs = this.subs;\n if (subs !== undefined) {\n propagate(subs, !!runDepth);\n if (!batchDepth) {\n flush();\n }\n }\n }\n }\n else {\n if (this.flags & 16) {\n if (updateSignal(this)) {\n const subs = this.subs;\n if (subs !== undefined) {\n shallowPropagate(subs);\n }\n }\n }\n const sub = activeSub;\n if (sub !== undefined) {\n link(this, sub, cycle);\n }\n return this.currentValue;\n }\n}\nfunction runCleanup(e) {\n const cleanup = e.cleanup;\n e.cleanup = undefined;\n const prevSub = activeSub;\n activeSub = undefined;\n try {\n cleanup();\n }\n finally {\n activeSub = prevSub;\n }\n}\nfunction effectOper() {\n effectScopeOper.call(this);\n if (this.cleanup) {\n runCleanup(this);\n }\n}\nfunction effectScopeOper() {\n this.flags = 0;\n disposeAllDepsInReverse(this);\n const sub = this.subs;\n if (sub !== undefined) {\n unlink(sub);\n }\n}\nfunction disposeAllDepsInReverse(sub) {\n let link = sub.depsTail;\n while (link !== undefined) {\n const prev = link.prevDep;\n unlink(link, sub);\n link = prev;\n }\n}\nfunction purgeDeps(sub) {\n const depsTail = sub.depsTail;\n let dep = depsTail !== undefined ? depsTail.nextDep : sub.deps;\n while (dep !== undefined) {\n dep = unlink(dep, sub);\n }\n}\n","/**\n * @silvery/signals — Reactive signals for silvery.\n *\n * Thin wrapper around alien-signals providing:\n * - signal(value) — create a reactive value (call to read, call with arg to write)\n * - computed(fn) — derived reactive value that recomputes on dependency changes\n * - effect(fn) — side effect that re-runs when dependencies change\n * - effectScope(fn) — group effects for collective disposal\n * - batch(fn) — batch multiple signal updates into one notification\n * - watch(read, onChange) — change-only subscription (skips the seed fire)\n *\n * @packageDocumentation\n */\n\nexport {\n signal,\n computed,\n effect,\n effectScope,\n startBatch,\n endBatch,\n trigger,\n isSignal,\n isComputed,\n isEffect,\n isEffectScope,\n getActiveSub,\n setActiveSub,\n getBatchDepth,\n} from \"alien-signals\"\n\nimport { effect, startBatch, endBatch } from \"alien-signals\"\n\n/**\n * A reactive value — callable getter/setter.\n *\n * - `sig()` reads the current value (and subscribes the active effect/computed).\n * - `sig(next)` writes a new value; subscribers re-run only if `next !== current`.\n *\n * Matches the return shape of `signal<T>(initial)` from alien-signals, so any\n * `signal()` result is assignable to `Signal<T>`.\n */\nexport type Signal<T> = {\n (): T\n (value: T): void\n}\n\n/**\n * A read-only reactive value — callable getter that subscribes the active\n * effect/computed but cannot be written to. Matches the return shape of\n * `computed<T>(fn)` from alien-signals.\n */\nexport type ReadSignal<T> = () => T\n\n/** Batch multiple signal updates, notifying subscribers once at the end. */\nexport function batch(fn: () => void): void {\n startBatch()\n try {\n fn()\n } finally {\n endBatch()\n }\n}\n\n/**\n * Options for {@link watch}.\n */\nexport interface WatchOptions<T> {\n /** If true, fire `onChange` on the seed read with `(next, next)`. Default false (change-only). */\n immediate?: boolean\n /** Equality predicate — handler fires only when `equals(next, prev)` is false. Default `Object.is`. */\n equals?: (a: T, b: T) => boolean\n}\n\n/**\n * Subscribe to signal changes via an imperative callback.\n *\n * alien-signals' `effect()` runs once eagerly to establish dependencies,\n * which means an `effect(() => { handler(sig()) })` fires with the seed\n * value. `watch()` swallows that first fire and only calls `onChange` when\n * the value actually changes — matching the old `.subscribe(handler)`\n * semantic consumers often want.\n *\n * ```ts\n * const stop = watch(\n * () => size.snapshot(),\n * (next, prev) => { emit({ cols: next.cols, rows: next.rows }) },\n * )\n * // stop() to unsubscribe\n * ```\n *\n * Returns the effect's stop function.\n */\nexport function watch<T>(\n read: () => T,\n onChange: (next: T, prev: T) => void,\n opts: WatchOptions<T> = {},\n): () => void {\n const equals = opts.equals ?? Object.is\n let seeded = false\n let prev!: T\n return effect(() => {\n const next = read()\n if (!seeded) {\n seeded = true\n prev = next\n if (opts.immediate) onChange(next, next)\n return\n }\n if (equals(next, prev)) return\n const old = prev\n prev = next\n onChange(next, old)\n })\n}\n"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { f as syncFocusedSignal } from "./layout-signals-
|
|
3
|
-
import { N as stripAnsi, Rt as queryKittyKeyboard, U as getInternalStreams, mt as createOutputPhase, r as createMeasurer } from "./unicode-
|
|
4
|
-
import { j as createTerminalProfile } from "./src-
|
|
5
|
-
import { C as isDirty } from "./reconciler
|
|
6
|
-
import "./layout-engine-
|
|
7
|
-
import { a as setActiveColorLevel, i as parseColor } from "./ag-
|
|
1
|
+
import { A as isFocusable, C as findByTestID, D as getExplicitFocusLink, E as findSpatialTarget, O as getTabOrder$1, S as setFocused, T as findFocusableAncestor, k as isFocusHidden } from "./mouse-events-Pg-XKR3T.mjs";
|
|
2
|
+
import { f as syncFocusedSignal } from "./layout-signals-uQadGDmO.mjs";
|
|
3
|
+
import { N as stripAnsi, Rt as queryKittyKeyboard, U as getInternalStreams, mt as createOutputPhase, r as createMeasurer } from "./unicode-X43-fdGF.mjs";
|
|
4
|
+
import { j as createTerminalProfile } from "./src-DorsnS70.mjs";
|
|
5
|
+
import { C as isDirty } from "./reconciler-lsTL1y8i.mjs";
|
|
6
|
+
import "./layout-engine-BYp49XPD.mjs";
|
|
7
|
+
import { a as setActiveColorLevel, i as parseColor } from "./ag-B-7XAHL8.mjs";
|
|
8
8
|
import { a as NodeContext } from "./context-CEhuD1R_.mjs";
|
|
9
|
-
import { u as useScrollRect } from "./useLayout-
|
|
9
|
+
import { u as useScrollRect } from "./useLayout-Cx01rHVI.mjs";
|
|
10
10
|
import { createLogger } from "loggily";
|
|
11
11
|
import React, { createContext, useContext, useEffect, useLayoutEffect, useRef } from "react";
|
|
12
12
|
//#region packages/ag/src/focus-manager.ts
|
|
@@ -1583,9 +1583,13 @@ function findActiveCursorNode(root) {
|
|
|
1583
1583
|
* Supported by: iTerm2, Kitty, WezTerm, foot, Ghostty
|
|
1584
1584
|
*/
|
|
1585
1585
|
const OSC133 = {
|
|
1586
|
+
/** Mark prompt start (before user input) */
|
|
1586
1587
|
promptStart: "\x1B]133;A\x07",
|
|
1588
|
+
/** Mark prompt end (after user input, before command output) */
|
|
1587
1589
|
promptEnd: "\x1B]133;B\x07",
|
|
1590
|
+
/** Mark command output start */
|
|
1588
1591
|
commandStart: "\x1B]133;C\x07",
|
|
1592
|
+
/** Mark command output end (exit code defaults to 0 = success) */
|
|
1589
1593
|
commandEnd: (exitCode) => `\x1b]133;D;${exitCode ?? 0}\x07`
|
|
1590
1594
|
};
|
|
1591
1595
|
//#endregion
|
|
@@ -1951,9 +1955,13 @@ async function queryCursorFromStdio(stdout, stdin, timeoutMs = 200) {
|
|
|
1951
1955
|
//#region packages/ag-term/src/ansi/width-detection.ts
|
|
1952
1956
|
/** Well-known xterm width DEC mode numbers. */
|
|
1953
1957
|
const WidthMode = {
|
|
1958
|
+
/** UTF-8 mode */
|
|
1954
1959
|
UTF8: 1020,
|
|
1960
|
+
/** CJK ambiguous character width */
|
|
1955
1961
|
CJK_WIDTH: 1021,
|
|
1962
|
+
/** Emoji width */
|
|
1956
1963
|
EMOJI_WIDTH: 1022,
|
|
1964
|
+
/** Private-use area width */
|
|
1957
1965
|
PRIVATE_USE_WIDTH: 1023
|
|
1958
1966
|
};
|
|
1959
1967
|
/** Default configuration when detection fails or times out. */
|
|
@@ -2214,11 +2222,17 @@ async function queryDeviceAttributes(stdout, stdin, timeoutMs = 200) {
|
|
|
2214
2222
|
const DECRPM_RESPONSE_RE = /\x1b\[\?(\d+);(\d+)\$y/;
|
|
2215
2223
|
/** Well-known DEC private mode constants. */
|
|
2216
2224
|
const DecMode = {
|
|
2225
|
+
/** DEC cursor visible (DECTCEM) */
|
|
2217
2226
|
CURSOR_VISIBLE: 25,
|
|
2227
|
+
/** Alternate screen buffer (DECSET 1049) */
|
|
2218
2228
|
ALT_SCREEN: 1049,
|
|
2229
|
+
/** Normal mouse tracking (X10) */
|
|
2219
2230
|
MOUSE_TRACKING: 1e3,
|
|
2231
|
+
/** Bracketed paste mode */
|
|
2220
2232
|
BRACKETED_PASTE: 2004,
|
|
2233
|
+
/** Synchronized output */
|
|
2221
2234
|
SYNC_OUTPUT: 2026,
|
|
2235
|
+
/** Focus reporting */
|
|
2222
2236
|
FOCUS_REPORTING: 1004
|
|
2223
2237
|
};
|
|
2224
2238
|
/**
|
|
@@ -2601,14 +2615,23 @@ function resetHitRegionIdCounter() {
|
|
|
2601
2615
|
* Recommended z-index values for different UI layers.
|
|
2602
2616
|
*/
|
|
2603
2617
|
const Z_INDEX = {
|
|
2618
|
+
/** Background elements */
|
|
2604
2619
|
BACKGROUND: 0,
|
|
2620
|
+
/** Column headers */
|
|
2605
2621
|
COLUMN_HEADER: 5,
|
|
2622
|
+
/** Cards in the main view */
|
|
2606
2623
|
CARD: 10,
|
|
2624
|
+
/** Fold toggles (above cards for easier clicking) */
|
|
2607
2625
|
FOLD_TOGGLE: 15,
|
|
2626
|
+
/** Links within cards */
|
|
2608
2627
|
LINK: 20,
|
|
2628
|
+
/** Floating elements */
|
|
2609
2629
|
FLOATING: 50,
|
|
2630
|
+
/** Modal dialogs */
|
|
2610
2631
|
DIALOG: 100,
|
|
2632
|
+
/** Dropdown menus */
|
|
2611
2633
|
DROPDOWN: 150,
|
|
2634
|
+
/** Tooltips */
|
|
2612
2635
|
TOOLTIP: 200
|
|
2613
2636
|
};
|
|
2614
2637
|
//#endregion
|
|
@@ -3898,4 +3921,4 @@ function renderSearchBarPlain(state, cols) {
|
|
|
3898
3921
|
//#endregion
|
|
3899
3922
|
export { DecMode as $, withMeasurer as A, createTerminalSelectionState as At, resolveNonTTYMode as B, resetScrollRegion as C, CursorProvider as Ct, supportsScrollRegions as D, createDragEvent as Dt, setScrollRegion as E, useCursor as Et, inspectTree as F, createInputEvents as G, Z_INDEX as H, isInspectorEnabled as I, resolveFromTerm as J, isTerm as K, countLines as L, disableInspector as M, terminalSelectionUpdate as Mt, enableInspector as N, createFocusManager as Nt, calcEdgeBasedScrollOffset as O, createDragState as Ot, inspectFrame as P, queryTextAreaSize as Q, createOutputTransformer as R, moveCursor as S, createCanvasAdapter as St, scrollUp as T, resetCursorState as Tt, generateHitRegionId as U, HitRegistry as V, resetHitRegionIdCounter as W, queryCellSize as X, resolveTermDef as Y, queryTextAreaPixels as Z, getTabOrder as _, findActiveCursorNode as _t, createTextSurface as a, queryTerminalVersion as at, splitPane as b, injectDOMStyles as bt, createHistoryBuffer as c, detectWidthConfigWithProbe as ct, applySelectionToBuffer as d, TERMTEST_SECTIONS as dt, queryMode as et, composeSearchHighlightCells as f, runTermtest as ft, getPaneIds as g, OSC133 as gt, findAdjacentPane as h, detectKittyWithProbe as ht, searchUpdate as i, querySecondaryDA as it, autoEnableInspector as j, extractText as jt, createPipeline as k, findDropTarget as kt, createHistoryItem as l, queryCursorFromStdio as lt, createLeaf as m, detectKittySupport as mt, createSearchState as n, queryDeviceAttributes as nt, createListDocument as o, queryTertiaryDA as ot, composeSelectionCells as p, detectKittyFromStdio as pt, isTermDef as q, renderSearchBarPlain as r, queryPrimaryDA as rt, composeViewport as s, applyWidthConfig as st, computeMatchRanges as t, queryModes as tt, createVirtualScrollback as u, queryCursorPosition as ut, removePane as v, DOMRenderBuffer as vt, scrollDown as w, createCursorStore as wt, swapPanes as x, CanvasRenderBuffer as xt, resizeSplit as y, createDOMAdapter as yt, isTTY as z };
|
|
3900
3923
|
|
|
3901
|
-
//# sourceMappingURL=src-
|
|
3924
|
+
//# sourceMappingURL=src-BZOfzNeo.mjs.map
|