@p4code/cli 0.1.37 → 0.1.39
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/bin.mjs +127 -25
- package/dist/client/assets/{DiffPanel-DGEBwIDZ.js → DiffPanel-Ijopbelf.js} +3 -3
- package/dist/client/assets/{FilePreviewPanel-CoQWRSoe.js → FilePreviewPanel-C7sNX4dx.js} +7 -7
- package/dist/client/assets/PreviewPanel-CRwar_cp.js +2 -0
- package/dist/client/assets/arrow-right-BnQZ60ie.js +2 -0
- package/dist/client/assets/{fileCommentAnnotations-C-wWopty.js → fileCommentAnnotations-CbfdaFFi.js} +2 -2
- package/dist/client/assets/index-C97EL4Np.js +965 -0
- package/dist/client/assets/terminal-links-B2KXT7CK.js +46 -0
- package/dist/client/index.html +2 -2
- package/package.json +1 -1
- package/dist/client/assets/PreviewPanel-fmAW4iEw.js +0 -2
- package/dist/client/assets/arrow-right-DTy7s06V.js +0 -2
- package/dist/client/assets/index-Cwuc4uKy.js +0 -952
- package/dist/client/assets/terminal-links-B1K-cj6g.js +0 -46
package/dist/bin.mjs
CHANGED
|
@@ -236,7 +236,7 @@ const make$76 = () => {
|
|
|
236
236
|
const layer$72 = Layer.sync(NetService, make$76);
|
|
237
237
|
//#endregion
|
|
238
238
|
//#region package.json
|
|
239
|
-
var version = "0.1.
|
|
239
|
+
var version = "0.1.39";
|
|
240
240
|
//#endregion
|
|
241
241
|
//#region src/config.ts
|
|
242
242
|
/**
|
|
@@ -19369,6 +19369,16 @@ const PRESET_MAX_RESULT_ROWS = 20;
|
|
|
19369
19369
|
*/
|
|
19370
19370
|
const PRESET_MAX_TOOL_CALLS = 15;
|
|
19371
19371
|
/**
|
|
19372
|
+
* The same cap, in the one form the run cannot talk itself out of.
|
|
19373
|
+
*
|
|
19374
|
+
* The prose number above is an instruction; this one is enforced by the
|
|
19375
|
+
* provider, which ends the run at it whatever the model had planned next. Set
|
|
19376
|
+
* three above the tool-call cap so a run that legitimately spends all fifteen
|
|
19377
|
+
* still has turns left to write its answer, rather than being cut off holding
|
|
19378
|
+
* the rows it was about to report.
|
|
19379
|
+
*/
|
|
19380
|
+
const PRESET_MAX_TURNS = 18;
|
|
19381
|
+
/**
|
|
19372
19382
|
* Named `p4-*` on purpose.
|
|
19373
19383
|
*
|
|
19374
19384
|
* The directory is shared with whatever the user has written by hand, and
|
|
@@ -19462,6 +19472,10 @@ const outputContract = (row, extra) => [
|
|
|
19462
19472
|
* tier is worth it only where the job is mechanical enough that the tier is not
|
|
19463
19473
|
* what makes the answer right, which is true of locating a symbol and is not
|
|
19464
19474
|
* true of deciding whether a line is a bug.
|
|
19475
|
+
*
|
|
19476
|
+
* `maxTurns` is not optional. Every preset states its budget in prose and then
|
|
19477
|
+
* repeats it here, because the prose is the half the model can reword its way
|
|
19478
|
+
* around and this is the half it cannot.
|
|
19465
19479
|
*/
|
|
19466
19480
|
const buildPreset = (input) => {
|
|
19467
19481
|
const name = `${PRESET_NAME_PREFIX}${input.name}`;
|
|
@@ -19471,6 +19485,7 @@ const buildPreset = (input) => {
|
|
|
19471
19485
|
`description: ${JSON.stringify(input.description)}`,
|
|
19472
19486
|
`tools: ${input.tools}`,
|
|
19473
19487
|
...input.model === void 0 ? [] : [`model: ${input.model}`],
|
|
19488
|
+
`maxTurns: ${PRESET_MAX_TURNS}`,
|
|
19474
19489
|
"---",
|
|
19475
19490
|
"",
|
|
19476
19491
|
input.body.trim(),
|
|
@@ -36534,6 +36549,18 @@ function parseTicketReference(text) {
|
|
|
36534
36549
|
if (bare?.[1] !== void 0) return bare[1].toUpperCase();
|
|
36535
36550
|
return null;
|
|
36536
36551
|
}
|
|
36552
|
+
/**
|
|
36553
|
+
* The issue identifier a tracker URL names, or `null` for any other URL.
|
|
36554
|
+
*
|
|
36555
|
+
* Narrower than {@link parseTicketReference} on purpose: a link's href is
|
|
36556
|
+
* always a URL, and treating a bare identifier there would claim relative
|
|
36557
|
+
* links that were never tickets. The URL itself proves which tracker owns the
|
|
36558
|
+
* reference, so callers need no prefix configuration to trust the answer.
|
|
36559
|
+
*/
|
|
36560
|
+
function parseTicketUrl(url) {
|
|
36561
|
+
const match = LINEAR_ISSUE_URL_PATTERN.exec(url.trim());
|
|
36562
|
+
return match?.[1] === void 0 ? null : match[1].toUpperCase();
|
|
36563
|
+
}
|
|
36537
36564
|
//#endregion
|
|
36538
36565
|
//#region src/persistence/Layers/linearTaskMapping.ts
|
|
36539
36566
|
/**
|
|
@@ -52272,6 +52299,37 @@ function formatAskUserQuestionAnswers(answers) {
|
|
|
52272
52299
|
return formatted;
|
|
52273
52300
|
}
|
|
52274
52301
|
//#endregion
|
|
52302
|
+
//#region src/provider/Layers/ClaudePromptAppends.ts
|
|
52303
|
+
/**
|
|
52304
|
+
* Setting-driven system prompt appends for the Claude adapter.
|
|
52305
|
+
*
|
|
52306
|
+
* Kept out of `ClaudeAdapter.ts` so their regression evals
|
|
52307
|
+
* (`ClaudePromptAppends.evals.ts`) and any future prompt constant of the same
|
|
52308
|
+
* shape can import the text without dragging in the adapter's whole module
|
|
52309
|
+
* graph. The join point is `ClaudeAdapter.ts`, which appends these to the
|
|
52310
|
+
* claude_code preset system prompt per setting.
|
|
52311
|
+
*/
|
|
52312
|
+
/**
|
|
52313
|
+
* Appended to the preset system prompt when `narrateBeforeTools` is on. The SDK
|
|
52314
|
+
* preset drops the interactive CLI's terminal-tone sections, so without this the
|
|
52315
|
+
* model opens a turn with a tool call rather than a line saying what it is doing.
|
|
52316
|
+
*/
|
|
52317
|
+
const NARRATE_BEFORE_TOOLS_PROMPT = "Before your first tool call in a turn, write one short sentence saying what you are about to do. Keep it to a single line and skip it when you are answering without tools.";
|
|
52318
|
+
/**
|
|
52319
|
+
* Said whichever way the setting is set, and said as an override.
|
|
52320
|
+
*
|
|
52321
|
+
* The preset system prompt this adapter requests already carries an
|
|
52322
|
+
* instruction not to spawn subagents unless the user asked — and a preset is
|
|
52323
|
+
* taken wholesale, so there is no version of it with that line removed. An
|
|
52324
|
+
* append that merely stayed silent when subagents are allowed would therefore
|
|
52325
|
+
* leave the restriction standing, which is the one outcome the setting exists
|
|
52326
|
+
* to change. Both texts name the earlier instruction they replace, because a
|
|
52327
|
+
* later instruction that does not acknowledge the conflict reads as an
|
|
52328
|
+
* accident rather than a decision.
|
|
52329
|
+
*/
|
|
52330
|
+
const SUBAGENTS_ALLOWED_PROMPT = "You may spawn subagents with the Task tool whenever it helps, without asking the user first. This overrides any earlier instruction to use subagents only when they are requested. Prefer one for bounded search or review work whose result is much smaller than the reading it takes to produce; do the work inline when the answer is a single file or a single edit.";
|
|
52331
|
+
const SUBAGENTS_ON_REQUEST_PROMPT = "Do not spawn subagents with the Task tool unless the user asks for one. This overrides any earlier instruction permitting them on your own initiative. Do the work inline instead, and say so if it would have been better delegated.";
|
|
52332
|
+
//#endregion
|
|
52275
52333
|
//#region src/provider/Layers/ClaudeAdapter.ts
|
|
52276
52334
|
/**
|
|
52277
52335
|
* ClaudeAdapterLive - Scoped live implementation for the Claude Agent provider adapter.
|
|
@@ -52825,28 +52883,8 @@ const SUPPORTED_CLAUDE_IMAGE_MIME_TYPES = /* @__PURE__ */ new Set([
|
|
|
52825
52883
|
"image/png",
|
|
52826
52884
|
"image/webp"
|
|
52827
52885
|
]);
|
|
52828
|
-
/**
|
|
52829
|
-
* Appended to the preset system prompt when `narrateBeforeTools` is on. The SDK
|
|
52830
|
-
* preset drops the interactive CLI's terminal-tone sections, so without this the
|
|
52831
|
-
* model opens a turn with a tool call rather than a line saying what it is doing.
|
|
52832
|
-
*/
|
|
52833
52886
|
/** Emitted by the CLI but absent from the SDK's `SDKMessage` union. */
|
|
52834
52887
|
const UNTYPED_COMMAND_LIFECYCLE_MESSAGE = "command_lifecycle";
|
|
52835
|
-
const NARRATE_BEFORE_TOOLS_PROMPT = "Before your first tool call in a turn, write one short sentence saying what you are about to do. Keep it to a single line and skip it when you are answering without tools.";
|
|
52836
|
-
/**
|
|
52837
|
-
* Said whichever way the setting is set, and said as an override.
|
|
52838
|
-
*
|
|
52839
|
-
* The preset system prompt this adapter requests already carries an
|
|
52840
|
-
* instruction not to spawn subagents unless the user asked — and a preset is
|
|
52841
|
-
* taken wholesale, so there is no version of it with that line removed. An
|
|
52842
|
-
* append that merely stayed silent when subagents are allowed would therefore
|
|
52843
|
-
* leave the restriction standing, which is the one outcome the setting exists
|
|
52844
|
-
* to change. Both texts name the earlier instruction they replace, because a
|
|
52845
|
-
* later instruction that does not acknowledge the conflict reads as an
|
|
52846
|
-
* accident rather than a decision.
|
|
52847
|
-
*/
|
|
52848
|
-
const SUBAGENTS_ALLOWED_PROMPT = "You may spawn subagents with the Task tool whenever it helps, without asking the user first. This overrides any earlier instruction to use subagents only when they are requested. Prefer one for bounded search or review work whose result is much smaller than the reading it takes to produce; do the work inline when the answer is a single file or a single edit.";
|
|
52849
|
-
const SUBAGENTS_ON_REQUEST_PROMPT = "Do not spawn subagents with the Task tool unless the user asks for one. This overrides any earlier instruction permitting them on your own initiative. Do the work inline instead, and say so if it would have been better delegated.";
|
|
52850
52888
|
const CLAUDE_SETTING_SOURCES = [
|
|
52851
52889
|
"user",
|
|
52852
52890
|
"project",
|
|
@@ -89555,6 +89593,54 @@ function findTaskTitleInActivities(activities, taskId) {
|
|
|
89555
89593
|
if (title && title.trim().length > 0) return title;
|
|
89556
89594
|
}
|
|
89557
89595
|
}
|
|
89596
|
+
/**
|
|
89597
|
+
* The Linear MCP server's issue-writing tool, as an agent's session names it.
|
|
89598
|
+
*
|
|
89599
|
+
* An agent asked to "create a linear" reaches for the user's own Linear MCP
|
|
89600
|
+
* server rather than the board toolkit, and that call never passes through
|
|
89601
|
+
* `task_create`'s linking. The tool's result does pass through here, so the
|
|
89602
|
+
* link is recovered from it instead of hoping the agent picks the other tool.
|
|
89603
|
+
*/
|
|
89604
|
+
const LINEAR_SAVE_ISSUE_TOOL = "mcp__linear__save_issue";
|
|
89605
|
+
/** `PREFIX-123`, the shape every tracker identifier prints as. */
|
|
89606
|
+
const LINEAR_IDENTIFIER_PATTERN = /^[A-Za-z][A-Za-z0-9]*-[1-9][0-9]*$/;
|
|
89607
|
+
/**
|
|
89608
|
+
* The text inside a tool result's content, whatever arrangement it arrived in.
|
|
89609
|
+
*
|
|
89610
|
+
* A `tool_result` block carries either a bare string or a list of typed
|
|
89611
|
+
* blocks; both are seen in the wild, so both are read.
|
|
89612
|
+
*/
|
|
89613
|
+
function toolResultText(result) {
|
|
89614
|
+
if (typeof result !== "object" || result === null) return "";
|
|
89615
|
+
const content = result.content;
|
|
89616
|
+
if (typeof content === "string") return content;
|
|
89617
|
+
if (!Array.isArray(content)) return "";
|
|
89618
|
+
return content.map((block) => typeof block === "object" && block !== null && typeof block.text === "string" ? block.text : "").join("\n");
|
|
89619
|
+
}
|
|
89620
|
+
/**
|
|
89621
|
+
* The identifier of the issue a completed `save_issue` call created, or null.
|
|
89622
|
+
*
|
|
89623
|
+
* Null for an update - `save_issue` with an `id` edits an existing issue, and
|
|
89624
|
+
* editing a ticket from a conversation is not a statement that the
|
|
89625
|
+
* conversation is about it the way creating one is.
|
|
89626
|
+
*
|
|
89627
|
+
* The result is read two ways because the Linear server does not promise a
|
|
89628
|
+
* shape: as JSON carrying an `identifier` field, and failing that, as text
|
|
89629
|
+
* containing the issue's own URL.
|
|
89630
|
+
*/
|
|
89631
|
+
function createdLinearIssueIdentifier(data) {
|
|
89632
|
+
if (typeof data !== "object" || data === null) return null;
|
|
89633
|
+
const { toolName, input, result } = data;
|
|
89634
|
+
if (toolName !== LINEAR_SAVE_ISSUE_TOOL) return null;
|
|
89635
|
+
if (typeof input === "object" && input !== null && input.id !== void 0) return null;
|
|
89636
|
+
const text = toolResultText(result);
|
|
89637
|
+
if (text.length === 0) return null;
|
|
89638
|
+
try {
|
|
89639
|
+
const identifier = readOne(JSON.parse(text))?.["identifier"];
|
|
89640
|
+
if (typeof identifier === "string" && LINEAR_IDENTIFIER_PATTERN.test(identifier.trim())) return identifier.trim().toUpperCase();
|
|
89641
|
+
} catch {}
|
|
89642
|
+
return parseTicketUrl(text);
|
|
89643
|
+
}
|
|
89558
89644
|
const TURN_MESSAGE_IDS_BY_TURN_CACHE_CAPACITY = 1e4;
|
|
89559
89645
|
const TURN_MESSAGE_IDS_BY_TURN_TTL = Duration.minutes(120);
|
|
89560
89646
|
const BUFFERED_MESSAGE_TEXT_BY_MESSAGE_ID_CACHE_CAPACITY = 2e4;
|
|
@@ -89959,6 +90045,7 @@ const make$3 = Effect.gen(function* () {
|
|
|
89959
90045
|
const providerService = yield* ProviderService;
|
|
89960
90046
|
const projectionTurnRepository = yield* ProjectionTurnRepository;
|
|
89961
90047
|
const serverSettingsService = yield* ServerSettingsService;
|
|
90048
|
+
const taskRepositories = yield* TaskRepositoryRegistry;
|
|
89962
90049
|
const providerCommandId = (event, tag) => crypto.randomUUIDv4.pipe(Effect.map((uuid) => CommandId.make(`provider:${event.eventId}:${tag}:${uuid}`)));
|
|
89963
90050
|
const turnMessageIdsByTurnKey = yield* Cache.make({
|
|
89964
90051
|
capacity: TURN_MESSAGE_IDS_BY_TURN_CACHE_CAPACITY,
|
|
@@ -90414,6 +90501,18 @@ const make$3 = Effect.gen(function* () {
|
|
|
90414
90501
|
updatedAt: now
|
|
90415
90502
|
});
|
|
90416
90503
|
}
|
|
90504
|
+
if (event.type === "item.completed" && event.payload.itemType === "mcp_tool_call" && event.payload.status !== "failed") {
|
|
90505
|
+
const createdIdentifier = createdLinearIssueIdentifier(event.payload.data);
|
|
90506
|
+
if (createdIdentifier !== null) yield* Effect.forkDetach(taskRepositories.forSource("linear").patch({
|
|
90507
|
+
taskId: TaskId.make(createdIdentifier),
|
|
90508
|
+
threadId: thread.id,
|
|
90509
|
+
projectId: thread.projectId
|
|
90510
|
+
}, now).pipe(Effect.asVoid, Effect.catch((cause) => Effect.logWarning("Failed to link agent-created Linear ticket to its thread", {
|
|
90511
|
+
identifier: createdIdentifier,
|
|
90512
|
+
threadId: thread.id,
|
|
90513
|
+
cause
|
|
90514
|
+
}))));
|
|
90515
|
+
}
|
|
90417
90516
|
if (event.type === "turn.completed") {
|
|
90418
90517
|
const detailedThread = yield* getLoadedThreadDetail();
|
|
90419
90518
|
const messages = detailedThread?.messages ?? [];
|
|
@@ -91097,11 +91196,14 @@ const make$2 = Effect.gen(function* () {
|
|
|
91097
91196
|
const compressMode = thread.compressMode;
|
|
91098
91197
|
const hasSessionLevelRuleset = activeSession?.provider === "claudeAgent" || activeSession?.provider === "codex";
|
|
91099
91198
|
const rebuildsRulesetEachTurn = activeSession?.provider === "codex";
|
|
91199
|
+
const sessionRulesetMode = hadActiveSession && !rebuildsRulesetEachTurn ? threadSessionRulesetModes.get(input.threadId) : void 0;
|
|
91200
|
+
const levelChangedMidSession = compressMode !== "off" && sessionRulesetMode !== void 0 && sessionRulesetMode !== compressMode;
|
|
91100
91201
|
const compressPrefix = compressTurnPrefixFor({
|
|
91101
91202
|
mode: compressMode,
|
|
91102
|
-
injectRuleset: !hadActiveSession && !hasSessionLevelRuleset,
|
|
91103
|
-
staleRulesetMode:
|
|
91203
|
+
injectRuleset: !hadActiveSession && !hasSessionLevelRuleset || levelChangedMidSession,
|
|
91204
|
+
staleRulesetMode: sessionRulesetMode
|
|
91104
91205
|
});
|
|
91206
|
+
if (levelChangedMidSession) threadSessionRulesetModes.set(input.threadId, compressMode);
|
|
91105
91207
|
const inputWithCompressPrefix = expandedInputWithDocuments !== void 0 && compressPrefix !== void 0 ? `${compressPrefix}\n\n${expandedInputWithDocuments}` : expandedInputWithDocuments;
|
|
91106
91208
|
return {
|
|
91107
91209
|
threadId: input.threadId,
|
|
@@ -92664,7 +92766,7 @@ const WorkspaceLayerLive = Layer.mergeAll(layer$44, WorkspaceEntriesLayerLive, W
|
|
|
92664
92766
|
const ProjectFaviconResolverLayerLive = layer$42.pipe(Layer.provide(layer$44), Layer.provide(layer$43));
|
|
92665
92767
|
const AuthLayerLive = layer$64.pipe(Layer.provideMerge(PersistenceLayerLive), Layer.provide(layer$68));
|
|
92666
92768
|
const ProviderRuntimeLayerLive = ProviderSessionReaperLive.pipe(Layer.provideMerge(ProviderLayerLive), Layer.provideMerge(OrchestrationLayerLive));
|
|
92667
|
-
const RuntimeDependenciesLive = ReactorLayerLive.pipe(Layer.provideMerge(CheckpointingLayerLive), Layer.provideMerge(SourceControlProviderRegistryLayerLive), Layer.provideMerge(GitLayerLive), Layer.provideMerge(VcsLayerLive), Layer.provideMerge(ProviderRuntimeLayerLive), Layer.provideMerge(Layer.mergeAll(TerminalLayerLive, PreviewLayerLive)), Layer.provideMerge(PersistenceLayerLive), Layer.provideMerge(layer$52), Layer.provideMerge(ProviderRegistryLive), Layer.provideMerge(ProviderInstanceRegistryHydrationLive), Layer.provideMerge(ProviderEventLoggersLive), Layer.provideMerge(OpenCodeRuntimeLive), Layer.provideMerge(layer$61.pipe(Layer.provide(layer$68))), Layer.provideMerge(WorkspaceLayerLive), Layer.provideMerge(ProjectFaviconResolverLayerLive), Layer.provideMerge(layer$53), Layer.provideMerge(layer$46), Layer.provideMerge(AuthLayerLive), Layer.provideMerge(Layer.mergeAll(layer$1, LinearMcpClientLive).pipe(Layer.provideMerge(Layer.mergeAll(layer$58, layer$32).pipe(Layer.provideMerge(layer$59), Layer.provideMerge(layer$60))))), Layer.provideMerge(layer$68)).pipe(Layer.provideMerge(layer$9), Layer.provideMerge(layer$8), Layer.provideMerge(layer$7), Layer.provideMerge(layer$49), Layer.provideMerge(layer$51), Layer.provideMerge(layer$50), Layer.provide(layer$72));
|
|
92769
|
+
const RuntimeDependenciesLive = ReactorLayerLive.pipe(Layer.provideMerge(CheckpointingLayerLive), Layer.provideMerge(SourceControlProviderRegistryLayerLive), Layer.provideMerge(GitLayerLive), Layer.provideMerge(VcsLayerLive), Layer.provideMerge(ProviderRuntimeLayerLive), Layer.provideMerge(Layer.mergeAll(TerminalLayerLive, PreviewLayerLive, RoutedTaskRepositoryLive)), Layer.provideMerge(Layer.mergeAll(PersistenceLayerLive, layer$57)), Layer.provideMerge(layer$52), Layer.provideMerge(ProviderRegistryLive), Layer.provideMerge(ProviderInstanceRegistryHydrationLive), Layer.provideMerge(ProviderEventLoggersLive), Layer.provideMerge(OpenCodeRuntimeLive), Layer.provideMerge(layer$61.pipe(Layer.provide(layer$68))), Layer.provideMerge(WorkspaceLayerLive), Layer.provideMerge(ProjectFaviconResolverLayerLive), Layer.provideMerge(layer$53), Layer.provideMerge(layer$46), Layer.provideMerge(AuthLayerLive), Layer.provideMerge(Layer.mergeAll(layer$1, LinearMcpClientLive).pipe(Layer.provideMerge(Layer.mergeAll(layer$58, layer$32).pipe(Layer.provideMerge(layer$59), Layer.provideMerge(layer$60))))), Layer.provideMerge(layer$68)).pipe(Layer.provideMerge(layer$9), Layer.provideMerge(layer$8), Layer.provideMerge(layer$7), Layer.provideMerge(layer$49), Layer.provideMerge(layer$51), Layer.provideMerge(layer$50), Layer.provide(layer$72));
|
|
92668
92770
|
/**
|
|
92669
92771
|
* Hub asset sync.
|
|
92670
92772
|
*
|
|
@@ -92674,7 +92776,7 @@ const RuntimeDependenciesLive = ReactorLayerLive.pipe(Layer.provideMerge(Checkpo
|
|
|
92674
92776
|
*/
|
|
92675
92777
|
const AssetSyncLive = layer$55.pipe(Layer.provideMerge(layer$56), Layer.provideMerge(layer$57));
|
|
92676
92778
|
const RuntimeServicesLive = layer$45.pipe(Layer.provideMerge(AssetSyncLive), Layer.provideMerge(RuntimeDependenciesLive));
|
|
92677
|
-
const makeRoutesLayer = Layer.mergeAll(Layer.mergeAll(HttpApiBuilder.layer(EnvironmentHttpApi).pipe(Layer.provide(authHttpApiLayer), Layer.provide(orchestrationHttpApiLayer), Layer.provide(serverEnvironmentHttpApiLayer), Layer.provide(environmentAuthenticatedAuthLayer)), otlpTracesProxyRouteLayer, assetRouteLayer, mcpOAuthCallbackRouteLayer, staticAndDevRouteLayer, websocketRpcRouteLayer), layer.pipe(Layer.provide(layer$3))).pipe(Layer.provide(
|
|
92779
|
+
const makeRoutesLayer = Layer.mergeAll(Layer.mergeAll(HttpApiBuilder.layer(EnvironmentHttpApi).pipe(Layer.provide(authHttpApiLayer), Layer.provide(orchestrationHttpApiLayer), Layer.provide(serverEnvironmentHttpApiLayer), Layer.provide(environmentAuthenticatedAuthLayer)), otlpTracesProxyRouteLayer, assetRouteLayer, mcpOAuthCallbackRouteLayer, staticAndDevRouteLayer, websocketRpcRouteLayer), layer.pipe(Layer.provide(layer$3))).pipe(Layer.provide(ProjectionProjectRepositoryLive.pipe(Layer.provide(PersistenceLayerLive))), Layer.provide(layer$43), Layer.provide(layer$29), Layer.provide(layer$47), Layer.provide(browserApiCorsLayer), Layer.provide(httpCompressionLayer));
|
|
92678
92780
|
const makeServerLayer = Layer.unwrap(Effect.gen(function* () {
|
|
92679
92781
|
const config = yield* ServerConfig$1;
|
|
92680
92782
|
yield* fixPath();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{r as t}from"./preload-helper-CEhsl8MR.js";import{n,r,t as i}from"./compiler-runtime-CLAvuQ-D.js";import{$r as a,Bs as o,C as s,E as c,Gs as l,J as u,Oo as d,P as f,Q as p,Wr as m,Wt as h,Zs as g,b as _,bs as v,ci as y,di as b,ea as x,g as S,i as C,in as ee,is as w,kc as T,li as E,ln as D,mn as te,nc as ne,ni as O,ri as k,sc as A,ss as re,u as ie,ui as j,vs as ae,w as M,wo as N,xs as oe,yp as se,ys as ce}from"./terminal-links-B1K-cj6g.js";import{t as le}from"./arrow-right-DTy7s06V.js";import{a as P,n as ue,o as de,s as F}from"./fileCommentAnnotations-C-wWopty.js";import{$ as fe,$n as pe,$t as me,B as he,Bn as ge,C as _e,Cr as ve,En as I,Er as ye,Fn as be,Hn as xe,I as Se,In as Ce,J as we,Kr as L,L as Te,Ln as Ee,Q as De,Qt as R,R as Oe,Rn as ke,T as z,Tr as Ae,Un as je,Ur as Me,Vn as Ne,Wn as Pe,Wr as Fe,X as Ie,Xn as B,Y as Le,Z as Re,_ as V,br as ze,cn as Be,dn as Ve,en as H,et as U,h as He,hn as Ue,in as We,it as Ge,mn as W,nn as Ke,q as qe,rn as Je,sn as G,tn as Ye,un as Xe,w as K,xr as Ze,yr as Qe,z as $e,zn as et}from"./index-Cwuc4uKy.js";var tt=oe(`columns-2`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M12 3v18`,key:`108xh3`}]]),nt=oe(`pilcrow`,[[`path`,{d:`M13 4v16`,key:`8vvj80`}],[`path`,{d:`M17 4v16`,key:`7dpous`}],[`path`,{d:`M19 4H9.5a4.5 4.5 0 0 0 0 9H13`,key:`sh4n9v`}]]),rt=oe(`rows-3`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M21 9H3`,key:`1338ky`}],[`path`,{d:`M21 15H3`,key:`9uk58r`}]]);function q(){return typeof window>`u`||typeof window.matchMedia!=`function`?!1:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}function J(e){let t=window.devicePixelRatio??1;return Math.round(e*t)/t}var it=`theme.disableLineNumbers.overflow.themeType.disableFileHeader.disableVirtualizationBuffers.preferredHighlighter.useCSSClasses.useTokenTransformer.tokenizeMaxLineLength.tokenizeMaxLength.unsafeCSS.diffStyle.diffIndicators.disableBackground.expandUnchanged.collapsedContextThreshold.lineDiffType.maxLineDiffLength.expansionLineCount.lineHoverHighlight.enableTokenInteractionsOnWhitespace.enableGutterUtility.__debugPointerEvents.enableLineSelection.controlledSelection.disableErrorHandling`.split(`.`),at=[`theme`,`disableLineNumbers`,`overflow`,`themeType`,`disableFileHeader`,`disableVirtualizationBuffers`,`preferredHighlighter`,`useCSSClasses`,`useTokenTransformer`,`tokenizeMaxLineLength`,`tokenizeMaxLength`,`unsafeCSS`,`lineHoverHighlight`,`enableTokenInteractionsOnWhitespace`,`enableGutterUtility`,`__debugPointerEvents`,`enableLineSelection`,`controlledSelection`,`disableErrorHandling`],ot=[`renderCustomHeader`,`renderHeaderPrefix`,`renderHeaderMetadata`,`renderAnnotation`,`renderGutterUtility`,`onPostRender`,`onGutterUtilityClick`,`onLineClick`,`onLineNumberClick`,`onLineEnter`,`onLineLeave`,`onTokenClick`,`onTokenEnter`,`onTokenLeave`],st=[`onLineSelected`,`onLineSelectionStart`,`onLineSelectionChange`,`onLineSelectionEnd`],ct=Symbol(`CodeView.itemOptionsState`);function lt(e,t){Object.defineProperty(e,ct,{configurable:!1,enumerable:!1,value:t})}function ut(e){return e[ct]}function Y(e,t,n){Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get(){return n(this)}})}var dt=120,ft=`--diffs-overflow-override`,pt=12e6,mt=1e6,ht=2e6,X=pt-ht,gt=pt-mt,Z=(()=>{let{navigator:e}=globalThis,t=e.userAgent,n=/iP(?:hone|ad|od)/.test(t),r=e.platform===`MacIntel`&&e.maxTouchPoints>1;return(n||r)&&/AppleWebKit/.test(t)&&/Safari/.test(t)&&!/(CriOS|FxiOS|EdgiOS|OPiOS)/.test(t)})(),_t=class e{static __STOP=!1;static __lastScrollPosition=0;type=`advanced`;config={overscrollSize:200,intersectionObserverMargin:0,resizeDebugging:!1};items=[];idToItem=new Map;selectedLines=null;instanceToItem=new Map;layoutDirtyIndex;pendingLayoutReset;renderOptionsRevision=0;slotCoordinator;slotSnapshot;scrollListeners=new Set;scrollHeight=0;containerHeight=-1;scrollTop=0;scrollPageOffset=0;scrollDirty=!0;scrollInteractionFixTimer;pointerEventsDisabled=!1;codeOverflowFix=!1;height=0;heightDirty=!0;windowSpecs={top:0,bottom:0};renderState={scrollTop:-1,firstIndex:-1,lastIndex:-1,stickyHeight:0,stickyTop:-1,stickyBottom:-1};itemMetricsCache=G;fileOptionsPrototype;diffOptionsPrototype;pendingScrollTarget;pendingLayoutAnchor;shouldFixContainerFocus=!1;scrollAnimation;root;resizeObserver;container=document.createElement(`div`);stickyContainer=document.createElement(`div`);stickyOffset=document.createElement(`div`);elementPool=[];elementPoolVersion=0;elementPoolTracker=new WeakMap;pendingElementPool=[];options;workerManager;isContainerManaged;constructor(e={theme:Ve},t,n=!1){this.options=e,this.computeMetricsCache(e.itemMetrics),this.fileOptionsPrototype=this.createFileOptionsPrototype(),this.diffOptionsPrototype=this.createDiffOptionsPrototype(),this.workerManager=t,this.isContainerManaged=n,this.stickyOffset.style.contain=`layout size`,this.stickyContainer.style.position=`sticky`,this.stickyContainer.style.width=`100%`,this.stickyContainer.style.contain=`layout style inline-size`,this.stickyContainer.style.isolation=`isolate`,this.stickyContainer.style.display=`flex`,this.stickyContainer.style.flexDirection=`column`}getLayout(){return this.options.layout??Be}computeMetricsCache(e){return this.itemMetricsCache={hunkLineCount:e?.hunkLineCount??G.hunkLineCount,lineHeight:e?.lineHeight??G.lineHeight,diffHeaderHeight:e?.diffHeaderHeight??G.diffHeaderHeight,hunkSeparatorHeight:e?.hunkSeparatorHeight,spacing:e?.spacing??G.spacing,paddingTop:e?.paddingTop,paddingBottom:e?.paddingBottom},this.itemMetricsCache}getSmoothScrollSettings(){return this.options.smoothScrollSettings??Xe}shouldDisablePointerEvents(){return this.options.pointerEventsOnScroll!==!0}shouldValidateItemHeights(){return W&&this.options.__devOnlyValidateItemHeights===!0}validateRenderedItemHeight(e){if(!this.shouldValidateItemHeights()||e.element==null)return;let t=e.instance.getAdvancedStickySpecs();if(t==null)return;let n=t.height,r=e.element.getBoundingClientRect().height;n!==r&&console.error(`CodeView: reconciled item height does not match DOM height`,{id:e.item.id,type:e.type,index:e.index,version:e.version,expectedHeight:n,actualHeight:r,delta:r-n,stickyTopOffset:t.topOffset,virtualizedHeight:e.instance.getVirtualizedHeight(),top:e.top,scrollTop:this.getScrollTop(),windowSpecs:{...this.windowSpecs},element:e.element,instance:e.instance})}validateStickyContainerHeight(){if(!this.shouldValidateItemHeights())return;let{firstIndex:e,lastIndex:t,stickyHeight:n,stickyTop:r,stickyBottom:i}=this.renderState;if(e===-1||t===-1)return;let a=this.stickyContainer.getBoundingClientRect().height;Math.abs(a-n)<1||console.error(`CodeView: sticky container height does not match computed layout`,{computedStickyHeight:n,actualStickyHeight:a,delta:a-n,stickyTop:r,stickyBottom:i,firstIndex:e,lastIndex:t,firstStickySpecs:this.items[e]?.instance.getAdvancedStickySpecs(),lastStickySpecs:this.items[t]?.instance.getAdvancedStickySpecs(),scrollTop:this.getScrollTop(),scrollPageOffset:this.scrollPageOffset,windowSpecs:{...this.windowSpecs},stickyContainer:this.stickyContainer})}clearScrollInteractionTimer(){this.scrollInteractionFixTimer!=null&&(clearTimeout(this.scrollInteractionFixTimer),this.scrollInteractionFixTimer=void 0)}suspendScrollInteractions(){this.clearScrollInteractionTimer(),this.shouldDisablePointerEvents()&&!this.pointerEventsDisabled&&(this.stickyContainer.style.pointerEvents=`none`,this.pointerEventsDisabled=!0),Z&&!this.codeOverflowFix&&(this.stickyContainer.style.setProperty(ft,`hidden`),this.codeOverflowFix=!0),this.scrollInteractionFixTimer=setTimeout(this.restoreScrollInteractions,dt)}restoreScrollInteractions=()=>{this.clearScrollInteractionTimer(),this.pointerEventsDisabled&&=(this.stickyContainer.style.removeProperty(`pointer-events`),!1),this.codeOverflowFix&&=(this.stickyContainer.style.setProperty(ft,`auto`),!1)};syncLayout(){let{gap:e,paddingBottom:t,paddingTop:n}=this.getLayout();this.stickyContainer.style.gap=`${e}px`,this.container?.style.setProperty(`margin-top`,`${n}px`),this.container?.style.setProperty(`margin-bottom`,`${t}px`)}setup(t){if(this.root!=null)throw Error(`CodeView.setup: already setup`);this.workerManager?.subscribeToThemeChanges(this),this.root=t,this.root.style.overflowAnchor=`none`,this.root.hasAttribute(`tabindex`)||(this.root.tabIndex=-1),this.container??=document.createElement(`div`),this.container.style.contain=`layout style`,this.syncLayout(),this.container.appendChild(this.stickyOffset),this.container.appendChild(this.stickyContainer),this.root.appendChild(this.container),this.scrollDirty=!0,this.heightDirty=!0,this.resizeObserver=new ResizeObserver(this.handleResize),this.resizeObserver.observe(this.stickyContainer),this.root.addEventListener(`scroll`,this.handleScroll,{passive:!0}),this.root.addEventListener(`wheel`,this.clearPendingScroll,{passive:!0}),this.root.addEventListener(`touchstart`,this.clearPendingScroll,{passive:!0}),this.root.addEventListener(`pointerdown`,this.clearPendingScroll,{passive:!0}),this.root.addEventListener(`keydown`,this.clearPendingScroll,{passive:!0}),this.resizeObserver.observe(this.root),this.render(!0),window.__INSTANCE=this,window.__TOGGLE=()=>{e.__STOP?(e.__STOP=!1,this.scrollTo({type:`position`,position:e.__lastScrollPosition,behavior:`instant`})):(e.__lastScrollPosition=this.getScrollTop(),e.__STOP=!0)}}reset(){this.restoreScrollInteractions(),this.cleanAllRenderedItems(),this.selectedLines=null,this.items.length=0,this.idToItem.clear(),this.instanceToItem.clear(),this.layoutDirtyIndex=void 0,this.pendingLayoutReset=void 0,this.stickyContainer.textContent=``,this.stickyOffset.style.height=``,this.container?.style.removeProperty(`height`),this.containerHeight=-1,this.windowSpecs={top:0,bottom:0},this.pendingLayoutAnchor=void 0,this.shouldFixContainerFocus=!1,this.height=0,this.scrollTop=0,this.scrollPageOffset=0,this.scrollHeight=0,this.scrollDirty=!0,this.heightDirty=!0,this.resetRenderState(),this.isContainerManaged||this.flushSlotCoordinator()}cleanUp(){this.reset(),this.clearElementPool(),this.restoreScrollInteractions(),this.workerManager?.unsubscribeToThemeChanges(this),this.resizeObserver?.disconnect(),this.resizeObserver=void 0,this.root?.removeEventListener(`scroll`,this.handleScroll),this.root?.removeEventListener(`wheel`,this.clearPendingScroll),this.root?.removeEventListener(`touchstart`,this.clearPendingScroll),this.root?.removeEventListener(`pointerdown`,this.clearPendingScroll),this.root?.removeEventListener(`keydown`,this.clearPendingScroll),this.root?.style.removeProperty(`overflow-anchor`),this.container?.remove(),this.stickyOffset.remove(),this.stickyContainer.remove(),this.stickyContainer.textContent=``,this.root=void 0,this.container=void 0}cleanAllRenderedItems(){if(this.renderState.firstIndex!==-1)for(let e=this.renderState.firstIndex;e<=this.renderState.lastIndex;e++){let t=this.items[e];if(t==null)throw Error(`CodeView.cleanAllRenderedItems: Item does not exist at index: ${e}`);this.releaseRenderedItem(t)}}primeScrollTarget(e){e.type!==`position`&&this.idToItem.get(e.id)?.instance.primeHighlightCache()}getElementPoolLimit(){let e=this.getHeight()+this.config.overscrollSize*2,{diffHeaderHeight:t}=this.itemMetricsCache;return Math.max(8,Math.ceil(e/Math.max(t,10))+1)*(this.isContainerManaged?2:1)}acquireElement(){this.promotePendingPooledElements();let e=this.elementPool.pop();for(;e!=null&&!this.isElementPoolGenerationCurrent(e);)e=this.elementPool.pop();return e??=document.createElement(Ue),this.markElementPoolGenerationCurrent(e),e}releaseRenderedItem(e){let{element:t}=e;t!=null&&this.renderedItemOwnsFocus(t)&&(this.shouldFixContainerFocus=!0),e.instance.cleanUp(!0),e.element=void 0,t!=null&&(t.remove(),this.cleanElement(t),this.queueElementForPool(t))}renderedItemOwnsFocus(e){let{activeElement:t}=document;return t===e||e.contains(t)||e.shadowRoot?.activeElement!=null}fixContainerFocus(){this.shouldFixContainerFocus&&(this.shouldFixContainerFocus=!1,this.root?.focus({preventScroll:!0}))}cleanElement(e){let{shadowRoot:t}=e;if(t!=null)for(let e of Array.from(t.children))St(e)||e.remove();this.isContainerManaged||e.replaceChildren()}queueElementForPool(e){let t=this.getElementPoolLimit();!this.isElementPoolGenerationCurrent(e)||this.getElementPoolSize()>=t||(this.isElementClean(e)?this.elementPool.push(e):this.pendingElementPool.push(e))}promotePendingPooledElements(){if(this.pendingElementPool.length===0)return;let{pendingElementPool:e}=this;this.pendingElementPool=[];let t=this.getElementPoolLimit();for(let n of e)this.isElementPoolGenerationCurrent(n)&&this.isElementClean(n)&&this.elementPool.length<t?this.elementPool.push(n):this.isElementPoolGenerationCurrent(n)&&this.getElementPoolSize()<t&&this.pendingElementPool.push(n)}isElementClean(e){return e.childNodes.length===0}getElementPoolSize(){return this.elementPool.length+this.pendingElementPool.length}clearElementPool(){this.elementPool.length=0,this.pendingElementPool.length=0}invalidateElementPool(){this.elementPoolVersion++,this.clearElementPool()}markElementPoolGenerationCurrent(e){this.elementPoolTracker.set(e,this.elementPoolVersion)}isElementPoolGenerationCurrent(e){return this.elementPoolTracker.get(e)===this.elementPoolVersion}resolveEffectiveScrollBehavior(e,t){return q()?`instant`:e.behavior===`smooth-auto`?Math.abs(t-this.getScrollTop())<=this.getHeight()*10?`smooth`:`instant`:e.behavior??`instant`}scrollTo(e){if(this.root==null)return;let t=this.normalizeScrollTarget(e);if(t==null)return;let n=this.resolveScrollTargetTop(t);n!=null&&(this.primeScrollTarget(t),this.resolveEffectiveScrollBehavior(t,n)===`smooth`?this.scrollAnimation??={position:this.getScrollTop(),velocity:0,lastTimestamp:performance.now()}:this.scrollAnimation=void 0,this.suspendScrollInteractions(),this.pendingLayoutAnchor=void 0,this.pendingScrollTarget=t,this.render())}setSelectedLines(e,t){this.applySelectedLines(e,t)}getSelectedLines(){return this.selectedLines}clearSelectedLines(e){this.applySelectedLines(null,e)}getItem(e){return this.idToItem.get(e)?.item}updateItem(e){let t=this.idToItem.get(e.id);return t==null?(console.error(`CodeView.updateItem: unknown item id "${e.id}"`),!1):this.syncItemRecord(t,e)?(this.markItemLayoutDirty(t),this.scrollDirty=!0,this.render(),this.syncSelection(),!0):!1}updateItemId(e,t){if(e===t)return!0;let n=this.idToItem.get(e);return n==null?(console.error(`CodeView.updateItemId: unknown item id "${e}"`),!1):this.idToItem.has(t)?(console.error(`CodeView.updateItemId: duplicate item id "${t}"`),!1):(this.idToItem.delete(e),n.item.id=t,this.idToItem.set(t,n),this.updateItemOptionsId(n.instance.options,t),this.selectedLines?.id===e&&(this.selectedLines={...this.selectedLines,id:t},this.options.onSelectedLinesChange?.(this.selectedLines)),this.renamePendingScrollTarget(e,t),this.renamePendingLayoutAnchor(e,t),this.render(),!0)}addItem(e){this.addItems([e]),this.syncSelection()}addItems(e){this.appendItemsInternal(e),this.syncSelection()}setItems(e){e.length===0?this.reset():this.items.length===0?this.appendItemsInternal(e):this.tryAppendItems(e)||this.reconcileItems(e),this.syncSelection()}appendItemsInternal(e,t=!0){if(e.length===0)return;let n=this.getLayout(),r=this.items.length===0?0:this.scrollHeight+n.gap,i=r;for(let t=0;t<e.length;t++){let i=e[t];if(i==null)throw Error(`CodeView.appendItemsInternal: missing input item`);if(this.idToItem.has(i.id))throw Error(`CodeView.addItem: duplicate id "${i.id}"`);let a=this.createItem(i,this.items.length,r);this.items.push(a),this.idToItem.set(a.item.id,a),this.instanceToItem.set(a.instance,a),a.height=vt(a),r+=a.height+n.gap}this.scrollHeight=r-n.gap,this.scrollDirty=!0,t&&(this.canSkipRenderForAppend(i)?this.syncContainerHeight():this.render())}canSkipRenderForAppend(e){return this.container!=null&&this.renderState.firstIndex!==-1&&this.pendingScrollTarget==null&&this.scrollAnimation==null&&this.layoutDirtyIndex==null&&e>this.windowSpecs.bottom}onThemeChange(){this.invalidateElementPool()}setOptions(e){if(e==null)return;this.capturePendingLayoutAnchor();let{options:t}=this,n=this.getLayout(),{itemMetricsCache:r}=this;yt(t,e)&&this.invalidateElementPool(),this.options=e;let i=this.computeMetricsCache(e.itemMetrics),a=!Ke(r,i),o=!Ke(n,this.getLayout());o&&this.syncLayout();let s=a||bt(t,e);if(s){let n=this.pendingLayoutReset;this.pendingLayoutReset={metrics:a?i:n?.metrics,resetFileLayoutCache:!0,resetDiffLayoutCache:!0,includeEstimatedDiffHeights:n?.includeEstimatedDiffHeights===!0||a||xt(t,e)}}(o||s)&&(this.markLayoutDirtyFromIndex(0),this.scrollDirty=!0),H(t,e)||this.renderOptionsRevision++,!this.isContainerManaged&&this.items.length>0&&this.render()}capturePendingLayoutAnchor(){this.root==null||this.items.length===0||this.pendingScrollTarget!=null||(this.pendingLayoutAnchor=this.getScrollAnchor(this.getScrollTop()))}render(t=!1){e.__STOP||(t?(Je(this.computeRenderRangeAndEmit),this.computeRenderRangeAndEmit()):We(this.computeRenderRangeAndEmit))}instanceChanged(e,t){let n=this.instanceToItem.get(e);if(n==null)throw Error(`CodeView.instanceChanged: An instance has changed that is not registered`);t&&this.markItemLayoutDirty(n),this.render()}getWindowSpecs(){return this.windowSpecs}getContainerElement(){return this.root}getRenderedItems(){let{firstIndex:e,lastIndex:t}=this.renderState;if(e===-1||t===-1||t<e)return[];let n=[];for(let r=e;r<=t;r++){let e=this.items[r];e?.element!=null&&(e.type===`diff`?n.push({id:e.item.id,type:`diff`,item:e.item,version:e.version,element:e.element,instance:e.instance}):n.push({id:e.item.id,type:`file`,item:e.item,version:e.version,element:e.element,instance:e.instance}))}return n}setSlotCoordinator(e){return e===this.slotCoordinator?!1:(this.slotCoordinator=e,this.slotSnapshot=void 0,!0)}getSlotSnapshot(e){return Ot(this.getRenderedItems(),e)}subscribeToScroll(e){return this.scrollListeners.add(e),()=>{this.scrollListeners.delete(e)}}getLocalTopForInstance(e){let t=this.instanceToItem.get(e);if(t==null)throw Error(`CodeView.getLocalTopForInstance: unknown virtualized instance`);return t.top}getTopForItem(e){let t=this.idToItem.get(e);if(t!=null)return t.top+this.getLayout().paddingTop}createItem(e,t,n){let{itemMetricsCache:r}=this;if(e.type===`diff`){let i=new U(this.createDiffOptions(e.id),this,r,this.workerManager,this.isContainerManaged);return{type:`diff`,item:e,version:e.version,index:t,top:n,height:0,element:void 0,renderedOptionsRevision:this.renderOptionsRevision,instance:i}}let i=new F(this.createFileOptions(e.id),this,r,this.workerManager,this.isContainerManaged);return{type:`file`,item:e,version:e.version,index:t,top:n,height:0,element:void 0,renderedOptionsRevision:this.renderOptionsRevision,instance:i}}applySelectedLines(e,t){let{selectedLines:n}=this;e==null&&n==null||e!=null&&n?.id===e.id&&me(n.range,e.range)||(n!=null&&n.id!==e?.id&&this.idToItem.get(n.id)?.instance.setSelectedLines(null,{notify:!1}),this.selectedLines=e,this.idToItem.get(e?.id??``)?.instance.setSelectedLines(e?.range??null,t))}syncSelection(){if(this.selectedLines==null)return;let e=this.idToItem.get(this.selectedLines.id);if(e==null){this.selectedLines=null;return}e.instance.setSelectedLines(this.selectedLines.range,{notify:!1})}renamePendingScrollTarget(e,t){let{pendingScrollTarget:n}=this;n==null||n.type===`position`||n.id!==e||(this.pendingScrollTarget={...n,id:t})}renamePendingLayoutAnchor(e,t){this.pendingLayoutAnchor?.id===e&&(this.pendingLayoutAnchor.id=t)}createFileOptionsPrototype(){let e={};for(let t of at)Y(e,t,()=>this.options[t]);Y(e,`stickyHeader`,()=>this.options.stickyHeaders),Y(e,`collapsed`,e=>this.getItemOptions(ut(e),`file`)?.item.collapsed===!0);for(let t of ot)this.defineItemSharedCallback(e,`file`,t);for(let t of st)this.defineItemSelectionCallback(e,`file`,t);return e}createDiffOptionsPrototype(){let e={};for(let t of it)Y(e,t,()=>this.options[t]);Y(e,`stickyHeader`,()=>this.options.stickyHeaders),Y(e,`hunkSeparators`,()=>this.options.hunkSeparators),Y(e,`collapsed`,e=>this.getItemOptions(ut(e),`diff`)?.item.collapsed===!0);for(let t of ot)this.defineItemSharedCallback(e,`diff`,t);for(let t of st)this.defineItemSelectionCallback(e,`diff`,t);return e}createFileOptions(e){let t=Object.create(this.fileOptionsPrototype);return lt(t,{id:e}),t}createDiffOptions(e){let t=Object.create(this.diffOptionsPrototype);return lt(t,{id:e}),t}updateItemOptionsId(e,t){ut(e).id=t}getItemOptions(e,t){let n=this.idToItem.get(e.id);if(!(n==null||n.type!==t))return n}defineItemSharedCallback(e,t,n){Y(e,n,e=>{if(this.options[n]==null)return;let r=ut(e),i=r.callbackCache??={},a=i[n];return a??(a=((...e)=>{let i=this.getItemOptions(r,t);if(i==null)return;let a=this.options[n];return a?.(...e,i)}),i[n]=a),a})}defineItemSelectionCallback(e,t,n){Y(e,n,e=>{if(this.options.enableLineSelection!==!0)return;let r=ut(e),i=r.callbackCache??={},a=i[n];return a??(a=(e=>{let i=this.getItemOptions(r,t);if(i==null)return;let a=e==null?null:{id:i.item.id,range:e};this.options.controlledSelection!==!0&&(e!=null||this.selectedLines?.id===i.item.id)&&this.applySelectedLines(a,{notify:!1}),this.options.onSelectedLinesChange?.(a);let o=this.options[n];return o?.(e,i)}),i[n]=a),a})}markLayoutDirtyFromIndex(e){this.layoutDirtyIndex=Math.min(this.layoutDirtyIndex??e,e)}markItemLayoutDirty(e){if(this.items[e.index]!==e)throw Error(`CodeView.markItemLayoutDirty: unknown item id "${e.item.id}"`);this.markLayoutDirtyFromIndex(e.index)}tryAppendItems(e){if(e.length<=this.items.length)return!1;for(let t=0;t<this.items.length;t++){let n=this.items[t];if(n==null)throw Error(`CodeView.tryAppendItems: missing existing item`);let r=e[t];if(r==null||n.item.id!==r.id||n.type!==r.type)return!1}for(let t=0;t<this.items.length;t++){let n=this.items[t];if(n==null)throw Error(`CodeView.tryAppendItems: missing existing item`);let r=e[t];if(r==null)throw Error(`CodeView.tryAppendItems: append candidate missing prefix item`);this.syncItemRecord(n,r)&&this.markLayoutDirtyFromIndex(t)}return this.appendItemsInternal(e.slice(this.items.length),!1),this.scrollDirty=!0,this.render(),!0}reconcileItems(e){let{items:t,idToItem:n}=this,r=new Set(t),i=[],a=new Map,o=new Map,s;for(let c=0;c<e.length;c++){let l=e[c];if(l==null)throw Error(`CodeView.reconcileItems: missing input item`);if(a.has(l.id))throw Error(`CodeView.setItems: duplicate id "${l.id}"`);let u=n.get(l.id),d=u!=null&&u.type===l.type?u:this.createItem(l,c,0);d.index=c,u!=null&&u.type===l.type?(r.delete(u),this.syncItemRecord(d,l)&&(s=Math.min(s??c,c))):s=Math.min(s??c,c),t[c]!==d&&(s=Math.min(s??c,c)),i.push(d),a.set(l.id,d),o.set(d.instance,d)}for(let e=0;e<t.length;e++){let n=t[e];if(n==null||!r.has(n))continue;this.releaseRenderedItem(n);let a=Math.max(i.length-1,0);s=Math.min(s??a,a)}s!=null&&(this.items=i,this.idToItem=a,this.instanceToItem=o,this.renderState.firstIndex>=i.length?this.resetRenderState():this.renderState.lastIndex>=i.length&&(this.renderState.lastIndex=i.length-1),this.markLayoutDirtyFromIndex(s),this.scrollDirty=!0,this.render())}syncItemRecord(e,t){if(e.type!==t.type)throw Error(`CodeView.syncItemRecord: type mismatch for id "${t.id}"`);return e.version===t.version?!1:(e.item=t,e.version=t.version,e.renderedOptionsRevision=-1,!0)}getMaxScrollTopForHeight(e){let{paddingBottom:t,paddingTop:n}=this.getLayout();return Math.max(n+e+t-this.getHeight(),0)}getMaxScrollTop(){return this.getMaxScrollTopForHeight(this.getScrollHeight())}shouldRebaseScroll(){return this.getMaxScrollTop()>gt}getPagedScrollHeight(){return this.shouldRebaseScroll()?Math.min(this.getScrollHeight(),pt):this.getScrollHeight()}getMaxPagedScrollTop(){return this.getMaxScrollTopForHeight(this.getPagedScrollHeight())}clampPagedScrollTop(e){let t=this.getMaxPagedScrollTop();return Math.max(0,Math.min(e,t))}clampScrollTop(e){let t=this.getMaxScrollTop();return Math.max(0,Math.min(e,t))}getMaxScrollPageOffset(){return Math.max(this.getMaxScrollTop()-this.getMaxPagedScrollTop(),0)}clampScrollPageOffset(e){let t=this.getMaxScrollPageOffset();return Math.max(0,Math.min(e,t))}resolveScrollPageWindow(e,t){let n=J(this.clampPagedScrollTop(t)),r=this.clampScrollPageOffset(e-n);return n=J(this.clampPagedScrollTop(e-r)),r=this.clampScrollPageOffset(e-n),{pagedScrollTop:n,scrollPageOffset:r}}resolvePagedScrollPosition(e){if(!this.shouldRebaseScroll())return{pagedScrollTop:this.clampPagedScrollTop(e),scrollPageOffset:0};let t=this.clampScrollPageOffset(this.scrollPageOffset),n=e-t,r=this.getMaxPagedScrollTop(),i=this.getMaxScrollPageOffset(),a=n>gt&&t<i,o=n<mt&&t>0;return n<0||n>r||a||o?this.resolveScrollPageWindow(e,o?Math.min(X,r):ht):{pagedScrollTop:J(this.clampPagedScrollTop(n)),scrollPageOffset:t}}needsScrollPageUpdate(e){let t=J(this.clampScrollTop(e)),{scrollPageOffset:n}=this.resolvePagedScrollPosition(t);return n!==this.scrollPageOffset}getPagedLayoutTop(e){return this.shouldRebaseScroll()?Math.max(e-this.scrollPageOffset,0):e}getStickyHeaderOffset(){return this.options.stickyHeaders===!0&&this.options.disableFileHeader!==!0?this.itemMetricsCache.diffHeaderHeight:0}getScrollTargetRect(e){let t=this.idToItem.get(e.id);if(t==null){console.warn(`CodeView.scrollTo: unknown item id "${e.id}"`);return}if(e.type===`item`)return{top:t.top,height:t.height};if(e.type===`range`){let n=this.getRangeScrollPosition(t,e);if(n==null){console.warn(`CodeView.scrollTo: unable to resolve range ${Ct(e.range)} for item "${e.id}"`);return}return{top:t.top+n.top,height:n.height}}let n=this.getLineScrollPosition(t,e);if(n==null){console.warn(`CodeView.scrollTo: unable to resolve line ${e.lineNumber} for item "${e.id}"`);return}return{top:t.top+n.top,height:n.height}}normalizeScrollTarget(e){if(e.type===`position`||e.align!==`nearest`)return e;let t=this.getScrollTargetRect(e);if(t==null)return;let n=e.offset??0,r=this.getLayout().paddingTop+t.top,i=r+t.height,a=this.getScrollTop(),o=a+(e.type===`line`||e.type===`range`?this.getStickyHeaderOffset():0),s=a+this.getHeight();if(!(r-n<=o&&i+n>=s)){if(r-n<o)return{...e,align:`start`};if(i+n>s)return{...e,align:`end`}}}resolveScrollTargetTop(e){if(e.type===`position`){let t=this.clampScrollTop(e.position);return t===e.position?this.clampScrollTop(e.position-this.getStickyHeaderOffset()):t}let t=this.idToItem.get(e.id);if(t==null){console.warn(`CodeView.scrollTo: unknown item id "${e.id}"`);return}if(e.type===`item`)return this.clampScrollTop(this.resolveAlignedScrollPosition(t.top,t.height,e.align,e.offset));if(e.type===`range`){let n=this.getRangeScrollPosition(t,e);if(n==null){console.warn(`CodeView.scrollTo: unable to resolve range ${Ct(e.range)} for item "${e.id}"`);return}return this.clampScrollTop(this.resolveAlignedScrollPosition(t.top+n.top,n.height,e.align,e.offset,this.getStickyHeaderOffset()))}let n=this.getLineScrollPosition(t,e);if(n==null){console.warn(`CodeView.scrollTo: unable to resolve line ${e.lineNumber} for item "${e.id}"`);return}return this.clampScrollTop(this.resolveAlignedScrollPosition(t.top+n.top,n.height,e.align,e.offset,this.getStickyHeaderOffset()))}resolveAlignedScrollPosition(e,t,n,r=0,i=0){e+=this.getLayout().paddingTop;let a=this.getHeight();return n===`center`&&t+r<a?e-(a-t)/2+r:n===`end`?e-(a-t)+r:e-i-r}getLineScrollPosition(e,t){return e.type===`diff`?e.instance.getLinePosition(t.lineNumber,t.side):e.instance.getLinePosition(t.lineNumber)}getRangeScrollPosition(e,t){let{range:n}=t,r=this.getLineScrollPosition(e,{type:`line`,id:t.id,lineNumber:n.start,side:n.side}),i=this.getLineScrollPosition(e,{type:`line`,id:t.id,lineNumber:n.end,side:n.endSide??n.side});if(r==null||i==null)return;let a=r.top,o=a+r.height,s=i.top,c=s+i.height,l=Math.min(a,s);return{top:l,height:Math.max(o,c)-l}}computeTargetScrollTopForFrame(e,t){if(this.pendingScrollTarget==null)return e;let n=this.resolveScrollTargetTop(this.pendingScrollTarget);if(n==null)return e;let{scrollAnimation:r}=this;return r==null?n:this.computeSpringStep(r,n,t).position}computeSpringStep(e,t,n){let r=Math.max(0,n-e.lastTimestamp),{omega:i}=this.getSmoothScrollSettings(),a=Math.exp(-i*r),o=e.position-t,s=e.velocity+i*o;return{position:t+(o+s*r)*a,velocity:(s*(1-i*r)-i*o)*a}}advanceScrollAnimation(e,t){if(this.pendingScrollTarget==null)return;let n=this.resolveScrollTargetTop(this.pendingScrollTarget);if(n==null){this.pendingScrollTarget=void 0,this.scrollAnimation=void 0;return}let r=this.scrollAnimation;if(r==null)return n;r.position+=t;let{position:i,velocity:a}=this.computeSpringStep(r,n,e);r.lastTimestamp=e,r.position=i,r.velocity=a;let{positionEpsilon:o,velocityEpsilon:s}=this.getSmoothScrollSettings();return Math.abs(n-i)<=o&&Math.abs(a)<=s?(r.position=n,r.velocity=0,this.scrollAnimation=void 0,n):r.position}computeRenderRangeAndEmit=(t=performance.now())=>{if(e.__STOP||this.container==null)return;let n=this.getHeight(),r=this.getScrollTop(),i=r,a=this.pendingLayoutAnchor!=null,o=this.getScrollAnchor(i);if(this.layoutDirtyIndex!=null&&(this.recomputeLayout(this.layoutDirtyIndex,this.pendingLayoutReset),this.layoutDirtyIndex=void 0,this.pendingLayoutReset=void 0,a=!0),a&&o!=null){let e=this.resolveAnchoredScrollTop(o);if(e!=null){let t=e-i;i=e,this.scrollAnimation!=null&&(this.scrollAnimation.position+=t)}}a&&(i=this.clampScrollTop(i),this.syncContainerHeight());let s=this.computeTargetScrollTopForFrame(i,t),c=!a&&(this.renderState.scrollTop===-1||Math.abs(s-this.renderState.scrollTop)>n+this.config.overscrollSize*2);c&&(o=void 0),this.windowSpecs=R({scrollTop:s,height:n,scrollHeight:this.getScrollHeight(),fitPerfectly:c,fitPerfectlyOverscroll:this.getFitPerfectlyOverscroll(),overscrollSize:this.config.overscrollSize});let l=r;(this.pendingScrollTarget!=null&&s!==l||this.needsScrollPageUpdate(s))&&(this.applyScrollFix(s,l,this.windowSpecs),l=s);let{top:u,bottom:d}=this.windowSpecs,{firstIndex:f,lastIndex:p}=this.renderState;if(f>=0)for(let e=f;e<=p;e++){let t=this.items[e];if(t==null)throw Error(`CodeView.computeRenderRangeAndEmit: No item at index: ${e}`);t.top>u-t.height&&t.top<=d||this.releaseRenderedItem(t)}let m,h=new Set,g=this.findFirstVisibleIndex(u),_=this.findLastVisibleIndex(d);for(let e=g;e<=_;e++){let t=this.items[e];if(t==null)throw Error(`CodeView.computeRenderRangeAndEmit: missing item`);let{instance:n}=t;t.element==null?(t.element=this.acquireElement(),Et(this.stickyContainer,t.element,m),n.virtualizedSetup(),Tt(t,t.element)&&(t.renderedOptionsRevision=this.renderOptionsRevision,h.add(t)),m=t.element):(Et(this.stickyContainer,t.element,m),Tt(t,void 0,t.renderedOptionsRevision!==this.renderOptionsRevision)&&(t.renderedOptionsRevision=this.renderOptionsRevision,h.add(t)),m=t.element)}this.renderState.firstIndex=g<=_?g:-1,this.renderState.lastIndex=_,this.flushSlotCoordinator(),this.reconcileRenderedItems(h),this.syncContainerHeight(),this.updateStickyPositioning();let v=o==null?void 0:this.resolveAnchoredScrollTop(o);o===this.pendingLayoutAnchor&&(this.pendingLayoutAnchor=void 0);let y=v==null?0:v-i,b=s,x=!1;if(this.pendingScrollTarget!=null){let e=this.advanceScrollAnimation(t,y);e==null?b=i:(b=e,x=!0)}else b=v??s;b!==l&&(this.applyScrollFix(b,l,this.windowSpecs),l=b),x&&this.pendingScrollTarget!=null&&this.isPendingTargetSettled(this.pendingScrollTarget)&&(this.pendingScrollTarget=void 0,this.scrollAnimation=void 0),this.renderState.scrollTop=J(l),this.flushManagers(h),this.validateStickyContainerHeight(),this.fixContainerFocus(),(c||this.scrollAnimation!=null)&&this.render()};flushManagers(e){for(let t of e)t.instance.flushManagers()}syncContainerHeight(){let e=this.getPagedScrollHeight();this.container==null||this.containerHeight===e||(this.container.style.height=`${e}px`,this.containerHeight=e)}getStickyBounds(e){let{firstIndex:t,lastIndex:n}=e==null?this.renderState:{firstIndex:this.findFirstVisibleIndex(e.top),lastIndex:this.findLastVisibleIndex(e.bottom)};if(t===-1||n===-1||t>n)return;let r=this.items[t]?.instance.getAdvancedStickySpecs(e),i=this.items[n]?.instance.getAdvancedStickySpecs(e);if(!(r==null||i==null))return{stickyTop:this.getPagedLayoutTop(Math.max(r.topOffset,0)),stickyBottom:this.getPagedLayoutTop(i.topOffset+i.height)}}applyStickyPositioning({stickyTop:e,stickyBottom:t}){let n=this.getHeight(),{itemMetricsCache:r}=this,i=t-e;this.renderState.stickyHeight=i,this.renderState.stickyTop=e,this.renderState.stickyBottom=t,this.stickyOffset.style.height=`${e}px`;let a=(Math.random()*r.lineHeight>>0)*-1,o=-Math.max(i+a,0)+n;this.stickyContainer.style.top=`${o}px`,this.stickyContainer.style.bottom=`${o+r.diffHeaderHeight}px`}syncPagedScrollScaffolding(e){this.syncContainerHeight();let t=this.getStickyBounds(e);t!=null&&this.applyStickyPositioning(t)}reconcileRenderedItems(e){let{firstIndex:t,lastIndex:n}=this.renderState;if(t===-1)return;let r=-1,i=!1;for(let a=t;a<this.items.length&&!(!i&&a>n);a++){let t=this.items[a];if(t==null)throw Error(`CodeView.reconcileRenderedItems: Invalid item`);r===-1?r=t.top:t.top!==r&&(t.top=r,t.instance.syncVirtualizedTop(),i=!0),(e==null?a<=n:e.has(t))&&(t.instance.reconcileHeights()&&(i=!0,t.height=t.instance.getVirtualizedHeight()),this.validateRenderedItemHeight(t)),r+=t.instance.getVirtualizedHeight(),a<this.items.length-1&&(r+=this.getLayout().gap)}i&&r!=null&&(this.scrollDirty=!0,this.scrollHeight=r)}updateStickyPositioning(){let e=this.getStickyBounds();if(e==null)return;let{stickyTop:t,stickyBottom:n}=e;n-t===this.renderState.stickyHeight&&t===this.renderState.stickyTop&&n===this.renderState.stickyBottom||this.applyStickyPositioning(e)}handleScroll=()=>{e.__STOP||(this.suspendScrollInteractions(),this.scrollDirty=!0,this.notifyScroll(),this.render())};clearPendingScroll=()=>{this.pendingScrollTarget=void 0,this.pendingLayoutAnchor=void 0,this.scrollAnimation=void 0};handleResize=e=>{for(let t of e)if(t.target===this.stickyContainer){if(t.borderBoxSize[0].blockSize!==this.renderState.stickyHeight){let e=this.getScrollTop(),t=this.getScrollAnchor(e);this.reconcileRenderedItems(),this.updateStickyPositioning();let n=t==null?void 0:this.resolveAnchoredScrollTop(t);if(n!=null){let t=n-e;this.applyScrollFix(n,e,this.windowSpecs),this.scrollAnimation!=null&&(this.scrollAnimation.position+=t)}this.pendingScrollTarget!=null&&this.isPendingTargetSettled(this.pendingScrollTarget)&&(this.pendingScrollTarget=void 0,this.scrollAnimation=void 0)}}else this.scrollDirty=!0,this.heightDirty=!0,this.render()};getScrollAnchorViewportTop(e,t){return e<t?t+this.getStickyHeaderOffset():t}getScrollAnchor(e){if(this.pendingLayoutAnchor!=null)return this.pendingLayoutAnchor;let{firstIndex:t,lastIndex:n,stickyTop:r,stickyBottom:i}=this.renderState;if(t===-1||n===-1)return;let a=this.getHeight();if(!(r===-1||i===-1))for(let r=t;r<=n;r++){let t=this.items[r];if(t==null)continue;let n=this.getLayout().paddingTop+t.top;if(n+t.height<=e)continue;if(n>=e+a)break;if(n>=e)return{type:`item`,id:t.item.id,viewportOffset:n-e};let i=this.getScrollAnchorViewportTop(n,e)-n,o=t.instance.getNumericScrollAnchor(i);if(o!=null){let r=n+o.top;return{type:`line`,id:t.item.id,lineNumber:o.lineNumber,side:o.side,viewportOffset:r-e}}}}resolveAnchoredScrollTop(e){let t=this.idToItem.get(e.id);if(t==null)return;let{paddingTop:n}=this.getLayout();if(e.type===`item`){let r=n+t.top;return this.clampScrollTop(r-e.viewportOffset)}let r=t.type===`diff`?t.instance.getLinePosition(e.lineNumber,e.side):t.instance.getLinePosition(e.lineNumber);if(r==null)return;let i=n+t.top+r.top;return this.clampScrollTop(i-e.viewportOffset)}applyScrollFix(e,t,n){if(this.root==null)return;let r=J(this.clampScrollTop(e)),i=J(t),{scrollPageOffset:a}=this,o=J(this.clampPagedScrollTop(i-a)),{pagedScrollTop:s,scrollPageOffset:c}=this.resolvePagedScrollPosition(r),l=s,u=a!==c;r===this.renderState.scrollTop&&r===i&&l===o&&!u||(this.suspendScrollInteractions(),(l!==o||u)&&(this.scrollPageOffset=c,this.syncPagedScrollScaffolding(n)),l!==o&&this.root.scrollTo({top:l,behavior:`instant`}),this.renderState.scrollTop=r,this.scrollTop=r,this.scrollDirty=!1)}isPendingTargetSettled(e){let t=this.resolveScrollTargetTop(e);return t==null?!0:J(this.getScrollTop())===J(t)}getScrollTop(){if(!this.scrollDirty)return this.scrollTop;this.scrollDirty=!1;let e=this.root?.scrollTop??0;return this.scrollTop=this.clampScrollTop(e+this.scrollPageOffset),this.scrollTop}getHeight(){return this.heightDirty?(this.heightDirty=!1,this.height=this.root?.getBoundingClientRect().height??0,this.height):this.height}getScrollHeight(){return this.scrollHeight}flushSlotCoordinator(){if(this.slotCoordinator==null)return;let{onSnapshotChange:e}=this.slotCoordinator,t=Ot(this.getRenderedItems(),this.slotCoordinator);kt(this.slotSnapshot,t)||(this.slotSnapshot=t,e(t))}notifyScroll(){if(this.scrollListeners.size===0)return;let e=this.getScrollTop();for(let t of this.scrollListeners)t(e,this)}findFirstVisibleIndex(e){let t=0,n=this.items.length-1,r=this.items.length;for(;t<=n;){let i=t+n>>1,a=this.items[i];if(a==null)throw Error(`CodeView.findFirstVisibleIndex: invalid item index`);a.top+a.height>e?(r=i,n=i-1):t=i+1}return r}findLastVisibleIndex(e){let t=0,n=this.items.length-1,r=-1;for(;t<=n;){let i=t+n>>1,a=this.items[i];if(a==null)throw Error(`CodeView.findLastVisibleIndex: invalid item index`);a.top<=e?(r=i,t=i+1):n=i-1}return r}recomputeLayout(e=0,t){if(this.items.length===0){this.scrollHeight=0;return}let n=this.getLayout(),r=0;if(e>0){let t=this.items[e-1];if(t==null)throw Error(`CodeView.recomputeLayout: invalid dirty index`);r=t.top+t.height+n.gap}for(let i=e;i<this.items.length;i++){let e=this.items[i];if(e==null)throw Error(`CodeView.recomputeLayout: invalid item index`);e.top=r,e.type===`diff`?e.height=e.instance.prepareCodeViewItem(e.item.fileDiff,r,t,e.item.annotations??[]):e.height=e.instance.prepareCodeViewItem(e.item.file,r,t,e.item.annotations??[]),r+=e.height,i<this.items.length-1&&(r+=n.gap)}r!==this.scrollHeight&&(this.scrollDirty=!0),this.scrollHeight=r}resetRenderState(){this.renderState.scrollTop=-1,this.renderState.firstIndex=-1,this.renderState.lastIndex=-1,this.renderState.stickyHeight=0,this.renderState.stickyTop=-1,this.renderState.stickyBottom=-1}getFitPerfectlyOverscroll(){return this.getLayout().gap+this.itemMetricsCache.diffHeaderHeight}};function vt(e){return e.instance.cleanUp(!0),e.type===`diff`?e.instance.prepareCodeViewItem(e.item.fileDiff,e.top,void 0,e.item.annotations??[]):e.instance.prepareCodeViewItem(e.item.file,e.top,void 0,e.item.annotations??[])}function yt(e,t){return!Ye(e.theme??Ve,t.theme??Ve)||(e.themeType??`system`)!==(t.themeType??`system`)||e.unsafeCSS!==t.unsafeCSS}function bt(e,t){return(e.overflow??`scroll`)!==(t.overflow??`scroll`)||(e.disableLineNumbers??!1)!==(t.disableLineNumbers??!1)||(e.disableFileHeader??!1)!==(t.disableFileHeader??!1)||e.unsafeCSS!==t.unsafeCSS||(e.diffStyle??`split`)!==(t.diffStyle??`split`)||(e.diffIndicators??`bars`)!==(t.diffIndicators??`bars`)||(e.hunkSeparators??`line-info`)!==(t.hunkSeparators??`line-info`)||(e.expandUnchanged??!1)!==(t.expandUnchanged??!1)||(e.collapsedContextThreshold??1)!==(t.collapsedContextThreshold??1)}function xt(e,t){return(e.disableFileHeader??!1)!==(t.disableFileHeader??!1)||(e.hunkSeparators??`line-info`)!==(t.hunkSeparators??`line-info`)||(e.expandUnchanged??!1)!==(t.expandUnchanged??!1)||(e.collapsedContextThreshold??1)!==(t.collapsedContextThreshold??1)}function St(e){return e instanceof SVGElement?!0:Ge(e)&&(e.hasAttribute(`data-core-css`)||e.hasAttribute(`data-theme-css`)||e.hasAttribute(`data-unsafe-css`))}function Ct(e){let t=wt(e.start,e.side),n=wt(e.end,e.endSide??e.side);return t===n?t:`${t}-${n}`}function wt(e,t){return t==null?`${e}`:`${t===`deletions`?`D`:`A`}${e}`}function Tt(e,t,n=!1){return e.type===`diff`?e.instance.render({deferManagers:!0,fileContainer:t,fileDiff:e.item.fileDiff,forceRender:n,lineAnnotations:e.item.annotations??[]}):e.instance.render({deferManagers:!0,fileContainer:t,file:e.item.file,forceRender:n,lineAnnotations:e.item.annotations??[]})}function Et(e,t,n){if(n==null){e.firstChild!==t&&e.prepend(t);return}n.nextSibling!==t&&n.after(t)}function Dt(e){return(e.annotations?.length??0)>0}function Ot(e,{hasHeaderRenderers:t,hasAnnotationRenderer:n,hasGutterRenderer:r}){if(e.length===0)return;if(t||r)return e;if(!n)return;let i=[];for(let t of e)Dt(t.item)&&i.push(t);return i.length>0?i:void 0}function kt(e,t){if(e==null||t==null)return e===t;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){let r=e[n],i=t[n];if(r==null||i==null||r.id!==i.id||r.type!==i.type||r.element!==i.element||r.version!==i.version)return!1}return!0}function At(e,t){if(e==null||t==null)return e===t;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){let r=e[n],i=t[n];if(r==null||i==null||r.id!==i.id||r.type!==i.type||r.element!==i.element||r.version!==i.version)return!1}return!0}var Q=e(r(),1),$=n(),jt=e(t(),1),Mt=typeof window>`u`?Q.useEffect:Q.useLayoutEffect;function Nt(e){return{instance:void 0,items:void 0,controlled:e,managedOptions:void 0,disableFlushSync:!1,slotCoordinator:void 0}}function Pt(e,t){let{className:n,containerRef:r,disableWorkerPool:i=!1,initialItems:a,items:o,onScroll:s,onSelectedLinesChange:c,options:l,renderAnnotation:u,renderCustomHeader:d,renderGutterUtility:f,renderHeaderMetadata:p,renderHeaderPrefix:m,selectedLines:h,style:g}=e,_=o!==void 0,v=(0,Q.useContext)(_e),y=(0,Q.useRef)(Nt(_)),b=d!=null,x=u!=null,S=f!=null,C=b||m!=null||p!=null,ee=C||x||S,w=K(e=>{c?.(e)}),T=h!==void 0,E=(0,Q.useMemo)(()=>Bt({options:l,hasCustomHeader:b,hasGutterRenderer:S,onSelectedLinesChange:c==null?void 0:w,controlledSelection:T}),[l,b,S,c,w,T]),[D]=(0,Q.useState)(()=>zt()),[,te]=(0,Q.useState)({}),ne=K(e=>{y.current.instance!=null&&(e==null||e!==y.current.instance.getContainerElement())&&(y.current.instance.cleanUp(),D.publish(void 0),y.current=Nt(_)),e!=null&&e!==y.current.instance?.getContainerElement()&&(y.current.instance=new _t(E,i?void 0:v,!0),y.current.instance.setup(e)),typeof r==`function`?r(e):r!=null&&(r.current=e)}),O=K(e=>{y.current.disableFlushSync?D.publish(e):(0,jt.flushSync)(()=>{D.publish(e)})}),k=(0,Q.useMemo)(()=>{if(!(!C&&!x&&!S))return{hasHeaderRenderers:C,hasAnnotationRenderer:x,hasGutterRenderer:S,onSnapshotChange:O}},[O,x,S,C]);return Mt(()=>s==null?void 0:y.current.instance?.subscribeToScroll(s)),Mt(()=>{let{instance:e,controlled:t,items:n,managedOptions:r,slotCoordinator:i}=y.current;if(e!=null)try{y.current.disableFlushSync=!0;let s=!1;if(H(E,r)||(y.current.managedOptions=E,e.setOptions(E),s=!0),t!==_){console.error(`CodeView: cannot switch between controlled and uncontrolled modes. Remount with a new key instead.`);return}if(_)o!==n&&(Lt(n,o)?y.current.items=o:It(n,o)?(y.current.items=o,e.addItems(o.slice(n.length))):(y.current.items=o,e.setItems(o),s=!0));else if(n==null){let t=a??[];y.current.items=t,t.length>0&&(e.setItems(t),s=!0)}h!==void 0&&e.setSelectedLines(h,{notify:!1});let c=e.setSlotCoordinator(k),l=!1;k!==i&&((k==null||i==null)&&(l=!0),y.current.slotCoordinator=k),(s||c)&&e.render(!0),c&&k==null&&D.publish(void 0),l&&te({})}finally{y.current.disableFlushSync=!1}}),(0,Q.useImperativeHandle)(t,()=>({addItems(e){let{controlled:t,instance:n}=y.current;Rt(t,`addItems`),n==null?console.error(`CodeView.addItems: no valid instance to append items with`,e):n.addItems(e)},getItem(e){let{instance:t}=y.current;if(t==null){console.error(`CodeView.getItem: no valid instance exists`,e);return}else return t.getItem(e)},updateItem(e){let{controlled:t,instance:n}=y.current;return Rt(t,`updateItem`),n==null?(console.error(`CodeView.updateItem: no valid instance to update item with`,e),!1):n.updateItem(e)},updateItemId(e,t){let{controlled:n,instance:r}=y.current;return Rt(n,`updateItemId`),r==null?(console.error(`CodeView.updateItemId: no valid instance to update item id with`,e,t),!1):r.updateItemId(e,t)},scrollTo(e){let{instance:t}=y.current;t==null?console.error(`CodeView.scrollTo: no valid instance to scroll with`,e):t.scrollTo(e)},setSelectedLines(e){let{instance:t}=y.current;t==null?console.error(`CodeView.setSelectedLines: no valid instance to update selection with`,e):(t.setSelectedLines(e,{notify:!1}),w(e))},getSelectedLines(){let{instance:e}=y.current;return e==null?(console.error(`CodeView.getSelectedLines: no valid instance exists`),null):e.getSelectedLines()},clearSelectedLines(){let{instance:e}=y.current;e==null?console.error(`CodeView.clearSelectedLines: no valid instance to update selection with`):(e.clearSelectedLines({notify:!1}),w(null))},getInstance(){return y.current.instance}}),[w]),(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{ref:ne,className:n,style:g}),ee&&(0,$.jsx)(Vt,{managedContentStore:D,renderCustomHeader:d,renderHeaderPrefix:m,renderHeaderMetadata:p,renderAnnotation:u,renderGutterUtility:f})]})}var Ft=(0,Q.forwardRef)(Pt);function It(e,t){if(e==null||t.length<=e.length)return!1;if(e.length===0)return!0;for(let n=0;n<e.length;n++)if(t[n]!==e[n])return!1;return!0}function Lt(e,t){if(e==null||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function Rt(e,t){if(e)throw Error(`CodeView.${t} cannot be used when CodeView is controlled. Use initialItems for imperative item updates.`)}function zt(){let e,t=new Set;return{getSnapshot(){return e},publish(n){if(!At(e,n)){e=n;for(let e of t)e()}},subscribe(e){return t.add(e),()=>{t.delete(e)}}}}function Bt({options:e,hasCustomHeader:t,hasGutterRenderer:n,onSelectedLinesChange:r,controlledSelection:i}){return!t&&!n&&r==null&&!i?e:(e={...e,controlledSelection:i,onSelectedLinesChange:r},t&&(e.renderCustomHeader=Ut),n&&(e.renderGutterUtility=Ut),e)}var Vt=(0,Q.memo)(function({managedContentStore:e,renderCustomHeader:t,renderHeaderPrefix:n,renderHeaderMetadata:r,renderAnnotation:i,renderGutterUtility:a}){let o=K(t=>e.subscribe(t)),s=K(()=>e.getSnapshot());return(0,Q.useSyncExternalStore)(o,s,s)?.map(e=>(0,jt.createPortal)(Ht({renderedItem:e,renderCustomHeader:t,renderHeaderPrefix:n,renderHeaderMetadata:r,renderAnnotation:i,renderGutterUtility:a}),e.element,e.id))});function Ht({renderedItem:e,renderCustomHeader:t,renderHeaderPrefix:n,renderHeaderMetadata:r,renderAnnotation:i,renderGutterUtility:a}){if(e.type===`diff`){let{item:o,instance:s}=e;return z({fileDiff:o.fileDiff,renderCustomHeader:t==null?void 0:()=>t(o),renderHeaderPrefix:n==null?void 0:()=>n(o),renderHeaderMetadata:r==null?void 0:()=>r(o),renderAnnotation:i==null?void 0:e=>i(e,o),lineAnnotations:o.annotations,renderGutterUtility:a==null?void 0:e=>a(e,o),getHoveredLine:s.getHoveredLine})}else{let{item:o,instance:s}=e;return de({file:o.file,renderCustomHeader:t==null?void 0:()=>t(o),renderHeaderPrefix:n==null?void 0:()=>n(o),renderHeaderMetadata:r==null?void 0:()=>r(o),renderAnnotation:i==null?void 0:e=>i(e,o),lineAnnotations:o.annotations,renderGutterUtility:a==null?void 0:e=>a(e,o),getHoveredLine:s.getHoveredLine})}}function Ut(){}function Wt({threadRef:e,filePath:t,activeCwd:n,openInEditor:r}){if(e){S.getState().openFile(e,t);return}r(n?C(t,n):t)}var Gt=i();function Kt(e,t){let n=(0,Gt.c)(4),r=I(e,t),i;return n[0]!==r.data||n[1]!==r.error||n[2]!==r.isPending?(i={data:r.data,error:r.error,isPending:r.isPending},n[0]=r.data,n[1]=r.error,n[2]=r.isPending,n[3]=i):i=n[3],i}function qt(e,t){return e.length>0&&e.every(e=>t.has(e))}function Jt(e,t){return qt(e,t)?new Set:new Set(e)}function Yt(e){return h(`flex items-center justify-between gap-2 px-4`,L&&e!==`sheet`&&e!==`embedded`?`drag-region h-[52px] border-b border-border wco:h-[env(titlebar-area-height)] wco:pr-[calc(100vw-env(titlebar-area-width)-env(titlebar-area-x)+1em)]`:`surface-subheader`)}function Xt(e){let t=(0,Gt.c)(10),n=L&&e.mode!==`sheet`&&e.mode!==`embedded`,r=e.mode===`inline`?`w-[42vw] min-w-[360px] max-w-[560px] shrink-0 border-l border-border`:`w-full`,i;t[0]===r?i=t[1]:(i=h(`flex h-full min-w-0 flex-col bg-background`,r),t[0]=r,t[1]=i);let a;t[2]!==e.header||t[3]!==e.mode||t[4]!==n?(a=n?(0,$.jsx)(`div`,{className:Yt(e.mode),children:e.header}):(0,$.jsx)(`div`,{className:Yt(e.mode),"data-surface-subheader":!0,children:e.header}),t[2]=e.header,t[3]=e.mode,t[4]=n,t[5]=a):a=t[5];let o;return t[6]!==e.children||t[7]!==i||t[8]!==a?(o=(0,$.jsxs)(`div`,{className:i,children:[a,e.children]}),t[6]=e.children,t[7]=i,t[8]=a,t[9]=o):o=t[9],o}function Zt(e){let t=(0,Gt.c)(7),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,$.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border/50 px-3 py-2`,children:[(0,$.jsx)(B,{className:`h-4 w-32 rounded-full`}),(0,$.jsx)(B,{className:`ml-auto h-4 w-20 rounded-full`})]}),t[0]=n):n=t[0];let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(B,{className:`h-3 w-full rounded-full`}),(0,$.jsx)(B,{className:`h-3 w-full rounded-full`}),(0,$.jsx)(B,{className:`h-3 w-10/12 rounded-full`}),(0,$.jsx)(B,{className:`h-3 w-11/12 rounded-full`}),(0,$.jsx)(B,{className:`h-3 w-9/12 rounded-full`})]}),t[1]=r):r=t[1];let i;t[2]===e.label?i=t[3]:(i=(0,$.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-4 px-3 py-4`,children:[r,(0,$.jsx)(`span`,{className:`sr-only`,children:e.label})]}),t[2]=e.label,t[3]=i);let a;return t[4]!==e.label||t[5]!==i?(a=(0,$.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col p-2`,children:(0,$.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden rounded-md border border-border/60 bg-card/25`,role:`status`,"aria-live":`polite`,"aria-label":e.label,children:[n,i]})}),t[4]=e.label,t[5]=i,t[6]=a):a=t[6],a}var Qt=[];function $t(e){return(e.endSide??e.side)===`deletions`?`deletions`:`additions`}function en(e,t,n){let r=$t(t),i=e.findIndex(e=>e.side===r&&e.lineNumber===t.end);return i<0?[...e,{side:r,lineNumber:t.end,metadata:{entries:[n]}}]:e.map((e,t)=>t===i?{...e,metadata:{entries:[...e.metadata.entries,n]}}:e)}function tn(e){let t=(0,Gt.c)(50),{files:n,sectionId:r,sectionTitle:i,composerDraftTarget:a,options:o,viewerRef:s,className:c,renderHeaderPrefix:l}=e,u=ee(sn),d=ee(on),f;t[0]===a?f=t[1]:(f=e=>e.getComposerDraft(a)?.reviewComments??Qt,t[0]=a,t[1]=f);let p=ee(f),[m,h]=(0,Q.useState)(null),[g,_]=(0,Q.useState)(null),v;t[2]===n?v=t[3]:(v=new Map(n.map(an)),t[2]=n,t[3]=v);let y=v,b;if(t[4]!==g||t[5]!==n||t[6]!==p||t[7]!==r){let e;t[9]!==g||t[10]!==p||t[11]!==r?(e=e=>{let{fileDiff:t,filePath:n,fileKey:i,collapsed:a}=e,o=p.filter(e=>e.sectionId===r&&e.filePath===n&&(e.fenceLanguage??`diff`)===`diff`).reduce((e,n)=>{let r=te(t,n);return r?en(e,r,{id:n.id,kind:`comment`,range:r,rangeLabel:n.rangeLabel,text:n.text}):e},[]),s=g?.fileKey===i?[...o,g.annotation]:o;return{id:i,type:`diff`,fileDiff:t,annotations:s,collapsed:a,version:we(`${a?`1`:`0`}:${s.flatMap(nn).join(`:`)}`)}},t[9]=g,t[10]=p,t[11]=r,t[12]=e):e=t[12],b=n.map(e),t[4]=g,t[5]=n,t[6]=p,t[7]=r,t[8]=b}else b=t[8];let x=b,S;t[13]!==a||t[14]!==g?.annotation||t[15]!==d?(S=e=>{h(null),g?.annotation.metadata.entries.some(t=>t.id===e)?_(null):d(a,e)},t[13]=a,t[14]=g?.annotation,t[15]=d,t[16]=S):S=t[16];let C=S,w;t[17]!==u||t[18]!==a||t[19]!==g||t[20]!==y||t[21]!==r||t[22]!==i?(w=(e,t)=>{let n=g?.annotation.metadata.entries.find(t=>t.id===e),o=g?y.get(g.fileKey):void 0;if(!n||!o)return;let s=D({id:n.id,sectionId:r,sectionTitle:i,filePath:o.filePath,fileDiff:o.fileDiff,range:n.range,text:t});s&&u(a,s),h(null),_(null)},t[17]=u,t[18]=a,t[19]=g,t[20]=y,t[21]=r,t[22]=i,t[23]=w):w=t[23];let T=w,E;t[24]!==y||t[25]!==r||t[26]!==i?(E=(e,t)=>{if(!e)return;let n=t.item;if(n.type!==`diff`)return;let a=y.get(n.id);if(!a)return;let o=ue(),s=D({id:o,sectionId:r,sectionTitle:i,filePath:a.filePath,fileDiff:a.fileDiff,range:e,text:``});s&&_({fileKey:n.id,annotation:{side:$t(e),lineNumber:e.end,metadata:{entries:[{id:o,kind:`draft`,range:e,rangeLabel:s.rangeLabel,text:``}]}}})},t[24]=y,t[25]=r,t[26]=i,t[27]=E):E=t[27];let ne=E,O=g!==null,k;t[28]===s?k=t[29]:(k=s?{ref:s}:{},t[28]=s,t[29]=k);let A;t[30]===c?A=t[31]:(A=c?{className:c}:{},t[30]=c,t[31]=A);let re=!O,ie=!O,j;t[32]!==ne||t[33]!==o||t[34]!==ie||t[35]!==re?(j={...o,enableGutterUtility:re,enableLineSelection:ie,onLineSelectionEnd:ne},t[32]=ne,t[33]=o,t[34]=ie,t[35]=re,t[36]=j):j=t[36];let ae;t[37]===l?ae=t[38]:(ae=e=>e.type===`diff`?l(e.fileDiff,e.id,e.collapsed===!0):null,t[37]=l,t[38]=ae);let M;t[39]!==C||t[40]!==T?(M=e=>(0,$.jsx)(`div`,{className:`py-1`,children:e.metadata.entries.map(e=>(0,$.jsx)(P,{kind:e.kind,rangeLabel:e.rangeLabel,text:e.text,onCancel:()=>C(e.id),onComment:t=>T(e.id,t),onDelete:()=>C(e.id)},e.id))}),t[39]=C,t[40]=T,t[41]=M):M=t[41];let N;return t[42]!==x||t[43]!==m||t[44]!==j||t[45]!==ae||t[46]!==M||t[47]!==k||t[48]!==A?(N=(0,$.jsx)(Ft,{...k,...A,items:x,selectedLines:m,onSelectedLinesChange:h,options:j,renderHeaderPrefix:ae,renderAnnotation:M}),t[42]=x,t[43]=m,t[44]=j,t[45]=ae,t[46]=M,t[47]=k,t[48]=A,t[49]=N):N=t[49],N}function nn(e){return e.metadata.entries.map(rn)}function rn(e){return`${e.id}:${e.rangeLabel}:${e.text}`}function an(e){return[e.fileKey,e]}function on(e){return e.removeReviewComment}function sn(e){return e.addReviewComment}var cn=function(e){return e.disabled=`data-disabled`,e.orientation=`data-orientation`,e.multiple=`data-multiple`,e}({}),ln={multiple(e){return e?{[cn.multiple]:``}:null}},un=Q.forwardRef(function(e,t){let{defaultValue:n,disabled:r=!1,loopFocus:i=!0,onValueChange:a,orientation:o=`horizontal`,multiple:s=!1,value:c,className:l,render:u,style:f,...p}=e,m=x(!0),h=Q.useMemo(()=>c!==void 0||n!==void 0,[c,n]),g=(m?.disabled??!1)||r,[_,v]=d({controlled:c,default:c===void 0?n??re:void 0,name:`ToggleGroup`,state:`value`}),y=N((e,t,n)=>{let r;s?(r=_.slice(),t?r.push(e):r.splice(_.indexOf(e),1)):r=t?[e]:[],a?.(r,n),!n.isCanceled&&v(r)}),b={disabled:g,multiple:s,orientation:o},S=Q.useMemo(()=>({disabled:g,orientation:o,setGroupValue:y,value:_,isValueInitialized:h}),[g,o,y,_,h]),C={role:`group`},ee=w(`div`,e,{enabled:!!m,state:b,ref:t,props:[C,p],stateAttributesMapping:ln});return(0,$.jsx)(he.Provider,{value:S,children:m?ee:(0,$.jsx)(be,{render:u,className:l,style:f,state:b,refs:[t],props:[C,p],stateAttributesMapping:ln,loopFocus:i,enableHomeAndEndKeys:!0,orientation:o})})}),dn=Q.createContext({size:`default`,variant:`default`});function fn(e){let t=(0,Gt.c)(24),n,r,i,a,o,s;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5],s=t[6]):({className:r,variant:a,size:o,orientation:s,children:n,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=s);let c=a===void 0?`default`:a,l=o===void 0?`default`:o,u=s===void 0?`horizontal`:s,d;t[7]!==l||t[8]!==c?(d={size:l,variant:c},t[7]=l,t[8]=c,t[9]=d):d=t[9];let f=d,p=u===`horizontal`?`*:pointer-coarse:after:min-w-auto`:`*:pointer-coarse:after:min-h-auto`,m=c==="default"?`gap-0.5`:u===`horizontal`?`*:not-first:not-data-[slot=separator]:before:-start-[0.5px] *:not-last:not-data-[slot=separator]:before:-end-[0.5px] *:not-first:rounded-s-none *:not-last:rounded-e-none *:not-first:border-s-0 *:not-last:border-e-0 *:not-first:before:rounded-s-none *:not-last:before:rounded-e-none`:`*:not-first:not-data-[slot=separator]:before:-top-[0.5px] *:not-last:not-data-[slot=separator]:before:-bottom-[0.5px] flex-col *:not-first:rounded-t-none *:not-last:rounded-b-none *:not-first:border-t-0 *:not-last:border-b-0 *:not-first:before:rounded-t-none *:not-last:before:rounded-b-none *:data-[slot=toggle]:not-last:before:hidden dark:*:last:before:hidden dark:*:first:before:block`,g;t[10]!==r||t[11]!==p||t[12]!==m?(g=h(`flex w-fit *:focus-visible:z-10 dark:*:[[data-slot=separator]:has(+[data-slot=toggle]:hover)]:before:bg-input/64 dark:*:[[data-slot=separator]:has(+[data-slot=toggle][data-pressed])]:before:bg-input dark:*:[[data-slot=toggle]:hover+[data-slot=separator]]:before:bg-input/64 dark:*:[[data-slot=toggle][data-pressed]+[data-slot=separator]]:before:bg-input`,p,m,r),t[10]=r,t[11]=p,t[12]=m,t[13]=g):g=t[13];let _;t[14]!==n||t[15]!==f?(_=(0,$.jsx)(dn,{value:f,children:n}),t[14]=n,t[15]=f,t[16]=_):_=t[16];let v;return t[17]!==u||t[18]!==i||t[19]!==l||t[20]!==g||t[21]!==_||t[22]!==c?(v=(0,$.jsx)(un,{className:g,"data-size":l,"data-slot":`toggle-group`,"data-variant":c,orientation:u,...i,children:_}),t[17]=u,t[18]=i,t[19]=l,t[20]=g,t[21]=_,t[22]=c,t[23]=v):v=t[23],v}function pn(e){let t=(0,Gt.c)(12),n,r,i,a,o;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5]):({className:r,children:n,variant:o,size:a,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o);let s=Q.use(dn),c=o??s.variant,l=a??s.size,u;return t[6]!==n||t[7]!==r||t[8]!==i||t[9]!==l||t[10]!==c?(u=(0,$.jsx)($e,{className:r,"data-size":l,"data-variant":c,size:l,variant:c,...i,children:n}),t[6]=n,t[7]=r,t[8]=i,t[9]=l,t[10]=c,t[11]=u):u=t[11],u}function mn(e){return{diffPreview:l(e,{label:`environment-data:review:diff-preview`,tag:T.reviewGetDiffPreview,staleTimeMs:5e3})}}var hn=mn(p);function gn(e){return e.remoteName&&e.name.startsWith(`${e.remoteName}/`)?e.name.slice(e.remoteName.length+1):e.name}function _n(e,t){let n=new Set(t),r=e.map(e=>{let r=t.filter(t=>n.has(t)&&gn(t)===e.name),i=r.find(e=>e.remoteName===`origin`)??r[0]??null;return i&&n.delete(i),{id:`local:${e.name}`,label:e.name,local:e,remote:i}}),i=t.filter(e=>n.has(e)).map(e=>({id:`remote:${e.name}`,label:e.name,local:null,remote:e}));return[...r,...i]}function vn(e,t){let n=t.trim().toLocaleLowerCase();return n.length===0?e:e.filter(e=>e.label.toLocaleLowerCase().includes(n)||e.local?.name.toLocaleLowerCase().includes(n)===!0||e.remote?.name.toLocaleLowerCase().includes(n)===!0)}var yn=`__automatic_base_ref__`,bn=new Set,xn=`
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{r as t}from"./preload-helper-CEhsl8MR.js";import{n,r,t as i}from"./compiler-runtime-CLAvuQ-D.js";import{$s as a,C as o,Cs as s,Do as c,E as l,Hs as u,J as d,P as f,Q as p,Qr as m,Ss as h,Wt as g,ai as _,b as v,di as y,fi as b,g as x,i as S,ic as C,in as ee,jc as w,jo as T,lc as E,ln as D,mi as te,mn as ne,ni as re,oi as O,pi as k,qs as ie,ra as ae,ss as A,u as j,us as M,w as N,ws as oe,xp as se,xs as ce}from"./terminal-links-B2KXT7CK.js";import{t as le}from"./arrow-right-BnQZ60ie.js";import{a as P,n as ue,o as de,s as F}from"./fileCommentAnnotations-CbfdaFFi.js";import{$ as fe,$n as pe,$t as me,B as he,Bn as ge,C as _e,Cr as ve,En as I,Er as ye,Fn as be,Hn as xe,I as Se,In as Ce,J as we,Kr as L,L as Te,Ln as Ee,Q as De,Qt as R,R as Oe,Rn as ke,T as z,Tr as Ae,Un as je,Ur as Me,Vn as Ne,Wn as Pe,Wr as Fe,X as Ie,Xn as B,Y as Le,Z as Re,_ as V,br as ze,cn as Be,dn as Ve,en as H,et as U,h as He,hn as Ue,in as We,it as Ge,mn as W,nn as Ke,q as qe,rn as Je,sn as G,tn as Ye,un as Xe,w as K,xr as Ze,yr as Qe,z as $e,zn as et}from"./index-C97EL4Np.js";var tt=oe(`columns-2`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M12 3v18`,key:`108xh3`}]]),nt=oe(`pilcrow`,[[`path`,{d:`M13 4v16`,key:`8vvj80`}],[`path`,{d:`M17 4v16`,key:`7dpous`}],[`path`,{d:`M19 4H9.5a4.5 4.5 0 0 0 0 9H13`,key:`sh4n9v`}]]),rt=oe(`rows-3`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M21 9H3`,key:`1338ky`}],[`path`,{d:`M21 15H3`,key:`9uk58r`}]]);function q(){return typeof window>`u`||typeof window.matchMedia!=`function`?!1:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}function J(e){let t=window.devicePixelRatio??1;return Math.round(e*t)/t}var it=`theme.disableLineNumbers.overflow.themeType.disableFileHeader.disableVirtualizationBuffers.preferredHighlighter.useCSSClasses.useTokenTransformer.tokenizeMaxLineLength.tokenizeMaxLength.unsafeCSS.diffStyle.diffIndicators.disableBackground.expandUnchanged.collapsedContextThreshold.lineDiffType.maxLineDiffLength.expansionLineCount.lineHoverHighlight.enableTokenInteractionsOnWhitespace.enableGutterUtility.__debugPointerEvents.enableLineSelection.controlledSelection.disableErrorHandling`.split(`.`),at=[`theme`,`disableLineNumbers`,`overflow`,`themeType`,`disableFileHeader`,`disableVirtualizationBuffers`,`preferredHighlighter`,`useCSSClasses`,`useTokenTransformer`,`tokenizeMaxLineLength`,`tokenizeMaxLength`,`unsafeCSS`,`lineHoverHighlight`,`enableTokenInteractionsOnWhitespace`,`enableGutterUtility`,`__debugPointerEvents`,`enableLineSelection`,`controlledSelection`,`disableErrorHandling`],ot=[`renderCustomHeader`,`renderHeaderPrefix`,`renderHeaderMetadata`,`renderAnnotation`,`renderGutterUtility`,`onPostRender`,`onGutterUtilityClick`,`onLineClick`,`onLineNumberClick`,`onLineEnter`,`onLineLeave`,`onTokenClick`,`onTokenEnter`,`onTokenLeave`],st=[`onLineSelected`,`onLineSelectionStart`,`onLineSelectionChange`,`onLineSelectionEnd`],ct=Symbol(`CodeView.itemOptionsState`);function lt(e,t){Object.defineProperty(e,ct,{configurable:!1,enumerable:!1,value:t})}function ut(e){return e[ct]}function Y(e,t,n){Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get(){return n(this)}})}var dt=120,ft=`--diffs-overflow-override`,pt=12e6,mt=1e6,ht=2e6,X=pt-ht,gt=pt-mt,Z=(()=>{let{navigator:e}=globalThis,t=e.userAgent,n=/iP(?:hone|ad|od)/.test(t),r=e.platform===`MacIntel`&&e.maxTouchPoints>1;return(n||r)&&/AppleWebKit/.test(t)&&/Safari/.test(t)&&!/(CriOS|FxiOS|EdgiOS|OPiOS)/.test(t)})(),_t=class e{static __STOP=!1;static __lastScrollPosition=0;type=`advanced`;config={overscrollSize:200,intersectionObserverMargin:0,resizeDebugging:!1};items=[];idToItem=new Map;selectedLines=null;instanceToItem=new Map;layoutDirtyIndex;pendingLayoutReset;renderOptionsRevision=0;slotCoordinator;slotSnapshot;scrollListeners=new Set;scrollHeight=0;containerHeight=-1;scrollTop=0;scrollPageOffset=0;scrollDirty=!0;scrollInteractionFixTimer;pointerEventsDisabled=!1;codeOverflowFix=!1;height=0;heightDirty=!0;windowSpecs={top:0,bottom:0};renderState={scrollTop:-1,firstIndex:-1,lastIndex:-1,stickyHeight:0,stickyTop:-1,stickyBottom:-1};itemMetricsCache=G;fileOptionsPrototype;diffOptionsPrototype;pendingScrollTarget;pendingLayoutAnchor;shouldFixContainerFocus=!1;scrollAnimation;root;resizeObserver;container=document.createElement(`div`);stickyContainer=document.createElement(`div`);stickyOffset=document.createElement(`div`);elementPool=[];elementPoolVersion=0;elementPoolTracker=new WeakMap;pendingElementPool=[];options;workerManager;isContainerManaged;constructor(e={theme:Ve},t,n=!1){this.options=e,this.computeMetricsCache(e.itemMetrics),this.fileOptionsPrototype=this.createFileOptionsPrototype(),this.diffOptionsPrototype=this.createDiffOptionsPrototype(),this.workerManager=t,this.isContainerManaged=n,this.stickyOffset.style.contain=`layout size`,this.stickyContainer.style.position=`sticky`,this.stickyContainer.style.width=`100%`,this.stickyContainer.style.contain=`layout style inline-size`,this.stickyContainer.style.isolation=`isolate`,this.stickyContainer.style.display=`flex`,this.stickyContainer.style.flexDirection=`column`}getLayout(){return this.options.layout??Be}computeMetricsCache(e){return this.itemMetricsCache={hunkLineCount:e?.hunkLineCount??G.hunkLineCount,lineHeight:e?.lineHeight??G.lineHeight,diffHeaderHeight:e?.diffHeaderHeight??G.diffHeaderHeight,hunkSeparatorHeight:e?.hunkSeparatorHeight,spacing:e?.spacing??G.spacing,paddingTop:e?.paddingTop,paddingBottom:e?.paddingBottom},this.itemMetricsCache}getSmoothScrollSettings(){return this.options.smoothScrollSettings??Xe}shouldDisablePointerEvents(){return this.options.pointerEventsOnScroll!==!0}shouldValidateItemHeights(){return W&&this.options.__devOnlyValidateItemHeights===!0}validateRenderedItemHeight(e){if(!this.shouldValidateItemHeights()||e.element==null)return;let t=e.instance.getAdvancedStickySpecs();if(t==null)return;let n=t.height,r=e.element.getBoundingClientRect().height;n!==r&&console.error(`CodeView: reconciled item height does not match DOM height`,{id:e.item.id,type:e.type,index:e.index,version:e.version,expectedHeight:n,actualHeight:r,delta:r-n,stickyTopOffset:t.topOffset,virtualizedHeight:e.instance.getVirtualizedHeight(),top:e.top,scrollTop:this.getScrollTop(),windowSpecs:{...this.windowSpecs},element:e.element,instance:e.instance})}validateStickyContainerHeight(){if(!this.shouldValidateItemHeights())return;let{firstIndex:e,lastIndex:t,stickyHeight:n,stickyTop:r,stickyBottom:i}=this.renderState;if(e===-1||t===-1)return;let a=this.stickyContainer.getBoundingClientRect().height;Math.abs(a-n)<1||console.error(`CodeView: sticky container height does not match computed layout`,{computedStickyHeight:n,actualStickyHeight:a,delta:a-n,stickyTop:r,stickyBottom:i,firstIndex:e,lastIndex:t,firstStickySpecs:this.items[e]?.instance.getAdvancedStickySpecs(),lastStickySpecs:this.items[t]?.instance.getAdvancedStickySpecs(),scrollTop:this.getScrollTop(),scrollPageOffset:this.scrollPageOffset,windowSpecs:{...this.windowSpecs},stickyContainer:this.stickyContainer})}clearScrollInteractionTimer(){this.scrollInteractionFixTimer!=null&&(clearTimeout(this.scrollInteractionFixTimer),this.scrollInteractionFixTimer=void 0)}suspendScrollInteractions(){this.clearScrollInteractionTimer(),this.shouldDisablePointerEvents()&&!this.pointerEventsDisabled&&(this.stickyContainer.style.pointerEvents=`none`,this.pointerEventsDisabled=!0),Z&&!this.codeOverflowFix&&(this.stickyContainer.style.setProperty(ft,`hidden`),this.codeOverflowFix=!0),this.scrollInteractionFixTimer=setTimeout(this.restoreScrollInteractions,dt)}restoreScrollInteractions=()=>{this.clearScrollInteractionTimer(),this.pointerEventsDisabled&&=(this.stickyContainer.style.removeProperty(`pointer-events`),!1),this.codeOverflowFix&&=(this.stickyContainer.style.setProperty(ft,`auto`),!1)};syncLayout(){let{gap:e,paddingBottom:t,paddingTop:n}=this.getLayout();this.stickyContainer.style.gap=`${e}px`,this.container?.style.setProperty(`margin-top`,`${n}px`),this.container?.style.setProperty(`margin-bottom`,`${t}px`)}setup(t){if(this.root!=null)throw Error(`CodeView.setup: already setup`);this.workerManager?.subscribeToThemeChanges(this),this.root=t,this.root.style.overflowAnchor=`none`,this.root.hasAttribute(`tabindex`)||(this.root.tabIndex=-1),this.container??=document.createElement(`div`),this.container.style.contain=`layout style`,this.syncLayout(),this.container.appendChild(this.stickyOffset),this.container.appendChild(this.stickyContainer),this.root.appendChild(this.container),this.scrollDirty=!0,this.heightDirty=!0,this.resizeObserver=new ResizeObserver(this.handleResize),this.resizeObserver.observe(this.stickyContainer),this.root.addEventListener(`scroll`,this.handleScroll,{passive:!0}),this.root.addEventListener(`wheel`,this.clearPendingScroll,{passive:!0}),this.root.addEventListener(`touchstart`,this.clearPendingScroll,{passive:!0}),this.root.addEventListener(`pointerdown`,this.clearPendingScroll,{passive:!0}),this.root.addEventListener(`keydown`,this.clearPendingScroll,{passive:!0}),this.resizeObserver.observe(this.root),this.render(!0),window.__INSTANCE=this,window.__TOGGLE=()=>{e.__STOP?(e.__STOP=!1,this.scrollTo({type:`position`,position:e.__lastScrollPosition,behavior:`instant`})):(e.__lastScrollPosition=this.getScrollTop(),e.__STOP=!0)}}reset(){this.restoreScrollInteractions(),this.cleanAllRenderedItems(),this.selectedLines=null,this.items.length=0,this.idToItem.clear(),this.instanceToItem.clear(),this.layoutDirtyIndex=void 0,this.pendingLayoutReset=void 0,this.stickyContainer.textContent=``,this.stickyOffset.style.height=``,this.container?.style.removeProperty(`height`),this.containerHeight=-1,this.windowSpecs={top:0,bottom:0},this.pendingLayoutAnchor=void 0,this.shouldFixContainerFocus=!1,this.height=0,this.scrollTop=0,this.scrollPageOffset=0,this.scrollHeight=0,this.scrollDirty=!0,this.heightDirty=!0,this.resetRenderState(),this.isContainerManaged||this.flushSlotCoordinator()}cleanUp(){this.reset(),this.clearElementPool(),this.restoreScrollInteractions(),this.workerManager?.unsubscribeToThemeChanges(this),this.resizeObserver?.disconnect(),this.resizeObserver=void 0,this.root?.removeEventListener(`scroll`,this.handleScroll),this.root?.removeEventListener(`wheel`,this.clearPendingScroll),this.root?.removeEventListener(`touchstart`,this.clearPendingScroll),this.root?.removeEventListener(`pointerdown`,this.clearPendingScroll),this.root?.removeEventListener(`keydown`,this.clearPendingScroll),this.root?.style.removeProperty(`overflow-anchor`),this.container?.remove(),this.stickyOffset.remove(),this.stickyContainer.remove(),this.stickyContainer.textContent=``,this.root=void 0,this.container=void 0}cleanAllRenderedItems(){if(this.renderState.firstIndex!==-1)for(let e=this.renderState.firstIndex;e<=this.renderState.lastIndex;e++){let t=this.items[e];if(t==null)throw Error(`CodeView.cleanAllRenderedItems: Item does not exist at index: ${e}`);this.releaseRenderedItem(t)}}primeScrollTarget(e){e.type!==`position`&&this.idToItem.get(e.id)?.instance.primeHighlightCache()}getElementPoolLimit(){let e=this.getHeight()+this.config.overscrollSize*2,{diffHeaderHeight:t}=this.itemMetricsCache;return Math.max(8,Math.ceil(e/Math.max(t,10))+1)*(this.isContainerManaged?2:1)}acquireElement(){this.promotePendingPooledElements();let e=this.elementPool.pop();for(;e!=null&&!this.isElementPoolGenerationCurrent(e);)e=this.elementPool.pop();return e??=document.createElement(Ue),this.markElementPoolGenerationCurrent(e),e}releaseRenderedItem(e){let{element:t}=e;t!=null&&this.renderedItemOwnsFocus(t)&&(this.shouldFixContainerFocus=!0),e.instance.cleanUp(!0),e.element=void 0,t!=null&&(t.remove(),this.cleanElement(t),this.queueElementForPool(t))}renderedItemOwnsFocus(e){let{activeElement:t}=document;return t===e||e.contains(t)||e.shadowRoot?.activeElement!=null}fixContainerFocus(){this.shouldFixContainerFocus&&(this.shouldFixContainerFocus=!1,this.root?.focus({preventScroll:!0}))}cleanElement(e){let{shadowRoot:t}=e;if(t!=null)for(let e of Array.from(t.children))St(e)||e.remove();this.isContainerManaged||e.replaceChildren()}queueElementForPool(e){let t=this.getElementPoolLimit();!this.isElementPoolGenerationCurrent(e)||this.getElementPoolSize()>=t||(this.isElementClean(e)?this.elementPool.push(e):this.pendingElementPool.push(e))}promotePendingPooledElements(){if(this.pendingElementPool.length===0)return;let{pendingElementPool:e}=this;this.pendingElementPool=[];let t=this.getElementPoolLimit();for(let n of e)this.isElementPoolGenerationCurrent(n)&&this.isElementClean(n)&&this.elementPool.length<t?this.elementPool.push(n):this.isElementPoolGenerationCurrent(n)&&this.getElementPoolSize()<t&&this.pendingElementPool.push(n)}isElementClean(e){return e.childNodes.length===0}getElementPoolSize(){return this.elementPool.length+this.pendingElementPool.length}clearElementPool(){this.elementPool.length=0,this.pendingElementPool.length=0}invalidateElementPool(){this.elementPoolVersion++,this.clearElementPool()}markElementPoolGenerationCurrent(e){this.elementPoolTracker.set(e,this.elementPoolVersion)}isElementPoolGenerationCurrent(e){return this.elementPoolTracker.get(e)===this.elementPoolVersion}resolveEffectiveScrollBehavior(e,t){return q()?`instant`:e.behavior===`smooth-auto`?Math.abs(t-this.getScrollTop())<=this.getHeight()*10?`smooth`:`instant`:e.behavior??`instant`}scrollTo(e){if(this.root==null)return;let t=this.normalizeScrollTarget(e);if(t==null)return;let n=this.resolveScrollTargetTop(t);n!=null&&(this.primeScrollTarget(t),this.resolveEffectiveScrollBehavior(t,n)===`smooth`?this.scrollAnimation??={position:this.getScrollTop(),velocity:0,lastTimestamp:performance.now()}:this.scrollAnimation=void 0,this.suspendScrollInteractions(),this.pendingLayoutAnchor=void 0,this.pendingScrollTarget=t,this.render())}setSelectedLines(e,t){this.applySelectedLines(e,t)}getSelectedLines(){return this.selectedLines}clearSelectedLines(e){this.applySelectedLines(null,e)}getItem(e){return this.idToItem.get(e)?.item}updateItem(e){let t=this.idToItem.get(e.id);return t==null?(console.error(`CodeView.updateItem: unknown item id "${e.id}"`),!1):this.syncItemRecord(t,e)?(this.markItemLayoutDirty(t),this.scrollDirty=!0,this.render(),this.syncSelection(),!0):!1}updateItemId(e,t){if(e===t)return!0;let n=this.idToItem.get(e);return n==null?(console.error(`CodeView.updateItemId: unknown item id "${e}"`),!1):this.idToItem.has(t)?(console.error(`CodeView.updateItemId: duplicate item id "${t}"`),!1):(this.idToItem.delete(e),n.item.id=t,this.idToItem.set(t,n),this.updateItemOptionsId(n.instance.options,t),this.selectedLines?.id===e&&(this.selectedLines={...this.selectedLines,id:t},this.options.onSelectedLinesChange?.(this.selectedLines)),this.renamePendingScrollTarget(e,t),this.renamePendingLayoutAnchor(e,t),this.render(),!0)}addItem(e){this.addItems([e]),this.syncSelection()}addItems(e){this.appendItemsInternal(e),this.syncSelection()}setItems(e){e.length===0?this.reset():this.items.length===0?this.appendItemsInternal(e):this.tryAppendItems(e)||this.reconcileItems(e),this.syncSelection()}appendItemsInternal(e,t=!0){if(e.length===0)return;let n=this.getLayout(),r=this.items.length===0?0:this.scrollHeight+n.gap,i=r;for(let t=0;t<e.length;t++){let i=e[t];if(i==null)throw Error(`CodeView.appendItemsInternal: missing input item`);if(this.idToItem.has(i.id))throw Error(`CodeView.addItem: duplicate id "${i.id}"`);let a=this.createItem(i,this.items.length,r);this.items.push(a),this.idToItem.set(a.item.id,a),this.instanceToItem.set(a.instance,a),a.height=vt(a),r+=a.height+n.gap}this.scrollHeight=r-n.gap,this.scrollDirty=!0,t&&(this.canSkipRenderForAppend(i)?this.syncContainerHeight():this.render())}canSkipRenderForAppend(e){return this.container!=null&&this.renderState.firstIndex!==-1&&this.pendingScrollTarget==null&&this.scrollAnimation==null&&this.layoutDirtyIndex==null&&e>this.windowSpecs.bottom}onThemeChange(){this.invalidateElementPool()}setOptions(e){if(e==null)return;this.capturePendingLayoutAnchor();let{options:t}=this,n=this.getLayout(),{itemMetricsCache:r}=this;yt(t,e)&&this.invalidateElementPool(),this.options=e;let i=this.computeMetricsCache(e.itemMetrics),a=!Ke(r,i),o=!Ke(n,this.getLayout());o&&this.syncLayout();let s=a||bt(t,e);if(s){let n=this.pendingLayoutReset;this.pendingLayoutReset={metrics:a?i:n?.metrics,resetFileLayoutCache:!0,resetDiffLayoutCache:!0,includeEstimatedDiffHeights:n?.includeEstimatedDiffHeights===!0||a||xt(t,e)}}(o||s)&&(this.markLayoutDirtyFromIndex(0),this.scrollDirty=!0),H(t,e)||this.renderOptionsRevision++,!this.isContainerManaged&&this.items.length>0&&this.render()}capturePendingLayoutAnchor(){this.root==null||this.items.length===0||this.pendingScrollTarget!=null||(this.pendingLayoutAnchor=this.getScrollAnchor(this.getScrollTop()))}render(t=!1){e.__STOP||(t?(Je(this.computeRenderRangeAndEmit),this.computeRenderRangeAndEmit()):We(this.computeRenderRangeAndEmit))}instanceChanged(e,t){let n=this.instanceToItem.get(e);if(n==null)throw Error(`CodeView.instanceChanged: An instance has changed that is not registered`);t&&this.markItemLayoutDirty(n),this.render()}getWindowSpecs(){return this.windowSpecs}getContainerElement(){return this.root}getRenderedItems(){let{firstIndex:e,lastIndex:t}=this.renderState;if(e===-1||t===-1||t<e)return[];let n=[];for(let r=e;r<=t;r++){let e=this.items[r];e?.element!=null&&(e.type===`diff`?n.push({id:e.item.id,type:`diff`,item:e.item,version:e.version,element:e.element,instance:e.instance}):n.push({id:e.item.id,type:`file`,item:e.item,version:e.version,element:e.element,instance:e.instance}))}return n}setSlotCoordinator(e){return e===this.slotCoordinator?!1:(this.slotCoordinator=e,this.slotSnapshot=void 0,!0)}getSlotSnapshot(e){return Ot(this.getRenderedItems(),e)}subscribeToScroll(e){return this.scrollListeners.add(e),()=>{this.scrollListeners.delete(e)}}getLocalTopForInstance(e){let t=this.instanceToItem.get(e);if(t==null)throw Error(`CodeView.getLocalTopForInstance: unknown virtualized instance`);return t.top}getTopForItem(e){let t=this.idToItem.get(e);if(t!=null)return t.top+this.getLayout().paddingTop}createItem(e,t,n){let{itemMetricsCache:r}=this;if(e.type===`diff`){let i=new U(this.createDiffOptions(e.id),this,r,this.workerManager,this.isContainerManaged);return{type:`diff`,item:e,version:e.version,index:t,top:n,height:0,element:void 0,renderedOptionsRevision:this.renderOptionsRevision,instance:i}}let i=new F(this.createFileOptions(e.id),this,r,this.workerManager,this.isContainerManaged);return{type:`file`,item:e,version:e.version,index:t,top:n,height:0,element:void 0,renderedOptionsRevision:this.renderOptionsRevision,instance:i}}applySelectedLines(e,t){let{selectedLines:n}=this;e==null&&n==null||e!=null&&n?.id===e.id&&me(n.range,e.range)||(n!=null&&n.id!==e?.id&&this.idToItem.get(n.id)?.instance.setSelectedLines(null,{notify:!1}),this.selectedLines=e,this.idToItem.get(e?.id??``)?.instance.setSelectedLines(e?.range??null,t))}syncSelection(){if(this.selectedLines==null)return;let e=this.idToItem.get(this.selectedLines.id);if(e==null){this.selectedLines=null;return}e.instance.setSelectedLines(this.selectedLines.range,{notify:!1})}renamePendingScrollTarget(e,t){let{pendingScrollTarget:n}=this;n==null||n.type===`position`||n.id!==e||(this.pendingScrollTarget={...n,id:t})}renamePendingLayoutAnchor(e,t){this.pendingLayoutAnchor?.id===e&&(this.pendingLayoutAnchor.id=t)}createFileOptionsPrototype(){let e={};for(let t of at)Y(e,t,()=>this.options[t]);Y(e,`stickyHeader`,()=>this.options.stickyHeaders),Y(e,`collapsed`,e=>this.getItemOptions(ut(e),`file`)?.item.collapsed===!0);for(let t of ot)this.defineItemSharedCallback(e,`file`,t);for(let t of st)this.defineItemSelectionCallback(e,`file`,t);return e}createDiffOptionsPrototype(){let e={};for(let t of it)Y(e,t,()=>this.options[t]);Y(e,`stickyHeader`,()=>this.options.stickyHeaders),Y(e,`hunkSeparators`,()=>this.options.hunkSeparators),Y(e,`collapsed`,e=>this.getItemOptions(ut(e),`diff`)?.item.collapsed===!0);for(let t of ot)this.defineItemSharedCallback(e,`diff`,t);for(let t of st)this.defineItemSelectionCallback(e,`diff`,t);return e}createFileOptions(e){let t=Object.create(this.fileOptionsPrototype);return lt(t,{id:e}),t}createDiffOptions(e){let t=Object.create(this.diffOptionsPrototype);return lt(t,{id:e}),t}updateItemOptionsId(e,t){ut(e).id=t}getItemOptions(e,t){let n=this.idToItem.get(e.id);if(!(n==null||n.type!==t))return n}defineItemSharedCallback(e,t,n){Y(e,n,e=>{if(this.options[n]==null)return;let r=ut(e),i=r.callbackCache??={},a=i[n];return a??(a=((...e)=>{let i=this.getItemOptions(r,t);if(i==null)return;let a=this.options[n];return a?.(...e,i)}),i[n]=a),a})}defineItemSelectionCallback(e,t,n){Y(e,n,e=>{if(this.options.enableLineSelection!==!0)return;let r=ut(e),i=r.callbackCache??={},a=i[n];return a??(a=(e=>{let i=this.getItemOptions(r,t);if(i==null)return;let a=e==null?null:{id:i.item.id,range:e};this.options.controlledSelection!==!0&&(e!=null||this.selectedLines?.id===i.item.id)&&this.applySelectedLines(a,{notify:!1}),this.options.onSelectedLinesChange?.(a);let o=this.options[n];return o?.(e,i)}),i[n]=a),a})}markLayoutDirtyFromIndex(e){this.layoutDirtyIndex=Math.min(this.layoutDirtyIndex??e,e)}markItemLayoutDirty(e){if(this.items[e.index]!==e)throw Error(`CodeView.markItemLayoutDirty: unknown item id "${e.item.id}"`);this.markLayoutDirtyFromIndex(e.index)}tryAppendItems(e){if(e.length<=this.items.length)return!1;for(let t=0;t<this.items.length;t++){let n=this.items[t];if(n==null)throw Error(`CodeView.tryAppendItems: missing existing item`);let r=e[t];if(r==null||n.item.id!==r.id||n.type!==r.type)return!1}for(let t=0;t<this.items.length;t++){let n=this.items[t];if(n==null)throw Error(`CodeView.tryAppendItems: missing existing item`);let r=e[t];if(r==null)throw Error(`CodeView.tryAppendItems: append candidate missing prefix item`);this.syncItemRecord(n,r)&&this.markLayoutDirtyFromIndex(t)}return this.appendItemsInternal(e.slice(this.items.length),!1),this.scrollDirty=!0,this.render(),!0}reconcileItems(e){let{items:t,idToItem:n}=this,r=new Set(t),i=[],a=new Map,o=new Map,s;for(let c=0;c<e.length;c++){let l=e[c];if(l==null)throw Error(`CodeView.reconcileItems: missing input item`);if(a.has(l.id))throw Error(`CodeView.setItems: duplicate id "${l.id}"`);let u=n.get(l.id),d=u!=null&&u.type===l.type?u:this.createItem(l,c,0);d.index=c,u!=null&&u.type===l.type?(r.delete(u),this.syncItemRecord(d,l)&&(s=Math.min(s??c,c))):s=Math.min(s??c,c),t[c]!==d&&(s=Math.min(s??c,c)),i.push(d),a.set(l.id,d),o.set(d.instance,d)}for(let e=0;e<t.length;e++){let n=t[e];if(n==null||!r.has(n))continue;this.releaseRenderedItem(n);let a=Math.max(i.length-1,0);s=Math.min(s??a,a)}s!=null&&(this.items=i,this.idToItem=a,this.instanceToItem=o,this.renderState.firstIndex>=i.length?this.resetRenderState():this.renderState.lastIndex>=i.length&&(this.renderState.lastIndex=i.length-1),this.markLayoutDirtyFromIndex(s),this.scrollDirty=!0,this.render())}syncItemRecord(e,t){if(e.type!==t.type)throw Error(`CodeView.syncItemRecord: type mismatch for id "${t.id}"`);return e.version===t.version?!1:(e.item=t,e.version=t.version,e.renderedOptionsRevision=-1,!0)}getMaxScrollTopForHeight(e){let{paddingBottom:t,paddingTop:n}=this.getLayout();return Math.max(n+e+t-this.getHeight(),0)}getMaxScrollTop(){return this.getMaxScrollTopForHeight(this.getScrollHeight())}shouldRebaseScroll(){return this.getMaxScrollTop()>gt}getPagedScrollHeight(){return this.shouldRebaseScroll()?Math.min(this.getScrollHeight(),pt):this.getScrollHeight()}getMaxPagedScrollTop(){return this.getMaxScrollTopForHeight(this.getPagedScrollHeight())}clampPagedScrollTop(e){let t=this.getMaxPagedScrollTop();return Math.max(0,Math.min(e,t))}clampScrollTop(e){let t=this.getMaxScrollTop();return Math.max(0,Math.min(e,t))}getMaxScrollPageOffset(){return Math.max(this.getMaxScrollTop()-this.getMaxPagedScrollTop(),0)}clampScrollPageOffset(e){let t=this.getMaxScrollPageOffset();return Math.max(0,Math.min(e,t))}resolveScrollPageWindow(e,t){let n=J(this.clampPagedScrollTop(t)),r=this.clampScrollPageOffset(e-n);return n=J(this.clampPagedScrollTop(e-r)),r=this.clampScrollPageOffset(e-n),{pagedScrollTop:n,scrollPageOffset:r}}resolvePagedScrollPosition(e){if(!this.shouldRebaseScroll())return{pagedScrollTop:this.clampPagedScrollTop(e),scrollPageOffset:0};let t=this.clampScrollPageOffset(this.scrollPageOffset),n=e-t,r=this.getMaxPagedScrollTop(),i=this.getMaxScrollPageOffset(),a=n>gt&&t<i,o=n<mt&&t>0;return n<0||n>r||a||o?this.resolveScrollPageWindow(e,o?Math.min(X,r):ht):{pagedScrollTop:J(this.clampPagedScrollTop(n)),scrollPageOffset:t}}needsScrollPageUpdate(e){let t=J(this.clampScrollTop(e)),{scrollPageOffset:n}=this.resolvePagedScrollPosition(t);return n!==this.scrollPageOffset}getPagedLayoutTop(e){return this.shouldRebaseScroll()?Math.max(e-this.scrollPageOffset,0):e}getStickyHeaderOffset(){return this.options.stickyHeaders===!0&&this.options.disableFileHeader!==!0?this.itemMetricsCache.diffHeaderHeight:0}getScrollTargetRect(e){let t=this.idToItem.get(e.id);if(t==null){console.warn(`CodeView.scrollTo: unknown item id "${e.id}"`);return}if(e.type===`item`)return{top:t.top,height:t.height};if(e.type===`range`){let n=this.getRangeScrollPosition(t,e);if(n==null){console.warn(`CodeView.scrollTo: unable to resolve range ${Ct(e.range)} for item "${e.id}"`);return}return{top:t.top+n.top,height:n.height}}let n=this.getLineScrollPosition(t,e);if(n==null){console.warn(`CodeView.scrollTo: unable to resolve line ${e.lineNumber} for item "${e.id}"`);return}return{top:t.top+n.top,height:n.height}}normalizeScrollTarget(e){if(e.type===`position`||e.align!==`nearest`)return e;let t=this.getScrollTargetRect(e);if(t==null)return;let n=e.offset??0,r=this.getLayout().paddingTop+t.top,i=r+t.height,a=this.getScrollTop(),o=a+(e.type===`line`||e.type===`range`?this.getStickyHeaderOffset():0),s=a+this.getHeight();if(!(r-n<=o&&i+n>=s)){if(r-n<o)return{...e,align:`start`};if(i+n>s)return{...e,align:`end`}}}resolveScrollTargetTop(e){if(e.type===`position`){let t=this.clampScrollTop(e.position);return t===e.position?this.clampScrollTop(e.position-this.getStickyHeaderOffset()):t}let t=this.idToItem.get(e.id);if(t==null){console.warn(`CodeView.scrollTo: unknown item id "${e.id}"`);return}if(e.type===`item`)return this.clampScrollTop(this.resolveAlignedScrollPosition(t.top,t.height,e.align,e.offset));if(e.type===`range`){let n=this.getRangeScrollPosition(t,e);if(n==null){console.warn(`CodeView.scrollTo: unable to resolve range ${Ct(e.range)} for item "${e.id}"`);return}return this.clampScrollTop(this.resolveAlignedScrollPosition(t.top+n.top,n.height,e.align,e.offset,this.getStickyHeaderOffset()))}let n=this.getLineScrollPosition(t,e);if(n==null){console.warn(`CodeView.scrollTo: unable to resolve line ${e.lineNumber} for item "${e.id}"`);return}return this.clampScrollTop(this.resolveAlignedScrollPosition(t.top+n.top,n.height,e.align,e.offset,this.getStickyHeaderOffset()))}resolveAlignedScrollPosition(e,t,n,r=0,i=0){e+=this.getLayout().paddingTop;let a=this.getHeight();return n===`center`&&t+r<a?e-(a-t)/2+r:n===`end`?e-(a-t)+r:e-i-r}getLineScrollPosition(e,t){return e.type===`diff`?e.instance.getLinePosition(t.lineNumber,t.side):e.instance.getLinePosition(t.lineNumber)}getRangeScrollPosition(e,t){let{range:n}=t,r=this.getLineScrollPosition(e,{type:`line`,id:t.id,lineNumber:n.start,side:n.side}),i=this.getLineScrollPosition(e,{type:`line`,id:t.id,lineNumber:n.end,side:n.endSide??n.side});if(r==null||i==null)return;let a=r.top,o=a+r.height,s=i.top,c=s+i.height,l=Math.min(a,s);return{top:l,height:Math.max(o,c)-l}}computeTargetScrollTopForFrame(e,t){if(this.pendingScrollTarget==null)return e;let n=this.resolveScrollTargetTop(this.pendingScrollTarget);if(n==null)return e;let{scrollAnimation:r}=this;return r==null?n:this.computeSpringStep(r,n,t).position}computeSpringStep(e,t,n){let r=Math.max(0,n-e.lastTimestamp),{omega:i}=this.getSmoothScrollSettings(),a=Math.exp(-i*r),o=e.position-t,s=e.velocity+i*o;return{position:t+(o+s*r)*a,velocity:(s*(1-i*r)-i*o)*a}}advanceScrollAnimation(e,t){if(this.pendingScrollTarget==null)return;let n=this.resolveScrollTargetTop(this.pendingScrollTarget);if(n==null){this.pendingScrollTarget=void 0,this.scrollAnimation=void 0;return}let r=this.scrollAnimation;if(r==null)return n;r.position+=t;let{position:i,velocity:a}=this.computeSpringStep(r,n,e);r.lastTimestamp=e,r.position=i,r.velocity=a;let{positionEpsilon:o,velocityEpsilon:s}=this.getSmoothScrollSettings();return Math.abs(n-i)<=o&&Math.abs(a)<=s?(r.position=n,r.velocity=0,this.scrollAnimation=void 0,n):r.position}computeRenderRangeAndEmit=(t=performance.now())=>{if(e.__STOP||this.container==null)return;let n=this.getHeight(),r=this.getScrollTop(),i=r,a=this.pendingLayoutAnchor!=null,o=this.getScrollAnchor(i);if(this.layoutDirtyIndex!=null&&(this.recomputeLayout(this.layoutDirtyIndex,this.pendingLayoutReset),this.layoutDirtyIndex=void 0,this.pendingLayoutReset=void 0,a=!0),a&&o!=null){let e=this.resolveAnchoredScrollTop(o);if(e!=null){let t=e-i;i=e,this.scrollAnimation!=null&&(this.scrollAnimation.position+=t)}}a&&(i=this.clampScrollTop(i),this.syncContainerHeight());let s=this.computeTargetScrollTopForFrame(i,t),c=!a&&(this.renderState.scrollTop===-1||Math.abs(s-this.renderState.scrollTop)>n+this.config.overscrollSize*2);c&&(o=void 0),this.windowSpecs=R({scrollTop:s,height:n,scrollHeight:this.getScrollHeight(),fitPerfectly:c,fitPerfectlyOverscroll:this.getFitPerfectlyOverscroll(),overscrollSize:this.config.overscrollSize});let l=r;(this.pendingScrollTarget!=null&&s!==l||this.needsScrollPageUpdate(s))&&(this.applyScrollFix(s,l,this.windowSpecs),l=s);let{top:u,bottom:d}=this.windowSpecs,{firstIndex:f,lastIndex:p}=this.renderState;if(f>=0)for(let e=f;e<=p;e++){let t=this.items[e];if(t==null)throw Error(`CodeView.computeRenderRangeAndEmit: No item at index: ${e}`);t.top>u-t.height&&t.top<=d||this.releaseRenderedItem(t)}let m,h=new Set,g=this.findFirstVisibleIndex(u),_=this.findLastVisibleIndex(d);for(let e=g;e<=_;e++){let t=this.items[e];if(t==null)throw Error(`CodeView.computeRenderRangeAndEmit: missing item`);let{instance:n}=t;t.element==null?(t.element=this.acquireElement(),Et(this.stickyContainer,t.element,m),n.virtualizedSetup(),Tt(t,t.element)&&(t.renderedOptionsRevision=this.renderOptionsRevision,h.add(t)),m=t.element):(Et(this.stickyContainer,t.element,m),Tt(t,void 0,t.renderedOptionsRevision!==this.renderOptionsRevision)&&(t.renderedOptionsRevision=this.renderOptionsRevision,h.add(t)),m=t.element)}this.renderState.firstIndex=g<=_?g:-1,this.renderState.lastIndex=_,this.flushSlotCoordinator(),this.reconcileRenderedItems(h),this.syncContainerHeight(),this.updateStickyPositioning();let v=o==null?void 0:this.resolveAnchoredScrollTop(o);o===this.pendingLayoutAnchor&&(this.pendingLayoutAnchor=void 0);let y=v==null?0:v-i,b=s,x=!1;if(this.pendingScrollTarget!=null){let e=this.advanceScrollAnimation(t,y);e==null?b=i:(b=e,x=!0)}else b=v??s;b!==l&&(this.applyScrollFix(b,l,this.windowSpecs),l=b),x&&this.pendingScrollTarget!=null&&this.isPendingTargetSettled(this.pendingScrollTarget)&&(this.pendingScrollTarget=void 0,this.scrollAnimation=void 0),this.renderState.scrollTop=J(l),this.flushManagers(h),this.validateStickyContainerHeight(),this.fixContainerFocus(),(c||this.scrollAnimation!=null)&&this.render()};flushManagers(e){for(let t of e)t.instance.flushManagers()}syncContainerHeight(){let e=this.getPagedScrollHeight();this.container==null||this.containerHeight===e||(this.container.style.height=`${e}px`,this.containerHeight=e)}getStickyBounds(e){let{firstIndex:t,lastIndex:n}=e==null?this.renderState:{firstIndex:this.findFirstVisibleIndex(e.top),lastIndex:this.findLastVisibleIndex(e.bottom)};if(t===-1||n===-1||t>n)return;let r=this.items[t]?.instance.getAdvancedStickySpecs(e),i=this.items[n]?.instance.getAdvancedStickySpecs(e);if(!(r==null||i==null))return{stickyTop:this.getPagedLayoutTop(Math.max(r.topOffset,0)),stickyBottom:this.getPagedLayoutTop(i.topOffset+i.height)}}applyStickyPositioning({stickyTop:e,stickyBottom:t}){let n=this.getHeight(),{itemMetricsCache:r}=this,i=t-e;this.renderState.stickyHeight=i,this.renderState.stickyTop=e,this.renderState.stickyBottom=t,this.stickyOffset.style.height=`${e}px`;let a=(Math.random()*r.lineHeight>>0)*-1,o=-Math.max(i+a,0)+n;this.stickyContainer.style.top=`${o}px`,this.stickyContainer.style.bottom=`${o+r.diffHeaderHeight}px`}syncPagedScrollScaffolding(e){this.syncContainerHeight();let t=this.getStickyBounds(e);t!=null&&this.applyStickyPositioning(t)}reconcileRenderedItems(e){let{firstIndex:t,lastIndex:n}=this.renderState;if(t===-1)return;let r=-1,i=!1;for(let a=t;a<this.items.length&&!(!i&&a>n);a++){let t=this.items[a];if(t==null)throw Error(`CodeView.reconcileRenderedItems: Invalid item`);r===-1?r=t.top:t.top!==r&&(t.top=r,t.instance.syncVirtualizedTop(),i=!0),(e==null?a<=n:e.has(t))&&(t.instance.reconcileHeights()&&(i=!0,t.height=t.instance.getVirtualizedHeight()),this.validateRenderedItemHeight(t)),r+=t.instance.getVirtualizedHeight(),a<this.items.length-1&&(r+=this.getLayout().gap)}i&&r!=null&&(this.scrollDirty=!0,this.scrollHeight=r)}updateStickyPositioning(){let e=this.getStickyBounds();if(e==null)return;let{stickyTop:t,stickyBottom:n}=e;n-t===this.renderState.stickyHeight&&t===this.renderState.stickyTop&&n===this.renderState.stickyBottom||this.applyStickyPositioning(e)}handleScroll=()=>{e.__STOP||(this.suspendScrollInteractions(),this.scrollDirty=!0,this.notifyScroll(),this.render())};clearPendingScroll=()=>{this.pendingScrollTarget=void 0,this.pendingLayoutAnchor=void 0,this.scrollAnimation=void 0};handleResize=e=>{for(let t of e)if(t.target===this.stickyContainer){if(t.borderBoxSize[0].blockSize!==this.renderState.stickyHeight){let e=this.getScrollTop(),t=this.getScrollAnchor(e);this.reconcileRenderedItems(),this.updateStickyPositioning();let n=t==null?void 0:this.resolveAnchoredScrollTop(t);if(n!=null){let t=n-e;this.applyScrollFix(n,e,this.windowSpecs),this.scrollAnimation!=null&&(this.scrollAnimation.position+=t)}this.pendingScrollTarget!=null&&this.isPendingTargetSettled(this.pendingScrollTarget)&&(this.pendingScrollTarget=void 0,this.scrollAnimation=void 0)}}else this.scrollDirty=!0,this.heightDirty=!0,this.render()};getScrollAnchorViewportTop(e,t){return e<t?t+this.getStickyHeaderOffset():t}getScrollAnchor(e){if(this.pendingLayoutAnchor!=null)return this.pendingLayoutAnchor;let{firstIndex:t,lastIndex:n,stickyTop:r,stickyBottom:i}=this.renderState;if(t===-1||n===-1)return;let a=this.getHeight();if(!(r===-1||i===-1))for(let r=t;r<=n;r++){let t=this.items[r];if(t==null)continue;let n=this.getLayout().paddingTop+t.top;if(n+t.height<=e)continue;if(n>=e+a)break;if(n>=e)return{type:`item`,id:t.item.id,viewportOffset:n-e};let i=this.getScrollAnchorViewportTop(n,e)-n,o=t.instance.getNumericScrollAnchor(i);if(o!=null){let r=n+o.top;return{type:`line`,id:t.item.id,lineNumber:o.lineNumber,side:o.side,viewportOffset:r-e}}}}resolveAnchoredScrollTop(e){let t=this.idToItem.get(e.id);if(t==null)return;let{paddingTop:n}=this.getLayout();if(e.type===`item`){let r=n+t.top;return this.clampScrollTop(r-e.viewportOffset)}let r=t.type===`diff`?t.instance.getLinePosition(e.lineNumber,e.side):t.instance.getLinePosition(e.lineNumber);if(r==null)return;let i=n+t.top+r.top;return this.clampScrollTop(i-e.viewportOffset)}applyScrollFix(e,t,n){if(this.root==null)return;let r=J(this.clampScrollTop(e)),i=J(t),{scrollPageOffset:a}=this,o=J(this.clampPagedScrollTop(i-a)),{pagedScrollTop:s,scrollPageOffset:c}=this.resolvePagedScrollPosition(r),l=s,u=a!==c;r===this.renderState.scrollTop&&r===i&&l===o&&!u||(this.suspendScrollInteractions(),(l!==o||u)&&(this.scrollPageOffset=c,this.syncPagedScrollScaffolding(n)),l!==o&&this.root.scrollTo({top:l,behavior:`instant`}),this.renderState.scrollTop=r,this.scrollTop=r,this.scrollDirty=!1)}isPendingTargetSettled(e){let t=this.resolveScrollTargetTop(e);return t==null?!0:J(this.getScrollTop())===J(t)}getScrollTop(){if(!this.scrollDirty)return this.scrollTop;this.scrollDirty=!1;let e=this.root?.scrollTop??0;return this.scrollTop=this.clampScrollTop(e+this.scrollPageOffset),this.scrollTop}getHeight(){return this.heightDirty?(this.heightDirty=!1,this.height=this.root?.getBoundingClientRect().height??0,this.height):this.height}getScrollHeight(){return this.scrollHeight}flushSlotCoordinator(){if(this.slotCoordinator==null)return;let{onSnapshotChange:e}=this.slotCoordinator,t=Ot(this.getRenderedItems(),this.slotCoordinator);kt(this.slotSnapshot,t)||(this.slotSnapshot=t,e(t))}notifyScroll(){if(this.scrollListeners.size===0)return;let e=this.getScrollTop();for(let t of this.scrollListeners)t(e,this)}findFirstVisibleIndex(e){let t=0,n=this.items.length-1,r=this.items.length;for(;t<=n;){let i=t+n>>1,a=this.items[i];if(a==null)throw Error(`CodeView.findFirstVisibleIndex: invalid item index`);a.top+a.height>e?(r=i,n=i-1):t=i+1}return r}findLastVisibleIndex(e){let t=0,n=this.items.length-1,r=-1;for(;t<=n;){let i=t+n>>1,a=this.items[i];if(a==null)throw Error(`CodeView.findLastVisibleIndex: invalid item index`);a.top<=e?(r=i,t=i+1):n=i-1}return r}recomputeLayout(e=0,t){if(this.items.length===0){this.scrollHeight=0;return}let n=this.getLayout(),r=0;if(e>0){let t=this.items[e-1];if(t==null)throw Error(`CodeView.recomputeLayout: invalid dirty index`);r=t.top+t.height+n.gap}for(let i=e;i<this.items.length;i++){let e=this.items[i];if(e==null)throw Error(`CodeView.recomputeLayout: invalid item index`);e.top=r,e.type===`diff`?e.height=e.instance.prepareCodeViewItem(e.item.fileDiff,r,t,e.item.annotations??[]):e.height=e.instance.prepareCodeViewItem(e.item.file,r,t,e.item.annotations??[]),r+=e.height,i<this.items.length-1&&(r+=n.gap)}r!==this.scrollHeight&&(this.scrollDirty=!0),this.scrollHeight=r}resetRenderState(){this.renderState.scrollTop=-1,this.renderState.firstIndex=-1,this.renderState.lastIndex=-1,this.renderState.stickyHeight=0,this.renderState.stickyTop=-1,this.renderState.stickyBottom=-1}getFitPerfectlyOverscroll(){return this.getLayout().gap+this.itemMetricsCache.diffHeaderHeight}};function vt(e){return e.instance.cleanUp(!0),e.type===`diff`?e.instance.prepareCodeViewItem(e.item.fileDiff,e.top,void 0,e.item.annotations??[]):e.instance.prepareCodeViewItem(e.item.file,e.top,void 0,e.item.annotations??[])}function yt(e,t){return!Ye(e.theme??Ve,t.theme??Ve)||(e.themeType??`system`)!==(t.themeType??`system`)||e.unsafeCSS!==t.unsafeCSS}function bt(e,t){return(e.overflow??`scroll`)!==(t.overflow??`scroll`)||(e.disableLineNumbers??!1)!==(t.disableLineNumbers??!1)||(e.disableFileHeader??!1)!==(t.disableFileHeader??!1)||e.unsafeCSS!==t.unsafeCSS||(e.diffStyle??`split`)!==(t.diffStyle??`split`)||(e.diffIndicators??`bars`)!==(t.diffIndicators??`bars`)||(e.hunkSeparators??`line-info`)!==(t.hunkSeparators??`line-info`)||(e.expandUnchanged??!1)!==(t.expandUnchanged??!1)||(e.collapsedContextThreshold??1)!==(t.collapsedContextThreshold??1)}function xt(e,t){return(e.disableFileHeader??!1)!==(t.disableFileHeader??!1)||(e.hunkSeparators??`line-info`)!==(t.hunkSeparators??`line-info`)||(e.expandUnchanged??!1)!==(t.expandUnchanged??!1)||(e.collapsedContextThreshold??1)!==(t.collapsedContextThreshold??1)}function St(e){return e instanceof SVGElement?!0:Ge(e)&&(e.hasAttribute(`data-core-css`)||e.hasAttribute(`data-theme-css`)||e.hasAttribute(`data-unsafe-css`))}function Ct(e){let t=wt(e.start,e.side),n=wt(e.end,e.endSide??e.side);return t===n?t:`${t}-${n}`}function wt(e,t){return t==null?`${e}`:`${t===`deletions`?`D`:`A`}${e}`}function Tt(e,t,n=!1){return e.type===`diff`?e.instance.render({deferManagers:!0,fileContainer:t,fileDiff:e.item.fileDiff,forceRender:n,lineAnnotations:e.item.annotations??[]}):e.instance.render({deferManagers:!0,fileContainer:t,file:e.item.file,forceRender:n,lineAnnotations:e.item.annotations??[]})}function Et(e,t,n){if(n==null){e.firstChild!==t&&e.prepend(t);return}n.nextSibling!==t&&n.after(t)}function Dt(e){return(e.annotations?.length??0)>0}function Ot(e,{hasHeaderRenderers:t,hasAnnotationRenderer:n,hasGutterRenderer:r}){if(e.length===0)return;if(t||r)return e;if(!n)return;let i=[];for(let t of e)Dt(t.item)&&i.push(t);return i.length>0?i:void 0}function kt(e,t){if(e==null||t==null)return e===t;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){let r=e[n],i=t[n];if(r==null||i==null||r.id!==i.id||r.type!==i.type||r.element!==i.element||r.version!==i.version)return!1}return!0}function At(e,t){if(e==null||t==null)return e===t;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){let r=e[n],i=t[n];if(r==null||i==null||r.id!==i.id||r.type!==i.type||r.element!==i.element||r.version!==i.version)return!1}return!0}var Q=e(r(),1),$=n(),jt=e(t(),1),Mt=typeof window>`u`?Q.useEffect:Q.useLayoutEffect;function Nt(e){return{instance:void 0,items:void 0,controlled:e,managedOptions:void 0,disableFlushSync:!1,slotCoordinator:void 0}}function Pt(e,t){let{className:n,containerRef:r,disableWorkerPool:i=!1,initialItems:a,items:o,onScroll:s,onSelectedLinesChange:c,options:l,renderAnnotation:u,renderCustomHeader:d,renderGutterUtility:f,renderHeaderMetadata:p,renderHeaderPrefix:m,selectedLines:h,style:g}=e,_=o!==void 0,v=(0,Q.useContext)(_e),y=(0,Q.useRef)(Nt(_)),b=d!=null,x=u!=null,S=f!=null,C=b||m!=null||p!=null,ee=C||x||S,w=K(e=>{c?.(e)}),T=h!==void 0,E=(0,Q.useMemo)(()=>Bt({options:l,hasCustomHeader:b,hasGutterRenderer:S,onSelectedLinesChange:c==null?void 0:w,controlledSelection:T}),[l,b,S,c,w,T]),[D]=(0,Q.useState)(()=>zt()),[,te]=(0,Q.useState)({}),ne=K(e=>{y.current.instance!=null&&(e==null||e!==y.current.instance.getContainerElement())&&(y.current.instance.cleanUp(),D.publish(void 0),y.current=Nt(_)),e!=null&&e!==y.current.instance?.getContainerElement()&&(y.current.instance=new _t(E,i?void 0:v,!0),y.current.instance.setup(e)),typeof r==`function`?r(e):r!=null&&(r.current=e)}),re=K(e=>{y.current.disableFlushSync?D.publish(e):(0,jt.flushSync)(()=>{D.publish(e)})}),O=(0,Q.useMemo)(()=>{if(!(!C&&!x&&!S))return{hasHeaderRenderers:C,hasAnnotationRenderer:x,hasGutterRenderer:S,onSnapshotChange:re}},[re,x,S,C]);return Mt(()=>s==null?void 0:y.current.instance?.subscribeToScroll(s)),Mt(()=>{let{instance:e,controlled:t,items:n,managedOptions:r,slotCoordinator:i}=y.current;if(e!=null)try{y.current.disableFlushSync=!0;let s=!1;if(H(E,r)||(y.current.managedOptions=E,e.setOptions(E),s=!0),t!==_){console.error(`CodeView: cannot switch between controlled and uncontrolled modes. Remount with a new key instead.`);return}if(_)o!==n&&(Lt(n,o)?y.current.items=o:It(n,o)?(y.current.items=o,e.addItems(o.slice(n.length))):(y.current.items=o,e.setItems(o),s=!0));else if(n==null){let t=a??[];y.current.items=t,t.length>0&&(e.setItems(t),s=!0)}h!==void 0&&e.setSelectedLines(h,{notify:!1});let c=e.setSlotCoordinator(O),l=!1;O!==i&&((O==null||i==null)&&(l=!0),y.current.slotCoordinator=O),(s||c)&&e.render(!0),c&&O==null&&D.publish(void 0),l&&te({})}finally{y.current.disableFlushSync=!1}}),(0,Q.useImperativeHandle)(t,()=>({addItems(e){let{controlled:t,instance:n}=y.current;Rt(t,`addItems`),n==null?console.error(`CodeView.addItems: no valid instance to append items with`,e):n.addItems(e)},getItem(e){let{instance:t}=y.current;if(t==null){console.error(`CodeView.getItem: no valid instance exists`,e);return}else return t.getItem(e)},updateItem(e){let{controlled:t,instance:n}=y.current;return Rt(t,`updateItem`),n==null?(console.error(`CodeView.updateItem: no valid instance to update item with`,e),!1):n.updateItem(e)},updateItemId(e,t){let{controlled:n,instance:r}=y.current;return Rt(n,`updateItemId`),r==null?(console.error(`CodeView.updateItemId: no valid instance to update item id with`,e,t),!1):r.updateItemId(e,t)},scrollTo(e){let{instance:t}=y.current;t==null?console.error(`CodeView.scrollTo: no valid instance to scroll with`,e):t.scrollTo(e)},setSelectedLines(e){let{instance:t}=y.current;t==null?console.error(`CodeView.setSelectedLines: no valid instance to update selection with`,e):(t.setSelectedLines(e,{notify:!1}),w(e))},getSelectedLines(){let{instance:e}=y.current;return e==null?(console.error(`CodeView.getSelectedLines: no valid instance exists`),null):e.getSelectedLines()},clearSelectedLines(){let{instance:e}=y.current;e==null?console.error(`CodeView.clearSelectedLines: no valid instance to update selection with`):(e.clearSelectedLines({notify:!1}),w(null))},getInstance(){return y.current.instance}}),[w]),(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{ref:ne,className:n,style:g}),ee&&(0,$.jsx)(Vt,{managedContentStore:D,renderCustomHeader:d,renderHeaderPrefix:m,renderHeaderMetadata:p,renderAnnotation:u,renderGutterUtility:f})]})}var Ft=(0,Q.forwardRef)(Pt);function It(e,t){if(e==null||t.length<=e.length)return!1;if(e.length===0)return!0;for(let n=0;n<e.length;n++)if(t[n]!==e[n])return!1;return!0}function Lt(e,t){if(e==null||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function Rt(e,t){if(e)throw Error(`CodeView.${t} cannot be used when CodeView is controlled. Use initialItems for imperative item updates.`)}function zt(){let e,t=new Set;return{getSnapshot(){return e},publish(n){if(!At(e,n)){e=n;for(let e of t)e()}},subscribe(e){return t.add(e),()=>{t.delete(e)}}}}function Bt({options:e,hasCustomHeader:t,hasGutterRenderer:n,onSelectedLinesChange:r,controlledSelection:i}){return!t&&!n&&r==null&&!i?e:(e={...e,controlledSelection:i,onSelectedLinesChange:r},t&&(e.renderCustomHeader=Ut),n&&(e.renderGutterUtility=Ut),e)}var Vt=(0,Q.memo)(function({managedContentStore:e,renderCustomHeader:t,renderHeaderPrefix:n,renderHeaderMetadata:r,renderAnnotation:i,renderGutterUtility:a}){let o=K(t=>e.subscribe(t)),s=K(()=>e.getSnapshot());return(0,Q.useSyncExternalStore)(o,s,s)?.map(e=>(0,jt.createPortal)(Ht({renderedItem:e,renderCustomHeader:t,renderHeaderPrefix:n,renderHeaderMetadata:r,renderAnnotation:i,renderGutterUtility:a}),e.element,e.id))});function Ht({renderedItem:e,renderCustomHeader:t,renderHeaderPrefix:n,renderHeaderMetadata:r,renderAnnotation:i,renderGutterUtility:a}){if(e.type===`diff`){let{item:o,instance:s}=e;return z({fileDiff:o.fileDiff,renderCustomHeader:t==null?void 0:()=>t(o),renderHeaderPrefix:n==null?void 0:()=>n(o),renderHeaderMetadata:r==null?void 0:()=>r(o),renderAnnotation:i==null?void 0:e=>i(e,o),lineAnnotations:o.annotations,renderGutterUtility:a==null?void 0:e=>a(e,o),getHoveredLine:s.getHoveredLine})}else{let{item:o,instance:s}=e;return de({file:o.file,renderCustomHeader:t==null?void 0:()=>t(o),renderHeaderPrefix:n==null?void 0:()=>n(o),renderHeaderMetadata:r==null?void 0:()=>r(o),renderAnnotation:i==null?void 0:e=>i(e,o),lineAnnotations:o.annotations,renderGutterUtility:a==null?void 0:e=>a(e,o),getHoveredLine:s.getHoveredLine})}}function Ut(){}function Wt({threadRef:e,filePath:t,activeCwd:n,openInEditor:r}){if(e){x.getState().openFile(e,t);return}r(n?S(t,n):t)}var Gt=i();function Kt(e,t){let n=(0,Gt.c)(4),r=I(e,t),i;return n[0]!==r.data||n[1]!==r.error||n[2]!==r.isPending?(i={data:r.data,error:r.error,isPending:r.isPending},n[0]=r.data,n[1]=r.error,n[2]=r.isPending,n[3]=i):i=n[3],i}function qt(e,t){return e.length>0&&e.every(e=>t.has(e))}function Jt(e,t){return qt(e,t)?new Set:new Set(e)}function Yt(e){return g(`flex items-center justify-between gap-2 px-4`,L&&e!==`sheet`&&e!==`embedded`?`drag-region h-[52px] border-b border-border wco:h-[env(titlebar-area-height)] wco:pr-[calc(100vw-env(titlebar-area-width)-env(titlebar-area-x)+1em)]`:`surface-subheader`)}function Xt(e){let t=(0,Gt.c)(10),n=L&&e.mode!==`sheet`&&e.mode!==`embedded`,r=e.mode===`inline`?`w-[42vw] min-w-[360px] max-w-[560px] shrink-0 border-l border-border`:`w-full`,i;t[0]===r?i=t[1]:(i=g(`flex h-full min-w-0 flex-col bg-background`,r),t[0]=r,t[1]=i);let a;t[2]!==e.header||t[3]!==e.mode||t[4]!==n?(a=n?(0,$.jsx)(`div`,{className:Yt(e.mode),children:e.header}):(0,$.jsx)(`div`,{className:Yt(e.mode),"data-surface-subheader":!0,children:e.header}),t[2]=e.header,t[3]=e.mode,t[4]=n,t[5]=a):a=t[5];let o;return t[6]!==e.children||t[7]!==i||t[8]!==a?(o=(0,$.jsxs)(`div`,{className:i,children:[a,e.children]}),t[6]=e.children,t[7]=i,t[8]=a,t[9]=o):o=t[9],o}function Zt(e){let t=(0,Gt.c)(7),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,$.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border/50 px-3 py-2`,children:[(0,$.jsx)(B,{className:`h-4 w-32 rounded-full`}),(0,$.jsx)(B,{className:`ml-auto h-4 w-20 rounded-full`})]}),t[0]=n):n=t[0];let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(B,{className:`h-3 w-full rounded-full`}),(0,$.jsx)(B,{className:`h-3 w-full rounded-full`}),(0,$.jsx)(B,{className:`h-3 w-10/12 rounded-full`}),(0,$.jsx)(B,{className:`h-3 w-11/12 rounded-full`}),(0,$.jsx)(B,{className:`h-3 w-9/12 rounded-full`})]}),t[1]=r):r=t[1];let i;t[2]===e.label?i=t[3]:(i=(0,$.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-4 px-3 py-4`,children:[r,(0,$.jsx)(`span`,{className:`sr-only`,children:e.label})]}),t[2]=e.label,t[3]=i);let a;return t[4]!==e.label||t[5]!==i?(a=(0,$.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col p-2`,children:(0,$.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden rounded-md border border-border/60 bg-card/25`,role:`status`,"aria-live":`polite`,"aria-label":e.label,children:[n,i]})}),t[4]=e.label,t[5]=i,t[6]=a):a=t[6],a}var Qt=[];function $t(e){return(e.endSide??e.side)===`deletions`?`deletions`:`additions`}function en(e,t,n){let r=$t(t),i=e.findIndex(e=>e.side===r&&e.lineNumber===t.end);return i<0?[...e,{side:r,lineNumber:t.end,metadata:{entries:[n]}}]:e.map((e,t)=>t===i?{...e,metadata:{entries:[...e.metadata.entries,n]}}:e)}function tn(e){let t=(0,Gt.c)(50),{files:n,sectionId:r,sectionTitle:i,composerDraftTarget:a,options:o,viewerRef:s,className:c,renderHeaderPrefix:l}=e,u=ee(sn),d=ee(on),f;t[0]===a?f=t[1]:(f=e=>e.getComposerDraft(a)?.reviewComments??Qt,t[0]=a,t[1]=f);let p=ee(f),[m,h]=(0,Q.useState)(null),[g,_]=(0,Q.useState)(null),v;t[2]===n?v=t[3]:(v=new Map(n.map(an)),t[2]=n,t[3]=v);let y=v,b;if(t[4]!==g||t[5]!==n||t[6]!==p||t[7]!==r){let e;t[9]!==g||t[10]!==p||t[11]!==r?(e=e=>{let{fileDiff:t,filePath:n,fileKey:i,collapsed:a}=e,o=p.filter(e=>e.sectionId===r&&e.filePath===n&&(e.fenceLanguage??`diff`)===`diff`).reduce((e,n)=>{let r=ne(t,n);return r?en(e,r,{id:n.id,kind:`comment`,range:r,rangeLabel:n.rangeLabel,text:n.text}):e},[]),s=g?.fileKey===i?[...o,g.annotation]:o;return{id:i,type:`diff`,fileDiff:t,annotations:s,collapsed:a,version:we(`${a?`1`:`0`}:${s.flatMap(nn).join(`:`)}`)}},t[9]=g,t[10]=p,t[11]=r,t[12]=e):e=t[12],b=n.map(e),t[4]=g,t[5]=n,t[6]=p,t[7]=r,t[8]=b}else b=t[8];let x=b,S;t[13]!==a||t[14]!==g?.annotation||t[15]!==d?(S=e=>{h(null),g?.annotation.metadata.entries.some(t=>t.id===e)?_(null):d(a,e)},t[13]=a,t[14]=g?.annotation,t[15]=d,t[16]=S):S=t[16];let C=S,w;t[17]!==u||t[18]!==a||t[19]!==g||t[20]!==y||t[21]!==r||t[22]!==i?(w=(e,t)=>{let n=g?.annotation.metadata.entries.find(t=>t.id===e),o=g?y.get(g.fileKey):void 0;if(!n||!o)return;let s=D({id:n.id,sectionId:r,sectionTitle:i,filePath:o.filePath,fileDiff:o.fileDiff,range:n.range,text:t});s&&u(a,s),h(null),_(null)},t[17]=u,t[18]=a,t[19]=g,t[20]=y,t[21]=r,t[22]=i,t[23]=w):w=t[23];let T=w,E;t[24]!==y||t[25]!==r||t[26]!==i?(E=(e,t)=>{if(!e)return;let n=t.item;if(n.type!==`diff`)return;let a=y.get(n.id);if(!a)return;let o=ue(),s=D({id:o,sectionId:r,sectionTitle:i,filePath:a.filePath,fileDiff:a.fileDiff,range:e,text:``});s&&_({fileKey:n.id,annotation:{side:$t(e),lineNumber:e.end,metadata:{entries:[{id:o,kind:`draft`,range:e,rangeLabel:s.rangeLabel,text:``}]}}})},t[24]=y,t[25]=r,t[26]=i,t[27]=E):E=t[27];let te=E,re=g!==null,O;t[28]===s?O=t[29]:(O=s?{ref:s}:{},t[28]=s,t[29]=O);let k;t[30]===c?k=t[31]:(k=c?{className:c}:{},t[30]=c,t[31]=k);let ie=!re,ae=!re,A;t[32]!==te||t[33]!==o||t[34]!==ae||t[35]!==ie?(A={...o,enableGutterUtility:ie,enableLineSelection:ae,onLineSelectionEnd:te},t[32]=te,t[33]=o,t[34]=ae,t[35]=ie,t[36]=A):A=t[36];let j;t[37]===l?j=t[38]:(j=e=>e.type===`diff`?l(e.fileDiff,e.id,e.collapsed===!0):null,t[37]=l,t[38]=j);let M;t[39]!==C||t[40]!==T?(M=e=>(0,$.jsx)(`div`,{className:`py-1`,children:e.metadata.entries.map(e=>(0,$.jsx)(P,{kind:e.kind,rangeLabel:e.rangeLabel,text:e.text,onCancel:()=>C(e.id),onComment:t=>T(e.id,t),onDelete:()=>C(e.id)},e.id))}),t[39]=C,t[40]=T,t[41]=M):M=t[41];let N;return t[42]!==x||t[43]!==m||t[44]!==A||t[45]!==j||t[46]!==M||t[47]!==O||t[48]!==k?(N=(0,$.jsx)(Ft,{...O,...k,items:x,selectedLines:m,onSelectedLinesChange:h,options:A,renderHeaderPrefix:j,renderAnnotation:M}),t[42]=x,t[43]=m,t[44]=A,t[45]=j,t[46]=M,t[47]=O,t[48]=k,t[49]=N):N=t[49],N}function nn(e){return e.metadata.entries.map(rn)}function rn(e){return`${e.id}:${e.rangeLabel}:${e.text}`}function an(e){return[e.fileKey,e]}function on(e){return e.removeReviewComment}function sn(e){return e.addReviewComment}var cn=function(e){return e.disabled=`data-disabled`,e.orientation=`data-orientation`,e.multiple=`data-multiple`,e}({}),ln={multiple(e){return e?{[cn.multiple]:``}:null}},un=Q.forwardRef(function(e,t){let{defaultValue:n,disabled:r=!1,loopFocus:i=!0,onValueChange:a,orientation:o=`horizontal`,multiple:s=!1,value:l,className:u,render:d,style:f,...p}=e,m=ae(!0),h=Q.useMemo(()=>l!==void 0||n!==void 0,[l,n]),g=(m?.disabled??!1)||r,[_,v]=T({controlled:l,default:l===void 0?n??M:void 0,name:`ToggleGroup`,state:`value`}),y=c((e,t,n)=>{let r;s?(r=_.slice(),t?r.push(e):r.splice(_.indexOf(e),1)):r=t?[e]:[],a?.(r,n),!n.isCanceled&&v(r)}),b={disabled:g,multiple:s,orientation:o},x=Q.useMemo(()=>({disabled:g,orientation:o,setGroupValue:y,value:_,isValueInitialized:h}),[g,o,y,_,h]),S={role:`group`},C=A(`div`,e,{enabled:!!m,state:b,ref:t,props:[S,p],stateAttributesMapping:ln});return(0,$.jsx)(he.Provider,{value:x,children:m?C:(0,$.jsx)(be,{render:d,className:u,style:f,state:b,refs:[t],props:[S,p],stateAttributesMapping:ln,loopFocus:i,enableHomeAndEndKeys:!0,orientation:o})})}),dn=Q.createContext({size:`default`,variant:`default`});function fn(e){let t=(0,Gt.c)(24),n,r,i,a,o,s;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5],s=t[6]):({className:r,variant:a,size:o,orientation:s,children:n,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=s);let c=a===void 0?`default`:a,l=o===void 0?`default`:o,u=s===void 0?`horizontal`:s,d;t[7]!==l||t[8]!==c?(d={size:l,variant:c},t[7]=l,t[8]=c,t[9]=d):d=t[9];let f=d,p=u===`horizontal`?`*:pointer-coarse:after:min-w-auto`:`*:pointer-coarse:after:min-h-auto`,m=c==="default"?`gap-0.5`:u===`horizontal`?`*:not-first:not-data-[slot=separator]:before:-start-[0.5px] *:not-last:not-data-[slot=separator]:before:-end-[0.5px] *:not-first:rounded-s-none *:not-last:rounded-e-none *:not-first:border-s-0 *:not-last:border-e-0 *:not-first:before:rounded-s-none *:not-last:before:rounded-e-none`:`*:not-first:not-data-[slot=separator]:before:-top-[0.5px] *:not-last:not-data-[slot=separator]:before:-bottom-[0.5px] flex-col *:not-first:rounded-t-none *:not-last:rounded-b-none *:not-first:border-t-0 *:not-last:border-b-0 *:not-first:before:rounded-t-none *:not-last:before:rounded-b-none *:data-[slot=toggle]:not-last:before:hidden dark:*:last:before:hidden dark:*:first:before:block`,h;t[10]!==r||t[11]!==p||t[12]!==m?(h=g(`flex w-fit *:focus-visible:z-10 dark:*:[[data-slot=separator]:has(+[data-slot=toggle]:hover)]:before:bg-input/64 dark:*:[[data-slot=separator]:has(+[data-slot=toggle][data-pressed])]:before:bg-input dark:*:[[data-slot=toggle]:hover+[data-slot=separator]]:before:bg-input/64 dark:*:[[data-slot=toggle][data-pressed]+[data-slot=separator]]:before:bg-input`,p,m,r),t[10]=r,t[11]=p,t[12]=m,t[13]=h):h=t[13];let _;t[14]!==n||t[15]!==f?(_=(0,$.jsx)(dn,{value:f,children:n}),t[14]=n,t[15]=f,t[16]=_):_=t[16];let v;return t[17]!==u||t[18]!==i||t[19]!==l||t[20]!==h||t[21]!==_||t[22]!==c?(v=(0,$.jsx)(un,{className:h,"data-size":l,"data-slot":`toggle-group`,"data-variant":c,orientation:u,...i,children:_}),t[17]=u,t[18]=i,t[19]=l,t[20]=h,t[21]=_,t[22]=c,t[23]=v):v=t[23],v}function pn(e){let t=(0,Gt.c)(12),n,r,i,a,o;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5]):({className:r,children:n,variant:o,size:a,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o);let s=Q.use(dn),c=o??s.variant,l=a??s.size,u;return t[6]!==n||t[7]!==r||t[8]!==i||t[9]!==l||t[10]!==c?(u=(0,$.jsx)($e,{className:r,"data-size":l,"data-variant":c,size:l,variant:c,...i,children:n}),t[6]=n,t[7]=r,t[8]=i,t[9]=l,t[10]=c,t[11]=u):u=t[11],u}function mn(e){return{diffPreview:ie(e,{label:`environment-data:review:diff-preview`,tag:w.reviewGetDiffPreview,staleTimeMs:5e3})}}var hn=mn(p);function gn(e){return e.remoteName&&e.name.startsWith(`${e.remoteName}/`)?e.name.slice(e.remoteName.length+1):e.name}function _n(e,t){let n=new Set(t),r=e.map(e=>{let r=t.filter(t=>n.has(t)&&gn(t)===e.name),i=r.find(e=>e.remoteName===`origin`)??r[0]??null;return i&&n.delete(i),{id:`local:${e.name}`,label:e.name,local:e,remote:i}}),i=t.filter(e=>n.has(e)).map(e=>({id:`remote:${e.name}`,label:e.name,local:null,remote:e}));return[...r,...i]}function vn(e,t){let n=t.trim().toLocaleLowerCase();return n.length===0?e:e.filter(e=>e.label.toLocaleLowerCase().includes(n)||e.local?.name.toLocaleLowerCase().includes(n)===!0||e.remote?.name.toLocaleLowerCase().includes(n)===!0)}var yn=`__automatic_base_ref__`,bn=new Set,xn=`
|
|
2
2
|
[data-diffs-header],
|
|
3
3
|
[data-diff],
|
|
4
4
|
[data-file],
|
|
@@ -94,5 +94,5 @@ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{r as t}from"./preload-
|
|
|
94
94
|
color: color-mix(in srgb, var(--foreground) 84%, var(--primary)) !important;
|
|
95
95
|
text-decoration-color: currentColor;
|
|
96
96
|
}
|
|
97
|
-
`;function Sn({mode:e=`inline`,composerDraftTarget:t,initialGitScope:n}){let{resolvedTheme:r}=ie(),i=ve(),[l]=(0,Q.useState)(n),[d,p]=(0,Q.useState)(`stacked`),[x,S]=(0,Q.useState)(i.wordWrap),[C,ee]=(0,Q.useState)(i.diffIgnoreWhitespace),[w,T]=(0,Q.useState)(``),[D,te]=(0,Q.useState)(()=>({scopeKey:null,fileKeys:bn})),re=(0,Q.useRef)(null),N=se({strict:!1,select:e=>_(e)}),oe=N?.threadId??null,P=Ze(N),ue=P?.projectId??null,de=ze(P&&ue?{environmentId:P.environmentId,projectId:ue}:null),F=P?.worktreePath??de?.workspaceRoot,me=o(u.configValueAtom(P?.environmentId??null)),he=Pe(P?.environmentId??null,me?.availableEditors??[]),_e=f(P!=null&&F!=null?Qe.status({environmentId:P.environmentId,input:{cwd:F}}):null),I=Oe(e=>Te(e.byThreadKey,N,l===`unstaged`)),be=_e.data?.isRepo??!0,{turnDiffSummaries:we,inferredCheckpointTurnCountByTurnId:L}=Se(P),R=(0,Q.useMemo)(()=>[...we].toSorted((e,t)=>{let n=e.checkpointTurnCount??L[e.turnId]??0,r=t.checkpointTurnCount??L[t.turnId]??0;return n===r?t.completedAt.localeCompare(e.completedAt):r-n}),[L,we]);(0,Q.useEffect)(()=>{!N||I.kind!==`turn`||Oe.getState().reconcileTurnSelection(N,R.map(e=>e.turnId))},[I,R,N]);let z=I.kind===`turn`?I.turnId:null,B=I.kind===`unstaged`?`unstaged`:`branch`,V=I.kind===`branch`?I.baseRef:null,Be=I.kind===`turn`?I.filePath:null,Ve=I.kind===`turn`?I.revealRequestId:0,H=z===null?void 0:R.find(e=>e.turnId===z)??R[0],U=H&&(H.checkpointTurnCount??L[H.turnId]),Ue=R[0],We=z===null?B===`unstaged`?`Working tree`:`Branch changes`:H?.turnId===Ue?.turnId?`Latest turn`:`Turn ${U??`?`}`,Ge=H?`turn:${H.turnId}`:B,W=N?`${N.environmentId}:${N.threadId}:${Ge}`:null,Ke=D.scopeKey===W?D.fileKeys:bn,Je=H?`Turn ${U??`?`}`:B===`unstaged`?`Working tree`:`Branch changes`,G=(0,Q.useMemo)(()=>typeof U==`number`?{fromTurnCount:Math.max(0,U-1),toTurnCount:U}:null,[U]),Ye=Kt({environmentId:P?.environmentId??null,threadId:oe,fromTurnCount:G?.fromTurnCount??null,toTurnCount:G?.toTurnCount??null,ignoreWhitespace:C,cacheScope:H?`turn:${H.turnId}`:null},{enabled:be&&H!==void 0}),Xe=f(z===null&&P&&F?hn.diffPreview({environmentId:P.environmentId,input:{cwd:F,...V?{baseRef:V}:{},ignoreWhitespace:C}}):null),K=z===null&&Xe.error?.includes(`configured workspace root`)===!0&&me?.cwd!==void 0&&me.cwd!==F,$e=f(K&&P&&me?hn.diffPreview({environmentId:P.environmentId,input:{cwd:me.cwd,...V?{baseRef:V}:{},ignoreWhitespace:C}}):null),q=K?$e:Xe,J=q.data?.sources.find(e=>e.kind===(B===`unstaged`?`working-tree`:`branch-range`)),it=f(z===null&&B===`branch`&&P&&q.data?.cwd?Qe.listRefs({environmentId:P.environmentId,input:{cwd:q.data.cwd,includeMatchingRemoteRefs:!0,refKind:`local`,...w.trim().length>0?{query:w.trim()}:{},limit:100}}):null),at=f(z===null&&B===`branch`&&P&&q.data?.cwd?Qe.listRefs({environmentId:P.environmentId,input:{cwd:q.data.cwd,includeMatchingRemoteRefs:!0,refKind:`remote`,...w.trim().length>0?{query:w.trim()}:{},limit:100}}):null),ot=_n(it.data?.refs.filter(e=>e.name!==J?.headRef)??[],at.data?.refs??[]),st=vn(ot,w),ct=e=>V&&V===e.remote?.name?V:e.local?.name??e.remote?.name??e.id,lt=[yn,...ot.map(ct)],ut=[...w.trim().length===0?[yn]:[],...st.map(ct)],Y=J?.diff,dt=H?Ye.data?.diff:Y,ft=!H&&J?.truncated===!0,pt=H?Ye.isPending:q.isPending,mt=H?Ye.error:q.error,ht=typeof dt==`string`&&dt.trim().length===0,X=(0,Q.useMemo)(()=>Re(dt,`diff-panel:${r}`,{compactPartialHunkOffsets:z===null}),[r,dt,z]),gt=(0,Q.useMemo)(()=>!X||X.kind!==`files`?[]:X.files.toSorted((e,t)=>fe(e).localeCompare(fe(t),void 0,{numeric:!0,sensitivity:`base`})),[X]),Z=(0,Q.useMemo)(()=>gt.map(e=>{let t=qe(e);return{fileDiff:e,filePath:fe(e),fileKey:t,collapsed:Ke.has(t)}}),[Ke,gt]),_t=(0,Q.useMemo)(()=>Z.map(e=>e.fileKey),[Z]),vt=qt(_t,Ke),yt=(0,Q.useMemo)(()=>Ie(gt),[gt]);(0,Q.useEffect)(()=>{if(!Be)return;let e=Z.find(e=>e.filePath===Be);e&&re.current?.scrollTo({type:`item`,id:e.fileKey,align:`start`})},[Z,Be,Ve]);let bt=(0,Q.useCallback)(e=>{Wt({threadRef:N,filePath:e,activeCwd:F,openInEditor:e=>{(async()=>{let t=await he(e);t._tag===`Failure`&&!g(t)&&console.warn(`Failed to open diff file in editor.`,{operation:`open-diff-file`,...N?{environmentId:N.environmentId,threadId:N.threadId}:{},...A(ne(t))})})()}})},[F,he,N]),xt=(0,Q.useCallback)(e=>{te(t=>{let n=new Set(t.scopeKey===W?t.fileKeys:[]);return n.has(e)?n.delete(e):n.add(e),{scopeKey:W,fileKeys:n}})},[W]),St=(0,Q.useCallback)(()=>{te(e=>{let t=e.scopeKey===W?e.fileKeys:bn;return{scopeKey:W,fileKeys:Jt(_t,t)}})},[W,_t]),Ct=e=>{N&&Oe.getState().selectTurn(N,e)},wt=e=>{N&&Oe.getState().selectGitScope(N,e)},Tt=e=>{N&&Oe.getState().selectBranchBaseRef(N,e)};return(0,$.jsx)(Xt,{mode:e,header:(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-3 [-webkit-app-region:no-drag]`,children:[(0,$.jsxs)(a,{children:[(0,$.jsxs)(b,{className:`inline-flex h-6 max-w-full items-center gap-1 rounded-md bg-muted/70 px-2 text-xs font-medium text-foreground outline-none transition-colors hover:bg-muted focus-visible:ring-2 focus-visible:ring-ring`,"aria-label":`Diff scope: ${We}`,children:[(0,$.jsx)(`span`,{className:`truncate`,children:We}),(0,$.jsx)(ce,{className:`size-3.5 shrink-0 text-muted-foreground`})]}),(0,$.jsxs)(k,{align:`start`,className:`w-60`,children:[(0,$.jsx)(O,{className:z===null&&B===`unstaged`?`bg-foreground/[0.08]`:void 0,onClick:()=>wt(`unstaged`),children:(0,$.jsx)(`span`,{children:`Working tree`})}),(0,$.jsx)(O,{className:z===null&&B===`branch`?`bg-foreground/[0.08]`:void 0,onClick:()=>wt(`branch`),children:(0,$.jsx)(`span`,{children:`Branch changes`})}),(0,$.jsx)(O,{className:z!==null&&H?.turnId===Ue?.turnId?`bg-foreground/[0.08]`:void 0,onClick:()=>{Ue&&Ct(Ue.turnId)},children:(0,$.jsx)(`span`,{children:`Latest turn`})}),(0,$.jsxs)(y,{children:[(0,$.jsx)(j,{children:`Turn`}),(0,$.jsx)(E,{className:`w-64`,children:R.map(e=>{let t=e.checkpointTurnCount??L[e.turnId]??`?`;return(0,$.jsxs)(O,{className:e.turnId===H?.turnId?`bg-foreground/[0.08]`:void 0,onClick:()=>Ct(e.turnId),children:[(0,$.jsxs)(`span`,{children:[`Turn `,t]}),(0,$.jsx)(`span`,{className:`ml-auto text-xs tabular-nums text-muted-foreground`,children:pe(e.completedAt,i.timestampFormat)})]},e.turnId)})})]})]})]}),z===null&&B===`branch`&&J?.baseRef&&(0,$.jsxs)(`div`,{className:`flex min-w-0 max-w-full items-center gap-2 overflow-hidden text-xs text-muted-foreground`,title:`${J.headRef??`HEAD`} → ${J.baseRef}`,"aria-label":`Comparing ${J.headRef??`HEAD`} against ${J.baseRef}`,children:[(0,$.jsx)(`span`,{className:`min-w-0 max-w-48 truncate`,children:J.headRef??`HEAD`}),(0,$.jsx)(le,{className:`size-3.5 shrink-0 opacity-70`}),(0,$.jsxs)(Ee,{items:lt,filteredItems:ut,value:V??yn,onOpenChange:e=>{e||T(``)},onValueChange:e=>{e&&Tt(e===yn?null:e)},children:[(0,$.jsxs)(je,{className:`inline-flex min-w-0 max-w-48 items-center gap-1 overflow-hidden rounded-md px-1.5 py-1 outline-none transition-colors hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,"aria-label":`Change comparison target. Currently ${J.baseRef}`,children:[(0,$.jsx)(`span`,{className:`min-w-0 truncate`,children:J.baseRef}),(0,$.jsx)(ce,{className:`size-3.5 shrink-0 opacity-70`})]}),(0,$.jsxs)(xe,{align:`start`,className:`w-72 min-w-0 max-w-[calc(100vw-1rem)] overflow-hidden [&>[data-slot=combobox-popup]]:min-w-0 [&>[data-slot=combobox-popup]]:overflow-hidden`,children:[(0,$.jsx)(`div`,{className:`min-w-0 shrink-0 px-3 pt-2.5`,children:(0,$.jsxs)(`div`,{className:`relative -translate-y-px border-b border-border/70 pb-1.5 transition-colors focus-within:border-ring`,children:[(0,$.jsx)(ye,{"aria-hidden":`true`,className:`pointer-events-none absolute top-1.5 left-0 size-4 shrink-0 text-muted-foreground/55`}),(0,$.jsx)(et,{className:`[&_input]:h-6.5 [&_input]:ps-5 [&_input]:font-sans [&_input]:leading-6.5`,inputClassName:`rounded-none bg-transparent text-sm`,placeholder:`Search refs...`,showTrigger:!1,size:`sm`,unstyled:!0,value:w,onChange:e=>T(e.target.value)})]})}),(0,$.jsxs)(`div`,{className:`grid shrink-0 grid-cols-[1rem_minmax(0,1fr)] items-center gap-2 border-b border-border/70 ps-3 pe-6.5 pt-2 pb-1.5 font-medium text-[10px] text-muted-foreground uppercase tracking-wide`,children:[(0,$.jsx)(`span`,{"aria-hidden":`true`}),(0,$.jsxs)(`div`,{className:`grid min-w-0 grid-cols-[minmax(0,1fr)_2rem] items-center`,children:[(0,$.jsx)(`span`,{children:`Branch`}),(0,$.jsx)(`span`,{className:`text-right`,children:`Remote`})]})]}),(0,$.jsx)(ke,{children:`No matching refs.`}),(0,$.jsxs)(Ne,{className:`max-h-64 min-w-0 overflow-x-hidden`,children:[(0,$.jsx)(ge,{className:`h-8 w-full min-w-0 grid-cols-[1rem_minmax(0,1fr)] py-0`,contentClassName:`w-full min-w-0 overflow-hidden`,value:yn,children:(0,$.jsx)(`span`,{className:`block min-w-0 truncate`,children:`Automatic`})}),ot.map(e=>{let t=ct(e),n=e.local!==null&&e.remote!==null,r=e.remote?.name===t;return(0,$.jsx)(ge,{className:`h-8 w-full min-w-0 grid-cols-[1rem_minmax(0,1fr)] py-0`,contentClassName:`w-full min-w-0 overflow-hidden`,value:t,children:(0,$.jsxs)(`div`,{className:`grid w-full min-w-0 grid-cols-[minmax(0,1fr)_2rem] items-center overflow-hidden`,children:[(0,$.jsx)(`span`,{className:`block min-w-0 truncate pe-2`,children:e.label}),n?(0,$.jsx)(`div`,{className:`flex justify-end`,onClick:e=>e.stopPropagation(),onPointerDown:e=>e.stopPropagation(),children:(0,$.jsx)(Ce,{"aria-label":`Use remote version of ${e.label}`,checked:r,className:`[--thumb-size:--spacing(3)]`,onCheckedChange:t=>{let n=t?e.remote?.name:e.local?.name;n&&Tt(n)}})}):e.remote?(0,$.jsx)(`span`,{className:`flex justify-end text-muted-foreground`,title:`Remote only`,children:(0,$.jsx)(v,{"aria-hidden":`true`,className:`size-3`})}):null]})},e.id)})]})]})]})]})]}),(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1 [-webkit-app-region:no-drag]`,children:[Z.length>0&&(0,$.jsx)(He,{additions:yt.additions,deletions:yt.deletions,className:`mr-1 text-[11px]`,layout:`inline`}),Z.length>0&&(0,$.jsxs)(s,{children:[(0,$.jsx)(c,{render:(0,$.jsx)(m,{type:`button`,size:`icon-xs`,variant:`outline`,"aria-label":vt?`Expand all files`:`Collapse all files`,onClick:St}),children:vt?(0,$.jsx)(Me,{className:`size-3`}):(0,$.jsx)(Fe,{className:`size-3`})}),(0,$.jsx)(M,{side:`top`,children:vt?`Expand all files`:`Collapse all files`})]}),(0,$.jsxs)(fn,{className:`shrink-0`,variant:`outline`,size:`xs`,value:[d],onValueChange:e=>{let t=e[0];(t===`stacked`||t===`split`)&&p(t)},children:[(0,$.jsx)(pn,{"aria-label":`Stacked diff view`,value:`stacked`,children:(0,$.jsx)(rt,{className:`size-3`})}),(0,$.jsx)(pn,{"aria-label":`Split diff view`,value:`split`,children:(0,$.jsx)(tt,{className:`size-3`})})]}),(0,$.jsxs)(s,{children:[(0,$.jsx)(c,{render:(0,$.jsx)(pn,{"aria-label":x?`Disable diff line wrapping`:`Enable diff line wrapping`,variant:`outline`,size:`xs`,pressed:x,onPressedChange:e=>{S(!!e)}}),children:(0,$.jsx)(Ae,{className:`size-3`})}),(0,$.jsx)(M,{side:`top`,children:x?`Disable line wrapping`:`Enable line wrapping`})]}),(0,$.jsxs)(s,{children:[(0,$.jsx)(c,{render:(0,$.jsx)(pn,{"aria-label":C?`Show whitespace changes`:`Hide whitespace changes`,variant:`outline`,size:`xs`,pressed:C,onPressedChange:e=>{ee(!!e)}}),children:(0,$.jsx)(nt,{className:`size-3`})}),(0,$.jsx)(M,{side:`top`,children:C?`Show whitespace changes`:`Hide whitespace changes`})]})]})]}),children:P?be?z!==null&&R.length===0?(0,$.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-5 text-center text-xs text-muted-foreground/70`,children:`No completed turns yet.`}):(0,$.jsx)($.Fragment,{children:(0,$.jsxs)(`div`,{className:`diff-panel-viewport flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden`,children:[ft&&(0,$.jsx)(`p`,{className:`shrink-0 border-b border-border/70 bg-muted/40 px-3 py-1.5 text-[11px] text-muted-foreground`,children:`This diff was truncated because it exceeded the preview limit. The changes shown are incomplete.`}),mt&&!X&&(0,$.jsx)(`div`,{className:`px-3`,children:(0,$.jsx)(`p`,{className:`mb-2 text-[11px] text-red-500/80`,children:mt})}),X?X.kind===`files`?(0,$.jsx)(`div`,{className:`min-h-0 flex-1`,onClickCapture:e=>{let t=(e.nativeEvent.composedPath?.()??[]).find(e=>e instanceof HTMLElement&&e.hasAttribute(`data-title`))?.textContent?.trim();t&&bt(t)},children:(0,$.jsx)(tn,{viewerRef:re,className:`diff-render-surface h-full min-h-0 overflow-auto`,files:Z,sectionId:Ge,sectionTitle:Je,composerDraftTarget:t,renderHeaderPrefix:(e,t,n)=>{let r=fe(e);return(0,$.jsxs)(s,{children:[(0,$.jsx)(c,{render:(0,$.jsx)(`button`,{type:`button`,className:h(`inline-flex size-5 shrink-0 cursor-pointer items-center justify-center rounded-sm border-0 bg-transparent p-0 transition-colors hover:bg-foreground/10 focus-visible:outline-hidden`,Le(e)),"aria-label":n?`Expand ${r}`:`Collapse ${r}`,"aria-expanded":!n,onClick:e=>{e.stopPropagation(),xt(t)}}),children:n?(0,$.jsx)(ae,{className:`size-4`}):(0,$.jsx)(ce,{className:`size-4`})}),(0,$.jsx)(M,{side:`top`,children:n?`Expand diff`:`Collapse diff`})]})},options:{diffStyle:d===`split`?`split`:`unified`,lineDiffType:`none`,overflow:x?`wrap`:`scroll`,theme:De(r),themeType:r,unsafeCSS:xn,stickyHeaders:!0,itemMetrics:{diffHeaderHeight:33},layout:{paddingTop:0,paddingBottom:8,gap:8}}},W??Ge)}):(0,$.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto p-2`,children:(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(`p`,{className:`text-[11px] text-muted-foreground/75`,children:X.reason}),(0,$.jsx)(`pre`,{className:h(`max-h-[72vh] rounded-md border border-border/70 bg-background/70 p-3 font-mono text-[11px] leading-relaxed text-muted-foreground/90`,x?`overflow-auto whitespace-pre-wrap wrap-break-word`:`overflow-auto`),children:X.text})]})}):pt?(0,$.jsx)(Zt,{label:H?`Loading checkpoint diff...`:B===`unstaged`?`Loading working tree diff...`:`Loading branch diff...`}):(0,$.jsx)(`div`,{className:`flex h-full items-center justify-center px-3 py-2 text-xs text-muted-foreground/70`,children:(0,$.jsx)(`p`,{children:ht?`No net changes in this selection.`:`No patch available for this selection.`})})]})}):(0,$.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-5 text-center text-xs text-muted-foreground/70`,children:`Turn diffs are unavailable because this project is not a git repository.`}):(0,$.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-5 text-center text-xs text-muted-foreground/70`,children:`Select a thread to inspect turn diffs.`})})}export{V as DiffWorkerPoolProvider,Sn as default};
|
|
98
|
-
//# sourceMappingURL=DiffPanel-
|
|
97
|
+
`;function Sn({mode:e=`inline`,composerDraftTarget:t,initialGitScope:n}){let{resolvedTheme:r}=j(),i=ve(),[c]=(0,Q.useState)(n),[p,x]=(0,Q.useState)(`stacked`),[S,ee]=(0,Q.useState)(i.wordWrap),[w,T]=(0,Q.useState)(i.diffIgnoreWhitespace),[D,ne]=(0,Q.useState)(``),[ie,ae]=(0,Q.useState)(()=>({scopeKey:null,fileKeys:bn})),A=(0,Q.useRef)(null),M=se({strict:!1,select:e=>v(e)}),oe=M?.threadId??null,P=Ze(M),ue=P?.projectId??null,de=ze(P&&ue?{environmentId:P.environmentId,projectId:ue}:null),F=P?.worktreePath??de?.workspaceRoot,me=u(d.configValueAtom(P?.environmentId??null)),he=Pe(P?.environmentId??null,me?.availableEditors??[]),_e=f(P!=null&&F!=null?Qe.status({environmentId:P.environmentId,input:{cwd:F}}):null),I=Oe(e=>Te(e.byThreadKey,M,c===`unstaged`)),be=_e.data?.isRepo??!0,{turnDiffSummaries:we,inferredCheckpointTurnCountByTurnId:L}=Se(P),R=(0,Q.useMemo)(()=>[...we].toSorted((e,t)=>{let n=e.checkpointTurnCount??L[e.turnId]??0,r=t.checkpointTurnCount??L[t.turnId]??0;return n===r?t.completedAt.localeCompare(e.completedAt):r-n}),[L,we]);(0,Q.useEffect)(()=>{!M||I.kind!==`turn`||Oe.getState().reconcileTurnSelection(M,R.map(e=>e.turnId))},[I,R,M]);let z=I.kind===`turn`?I.turnId:null,B=I.kind===`unstaged`?`unstaged`:`branch`,V=I.kind===`branch`?I.baseRef:null,Be=I.kind===`turn`?I.filePath:null,Ve=I.kind===`turn`?I.revealRequestId:0,H=z===null?void 0:R.find(e=>e.turnId===z)??R[0],U=H&&(H.checkpointTurnCount??L[H.turnId]),Ue=R[0],We=z===null?B===`unstaged`?`Working tree`:`Branch changes`:H?.turnId===Ue?.turnId?`Latest turn`:`Turn ${U??`?`}`,Ge=H?`turn:${H.turnId}`:B,W=M?`${M.environmentId}:${M.threadId}:${Ge}`:null,Ke=ie.scopeKey===W?ie.fileKeys:bn,Je=H?`Turn ${U??`?`}`:B===`unstaged`?`Working tree`:`Branch changes`,G=(0,Q.useMemo)(()=>typeof U==`number`?{fromTurnCount:Math.max(0,U-1),toTurnCount:U}:null,[U]),Ye=Kt({environmentId:P?.environmentId??null,threadId:oe,fromTurnCount:G?.fromTurnCount??null,toTurnCount:G?.toTurnCount??null,ignoreWhitespace:w,cacheScope:H?`turn:${H.turnId}`:null},{enabled:be&&H!==void 0}),Xe=f(z===null&&P&&F?hn.diffPreview({environmentId:P.environmentId,input:{cwd:F,...V?{baseRef:V}:{},ignoreWhitespace:w}}):null),K=z===null&&Xe.error?.includes(`configured workspace root`)===!0&&me?.cwd!==void 0&&me.cwd!==F,$e=f(K&&P&&me?hn.diffPreview({environmentId:P.environmentId,input:{cwd:me.cwd,...V?{baseRef:V}:{},ignoreWhitespace:w}}):null),q=K?$e:Xe,J=q.data?.sources.find(e=>e.kind===(B===`unstaged`?`working-tree`:`branch-range`)),it=f(z===null&&B===`branch`&&P&&q.data?.cwd?Qe.listRefs({environmentId:P.environmentId,input:{cwd:q.data.cwd,includeMatchingRemoteRefs:!0,refKind:`local`,...D.trim().length>0?{query:D.trim()}:{},limit:100}}):null),at=f(z===null&&B===`branch`&&P&&q.data?.cwd?Qe.listRefs({environmentId:P.environmentId,input:{cwd:q.data.cwd,includeMatchingRemoteRefs:!0,refKind:`remote`,...D.trim().length>0?{query:D.trim()}:{},limit:100}}):null),ot=_n(it.data?.refs.filter(e=>e.name!==J?.headRef)??[],at.data?.refs??[]),st=vn(ot,D),ct=e=>V&&V===e.remote?.name?V:e.local?.name??e.remote?.name??e.id,lt=[yn,...ot.map(ct)],ut=[...D.trim().length===0?[yn]:[],...st.map(ct)],Y=J?.diff,dt=H?Ye.data?.diff:Y,ft=!H&&J?.truncated===!0,pt=H?Ye.isPending:q.isPending,mt=H?Ye.error:q.error,ht=typeof dt==`string`&&dt.trim().length===0,X=(0,Q.useMemo)(()=>Re(dt,`diff-panel:${r}`,{compactPartialHunkOffsets:z===null}),[r,dt,z]),gt=(0,Q.useMemo)(()=>!X||X.kind!==`files`?[]:X.files.toSorted((e,t)=>fe(e).localeCompare(fe(t),void 0,{numeric:!0,sensitivity:`base`})),[X]),Z=(0,Q.useMemo)(()=>gt.map(e=>{let t=qe(e);return{fileDiff:e,filePath:fe(e),fileKey:t,collapsed:Ke.has(t)}}),[Ke,gt]),_t=(0,Q.useMemo)(()=>Z.map(e=>e.fileKey),[Z]),vt=qt(_t,Ke),yt=(0,Q.useMemo)(()=>Ie(gt),[gt]);(0,Q.useEffect)(()=>{if(!Be)return;let e=Z.find(e=>e.filePath===Be);e&&A.current?.scrollTo({type:`item`,id:e.fileKey,align:`start`})},[Z,Be,Ve]);let bt=(0,Q.useCallback)(e=>{Wt({threadRef:M,filePath:e,activeCwd:F,openInEditor:e=>{(async()=>{let t=await he(e);t._tag===`Failure`&&!a(t)&&console.warn(`Failed to open diff file in editor.`,{operation:`open-diff-file`,...M?{environmentId:M.environmentId,threadId:M.threadId}:{},...E(C(t))})})()}})},[F,he,M]),xt=(0,Q.useCallback)(e=>{ae(t=>{let n=new Set(t.scopeKey===W?t.fileKeys:[]);return n.has(e)?n.delete(e):n.add(e),{scopeKey:W,fileKeys:n}})},[W]),St=(0,Q.useCallback)(()=>{ae(e=>{let t=e.scopeKey===W?e.fileKeys:bn;return{scopeKey:W,fileKeys:Jt(_t,t)}})},[W,_t]),Ct=e=>{M&&Oe.getState().selectTurn(M,e)},wt=e=>{M&&Oe.getState().selectGitScope(M,e)},Tt=e=>{M&&Oe.getState().selectBranchBaseRef(M,e)};return(0,$.jsx)(Xt,{mode:e,header:(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-3 [-webkit-app-region:no-drag]`,children:[(0,$.jsxs)(re,{children:[(0,$.jsxs)(te,{className:`inline-flex h-6 max-w-full items-center gap-1 rounded-md bg-muted/70 px-2 text-xs font-medium text-foreground outline-none transition-colors hover:bg-muted focus-visible:ring-2 focus-visible:ring-ring`,"aria-label":`Diff scope: ${We}`,children:[(0,$.jsx)(`span`,{className:`truncate`,children:We}),(0,$.jsx)(h,{className:`size-3.5 shrink-0 text-muted-foreground`})]}),(0,$.jsxs)(O,{align:`start`,className:`w-60`,children:[(0,$.jsx)(_,{className:z===null&&B===`unstaged`?`bg-foreground/[0.08]`:void 0,onClick:()=>wt(`unstaged`),children:(0,$.jsx)(`span`,{children:`Working tree`})}),(0,$.jsx)(_,{className:z===null&&B===`branch`?`bg-foreground/[0.08]`:void 0,onClick:()=>wt(`branch`),children:(0,$.jsx)(`span`,{children:`Branch changes`})}),(0,$.jsx)(_,{className:z!==null&&H?.turnId===Ue?.turnId?`bg-foreground/[0.08]`:void 0,onClick:()=>{Ue&&Ct(Ue.turnId)},children:(0,$.jsx)(`span`,{children:`Latest turn`})}),(0,$.jsxs)(y,{children:[(0,$.jsx)(k,{children:`Turn`}),(0,$.jsx)(b,{className:`w-64`,children:R.map(e=>{let t=e.checkpointTurnCount??L[e.turnId]??`?`;return(0,$.jsxs)(_,{className:e.turnId===H?.turnId?`bg-foreground/[0.08]`:void 0,onClick:()=>Ct(e.turnId),children:[(0,$.jsxs)(`span`,{children:[`Turn `,t]}),(0,$.jsx)(`span`,{className:`ml-auto text-xs tabular-nums text-muted-foreground`,children:pe(e.completedAt,i.timestampFormat)})]},e.turnId)})})]})]})]}),z===null&&B===`branch`&&J?.baseRef&&(0,$.jsxs)(`div`,{className:`flex min-w-0 max-w-full items-center gap-2 overflow-hidden text-xs text-muted-foreground`,title:`${J.headRef??`HEAD`} → ${J.baseRef}`,"aria-label":`Comparing ${J.headRef??`HEAD`} against ${J.baseRef}`,children:[(0,$.jsx)(`span`,{className:`min-w-0 max-w-48 truncate`,children:J.headRef??`HEAD`}),(0,$.jsx)(le,{className:`size-3.5 shrink-0 opacity-70`}),(0,$.jsxs)(Ee,{items:lt,filteredItems:ut,value:V??yn,onOpenChange:e=>{e||ne(``)},onValueChange:e=>{e&&Tt(e===yn?null:e)},children:[(0,$.jsxs)(je,{className:`inline-flex min-w-0 max-w-48 items-center gap-1 overflow-hidden rounded-md px-1.5 py-1 outline-none transition-colors hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,"aria-label":`Change comparison target. Currently ${J.baseRef}`,children:[(0,$.jsx)(`span`,{className:`min-w-0 truncate`,children:J.baseRef}),(0,$.jsx)(h,{className:`size-3.5 shrink-0 opacity-70`})]}),(0,$.jsxs)(xe,{align:`start`,className:`w-72 min-w-0 max-w-[calc(100vw-1rem)] overflow-hidden [&>[data-slot=combobox-popup]]:min-w-0 [&>[data-slot=combobox-popup]]:overflow-hidden`,children:[(0,$.jsx)(`div`,{className:`min-w-0 shrink-0 px-3 pt-2.5`,children:(0,$.jsxs)(`div`,{className:`relative -translate-y-px border-b border-border/70 pb-1.5 transition-colors focus-within:border-ring`,children:[(0,$.jsx)(ye,{"aria-hidden":`true`,className:`pointer-events-none absolute top-1.5 left-0 size-4 shrink-0 text-muted-foreground/55`}),(0,$.jsx)(et,{className:`[&_input]:h-6.5 [&_input]:ps-5 [&_input]:font-sans [&_input]:leading-6.5`,inputClassName:`rounded-none bg-transparent text-sm`,placeholder:`Search refs...`,showTrigger:!1,size:`sm`,unstyled:!0,value:D,onChange:e=>ne(e.target.value)})]})}),(0,$.jsxs)(`div`,{className:`grid shrink-0 grid-cols-[1rem_minmax(0,1fr)] items-center gap-2 border-b border-border/70 ps-3 pe-6.5 pt-2 pb-1.5 font-medium text-[10px] text-muted-foreground uppercase tracking-wide`,children:[(0,$.jsx)(`span`,{"aria-hidden":`true`}),(0,$.jsxs)(`div`,{className:`grid min-w-0 grid-cols-[minmax(0,1fr)_2rem] items-center`,children:[(0,$.jsx)(`span`,{children:`Branch`}),(0,$.jsx)(`span`,{className:`text-right`,children:`Remote`})]})]}),(0,$.jsx)(ke,{children:`No matching refs.`}),(0,$.jsxs)(Ne,{className:`max-h-64 min-w-0 overflow-x-hidden`,children:[(0,$.jsx)(ge,{className:`h-8 w-full min-w-0 grid-cols-[1rem_minmax(0,1fr)] py-0`,contentClassName:`w-full min-w-0 overflow-hidden`,value:yn,children:(0,$.jsx)(`span`,{className:`block min-w-0 truncate`,children:`Automatic`})}),ot.map(e=>{let t=ct(e),n=e.local!==null&&e.remote!==null,r=e.remote?.name===t;return(0,$.jsx)(ge,{className:`h-8 w-full min-w-0 grid-cols-[1rem_minmax(0,1fr)] py-0`,contentClassName:`w-full min-w-0 overflow-hidden`,value:t,children:(0,$.jsxs)(`div`,{className:`grid w-full min-w-0 grid-cols-[minmax(0,1fr)_2rem] items-center overflow-hidden`,children:[(0,$.jsx)(`span`,{className:`block min-w-0 truncate pe-2`,children:e.label}),n?(0,$.jsx)(`div`,{className:`flex justify-end`,onClick:e=>e.stopPropagation(),onPointerDown:e=>e.stopPropagation(),children:(0,$.jsx)(Ce,{"aria-label":`Use remote version of ${e.label}`,checked:r,className:`[--thumb-size:--spacing(3)]`,onCheckedChange:t=>{let n=t?e.remote?.name:e.local?.name;n&&Tt(n)}})}):e.remote?(0,$.jsx)(`span`,{className:`flex justify-end text-muted-foreground`,title:`Remote only`,children:(0,$.jsx)(s,{"aria-hidden":`true`,className:`size-3`})}):null]})},e.id)})]})]})]})]})]}),(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1 [-webkit-app-region:no-drag]`,children:[Z.length>0&&(0,$.jsx)(He,{additions:yt.additions,deletions:yt.deletions,className:`mr-1 text-[11px]`,layout:`inline`}),Z.length>0&&(0,$.jsxs)(o,{children:[(0,$.jsx)(l,{render:(0,$.jsx)(m,{type:`button`,size:`icon-xs`,variant:`outline`,"aria-label":vt?`Expand all files`:`Collapse all files`,onClick:St}),children:vt?(0,$.jsx)(Me,{className:`size-3`}):(0,$.jsx)(Fe,{className:`size-3`})}),(0,$.jsx)(N,{side:`top`,children:vt?`Expand all files`:`Collapse all files`})]}),(0,$.jsxs)(fn,{className:`shrink-0`,variant:`outline`,size:`xs`,value:[p],onValueChange:e=>{let t=e[0];(t===`stacked`||t===`split`)&&x(t)},children:[(0,$.jsx)(pn,{"aria-label":`Stacked diff view`,value:`stacked`,children:(0,$.jsx)(rt,{className:`size-3`})}),(0,$.jsx)(pn,{"aria-label":`Split diff view`,value:`split`,children:(0,$.jsx)(tt,{className:`size-3`})})]}),(0,$.jsxs)(o,{children:[(0,$.jsx)(l,{render:(0,$.jsx)(pn,{"aria-label":S?`Disable diff line wrapping`:`Enable diff line wrapping`,variant:`outline`,size:`xs`,pressed:S,onPressedChange:e=>{ee(!!e)}}),children:(0,$.jsx)(Ae,{className:`size-3`})}),(0,$.jsx)(N,{side:`top`,children:S?`Disable line wrapping`:`Enable line wrapping`})]}),(0,$.jsxs)(o,{children:[(0,$.jsx)(l,{render:(0,$.jsx)(pn,{"aria-label":w?`Show whitespace changes`:`Hide whitespace changes`,variant:`outline`,size:`xs`,pressed:w,onPressedChange:e=>{T(!!e)}}),children:(0,$.jsx)(nt,{className:`size-3`})}),(0,$.jsx)(N,{side:`top`,children:w?`Show whitespace changes`:`Hide whitespace changes`})]})]})]}),children:P?be?z!==null&&R.length===0?(0,$.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-5 text-center text-xs text-muted-foreground/70`,children:`No completed turns yet.`}):(0,$.jsx)($.Fragment,{children:(0,$.jsxs)(`div`,{className:`diff-panel-viewport flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden`,children:[ft&&(0,$.jsx)(`p`,{className:`shrink-0 border-b border-border/70 bg-muted/40 px-3 py-1.5 text-[11px] text-muted-foreground`,children:`This diff was truncated because it exceeded the preview limit. The changes shown are incomplete.`}),mt&&!X&&(0,$.jsx)(`div`,{className:`px-3`,children:(0,$.jsx)(`p`,{className:`mb-2 text-[11px] text-red-500/80`,children:mt})}),X?X.kind===`files`?(0,$.jsx)(`div`,{className:`min-h-0 flex-1`,onClickCapture:e=>{let t=(e.nativeEvent.composedPath?.()??[]).find(e=>e instanceof HTMLElement&&e.hasAttribute(`data-title`))?.textContent?.trim();t&&bt(t)},children:(0,$.jsx)(tn,{viewerRef:A,className:`diff-render-surface h-full min-h-0 overflow-auto`,files:Z,sectionId:Ge,sectionTitle:Je,composerDraftTarget:t,renderHeaderPrefix:(e,t,n)=>{let r=fe(e);return(0,$.jsxs)(o,{children:[(0,$.jsx)(l,{render:(0,$.jsx)(`button`,{type:`button`,className:g(`inline-flex size-5 shrink-0 cursor-pointer items-center justify-center rounded-sm border-0 bg-transparent p-0 transition-colors hover:bg-foreground/10 focus-visible:outline-hidden`,Le(e)),"aria-label":n?`Expand ${r}`:`Collapse ${r}`,"aria-expanded":!n,onClick:e=>{e.stopPropagation(),xt(t)}}),children:n?(0,$.jsx)(ce,{className:`size-4`}):(0,$.jsx)(h,{className:`size-4`})}),(0,$.jsx)(N,{side:`top`,children:n?`Expand diff`:`Collapse diff`})]})},options:{diffStyle:p===`split`?`split`:`unified`,lineDiffType:`none`,overflow:S?`wrap`:`scroll`,theme:De(r),themeType:r,unsafeCSS:xn,stickyHeaders:!0,itemMetrics:{diffHeaderHeight:33},layout:{paddingTop:0,paddingBottom:8,gap:8}}},W??Ge)}):(0,$.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto p-2`,children:(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(`p`,{className:`text-[11px] text-muted-foreground/75`,children:X.reason}),(0,$.jsx)(`pre`,{className:g(`max-h-[72vh] rounded-md border border-border/70 bg-background/70 p-3 font-mono text-[11px] leading-relaxed text-muted-foreground/90`,S?`overflow-auto whitespace-pre-wrap wrap-break-word`:`overflow-auto`),children:X.text})]})}):pt?(0,$.jsx)(Zt,{label:H?`Loading checkpoint diff...`:B===`unstaged`?`Loading working tree diff...`:`Loading branch diff...`}):(0,$.jsx)(`div`,{className:`flex h-full items-center justify-center px-3 py-2 text-xs text-muted-foreground/70`,children:(0,$.jsx)(`p`,{children:ht?`No net changes in this selection.`:`No patch available for this selection.`})})]})}):(0,$.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-5 text-center text-xs text-muted-foreground/70`,children:`Turn diffs are unavailable because this project is not a git repository.`}):(0,$.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-5 text-center text-xs text-muted-foreground/70`,children:`Select a thread to inspect turn diffs.`})})}export{V as DiffWorkerPoolProvider,Sn as default};
|
|
98
|
+
//# sourceMappingURL=DiffPanel-Ijopbelf.js.map
|