@pierre/diffs 1.2.0-beta.4 → 1.2.0-beta.6

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.
Files changed (59) hide show
  1. package/dist/components/CodeView.d.ts +10 -6
  2. package/dist/components/CodeView.d.ts.map +1 -1
  3. package/dist/components/CodeView.js +58 -8
  4. package/dist/components/CodeView.js.map +1 -1
  5. package/dist/components/File.d.ts.map +1 -1
  6. package/dist/components/VirtualizedFile.d.ts +1 -0
  7. package/dist/components/VirtualizedFile.d.ts.map +1 -1
  8. package/dist/components/VirtualizedFile.js +19 -6
  9. package/dist/components/VirtualizedFile.js.map +1 -1
  10. package/dist/components/VirtualizedFileDiff.d.ts +6 -0
  11. package/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
  12. package/dist/components/VirtualizedFileDiff.js +75 -35
  13. package/dist/components/VirtualizedFileDiff.js.map +1 -1
  14. package/dist/constants.d.ts.map +1 -1
  15. package/dist/constants.js +0 -1
  16. package/dist/constants.js.map +1 -1
  17. package/dist/index.d.ts +2 -2
  18. package/dist/index.js +1 -1
  19. package/dist/managers/InteractionManager.d.ts +20 -2
  20. package/dist/managers/InteractionManager.d.ts.map +1 -1
  21. package/dist/managers/InteractionManager.js +223 -28
  22. package/dist/managers/InteractionManager.js.map +1 -1
  23. package/dist/managers/ResizeManager.d.ts +7 -2
  24. package/dist/managers/ResizeManager.d.ts.map +1 -1
  25. package/dist/managers/ResizeManager.js +52 -16
  26. package/dist/managers/ResizeManager.js.map +1 -1
  27. package/dist/react/CodeView.d.ts +1 -0
  28. package/dist/react/CodeView.d.ts.map +1 -1
  29. package/dist/react/CodeView.js +9 -0
  30. package/dist/react/CodeView.js.map +1 -1
  31. package/dist/react/constants.js +3 -1
  32. package/dist/react/constants.js.map +1 -1
  33. package/dist/react/index.d.ts +2 -2
  34. package/dist/react/jsx.d.ts.map +1 -1
  35. package/dist/ssr/index.d.ts +2 -2
  36. package/dist/style.js +1 -1
  37. package/dist/style.js.map +1 -1
  38. package/dist/types.d.ts +6 -6
  39. package/dist/types.d.ts.map +1 -1
  40. package/dist/utils/computeVirtualFileMetrics.d.ts +11 -0
  41. package/dist/utils/computeVirtualFileMetrics.d.ts.map +1 -0
  42. package/dist/utils/{resolveVirtualFileMetrics.js → computeVirtualFileMetrics.js} +7 -10
  43. package/dist/utils/computeVirtualFileMetrics.js.map +1 -0
  44. package/dist/utils/createGutterUtilityContentNode.js +1 -0
  45. package/dist/utils/createGutterUtilityContentNode.js.map +1 -1
  46. package/dist/utils/detachString.d.ts +5 -0
  47. package/dist/utils/detachString.d.ts.map +1 -0
  48. package/dist/utils/detachString.js +19 -0
  49. package/dist/utils/detachString.js.map +1 -0
  50. package/dist/utils/parsePatchFiles.js +163 -56
  51. package/dist/utils/parsePatchFiles.js.map +1 -1
  52. package/dist/worker/worker-portable.js +0 -1
  53. package/dist/worker/worker-portable.js.map +1 -1
  54. package/dist/worker/worker.js +0 -1
  55. package/dist/worker/worker.js.map +1 -1
  56. package/package.json +1 -1
  57. package/dist/utils/resolveVirtualFileMetrics.d.ts +0 -10
  58. package/dist/utils/resolveVirtualFileMetrics.d.ts.map +0 -1
  59. package/dist/utils/resolveVirtualFileMetrics.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { CodeViewDiffItem, CodeViewFileItem, CodeViewItem, CodeViewItemVersion, CodeViewLayout, CodeViewScrollTarget, HunkSeparators, SelectedLineRange, SmoothScrollSettings, VirtualFileMetrics, VirtualWindowSpecs } from "../types.js";
1
+ import { CodeViewDiffItem, CodeViewFileItem, CodeViewItem, CodeViewLayout, CodeViewScrollTarget, HunkSeparators, SelectedLineRange, SmoothScrollSettings, VirtualFileMetrics, VirtualWindowSpecs } from "../types.js";
2
2
  import { SelectionWriteOptions } from "../managers/InteractionManager.js";
3
3
  import { WorkerPoolManager } from "../worker/WorkerPoolManager.js";
4
4
  import "../worker/index.js";
@@ -20,7 +20,7 @@ interface AdvancedVirtualizedBaseItem {
20
20
  * when rendered. */
21
21
  element: HTMLElement | undefined;
22
22
  /** Last controlled version observed for this record. */
23
- version: CodeViewItemVersion | undefined;
23
+ version: number | undefined;
24
24
  }
25
25
  interface CodeViewDiffItemContext<LAnnotation> extends AdvancedVirtualizedBaseItem {
26
26
  type: 'diff';
@@ -40,7 +40,7 @@ interface CodeViewRenderedDiffItem<LAnnotation> {
40
40
  id: string;
41
41
  type: 'diff';
42
42
  item: CodeViewDiffItem<LAnnotation>;
43
- version: CodeViewItemVersion | undefined;
43
+ version: number | undefined;
44
44
  element: HTMLElement;
45
45
  instance: VirtualizedFileDiff<LAnnotation>;
46
46
  }
@@ -48,7 +48,7 @@ interface CodeViewRenderedFileItem<LAnnotation> {
48
48
  id: string;
49
49
  type: 'file';
50
50
  item: CodeViewFileItem<LAnnotation>;
51
- version: CodeViewItemVersion | undefined;
51
+ version: number | undefined;
52
52
  element: HTMLElement;
53
53
  instance: VirtualizedFile<LAnnotation>;
54
54
  }
@@ -83,7 +83,7 @@ type CodeViewSharedCallbackOptions<LAnnotation> = { [TKey in CodeViewSharedCallb
83
83
  type CodeViewSelectionCallbackOptions<LAnnotation> = { [TKey in CodeViewSelectionCallbackKeys]?: CodeViewOptionCallback<LAnnotation, TKey> };
84
84
  interface CodeViewOptions<LAnnotation> extends CodeViewPassThroughOptions<LAnnotation>, CodeViewSharedCallbackOptions<LAnnotation>, CodeViewSelectionCallbackOptions<LAnnotation> {
85
85
  hunkSeparators?: Exclude<HunkSeparators, 'custom'>;
86
- itemMetrics?: VirtualFileMetrics;
86
+ itemMetrics?: Partial<VirtualFileMetrics>;
87
87
  pointerEventsOnScroll?: boolean;
88
88
  smoothScrollSettings?: SmoothScrollSettings;
89
89
  stickyHeaders?: boolean;
@@ -119,6 +119,7 @@ declare class CodeView<LAnnotation = undefined> {
119
119
  private heightDirty;
120
120
  private windowSpecs;
121
121
  private renderState;
122
+ private itemMetricsCache;
122
123
  private pendingScrollTarget;
123
124
  private pendingLayoutAnchor;
124
125
  private scrollAnimation;
@@ -132,7 +133,7 @@ declare class CodeView<LAnnotation = undefined> {
132
133
  private isContainerManaged;
133
134
  constructor(options?: CodeViewOptions<LAnnotation>, workerManager?: WorkerPoolManager | undefined, isContainerManaged?: boolean);
134
135
  private getLayout;
135
- private getItemMetrics;
136
+ private computeMetricsCache;
136
137
  private getSmoothScrollSettings;
137
138
  private shouldDisablePointerEvents;
138
139
  private shouldValidateItemHeights;
@@ -152,6 +153,7 @@ declare class CodeView<LAnnotation = undefined> {
152
153
  clearSelectedLines(options?: SelectionWriteOptions): void;
153
154
  getItem(itemId: string): CodeViewItem<LAnnotation> | undefined;
154
155
  updateItem(input: CodeViewItem<LAnnotation>): boolean;
156
+ updateItemId(oldId: string, newId: string): boolean;
155
157
  addItem(input: CodeViewItem<LAnnotation>): void;
156
158
  addItems(inputs: readonly CodeViewItem<LAnnotation>[]): void;
157
159
  setItems(items: readonly CodeViewItem<LAnnotation>[]): void;
@@ -180,6 +182,8 @@ declare class CodeView<LAnnotation = undefined> {
180
182
  private getItemByMode;
181
183
  private applySelectedLines;
182
184
  private syncSelection;
185
+ private renamePendingScrollTarget;
186
+ private renamePendingLayoutAnchor;
183
187
  private wrapCallbackWithContext;
184
188
  private getWrappedOptionCallback;
185
189
  private getWrappedSelectionOptionCallback;
@@ -1 +1 @@
1
- {"version":3,"file":"CodeView.d.ts","names":["SelectionWriteOptions","CodeViewDiffItem","CodeViewFileItem","CodeViewItem","CodeViewItemVersion","CodeViewLayout","CodeViewScrollTarget","HunkSeparators","SelectedLineRange","SmoothScrollSettings","VirtualFileMetrics","VirtualWindowSpecs","WorkerPoolManager","FileOptions","FileDiffOptions","VirtualizedFile","VirtualizedFileDiff","VirtualizerConfig","AdvancedVirtualizedBaseItem","HTMLElement","CodeViewDiffItemContext","LAnnotation","CodeViewFileItemContext","CodeViewRenderedDiffItem","CodeViewRenderedFileItem","CodeViewRenderedItem","CodeViewLineSelection","CodeViewCoordinator","CodeViewScrollListener","CodeView","OverloadCallbackArgs","TCallback","TArgs","CallbackReturn","TReturn","OverloadFileCallbackArgs","TKey","NonNullable","OverloadDiffCallbackArgs","CodeViewOptionCallback","CODE_VIEW_DIFF_OPTION_KEYS","CodeViewDiffOptionKeys","CodeViewPassThroughOptions","Pick","CODE_VIEW_SHARED_CALLBACK_KEYS","CODE_VIEW_SELECTION_CALLBACK_KEYS","CodeViewSharedCallbackKeys","CodeViewSelectionCallbackKeys","CodeViewSharedCallbackOptions","CodeViewSelectionCallbackOptions","CodeViewOptions","Exclude"],"sources":["../../src/components/CodeView.d.ts"],"sourcesContent":["import type { SelectionWriteOptions } from '../managers/InteractionManager';\nimport type { CodeViewDiffItem, CodeViewFileItem, CodeViewItem, CodeViewItemVersion, CodeViewLayout, CodeViewScrollTarget, HunkSeparators, SelectedLineRange, SmoothScrollSettings, VirtualFileMetrics, VirtualWindowSpecs } from '../types';\nimport type { WorkerPoolManager } from '../worker';\nimport type { FileOptions } from './File';\nimport type { FileDiffOptions } from './FileDiff';\nimport { VirtualizedFile } from './VirtualizedFile';\nimport { VirtualizedFileDiff } from './VirtualizedFileDiff';\nimport type { VirtualizerConfig } from './Virtualizer';\ninterface AdvancedVirtualizedBaseItem {\n /** Current index of this record in the ordered items array. */\n index: number;\n /** Absolute top offset of this item inside the scroll content. */\n top: number;\n /** Total measured height reserved for this item. */\n height: number;\n /** Root <diffs-container> node currently mounted for this item, only exists\n * when rendered. */\n element: HTMLElement | undefined;\n /** Last controlled version observed for this record. */\n version: CodeViewItemVersion | undefined;\n}\ninterface CodeViewDiffItemContext<LAnnotation> extends AdvancedVirtualizedBaseItem {\n type: 'diff';\n /** Latest item snapshot for this record. Controlled updates can replace it. */\n item: CodeViewDiffItem<LAnnotation>;\n /** Virtualized diff instance responsible for rendering this item. */\n instance: VirtualizedFileDiff<LAnnotation>;\n}\ninterface CodeViewFileItemContext<LAnnotation> extends AdvancedVirtualizedBaseItem {\n type: 'file';\n /** Latest item snapshot for this record. Controlled updates can replace it. */\n item: CodeViewFileItem<LAnnotation>;\n /** Virtualized file instance responsible for rendering this item. */\n instance: VirtualizedFile<LAnnotation>;\n}\nexport interface CodeViewRenderedDiffItem<LAnnotation> {\n id: string;\n type: 'diff';\n item: CodeViewDiffItem<LAnnotation>;\n version: CodeViewItemVersion | undefined;\n element: HTMLElement;\n instance: VirtualizedFileDiff<LAnnotation>;\n}\nexport interface CodeViewRenderedFileItem<LAnnotation> {\n id: string;\n type: 'file';\n item: CodeViewFileItem<LAnnotation>;\n version: CodeViewItemVersion | undefined;\n element: HTMLElement;\n instance: VirtualizedFile<LAnnotation>;\n}\nexport type CodeViewRenderedItem<LAnnotation> = CodeViewRenderedDiffItem<LAnnotation> | CodeViewRenderedFileItem<LAnnotation>;\nexport interface CodeViewLineSelection {\n id: string;\n range: SelectedLineRange;\n}\nexport interface CodeViewCoordinator<LAnnotation> {\n hasHeaderRenderers: boolean;\n hasAnnotationRenderer: boolean;\n hasGutterRenderer: boolean;\n onSnapshotChange(snapshot: CodeViewRenderedItem<LAnnotation>[] | undefined): void;\n}\nexport type CodeViewScrollListener<LAnnotation> = (scrollTop: number, viewer: CodeView<LAnnotation>) => void;\ntype OverloadCallbackArgs<TCallback> = TCallback extends (...args: infer TArgs) => unknown ? TArgs : never;\ntype CallbackReturn<TCallback> = TCallback extends (...args: never[]) => infer TReturn ? TReturn : never;\ntype OverloadFileCallbackArgs<LAnnotation, TKey extends keyof FileOptions<LAnnotation>> = OverloadCallbackArgs<NonNullable<FileOptions<LAnnotation>[TKey]>>;\ntype OverloadDiffCallbackArgs<LAnnotation, TKey extends keyof FileDiffOptions<LAnnotation>> = OverloadCallbackArgs<NonNullable<FileDiffOptions<LAnnotation>[TKey]>>;\ntype CodeViewOptionCallback<LAnnotation, TKey extends keyof FileOptions<LAnnotation> & keyof FileDiffOptions<LAnnotation>> = {\n (...args: [\n ...OverloadFileCallbackArgs<LAnnotation, TKey>,\n context: CodeViewFileItemContext<LAnnotation>\n ]): CallbackReturn<NonNullable<FileOptions<LAnnotation>[TKey]>>;\n (...args: [\n ...OverloadDiffCallbackArgs<LAnnotation, TKey>,\n context: CodeViewDiffItemContext<LAnnotation>\n ]): CallbackReturn<NonNullable<FileDiffOptions<LAnnotation>[TKey]>>;\n};\ndeclare const CODE_VIEW_DIFF_OPTION_KEYS: readonly [\"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\"];\ntype CodeViewDiffOptionKeys = (typeof CODE_VIEW_DIFF_OPTION_KEYS)[number];\ntype CodeViewPassThroughOptions<LAnnotation> = Pick<FileDiffOptions<LAnnotation>, CodeViewDiffOptionKeys>;\ndeclare const CODE_VIEW_SHARED_CALLBACK_KEYS: readonly [\"renderCustomHeader\", \"renderHeaderPrefix\", \"renderHeaderMetadata\", \"renderAnnotation\", \"renderGutterUtility\", \"onPostRender\", \"onGutterUtilityClick\", \"onLineClick\", \"onLineNumberClick\", \"onLineEnter\", \"onLineLeave\", \"onTokenClick\", \"onTokenEnter\", \"onTokenLeave\"];\ndeclare const CODE_VIEW_SELECTION_CALLBACK_KEYS: readonly [\"onLineSelected\", \"onLineSelectionStart\", \"onLineSelectionChange\", \"onLineSelectionEnd\"];\ntype CodeViewSharedCallbackKeys = (typeof CODE_VIEW_SHARED_CALLBACK_KEYS)[number];\ntype CodeViewSelectionCallbackKeys = (typeof CODE_VIEW_SELECTION_CALLBACK_KEYS)[number];\ntype CodeViewSharedCallbackOptions<LAnnotation> = {\n [TKey in CodeViewSharedCallbackKeys]?: CodeViewOptionCallback<LAnnotation, TKey>;\n};\ntype CodeViewSelectionCallbackOptions<LAnnotation> = {\n [TKey in CodeViewSelectionCallbackKeys]?: CodeViewOptionCallback<LAnnotation, TKey>;\n};\nexport interface CodeViewOptions<LAnnotation> extends CodeViewPassThroughOptions<LAnnotation>, CodeViewSharedCallbackOptions<LAnnotation>, CodeViewSelectionCallbackOptions<LAnnotation> {\n hunkSeparators?: Exclude<HunkSeparators, 'custom'>;\n itemMetrics?: VirtualFileMetrics;\n pointerEventsOnScroll?: boolean;\n smoothScrollSettings?: SmoothScrollSettings;\n stickyHeaders?: boolean;\n controlledSelection?: boolean;\n onSelectedLinesChange?(selection: CodeViewLineSelection | null): void;\n layout?: CodeViewLayout;\n /** Internal dev-only check to ensure your `itemMetrics` are correct. Its\n * automatically disabled in a production build because it will hurt\n * performance fairly significantly */\n __devOnlyValidateItemHeights?: boolean;\n}\nexport declare class CodeView<LAnnotation = undefined> {\n static __STOP: boolean;\n static __lastScrollPosition: number;\n type: \"advanced\";\n readonly config: VirtualizerConfig;\n private items;\n private idToItem;\n private selectedLines;\n private instanceToItem;\n private layoutDirtyIndex;\n private slotCoordinator;\n private slotSnapshot;\n private scrollListeners;\n private scrollHeight;\n private containerHeight;\n private scrollTop;\n private scrollPageOffset;\n private scrollDirty;\n private pointerEventsRestoreTimer;\n private pointerEventsDisabled;\n private height;\n private heightDirty;\n private windowSpecs;\n private renderState;\n private pendingScrollTarget;\n private pendingLayoutAnchor;\n private scrollAnimation;\n private root;\n private resizeObserver;\n private container;\n private stickyContainer;\n private stickyOffset;\n private options;\n private workerManager;\n private isContainerManaged;\n constructor(options?: CodeViewOptions<LAnnotation>, workerManager?: WorkerPoolManager | undefined, isContainerManaged?: boolean);\n private getLayout;\n private getItemMetrics;\n private getSmoothScrollSettings;\n private shouldDisablePointerEvents;\n private shouldValidateItemHeights;\n private validateRenderedItemHeight;\n private clearPointerEventsTimer;\n private suspendPointerEvents;\n private restorePointerEvents;\n private syncLayout;\n setup(root: HTMLElement): void;\n reset(): void;\n cleanUp(): void;\n private cleanAllRenderedItems;\n private resolveEffectiveScrollBehavior;\n scrollTo(target: CodeViewScrollTarget): void;\n setSelectedLines(selection: CodeViewLineSelection | null, options?: SelectionWriteOptions): void;\n getSelectedLines(): CodeViewLineSelection | null;\n clearSelectedLines(options?: SelectionWriteOptions): void;\n getItem(itemId: string): CodeViewItem<LAnnotation> | undefined;\n updateItem(input: CodeViewItem<LAnnotation>): boolean;\n addItem(input: CodeViewItem<LAnnotation>): void;\n addItems(inputs: readonly CodeViewItem<LAnnotation>[]): void;\n setItems(items: readonly CodeViewItem<LAnnotation>[]): void;\n /**\n * Append new records to the viewer while preserving existing layout state.\n * This is the shared path for imperative adds and the append-only reconcile\n * fast path, so it measures new items immediately and only triggers render\n * once at the end.\n */\n private appendItemsInternal;\n private canSkipRenderForAppend;\n setOptions(options: CodeViewOptions<LAnnotation> | undefined): void;\n private capturePendingLayoutAnchor;\n render(immediate?: boolean): void;\n instanceChanged(instance: VirtualizedFile<LAnnotation> | VirtualizedFileDiff<LAnnotation>, layoutDirty: boolean): void;\n getWindowSpecs(): VirtualWindowSpecs;\n getContainerElement(): HTMLElement | undefined;\n getRenderedItems(): CodeViewRenderedItem<LAnnotation>[];\n setSlotCoordinator(coordinator?: CodeViewCoordinator<LAnnotation>): boolean;\n getSlotSnapshot(coordinator: CodeViewCoordinator<LAnnotation>): CodeViewRenderedItem<LAnnotation>[] | undefined;\n subscribeToScroll(listener: CodeViewScrollListener<LAnnotation>): () => void;\n getLocalTopForInstance(instance: VirtualizedFile<LAnnotation> | VirtualizedFileDiff<LAnnotation>): number;\n getTopForItem(id: string): number | undefined;\n private createItem;\n private getItemById;\n private getItemByMode;\n private applySelectedLines;\n private syncSelection;\n private wrapCallbackWithContext;\n private getWrappedOptionCallback;\n private getWrappedSelectionOptionCallback;\n private createOptions;\n /**\n * Track the earliest index whose measured layout may now be stale. Later\n * render passes relayout from this point forward so we do not have to rebuild\n * positions for the whole list after every change.\n */\n private markLayoutDirtyFromIndex;\n /**\n * Mark the earliest affected item as layout-dirty after an imperative change.\n * Each record carries its current array index so this stays O(1) even when\n * the viewer holds a very large number of items.\n */\n private markItemLayoutDirty;\n /**\n * Detect the common controlled-update case where the new list simply extends\n * the existing ordered prefix. When that happens we can reuse every current\n * record in place, sync any versioned payload changes, and append only the new\n * tail instead of rebuilding the whole list.\n */\n private tryAppendItems;\n /**\n * Reconcile a new controlled item list against the existing records by id.\n * This reuses records and instances when type matches, cleans up removed\n * records, rebuilds the lookup maps, and marks layout dirty whenever order,\n * membership, or versioned item data changes.\n */\n private reconcileItems;\n /**\n * Update a reused record from the latest controlled item only when its item\n * version changes. Matching versions mean CodeView keeps the current record\n * snapshot, which lets imperative updates remain in place until the caller\n * intentionally publishes a newer version.\n */\n private syncItemRecord;\n private getMaxScrollTopForHeight;\n private getMaxScrollTop;\n private shouldRebaseScroll;\n private getPagedScrollHeight;\n private getMaxPagedScrollTop;\n private clampPagedScrollTop;\n /**\n * Clamps a logical scroll position to the min/max allowable scroll range\n * based on the full computed content height.\n */\n private clampScrollTop;\n private getMaxScrollPageOffset;\n private clampScrollPageOffset;\n private resolveScrollPageWindow;\n /**\n * Resolve how a logical scrollTop maps onto the reusable paged scroll window\n * without mutating the current page offset.\n */\n private resolvePagedScrollPosition;\n private needsScrollPageUpdate;\n private getPagedLayoutTop;\n private getStickyHeaderOffset;\n private getScrollTargetRect;\n private normalizeScrollTarget;\n /**\n * Resolve a target's scroll position\n \n * Returns `undefined` when we can't resolve a target for whatever reason\n */\n private resolveScrollTargetTop;\n /**\n * Given an existing scroll target (scroll top and height), figure out the\n * correct scroll position to target based on the desired alignment, offset\n * and stickyOffset if necessary\n */\n private resolveAlignedScrollPosition;\n private getLineScrollPosition;\n private getRangeScrollPosition;\n /**\n * Determine target scroll position for current frame.\n *\n * If there's no pendingScrollTarget then we just return the current scroll\n * position\n *\n * If there's a pendingScrollTarget then we depend on whether there's a\n * smooth scroll animation or not. If not just return the destination, or\n * compute next position given the smooth scroll spring physics\n */\n private computeTargetScrollTopForFrame;\n /**\n * Closed-form critical-damped ODE step.\n *\n * Stable at any dt (Euler would blow up once ω·dt ≳ 1), so this survives\n * big RAF gaps (tab-wake, offscreen frames) and resize-driven ticks that\n * fire outside the normal RAF cadence.\n */\n private computeSpringStep;\n /**\n * For any given pendingScrollTarget, updates any in flight smooth scroll\n * animations and returns the target scrollTop to move towards\n *\n * Resolves the animation based on frame time and adopts any necessary scroll\n * anchoring corrections if necessary\n */\n private advanceScrollAnimation;\n private computeRenderRangeAndEmit;\n private flushManagers;\n private syncContainerHeight;\n private getStickyBounds;\n private applyStickyPositioning;\n private syncPagedScrollScaffolding;\n private reconcileRenderedItems;\n private updateStickyPositioning;\n private handleScroll;\n private clearPendingScroll;\n private handleResize;\n /**\n * Figure out scrollTop accounting for sticky header if enabled and\n * necessary\n */\n private getScrollAnchorViewportTop;\n /**\n * Attempt to find a scroll anchor based on build in metrics of the existing\n * rendered files/diff.\n *\n * A scroll anchor represents the first fully visible element (in other\n * words, the first file or first line who's top is fully in the viewport).\n */\n private getScrollAnchor;\n /**\n * Given a scroll anchor, attempt to resolve a newly updated (and clamped)\n * scroll position to keep the anchored element in place.\n *\n * If we can't resolve a position for whatever reason, we'll return\n * undefined.\n */\n private resolveAnchoredScrollTop;\n /**\n * Apply a device-pixel-rounded scroll position if it differs from the last\n * logical scrollTop synchronized into the paged scroll scaffold.\n */\n private applyScrollFix;\n /**\n * Decide whether a pending programmatic scroll has reached its\n * destination and should be cleared.\n */\n private isPendingTargetSettled;\n getScrollTop(): number;\n getHeight(): number;\n getScrollHeight(): number;\n private flushSlotCoordinator;\n private notifyScroll;\n /**\n * Find the first item whose bottom edge crosses into the viewport window.\n * This lets scroll-time rendering jump directly near the visible range instead\n * of linearly scanning from the start of very large item lists.\n */\n private findFirstVisibleIndex;\n /**\n * Find the last item whose top edge is still within the viewport window.\n * Paired with findFirstVisibleIndex, this bounds the render loop to only the\n * slice of items that can actually intersect the current scroll range.\n */\n private findLastVisibleIndex;\n /**\n * Recompute measured tops and heights starting from the earliest dirty item.\n * Earlier items keep their existing layout, while everything from startIndex\n * onward is remeasured so downstream positions and total scroll height stay\n * consistent after inserts, removals, or versioned item updates.\n */\n private recomputeLayout;\n private resetRenderState;\n private getFitPerfectlyOverscroll;\n}\nexport {};\n//# sourceMappingURL=CodeView.d.ts.map"],"mappings":"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"}
1
+ {"version":3,"file":"CodeView.d.ts","names":["SelectionWriteOptions","CodeViewDiffItem","CodeViewFileItem","CodeViewItem","CodeViewLayout","CodeViewScrollTarget","HunkSeparators","SelectedLineRange","SmoothScrollSettings","VirtualFileMetrics","VirtualWindowSpecs","WorkerPoolManager","FileOptions","FileDiffOptions","VirtualizedFile","VirtualizedFileDiff","VirtualizerConfig","AdvancedVirtualizedBaseItem","HTMLElement","CodeViewDiffItemContext","LAnnotation","CodeViewFileItemContext","CodeViewRenderedDiffItem","CodeViewRenderedFileItem","CodeViewRenderedItem","CodeViewLineSelection","CodeViewCoordinator","CodeViewScrollListener","CodeView","OverloadCallbackArgs","TCallback","TArgs","CallbackReturn","TReturn","OverloadFileCallbackArgs","TKey","NonNullable","OverloadDiffCallbackArgs","CodeViewOptionCallback","CODE_VIEW_DIFF_OPTION_KEYS","CodeViewDiffOptionKeys","CodeViewPassThroughOptions","Pick","CODE_VIEW_SHARED_CALLBACK_KEYS","CODE_VIEW_SELECTION_CALLBACK_KEYS","CodeViewSharedCallbackKeys","CodeViewSelectionCallbackKeys","CodeViewSharedCallbackOptions","CodeViewSelectionCallbackOptions","CodeViewOptions","Exclude","Partial"],"sources":["../../src/components/CodeView.d.ts"],"sourcesContent":["import type { SelectionWriteOptions } from '../managers/InteractionManager';\nimport type { CodeViewDiffItem, CodeViewFileItem, CodeViewItem, CodeViewLayout, CodeViewScrollTarget, HunkSeparators, SelectedLineRange, SmoothScrollSettings, VirtualFileMetrics, VirtualWindowSpecs } from '../types';\nimport type { WorkerPoolManager } from '../worker';\nimport type { FileOptions } from './File';\nimport type { FileDiffOptions } from './FileDiff';\nimport { VirtualizedFile } from './VirtualizedFile';\nimport { VirtualizedFileDiff } from './VirtualizedFileDiff';\nimport type { VirtualizerConfig } from './Virtualizer';\ninterface AdvancedVirtualizedBaseItem {\n /** Current index of this record in the ordered items array. */\n index: number;\n /** Absolute top offset of this item inside the scroll content. */\n top: number;\n /** Total measured height reserved for this item. */\n height: number;\n /** Root <diffs-container> node currently mounted for this item, only exists\n * when rendered. */\n element: HTMLElement | undefined;\n /** Last controlled version observed for this record. */\n version: number | undefined;\n}\ninterface CodeViewDiffItemContext<LAnnotation> extends AdvancedVirtualizedBaseItem {\n type: 'diff';\n /** Latest item snapshot for this record. Controlled updates can replace it. */\n item: CodeViewDiffItem<LAnnotation>;\n /** Virtualized diff instance responsible for rendering this item. */\n instance: VirtualizedFileDiff<LAnnotation>;\n}\ninterface CodeViewFileItemContext<LAnnotation> extends AdvancedVirtualizedBaseItem {\n type: 'file';\n /** Latest item snapshot for this record. Controlled updates can replace it. */\n item: CodeViewFileItem<LAnnotation>;\n /** Virtualized file instance responsible for rendering this item. */\n instance: VirtualizedFile<LAnnotation>;\n}\nexport interface CodeViewRenderedDiffItem<LAnnotation> {\n id: string;\n type: 'diff';\n item: CodeViewDiffItem<LAnnotation>;\n version: number | undefined;\n element: HTMLElement;\n instance: VirtualizedFileDiff<LAnnotation>;\n}\nexport interface CodeViewRenderedFileItem<LAnnotation> {\n id: string;\n type: 'file';\n item: CodeViewFileItem<LAnnotation>;\n version: number | undefined;\n element: HTMLElement;\n instance: VirtualizedFile<LAnnotation>;\n}\nexport type CodeViewRenderedItem<LAnnotation> = CodeViewRenderedDiffItem<LAnnotation> | CodeViewRenderedFileItem<LAnnotation>;\nexport interface CodeViewLineSelection {\n id: string;\n range: SelectedLineRange;\n}\nexport interface CodeViewCoordinator<LAnnotation> {\n hasHeaderRenderers: boolean;\n hasAnnotationRenderer: boolean;\n hasGutterRenderer: boolean;\n onSnapshotChange(snapshot: CodeViewRenderedItem<LAnnotation>[] | undefined): void;\n}\nexport type CodeViewScrollListener<LAnnotation> = (scrollTop: number, viewer: CodeView<LAnnotation>) => void;\ntype OverloadCallbackArgs<TCallback> = TCallback extends (...args: infer TArgs) => unknown ? TArgs : never;\ntype CallbackReturn<TCallback> = TCallback extends (...args: never[]) => infer TReturn ? TReturn : never;\ntype OverloadFileCallbackArgs<LAnnotation, TKey extends keyof FileOptions<LAnnotation>> = OverloadCallbackArgs<NonNullable<FileOptions<LAnnotation>[TKey]>>;\ntype OverloadDiffCallbackArgs<LAnnotation, TKey extends keyof FileDiffOptions<LAnnotation>> = OverloadCallbackArgs<NonNullable<FileDiffOptions<LAnnotation>[TKey]>>;\ntype CodeViewOptionCallback<LAnnotation, TKey extends keyof FileOptions<LAnnotation> & keyof FileDiffOptions<LAnnotation>> = {\n (...args: [\n ...OverloadFileCallbackArgs<LAnnotation, TKey>,\n context: CodeViewFileItemContext<LAnnotation>\n ]): CallbackReturn<NonNullable<FileOptions<LAnnotation>[TKey]>>;\n (...args: [\n ...OverloadDiffCallbackArgs<LAnnotation, TKey>,\n context: CodeViewDiffItemContext<LAnnotation>\n ]): CallbackReturn<NonNullable<FileDiffOptions<LAnnotation>[TKey]>>;\n};\ndeclare const CODE_VIEW_DIFF_OPTION_KEYS: readonly [\"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\"];\ntype CodeViewDiffOptionKeys = (typeof CODE_VIEW_DIFF_OPTION_KEYS)[number];\ntype CodeViewPassThroughOptions<LAnnotation> = Pick<FileDiffOptions<LAnnotation>, CodeViewDiffOptionKeys>;\ndeclare const CODE_VIEW_SHARED_CALLBACK_KEYS: readonly [\"renderCustomHeader\", \"renderHeaderPrefix\", \"renderHeaderMetadata\", \"renderAnnotation\", \"renderGutterUtility\", \"onPostRender\", \"onGutterUtilityClick\", \"onLineClick\", \"onLineNumberClick\", \"onLineEnter\", \"onLineLeave\", \"onTokenClick\", \"onTokenEnter\", \"onTokenLeave\"];\ndeclare const CODE_VIEW_SELECTION_CALLBACK_KEYS: readonly [\"onLineSelected\", \"onLineSelectionStart\", \"onLineSelectionChange\", \"onLineSelectionEnd\"];\ntype CodeViewSharedCallbackKeys = (typeof CODE_VIEW_SHARED_CALLBACK_KEYS)[number];\ntype CodeViewSelectionCallbackKeys = (typeof CODE_VIEW_SELECTION_CALLBACK_KEYS)[number];\ntype CodeViewSharedCallbackOptions<LAnnotation> = {\n [TKey in CodeViewSharedCallbackKeys]?: CodeViewOptionCallback<LAnnotation, TKey>;\n};\ntype CodeViewSelectionCallbackOptions<LAnnotation> = {\n [TKey in CodeViewSelectionCallbackKeys]?: CodeViewOptionCallback<LAnnotation, TKey>;\n};\nexport interface CodeViewOptions<LAnnotation> extends CodeViewPassThroughOptions<LAnnotation>, CodeViewSharedCallbackOptions<LAnnotation>, CodeViewSelectionCallbackOptions<LAnnotation> {\n hunkSeparators?: Exclude<HunkSeparators, 'custom'>;\n itemMetrics?: Partial<VirtualFileMetrics>;\n pointerEventsOnScroll?: boolean;\n smoothScrollSettings?: SmoothScrollSettings;\n stickyHeaders?: boolean;\n controlledSelection?: boolean;\n onSelectedLinesChange?(selection: CodeViewLineSelection | null): void;\n layout?: CodeViewLayout;\n /** Internal dev-only check to ensure your `itemMetrics` are correct. Its\n * automatically disabled in a production build because it will hurt\n * performance fairly significantly */\n __devOnlyValidateItemHeights?: boolean;\n}\nexport declare class CodeView<LAnnotation = undefined> {\n static __STOP: boolean;\n static __lastScrollPosition: number;\n type: \"advanced\";\n readonly config: VirtualizerConfig;\n private items;\n private idToItem;\n private selectedLines;\n private instanceToItem;\n private layoutDirtyIndex;\n private slotCoordinator;\n private slotSnapshot;\n private scrollListeners;\n private scrollHeight;\n private containerHeight;\n private scrollTop;\n private scrollPageOffset;\n private scrollDirty;\n private pointerEventsRestoreTimer;\n private pointerEventsDisabled;\n private height;\n private heightDirty;\n private windowSpecs;\n private renderState;\n private itemMetricsCache;\n private pendingScrollTarget;\n private pendingLayoutAnchor;\n private scrollAnimation;\n private root;\n private resizeObserver;\n private container;\n private stickyContainer;\n private stickyOffset;\n private options;\n private workerManager;\n private isContainerManaged;\n constructor(options?: CodeViewOptions<LAnnotation>, workerManager?: WorkerPoolManager | undefined, isContainerManaged?: boolean);\n private getLayout;\n private computeMetricsCache;\n private getSmoothScrollSettings;\n private shouldDisablePointerEvents;\n private shouldValidateItemHeights;\n private validateRenderedItemHeight;\n private clearPointerEventsTimer;\n private suspendPointerEvents;\n private restorePointerEvents;\n private syncLayout;\n setup(root: HTMLElement): void;\n reset(): void;\n cleanUp(): void;\n private cleanAllRenderedItems;\n private resolveEffectiveScrollBehavior;\n scrollTo(target: CodeViewScrollTarget): void;\n setSelectedLines(selection: CodeViewLineSelection | null, options?: SelectionWriteOptions): void;\n getSelectedLines(): CodeViewLineSelection | null;\n clearSelectedLines(options?: SelectionWriteOptions): void;\n getItem(itemId: string): CodeViewItem<LAnnotation> | undefined;\n updateItem(input: CodeViewItem<LAnnotation>): boolean;\n updateItemId(oldId: string, newId: string): boolean;\n addItem(input: CodeViewItem<LAnnotation>): void;\n addItems(inputs: readonly CodeViewItem<LAnnotation>[]): void;\n setItems(items: readonly CodeViewItem<LAnnotation>[]): void;\n /**\n * Append new records to the viewer while preserving existing layout state.\n * This is the shared path for imperative adds and the append-only reconcile\n * fast path, so it measures new items immediately and only triggers render\n * once at the end.\n */\n private appendItemsInternal;\n private canSkipRenderForAppend;\n setOptions(options: CodeViewOptions<LAnnotation> | undefined): void;\n private capturePendingLayoutAnchor;\n render(immediate?: boolean): void;\n instanceChanged(instance: VirtualizedFile<LAnnotation> | VirtualizedFileDiff<LAnnotation>, layoutDirty: boolean): void;\n getWindowSpecs(): VirtualWindowSpecs;\n getContainerElement(): HTMLElement | undefined;\n getRenderedItems(): CodeViewRenderedItem<LAnnotation>[];\n setSlotCoordinator(coordinator?: CodeViewCoordinator<LAnnotation>): boolean;\n getSlotSnapshot(coordinator: CodeViewCoordinator<LAnnotation>): CodeViewRenderedItem<LAnnotation>[] | undefined;\n subscribeToScroll(listener: CodeViewScrollListener<LAnnotation>): () => void;\n getLocalTopForInstance(instance: VirtualizedFile<LAnnotation> | VirtualizedFileDiff<LAnnotation>): number;\n getTopForItem(id: string): number | undefined;\n private createItem;\n private getItemById;\n private getItemByMode;\n private applySelectedLines;\n private syncSelection;\n private renamePendingScrollTarget;\n private renamePendingLayoutAnchor;\n private wrapCallbackWithContext;\n private getWrappedOptionCallback;\n private getWrappedSelectionOptionCallback;\n private createOptions;\n /**\n * Track the earliest index whose measured layout may now be stale. Later\n * render passes relayout from this point forward so we do not have to rebuild\n * positions for the whole list after every change.\n */\n private markLayoutDirtyFromIndex;\n /**\n * Mark the earliest affected item as layout-dirty after an imperative change.\n * Each record carries its current array index so this stays O(1) even when\n * the viewer holds a very large number of items.\n */\n private markItemLayoutDirty;\n /**\n * Detect the common controlled-update case where the new list simply extends\n * the existing ordered prefix. When that happens we can reuse every current\n * record in place, sync any versioned payload changes, and append only the new\n * tail instead of rebuilding the whole list.\n */\n private tryAppendItems;\n /**\n * Reconcile a new controlled item list against the existing records by id.\n * This reuses records and instances when type matches, cleans up removed\n * records, rebuilds the lookup maps, and marks layout dirty whenever order,\n * membership, or versioned item data changes.\n */\n private reconcileItems;\n /**\n * Update a reused record from the latest controlled item only when its item\n * version changes. Matching versions mean CodeView keeps the current record\n * snapshot, which lets imperative updates remain in place until the caller\n * intentionally publishes a newer version.\n */\n private syncItemRecord;\n private getMaxScrollTopForHeight;\n private getMaxScrollTop;\n private shouldRebaseScroll;\n private getPagedScrollHeight;\n private getMaxPagedScrollTop;\n private clampPagedScrollTop;\n /**\n * Clamps a logical scroll position to the min/max allowable scroll range\n * based on the full computed content height.\n */\n private clampScrollTop;\n private getMaxScrollPageOffset;\n private clampScrollPageOffset;\n private resolveScrollPageWindow;\n /**\n * Resolve how a logical scrollTop maps onto the reusable paged scroll window\n * without mutating the current page offset.\n */\n private resolvePagedScrollPosition;\n private needsScrollPageUpdate;\n private getPagedLayoutTop;\n private getStickyHeaderOffset;\n private getScrollTargetRect;\n private normalizeScrollTarget;\n /**\n * Resolve a target's scroll position\n \n * Returns `undefined` when we can't resolve a target for whatever reason\n */\n private resolveScrollTargetTop;\n /**\n * Given an existing scroll target (scroll top and height), figure out the\n * correct scroll position to target based on the desired alignment, offset\n * and stickyOffset if necessary\n */\n private resolveAlignedScrollPosition;\n private getLineScrollPosition;\n private getRangeScrollPosition;\n /**\n * Determine target scroll position for current frame.\n *\n * If there's no pendingScrollTarget then we just return the current scroll\n * position\n *\n * If there's a pendingScrollTarget then we depend on whether there's a\n * smooth scroll animation or not. If not just return the destination, or\n * compute next position given the smooth scroll spring physics\n */\n private computeTargetScrollTopForFrame;\n /**\n * Closed-form critical-damped ODE step.\n *\n * Stable at any dt (Euler would blow up once ω·dt ≳ 1), so this survives\n * big RAF gaps (tab-wake, offscreen frames) and resize-driven ticks that\n * fire outside the normal RAF cadence.\n */\n private computeSpringStep;\n /**\n * For any given pendingScrollTarget, updates any in flight smooth scroll\n * animations and returns the target scrollTop to move towards\n *\n * Resolves the animation based on frame time and adopts any necessary scroll\n * anchoring corrections if necessary\n */\n private advanceScrollAnimation;\n private computeRenderRangeAndEmit;\n private flushManagers;\n private syncContainerHeight;\n private getStickyBounds;\n private applyStickyPositioning;\n private syncPagedScrollScaffolding;\n private reconcileRenderedItems;\n private updateStickyPositioning;\n private handleScroll;\n private clearPendingScroll;\n private handleResize;\n /**\n * Figure out scrollTop accounting for sticky header if enabled and\n * necessary\n */\n private getScrollAnchorViewportTop;\n /**\n * Attempt to find a scroll anchor based on build in metrics of the existing\n * rendered files/diff.\n *\n * A scroll anchor represents the first fully visible element (in other\n * words, the first file or first line who's top is fully in the viewport).\n */\n private getScrollAnchor;\n /**\n * Given a scroll anchor, attempt to resolve a newly updated (and clamped)\n * scroll position to keep the anchored element in place.\n *\n * If we can't resolve a position for whatever reason, we'll return\n * undefined.\n */\n private resolveAnchoredScrollTop;\n /**\n * Apply a device-pixel-rounded scroll position if it differs from the last\n * logical scrollTop synchronized into the paged scroll scaffold.\n */\n private applyScrollFix;\n /**\n * Decide whether a pending programmatic scroll has reached its\n * destination and should be cleared.\n */\n private isPendingTargetSettled;\n getScrollTop(): number;\n getHeight(): number;\n getScrollHeight(): number;\n private flushSlotCoordinator;\n private notifyScroll;\n /**\n * Find the first item whose bottom edge crosses into the viewport window.\n * This lets scroll-time rendering jump directly near the visible range instead\n * of linearly scanning from the start of very large item lists.\n */\n private findFirstVisibleIndex;\n /**\n * Find the last item whose top edge is still within the viewport window.\n * Paired with findFirstVisibleIndex, this bounds the render loop to only the\n * slice of items that can actually intersect the current scroll range.\n */\n private findLastVisibleIndex;\n /**\n * Recompute measured tops and heights starting from the earliest dirty item.\n * Earlier items keep their existing layout, while everything from startIndex\n * onward is remeasured so downstream positions and total scroll height stay\n * consistent after inserts, removals, or versioned item updates.\n */\n private recomputeLayout;\n private resetRenderState;\n private getFitPerfectlyOverscroll;\n}\nexport {};\n//# sourceMappingURL=CodeView.d.ts.map"],"mappings":"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"}
@@ -124,6 +124,7 @@ var CodeView = class CodeView {
124
124
  stickyTop: -1,
125
125
  stickyBottom: -1
126
126
  };
127
+ itemMetricsCache = DEFAULT_CODE_VIEW_FILE_METRICS;
127
128
  pendingScrollTarget;
128
129
  pendingLayoutAnchor;
129
130
  scrollAnimation;
@@ -137,6 +138,7 @@ var CodeView = class CodeView {
137
138
  isContainerManaged;
138
139
  constructor(options = { theme: DEFAULT_THEMES }, workerManager, isContainerManaged = false) {
139
140
  this.options = options;
141
+ this.computeMetricsCache(options.itemMetrics);
140
142
  this.workerManager = workerManager;
141
143
  this.isContainerManaged = isContainerManaged;
142
144
  this.stickyOffset.style.contain = "layout size";
@@ -150,8 +152,17 @@ var CodeView = class CodeView {
150
152
  getLayout() {
151
153
  return this.options.layout ?? DEFAULT_CODE_VIEW_LAYOUT;
152
154
  }
153
- getItemMetrics() {
154
- return this.options.itemMetrics ?? DEFAULT_CODE_VIEW_FILE_METRICS;
155
+ computeMetricsCache(itemMetrics) {
156
+ this.itemMetricsCache = {
157
+ hunkLineCount: itemMetrics?.hunkLineCount ?? DEFAULT_CODE_VIEW_FILE_METRICS.hunkLineCount,
158
+ lineHeight: itemMetrics?.lineHeight ?? DEFAULT_CODE_VIEW_FILE_METRICS.lineHeight,
159
+ diffHeaderHeight: itemMetrics?.diffHeaderHeight ?? DEFAULT_CODE_VIEW_FILE_METRICS.diffHeaderHeight,
160
+ hunkSeparatorHeight: itemMetrics?.hunkSeparatorHeight,
161
+ spacing: itemMetrics?.spacing ?? DEFAULT_CODE_VIEW_FILE_METRICS.spacing,
162
+ paddingTop: itemMetrics?.paddingTop,
163
+ paddingBottom: itemMetrics?.paddingBottom
164
+ };
165
+ return this.itemMetricsCache;
155
166
  }
156
167
  getSmoothScrollSettings() {
157
168
  return this.options.smoothScrollSettings ?? DEFAULT_SMOOTH_SCROLL_SETTINGS;
@@ -347,6 +358,34 @@ var CodeView = class CodeView {
347
358
  this.syncSelection();
348
359
  return true;
349
360
  }
361
+ updateItemId(oldId, newId) {
362
+ if (oldId === newId) return true;
363
+ const item = this.idToItem.get(oldId);
364
+ if (item == null) {
365
+ console.error(`CodeView.updateItemId: unknown item id "${oldId}"`);
366
+ return false;
367
+ }
368
+ if (this.idToItem.has(newId)) {
369
+ console.error(`CodeView.updateItemId: duplicate item id "${newId}"`);
370
+ return false;
371
+ }
372
+ this.idToItem.delete(oldId);
373
+ item.item.id = newId;
374
+ this.idToItem.set(newId, item);
375
+ if (item.type === "diff") item.instance.setOptions(this.createOptions(item.item));
376
+ else item.instance.setOptions(this.createOptions(item.item));
377
+ if (this.selectedLines?.id === oldId) {
378
+ this.selectedLines = {
379
+ ...this.selectedLines,
380
+ id: newId
381
+ };
382
+ this.options.onSelectedLinesChange?.(this.selectedLines);
383
+ }
384
+ this.renamePendingScrollTarget(oldId, newId);
385
+ this.renamePendingLayoutAnchor(oldId, newId);
386
+ this.render();
387
+ return true;
388
+ }
350
389
  addItem(input) {
351
390
  this.addItems([input]);
352
391
  this.syncSelection();
@@ -395,9 +434,9 @@ var CodeView = class CodeView {
395
434
  if (options == null) return;
396
435
  this.capturePendingLayoutAnchor();
397
436
  const previousLayout = this.getLayout();
398
- const previousItemMetrics = this.getItemMetrics();
437
+ const { itemMetricsCache: previousItemMetrics } = this;
399
438
  this.options = options;
400
- const nextItemMetrics = this.getItemMetrics();
439
+ const nextItemMetrics = this.computeMetricsCache(options.itemMetrics);
401
440
  const itemMetricsChanged = !areObjectsEqual(previousItemMetrics, nextItemMetrics);
402
441
  if (!areObjectsEqual(previousLayout, this.getLayout())) this.syncLayout();
403
442
  for (let index = 0; index < this.items.length; index++) {
@@ -486,7 +525,7 @@ var CodeView = class CodeView {
486
525
  return item.top + this.getLayout().paddingTop;
487
526
  }
488
527
  createItem(input, index, top) {
489
- const itemMetrics = this.getItemMetrics();
528
+ const { itemMetricsCache: itemMetrics } = this;
490
529
  if (input.type === "diff") return {
491
530
  type: "diff",
492
531
  item: input,
@@ -538,6 +577,17 @@ var CodeView = class CodeView {
538
577
  }
539
578
  item.instance.setSelectedLines(this.selectedLines.range, { notify: false });
540
579
  }
580
+ renamePendingScrollTarget(oldId, newId) {
581
+ const { pendingScrollTarget } = this;
582
+ if (pendingScrollTarget == null || pendingScrollTarget.type === "position" || pendingScrollTarget.id !== oldId) return;
583
+ this.pendingScrollTarget = {
584
+ ...pendingScrollTarget,
585
+ id: newId
586
+ };
587
+ }
588
+ renamePendingLayoutAnchor(oldId, newId) {
589
+ if (this.pendingLayoutAnchor?.id === oldId) this.pendingLayoutAnchor.id = newId;
590
+ }
541
591
  wrapCallbackWithContext(mode, itemId, callback) {
542
592
  return (...args) => {
543
593
  const item = this.getItemByMode(itemId, mode);
@@ -770,7 +820,7 @@ var CodeView = class CodeView {
770
820
  return Math.max(logicalTop - this.scrollPageOffset, 0);
771
821
  }
772
822
  getStickyHeaderOffset() {
773
- return this.options.stickyHeaders === true && this.options.disableFileHeader !== true ? this.getItemMetrics().diffHeaderHeight : 0;
823
+ return this.options.stickyHeaders === true && this.options.disableFileHeader !== true ? this.itemMetricsCache.diffHeaderHeight : 0;
774
824
  }
775
825
  getScrollTargetRect(target) {
776
826
  const item = this.idToItem.get(target.id);
@@ -1084,7 +1134,7 @@ var CodeView = class CodeView {
1084
1134
  }
1085
1135
  applyStickyPositioning({ stickyTop, stickyBottom }) {
1086
1136
  const height = this.getHeight();
1087
- const itemMetrics = this.getItemMetrics();
1137
+ const { itemMetricsCache: itemMetrics } = this;
1088
1138
  const stickyContainerHeight = stickyBottom - stickyTop;
1089
1139
  this.renderState.stickyHeight = stickyContainerHeight;
1090
1140
  this.renderState.stickyTop = stickyTop;
@@ -1383,7 +1433,7 @@ var CodeView = class CodeView {
1383
1433
  this.renderState.stickyBottom = -1;
1384
1434
  }
1385
1435
  getFitPerfectlyOverscroll() {
1386
- return this.getLayout().gap + this.getItemMetrics().diffHeaderHeight;
1436
+ return this.getLayout().gap + this.itemMetricsCache.diffHeaderHeight;
1387
1437
  }
1388
1438
  };
1389
1439
  function cleanRenderedItem(item) {