@pierre/diffs 1.1.20 → 1.2.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/dist/components/CodeView.d.ts +325 -0
  2. package/dist/components/CodeView.d.ts.map +1 -0
  3. package/dist/components/CodeView.js +1252 -0
  4. package/dist/components/CodeView.js.map +1 -0
  5. package/dist/components/File.d.ts +13 -12
  6. package/dist/components/File.d.ts.map +1 -1
  7. package/dist/components/File.js +68 -28
  8. package/dist/components/File.js.map +1 -1
  9. package/dist/components/FileDiff.d.ts +9 -10
  10. package/dist/components/FileDiff.d.ts.map +1 -1
  11. package/dist/components/FileDiff.js +57 -30
  12. package/dist/components/FileDiff.js.map +1 -1
  13. package/dist/components/FileStream.js +9 -3
  14. package/dist/components/FileStream.js.map +1 -1
  15. package/dist/components/VirtualizedFile.d.ts +28 -5
  16. package/dist/components/VirtualizedFile.d.ts.map +1 -1
  17. package/dist/components/VirtualizedFile.js +225 -45
  18. package/dist/components/VirtualizedFile.js.map +1 -1
  19. package/dist/components/VirtualizedFileDiff.d.ts +28 -5
  20. package/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
  21. package/dist/components/VirtualizedFileDiff.js +285 -49
  22. package/dist/components/VirtualizedFileDiff.js.map +1 -1
  23. package/dist/components/Virtualizer.d.ts +6 -3
  24. package/dist/components/Virtualizer.d.ts.map +1 -1
  25. package/dist/components/Virtualizer.js +4 -6
  26. package/dist/components/Virtualizer.js.map +1 -1
  27. package/dist/components/VirtulizerDevelopment.d.ts +2 -2
  28. package/dist/components/VirtulizerDevelopment.d.ts.map +1 -1
  29. package/dist/constants.d.ts +6 -2
  30. package/dist/constants.d.ts.map +1 -1
  31. package/dist/constants.js +17 -2
  32. package/dist/constants.js.map +1 -1
  33. package/dist/index.d.ts +6 -5
  34. package/dist/index.js +11 -10
  35. package/dist/managers/InteractionManager.d.ts +11 -7
  36. package/dist/managers/InteractionManager.d.ts.map +1 -1
  37. package/dist/managers/InteractionManager.js +38 -25
  38. package/dist/managers/InteractionManager.js.map +1 -1
  39. package/dist/managers/ResizeManager.d.ts +4 -4
  40. package/dist/managers/ResizeManager.d.ts.map +1 -1
  41. package/dist/managers/ResizeManager.js +89 -54
  42. package/dist/managers/ResizeManager.js.map +1 -1
  43. package/dist/managers/UniversalRenderingManager.d.ts +2 -1
  44. package/dist/managers/UniversalRenderingManager.d.ts.map +1 -1
  45. package/dist/managers/UniversalRenderingManager.js +13 -16
  46. package/dist/managers/UniversalRenderingManager.js.map +1 -1
  47. package/dist/react/CodeView.d.ts +45 -0
  48. package/dist/react/CodeView.d.ts.map +1 -0
  49. package/dist/react/CodeView.js +241 -0
  50. package/dist/react/CodeView.js.map +1 -0
  51. package/dist/react/File.d.ts +0 -1
  52. package/dist/react/File.d.ts.map +1 -1
  53. package/dist/react/File.js +2 -3
  54. package/dist/react/File.js.map +1 -1
  55. package/dist/react/FileDiff.d.ts +0 -1
  56. package/dist/react/FileDiff.d.ts.map +1 -1
  57. package/dist/react/FileDiff.js +3 -4
  58. package/dist/react/FileDiff.js.map +1 -1
  59. package/dist/react/MultiFileDiff.d.ts +0 -1
  60. package/dist/react/MultiFileDiff.d.ts.map +1 -1
  61. package/dist/react/MultiFileDiff.js +3 -4
  62. package/dist/react/MultiFileDiff.js.map +1 -1
  63. package/dist/react/PatchDiff.d.ts +0 -1
  64. package/dist/react/PatchDiff.d.ts.map +1 -1
  65. package/dist/react/PatchDiff.js +3 -4
  66. package/dist/react/PatchDiff.js.map +1 -1
  67. package/dist/react/UnresolvedFile.d.ts +0 -1
  68. package/dist/react/UnresolvedFile.d.ts.map +1 -1
  69. package/dist/react/UnresolvedFile.js +3 -4
  70. package/dist/react/UnresolvedFile.js.map +1 -1
  71. package/dist/react/constants.d.ts.map +1 -1
  72. package/dist/react/index.d.ts +3 -2
  73. package/dist/react/index.js +5 -4
  74. package/dist/react/jsx.d.ts.map +1 -1
  75. package/dist/react/types.d.ts +0 -8
  76. package/dist/react/types.d.ts.map +1 -1
  77. package/dist/react/utils/renderDiffChildren.d.ts +0 -2
  78. package/dist/react/utils/renderDiffChildren.d.ts.map +1 -1
  79. package/dist/react/utils/renderDiffChildren.js +3 -4
  80. package/dist/react/utils/renderDiffChildren.js.map +1 -1
  81. package/dist/react/utils/renderFileChildren.d.ts +0 -2
  82. package/dist/react/utils/renderFileChildren.d.ts.map +1 -1
  83. package/dist/react/utils/renderFileChildren.js +3 -4
  84. package/dist/react/utils/renderFileChildren.js.map +1 -1
  85. package/dist/react/utils/useFileDiffInstance.js +12 -7
  86. package/dist/react/utils/useFileDiffInstance.js.map +1 -1
  87. package/dist/react/utils/useFileInstance.js +12 -7
  88. package/dist/react/utils/useFileInstance.js.map +1 -1
  89. package/dist/react/utils/useUnresolvedFileInstance.js +6 -2
  90. package/dist/react/utils/useUnresolvedFileInstance.js.map +1 -1
  91. package/dist/renderers/DiffHunksRenderer.d.ts +2 -1
  92. package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
  93. package/dist/renderers/DiffHunksRenderer.js +35 -20
  94. package/dist/renderers/DiffHunksRenderer.js.map +1 -1
  95. package/dist/renderers/FileRenderer.d.ts +2 -1
  96. package/dist/renderers/FileRenderer.d.ts.map +1 -1
  97. package/dist/renderers/FileRenderer.js +34 -20
  98. package/dist/renderers/FileRenderer.js.map +1 -1
  99. package/dist/ssr/index.d.ts +2 -2
  100. package/dist/ssr/preloadDiffs.js +1 -1
  101. package/dist/style.js +1 -1
  102. package/dist/style.js.map +1 -1
  103. package/dist/types.d.ts +98 -3
  104. package/dist/types.d.ts.map +1 -1
  105. package/dist/utils/areManagedSnapshotsEqual.d.ts +7 -0
  106. package/dist/utils/areManagedSnapshotsEqual.d.ts.map +1 -0
  107. package/dist/utils/areManagedSnapshotsEqual.js +15 -0
  108. package/dist/utils/areManagedSnapshotsEqual.js.map +1 -0
  109. package/dist/utils/areOptionsEqual.d.ts +2 -1
  110. package/dist/utils/areOptionsEqual.d.ts.map +1 -1
  111. package/dist/utils/areOptionsEqual.js +1 -1
  112. package/dist/utils/areOptionsEqual.js.map +1 -1
  113. package/dist/utils/createFileHeaderElement.d.ts +3 -1
  114. package/dist/utils/createFileHeaderElement.d.ts.map +1 -1
  115. package/dist/utils/createFileHeaderElement.js +3 -2
  116. package/dist/utils/createFileHeaderElement.js.map +1 -1
  117. package/dist/utils/createWindowFromScrollPosition.d.ts +3 -3
  118. package/dist/utils/createWindowFromScrollPosition.d.ts.map +1 -1
  119. package/dist/utils/createWindowFromScrollPosition.js +6 -6
  120. package/dist/utils/createWindowFromScrollPosition.js.map +1 -1
  121. package/dist/utils/iterateOverDiff.d.ts +2 -1
  122. package/dist/utils/iterateOverDiff.d.ts.map +1 -1
  123. package/dist/utils/iterateOverDiff.js +135 -7
  124. package/dist/utils/iterateOverDiff.js.map +1 -1
  125. package/dist/utils/renderFileWithHighlighter.js +1 -1
  126. package/dist/utils/resolveVirtualFileMetrics.d.ts +4 -1
  127. package/dist/utils/resolveVirtualFileMetrics.d.ts.map +1 -1
  128. package/dist/utils/resolveVirtualFileMetrics.js +11 -1
  129. package/dist/utils/resolveVirtualFileMetrics.js.map +1 -1
  130. package/dist/utils/roundToDevicePixel.d.ts +14 -0
  131. package/dist/utils/roundToDevicePixel.d.ts.map +1 -0
  132. package/dist/utils/roundToDevicePixel.js +18 -0
  133. package/dist/utils/roundToDevicePixel.js.map +1 -0
  134. package/dist/worker/worker-portable.js +195 -14
  135. package/dist/worker/worker-portable.js.map +1 -1
  136. package/dist/worker/worker.js +146 -7
  137. package/dist/worker/worker.js.map +1 -1
  138. package/package.json +7 -1
  139. package/dist/components/AdvancedVirtualizedFileDiff.d.ts +0 -40
  140. package/dist/components/AdvancedVirtualizedFileDiff.d.ts.map +0 -1
  141. package/dist/components/AdvancedVirtualizedFileDiff.js +0 -140
  142. package/dist/components/AdvancedVirtualizedFileDiff.js.map +0 -1
  143. package/dist/components/AdvancedVirtualizer.d.ts +0 -38
  144. package/dist/components/AdvancedVirtualizer.d.ts.map +0 -1
  145. package/dist/components/AdvancedVirtualizer.js +0 -201
  146. package/dist/components/AdvancedVirtualizer.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { AnnotationLineMap, AnnotationSide, AnnotationSpan, AppliedThemeStyleCache, BaseCodeOptions, BaseDiffOptions, BaseDiffOptionsWithDefaults, BundledLanguage, ChangeContent, ChangeTypes, CodeColumnType, CodeToHastOptions, ConflictResolverTypes, ContextContent, CreatePatchOptionsNonabortable, CustomPreProperties, DecorationItem, DiffAcceptRejectHunkConfig, DiffAcceptRejectHunkType, DiffLineAnnotation, DiffLineEventBaseProps, DiffTokenEventBaseProps, DiffsHighlighter, DiffsThemeNames, ExpansionDirections, ExtensionFormatMap, FileContents, FileDiffMetadata, FileHeaderRenderMode, ForceDiffPlainTextOptions, ForceFilePlainTextOptions, GapSpan, HighlighterTypes, Hunk, HunkData, HunkExpansionRegion, HunkLineType, HunkSeparators, LanguageRegistration, LineAnnotation, LineDiffTypes, LineEventBaseProps, LineInfo, LineSpans, LineTypes, MergeConflictActionPayload, MergeConflictMarkerRow, MergeConflictMarkerRowType, MergeConflictRegion, MergeConflictResolution, ObservedAnnotationNodes, ObservedGridNodes, ParsedPatch, PrePropertiesConfig, ProcessFileConflictData, RenderDiffFilesResult, RenderDiffOptions, RenderDiffResult, RenderFileMetadata, RenderFileOptions, RenderFileResult, RenderHeaderMetadataCallback, RenderHeaderPrefixCallback, RenderRange, RenderWindow, RenderedDiffASTCache, RenderedFileASTCache, SelectionPoint, SelectionSide, SharedRenderState, ShikiTransformer, SupportedLanguages, ThemeRegistrationResolved, ThemeTypes, ThemedDiffResult, ThemedFileResult, ThemedToken, ThemesType, TokenEventBase, VirtualFileMetrics, VirtualWindowSpecs } from "./types.js";
2
- import { GetHoveredLineResult, GetLineIndexUtility, InteractionManager, InteractionManagerBaseOptions, InteractionManagerMode, InteractionManagerOptions, LogTypes, MergeConflictActionTarget, OnDiffLineClickProps, OnDiffLineEnterLeaveProps, OnLineClickProps, OnLineEnterLeaveProps, OnTokenEventProps, SelectedLineRange, pluckInteractionOptions } from "./managers/InteractionManager.js";
1
+ import { AnnotationLineMap, AnnotationSide, AnnotationSpan, AppliedThemeStyleCache, BaseCodeOptions, BaseDiffOptions, BaseDiffOptionsWithDefaults, BundledLanguage, ChangeContent, ChangeTypes, CodeColumnType, CodeToHastOptions, CodeViewDiffItem, CodeViewFileItem, CodeViewItem, CodeViewItemScrollTarget, CodeViewItemVersion, CodeViewLineScrollTarget, CodeViewMetrics, CodeViewPositionScrollTarget, CodeViewScrollBehavior, CodeViewScrollTarget, ConflictResolverTypes, ContextContent, CreatePatchOptionsNonabortable, CustomPreProperties, DecorationItem, DiffAcceptRejectHunkConfig, DiffAcceptRejectHunkType, DiffLineAnnotation, DiffLineEventBaseProps, DiffTokenEventBaseProps, DiffsHighlighter, DiffsThemeNames, ExpansionDirections, ExtensionFormatMap, FileContents, FileDiffMetadata, FileHeaderRenderMode, ForceDiffPlainTextOptions, ForceFilePlainTextOptions, GapSpan, HighlighterTypes, Hunk, HunkData, HunkExpansionRegion, HunkLineType, HunkSeparators, LanguageRegistration, LineAnnotation, LineDiffTypes, LineEventBaseProps, LineInfo, LineSpans, LineTypes, MergeConflictActionPayload, MergeConflictMarkerRow, MergeConflictMarkerRowType, MergeConflictRegion, MergeConflictResolution, NumericScrollLineAnchor, ObservedAnnotationNodes, ObservedGridNodes, ParsedPatch, PrePropertiesConfig, ProcessFileConflictData, RenderDiffFilesResult, RenderDiffOptions, RenderDiffResult, RenderFileMetadata, RenderFileOptions, RenderFileResult, RenderHeaderMetadataCallback, RenderHeaderPrefixCallback, RenderRange, RenderWindow, RenderedDiffASTCache, RenderedFileASTCache, SelectionPoint, SelectionSide, SharedRenderState, ShikiTransformer, SmoothScrollSettings, StickySpecs, SupportedLanguages, ThemeRegistrationResolved, ThemeTypes, ThemedDiffResult, ThemedFileResult, ThemedToken, ThemesType, TokenEventBase, VirtualFileMetrics, VirtualWindowSpecs } from "./types.js";
2
+ import { GetHoveredLineResult, GetLineIndexUtility, InteractionManager, InteractionManagerBaseOptions, InteractionManagerMode, InteractionManagerOptions, LogTypes, MergeConflictActionTarget, OnDiffLineClickProps, OnDiffLineEnterLeaveProps, OnLineClickProps, OnLineEnterLeaveProps, OnTokenEventProps, SelectedLineRange, SelectionWriteOptions, pluckInteractionOptions } from "./managers/InteractionManager.js";
3
3
  import { ResizeManager } from "./managers/ResizeManager.js";
4
4
  import { FileRenderResult, FileRenderer, FileRendererOptions } from "./renderers/FileRenderer.js";
5
5
  import { File, FileHydrateProps, FileOptions, FileRenderProps } from "./components/File.js";
@@ -12,7 +12,7 @@ import { MergeConflictActionsTypeOption, RenderMergeConflictActions, UnresolvedF
12
12
  import { Virtualizer, VirtualizerConfig } from "./components/Virtualizer.js";
13
13
  import { VirtualizedFile } from "./components/VirtualizedFile.js";
14
14
  import { VirtualizedFileDiff } from "./components/VirtualizedFileDiff.js";
15
- import { ALTERNATE_FILE_NAMES_GIT, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CUSTOM_HEADER_SLOT_ID, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_RENDER_RANGE, DEFAULT_THEMES, DEFAULT_VIRTUAL_FILE_METRICS, DIFFS_TAG_NAME, EMPTY_RENDER_RANGE, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, GIT_DIFF_FILE_BREAK_REGEX, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID, HUNK_HEADER, INDEX_LINE_METADATA, MERGE_CONFLICT_BASE_MARKER_REGEX, MERGE_CONFLICT_END_MARKER_REGEX, MERGE_CONFLICT_SEPARATOR_MARKER_REGEX, MERGE_CONFLICT_START_MARKER_REGEX, SPLIT_WITH_NEWLINES, THEME_CSS_ATTRIBUTE, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE } from "./constants.js";
15
+ import { ALTERNATE_FILE_NAMES_GIT, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CUSTOM_HEADER_SLOT_ID, DEFAULT_CODE_VIEW_FILE_METRICS, DEFAULT_CODE_VIEW_METRICS, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_RENDER_RANGE, DEFAULT_SMOOTH_SCROLL_SETTINGS, DEFAULT_THEMES, DEFAULT_TOKENIZE_MAX_LENGTH, DEFAULT_VIRTUAL_FILE_METRICS, DIFFS_TAG_NAME, EMPTY_RENDER_RANGE, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, GIT_DIFF_FILE_BREAK_REGEX, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID, HUNK_HEADER, INDEX_LINE_METADATA, MERGE_CONFLICT_BASE_MARKER_REGEX, MERGE_CONFLICT_END_MARKER_REGEX, MERGE_CONFLICT_SEPARATOR_MARKER_REGEX, MERGE_CONFLICT_START_MARKER_REGEX, SPLIT_WITH_NEWLINES, THEME_CSS_ATTRIBUTE, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE } from "./constants.js";
16
16
  import { areLanguagesAttached } from "./highlighter/languages/areLanguagesAttached.js";
17
17
  import { attachResolvedLanguages } from "./highlighter/languages/attachResolvedLanguages.js";
18
18
  import { cleanUpResolvedLanguages } from "./highlighter/languages/cleanUpResolvedLanguages.js";
@@ -36,7 +36,7 @@ import { registerCustomTheme } from "./highlighter/themes/registerCustomTheme.js
36
36
  import { resolveTheme } from "./highlighter/themes/resolveTheme.js";
37
37
  import { resolveThemes } from "./highlighter/themes/resolveThemes.js";
38
38
  import { ScrollSyncManager } from "./managers/ScrollSyncManager.js";
39
- import { queueRender } from "./managers/UniversalRenderingManager.js";
39
+ import { dequeueRender, queueRender } from "./managers/UniversalRenderingManager.js";
40
40
  import { SVGSpriteNames, SVGSpriteSheet } from "./sprite.js";
41
41
  import { areDiffLineAnnotationsEqual } from "./utils/areDiffLineAnnotationsEqual.js";
42
42
  import { areDiffRenderOptionsEqual } from "./utils/areDiffRenderOptionsEqual.js";
@@ -99,5 +99,6 @@ import { setLanguageOverride } from "./utils/setLanguageOverride.js";
99
99
  import { setPreNodeProperties } from "./utils/setWrapperNodeProps.js";
100
100
  import { trimPatchContext } from "./utils/trimPatchContext.js";
101
101
  import { FileDiff, FileDiffHydrationProps, FileDiffOptions, FileDiffRenderProps } from "./components/FileDiff.js";
102
+ import { CodeView, CodeViewCoordinator, CodeViewLineSelection, CodeViewOptions, CodeViewRenderedDiffItem, CodeViewRenderedFileItem, CodeViewRenderedItem, CodeViewScrollListener } from "./components/CodeView.js";
102
103
  import { codeToHtml, createCssVariablesTheme as createCSSVariablesTheme } from "shiki";
103
- export { ALTERNATE_FILE_NAMES_GIT, AnnotationLineMap, AnnotationSide, AnnotationSpan, AppliedThemeStyleCache, AttachedLanguages, AttachedThemes, BaseCodeOptions, BaseDiffOptions, BaseDiffOptionsWithDefaults, BundledLanguage, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CUSTOM_HEADER_SLOT_ID, ChangeContent, ChangeTypes, CodeColumnType, CodeToHastOptions, CodeToTokenTransformStream, CodeToTokenTransformStreamOptions, ConflictResolverTypes, ContextContent, CreateFileHeaderElementProps, CreatePatchOptionsNonabortable, CustomPreProperties, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_RENDER_RANGE, DEFAULT_THEMES, DEFAULT_VIRTUAL_FILE_METRICS, DIFFS_TAG_NAME, DecorationItem, DiffAcceptRejectHunkConfig, DiffAcceptRejectHunkType, DiffHunksRenderer, DiffHunksRendererOptions, DiffHunksRendererOptionsWithDefaults, DiffLineAnnotation, DiffLineEventBaseProps, DiffTokenEventBaseProps, DiffsHighlighter, DiffsThemeNames, EMPTY_RENDER_RANGE, EXTENSION_TO_FILE_FORMAT, ExpansionDirections, ExtensionFormatMap, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, File, FileContents, FileDiff, FileDiffHydrationProps, FileDiffMetadata, FileDiffOptions, FileDiffRenderProps, FileHeaderRenderMode, FileHydrateProps, FileOptions, FileRenderProps, FileRenderResult, FileRenderer, FileRendererOptions, FileStream, FileStreamOptions, ForceDiffPlainTextOptions, ForceFilePlainTextOptions, GIT_DIFF_FILE_BREAK_REGEX, GapSpan, GetHoveredLineResult, GetLineIndexUtility, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID, HUNK_HEADER, HighlighterTypes, Hunk, HunkData, HunkExpansionRegion, HunkLineType, HunkSeparators, HunksRenderResult, INDEX_LINE_METADATA, InjectedRow, InteractionManager, InteractionManagerBaseOptions, InteractionManagerMode, InteractionManagerOptions, LanguageRegistration, LineAnnotation, LineDecoration, LineDiffTypes, LineEventBaseProps, LineInfo, LineSpans, LineTypes, LogTypes, MERGE_CONFLICT_BASE_MARKER_REGEX, MERGE_CONFLICT_END_MARKER_REGEX, MERGE_CONFLICT_SEPARATOR_MARKER_REGEX, MERGE_CONFLICT_START_MARKER_REGEX, MergeConflictActionPayload, MergeConflictActionTarget, MergeConflictActionsTypeOption, MergeConflictMarkerRow, MergeConflictMarkerRowType, MergeConflictRegion, MergeConflictResolution, ObservedAnnotationNodes, ObservedGridNodes, OnDiffLineClickProps, OnDiffLineEnterLeaveProps, OnLineClickProps, OnLineEnterLeaveProps, OnTokenEventProps, ParsedLine, ParsedPatch, PrePropertiesConfig, ProcessFileConflictData, RecallToken, RegisteredCustomLanguages, RegisteredCustomThemes, RenderDiffFilesResult, RenderDiffOptions, RenderDiffResult, RenderFileMetadata, RenderFileOptions, RenderFileResult, RenderHeaderMetadataCallback, RenderHeaderPrefixCallback, RenderMergeConflictActions, RenderRange, RenderWindow, RenderedDiffASTCache, RenderedFileASTCache, RenderedLineContext, ResizeManager, ResolvedLanguages, ResolvedThemes, ResolvingLanguages, ResolvingThemes, SPLIT_WITH_NEWLINES, SVGSpriteNames, SVGSpriteSheet, ScrollSyncManager, SelectedLineRange, SelectionPoint, SelectionSide, SharedRenderState, ShikiStreamTokenizer, ShikiStreamTokenizerEnqueueResult, ShikiStreamTokenizerOptions, ShikiTransformer, SplitInjectedRow, SplitInjectedRowPlacement, SplitLineDecorationProps, SupportedLanguages, THEME_CSS_ATTRIBUTE, ThemeRegistrationResolved, ThemeTypes, ThemedDiffResult, ThemedFileResult, ThemedToken, ThemesType, TokenEventBase, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE, UnifiedInjectedRowPlacement, UnifiedLineDecorationProps, UnresolvedFile, UnresolvedFileHydrationProps, UnresolvedFileOptions, UnresolvedFileRenderProps, VirtualFileMetrics, VirtualWindowSpecs, VirtualizedFile, VirtualizedFileDiff, Virtualizer, VirtualizerConfig, areDiffLineAnnotationsEqual, areDiffRenderOptionsEqual, areFilesEqual, areHunkDataEqual, areLanguagesAttached, areLineAnnotationsEqual, areObjectsEqual, areOptionsEqual, arePrePropertiesEqual, areRenderRangesEqual, areSelectionsEqual, areThemesAttached, areThemesEqual, areVirtualWindowSpecsEqual, areWorkerStatsEqual, attachResolvedLanguages, attachResolvedThemes, cleanLastNewline, cleanUpResolvedLanguages, cleanUpResolvedThemes, codeToHtml, createAnnotationElement, createAnnotationWrapperNode, createCSSVariablesTheme, createDiffSpanDecoration, createEmptyRowBuffer, createFileHeaderElement, createGutterGap, createGutterItem, createGutterUtilityContentNode, createGutterUtilityElement, createGutterWrapper, createHastElement, createIconElement, createNoNewlineElement, createPreElement, createPreWrapperProperties, createRowNodes, createSeparator, createSpanFromToken, createStyleElement, createTextNodeElement, createThemeStyleElement, createTransformerWithState, createUnsafeCSSStyleNode, createWindowFromScrollPosition, diffAcceptRejectHunk, disposeHighlighter, findCodeElement, formatCSSVariablePrefix, getCustomExtensionsMap, getCustomExtensionsVersion, getFiletypeFromFileName, getHighlighterIfLoaded, getHighlighterOptions, getHighlighterThemeStyles, getHunkSeparatorSlotName, getIconForType, getLineAnnotationName, getLineEndingType, getLineNodes, getOrCreateCodeNode, getResolvedLanguages, getResolvedOrResolveLanguage, getResolvedOrResolveTheme, getResolvedThemes, getSharedHighlighter, getSingularPatch, getThemes, getTotalLineCountFromHunks, getUnresolvedDiffHunksRendererOptions, hasResolvedLanguages, hasResolvedThemes, isDefaultRenderRange, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, isWorkerContext, parseDiffFromFile, parseLineType, parsePatchFiles, pluckInteractionOptions, preloadHighlighter, prerenderHTMLIfNecessary, processFile, processLine, processPatch, pushOrJoinSpan, queueRender, registerCustomCSSVariableTheme, registerCustomLanguage, registerCustomTheme, renderDiffWithHighlighter, renderFileWithHighlighter, replaceCustomExtensions, resolveConflict, resolveLanguage, resolveLanguages, resolveRegion, resolveTheme, resolveThemes, setCustomExtension, setLanguageOverride, setPreNodeProperties, trimPatchContext, wrapCoreCSS, wrapThemeCSS, wrapUnsafeCSS };
104
+ export { ALTERNATE_FILE_NAMES_GIT, AnnotationLineMap, AnnotationSide, AnnotationSpan, AppliedThemeStyleCache, AttachedLanguages, AttachedThemes, BaseCodeOptions, BaseDiffOptions, BaseDiffOptionsWithDefaults, BundledLanguage, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CUSTOM_HEADER_SLOT_ID, ChangeContent, ChangeTypes, CodeColumnType, CodeToHastOptions, CodeToTokenTransformStream, CodeToTokenTransformStreamOptions, CodeView, CodeViewCoordinator, CodeViewDiffItem, CodeViewFileItem, CodeViewItem, CodeViewItemScrollTarget, CodeViewItemVersion, CodeViewLineScrollTarget, CodeViewLineSelection, CodeViewMetrics, CodeViewOptions, CodeViewPositionScrollTarget, CodeViewRenderedDiffItem, CodeViewRenderedFileItem, CodeViewRenderedItem, CodeViewScrollBehavior, CodeViewScrollListener, CodeViewScrollTarget, ConflictResolverTypes, ContextContent, CreateFileHeaderElementProps, CreatePatchOptionsNonabortable, CustomPreProperties, DEFAULT_CODE_VIEW_FILE_METRICS, DEFAULT_CODE_VIEW_METRICS, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_RENDER_RANGE, DEFAULT_SMOOTH_SCROLL_SETTINGS, DEFAULT_THEMES, DEFAULT_TOKENIZE_MAX_LENGTH, DEFAULT_VIRTUAL_FILE_METRICS, DIFFS_TAG_NAME, DecorationItem, DiffAcceptRejectHunkConfig, DiffAcceptRejectHunkType, DiffHunksRenderer, DiffHunksRendererOptions, DiffHunksRendererOptionsWithDefaults, DiffLineAnnotation, DiffLineEventBaseProps, DiffTokenEventBaseProps, DiffsHighlighter, DiffsThemeNames, EMPTY_RENDER_RANGE, EXTENSION_TO_FILE_FORMAT, ExpansionDirections, ExtensionFormatMap, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, File, FileContents, FileDiff, FileDiffHydrationProps, FileDiffMetadata, FileDiffOptions, FileDiffRenderProps, FileHeaderRenderMode, FileHydrateProps, FileOptions, FileRenderProps, FileRenderResult, FileRenderer, FileRendererOptions, FileStream, FileStreamOptions, ForceDiffPlainTextOptions, ForceFilePlainTextOptions, GIT_DIFF_FILE_BREAK_REGEX, GapSpan, GetHoveredLineResult, GetLineIndexUtility, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID, HUNK_HEADER, HighlighterTypes, Hunk, HunkData, HunkExpansionRegion, HunkLineType, HunkSeparators, HunksRenderResult, INDEX_LINE_METADATA, InjectedRow, InteractionManager, InteractionManagerBaseOptions, InteractionManagerMode, InteractionManagerOptions, LanguageRegistration, LineAnnotation, LineDecoration, LineDiffTypes, LineEventBaseProps, LineInfo, LineSpans, LineTypes, LogTypes, MERGE_CONFLICT_BASE_MARKER_REGEX, MERGE_CONFLICT_END_MARKER_REGEX, MERGE_CONFLICT_SEPARATOR_MARKER_REGEX, MERGE_CONFLICT_START_MARKER_REGEX, MergeConflictActionPayload, MergeConflictActionTarget, MergeConflictActionsTypeOption, MergeConflictMarkerRow, MergeConflictMarkerRowType, MergeConflictRegion, MergeConflictResolution, NumericScrollLineAnchor, ObservedAnnotationNodes, ObservedGridNodes, OnDiffLineClickProps, OnDiffLineEnterLeaveProps, OnLineClickProps, OnLineEnterLeaveProps, OnTokenEventProps, ParsedLine, ParsedPatch, PrePropertiesConfig, ProcessFileConflictData, RecallToken, RegisteredCustomLanguages, RegisteredCustomThemes, RenderDiffFilesResult, RenderDiffOptions, RenderDiffResult, RenderFileMetadata, RenderFileOptions, RenderFileResult, RenderHeaderMetadataCallback, RenderHeaderPrefixCallback, RenderMergeConflictActions, RenderRange, RenderWindow, RenderedDiffASTCache, RenderedFileASTCache, RenderedLineContext, ResizeManager, ResolvedLanguages, ResolvedThemes, ResolvingLanguages, ResolvingThemes, SPLIT_WITH_NEWLINES, SVGSpriteNames, SVGSpriteSheet, ScrollSyncManager, SelectedLineRange, SelectionPoint, SelectionSide, SelectionWriteOptions, SharedRenderState, ShikiStreamTokenizer, ShikiStreamTokenizerEnqueueResult, ShikiStreamTokenizerOptions, ShikiTransformer, SmoothScrollSettings, SplitInjectedRow, SplitInjectedRowPlacement, SplitLineDecorationProps, StickySpecs, SupportedLanguages, THEME_CSS_ATTRIBUTE, ThemeRegistrationResolved, ThemeTypes, ThemedDiffResult, ThemedFileResult, ThemedToken, ThemesType, TokenEventBase, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE, UnifiedInjectedRowPlacement, UnifiedLineDecorationProps, UnresolvedFile, UnresolvedFileHydrationProps, UnresolvedFileOptions, UnresolvedFileRenderProps, VirtualFileMetrics, VirtualWindowSpecs, VirtualizedFile, VirtualizedFileDiff, Virtualizer, VirtualizerConfig, areDiffLineAnnotationsEqual, areDiffRenderOptionsEqual, areFilesEqual, areHunkDataEqual, areLanguagesAttached, areLineAnnotationsEqual, areObjectsEqual, areOptionsEqual, arePrePropertiesEqual, areRenderRangesEqual, areSelectionsEqual, areThemesAttached, areThemesEqual, areVirtualWindowSpecsEqual, areWorkerStatsEqual, attachResolvedLanguages, attachResolvedThemes, cleanLastNewline, cleanUpResolvedLanguages, cleanUpResolvedThemes, codeToHtml, createAnnotationElement, createAnnotationWrapperNode, createCSSVariablesTheme, createDiffSpanDecoration, createEmptyRowBuffer, createFileHeaderElement, createGutterGap, createGutterItem, createGutterUtilityContentNode, createGutterUtilityElement, createGutterWrapper, createHastElement, createIconElement, createNoNewlineElement, createPreElement, createPreWrapperProperties, createRowNodes, createSeparator, createSpanFromToken, createStyleElement, createTextNodeElement, createThemeStyleElement, createTransformerWithState, createUnsafeCSSStyleNode, createWindowFromScrollPosition, dequeueRender, diffAcceptRejectHunk, disposeHighlighter, findCodeElement, formatCSSVariablePrefix, getCustomExtensionsMap, getCustomExtensionsVersion, getFiletypeFromFileName, getHighlighterIfLoaded, getHighlighterOptions, getHighlighterThemeStyles, getHunkSeparatorSlotName, getIconForType, getLineAnnotationName, getLineEndingType, getLineNodes, getOrCreateCodeNode, getResolvedLanguages, getResolvedOrResolveLanguage, getResolvedOrResolveTheme, getResolvedThemes, getSharedHighlighter, getSingularPatch, getThemes, getTotalLineCountFromHunks, getUnresolvedDiffHunksRendererOptions, hasResolvedLanguages, hasResolvedThemes, isDefaultRenderRange, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, isWorkerContext, parseDiffFromFile, parseLineType, parsePatchFiles, pluckInteractionOptions, preloadHighlighter, prerenderHTMLIfNecessary, processFile, processLine, processPatch, pushOrJoinSpan, queueRender, registerCustomCSSVariableTheme, registerCustomLanguage, registerCustomTheme, renderDiffWithHighlighter, renderFileWithHighlighter, replaceCustomExtensions, resolveConflict, resolveLanguage, resolveLanguages, resolveRegion, resolveTheme, resolveThemes, setCustomExtension, setLanguageOverride, setPreNodeProperties, trimPatchContext, wrapCoreCSS, wrapThemeCSS, wrapUnsafeCSS };
package/dist/index.js CHANGED
@@ -1,5 +1,8 @@
1
- import { ALTERNATE_FILE_NAMES_GIT, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CUSTOM_HEADER_SLOT_ID, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_RENDER_RANGE, DEFAULT_THEMES, DEFAULT_VIRTUAL_FILE_METRICS, DIFFS_TAG_NAME, EMPTY_RENDER_RANGE, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, GIT_DIFF_FILE_BREAK_REGEX, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID, HUNK_HEADER, INDEX_LINE_METADATA, MERGE_CONFLICT_BASE_MARKER_REGEX, MERGE_CONFLICT_END_MARKER_REGEX, MERGE_CONFLICT_SEPARATOR_MARKER_REGEX, MERGE_CONFLICT_START_MARKER_REGEX, SPLIT_WITH_NEWLINES, THEME_CSS_ATTRIBUTE, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE } from "./constants.js";
1
+ import { ALTERNATE_FILE_NAMES_GIT, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CUSTOM_HEADER_SLOT_ID, DEFAULT_CODE_VIEW_FILE_METRICS, DEFAULT_CODE_VIEW_METRICS, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_RENDER_RANGE, DEFAULT_SMOOTH_SCROLL_SETTINGS, DEFAULT_THEMES, DEFAULT_TOKENIZE_MAX_LENGTH, DEFAULT_VIRTUAL_FILE_METRICS, DIFFS_TAG_NAME, EMPTY_RENDER_RANGE, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, GIT_DIFF_FILE_BREAK_REGEX, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID, HUNK_HEADER, INDEX_LINE_METADATA, MERGE_CONFLICT_BASE_MARKER_REGEX, MERGE_CONFLICT_END_MARKER_REGEX, MERGE_CONFLICT_SEPARATOR_MARKER_REGEX, MERGE_CONFLICT_START_MARKER_REGEX, SPLIT_WITH_NEWLINES, THEME_CSS_ATTRIBUTE, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE } from "./constants.js";
2
+ import { dequeueRender, queueRender } from "./managers/UniversalRenderingManager.js";
3
+ import { areObjectsEqual } from "./utils/areObjectsEqual.js";
2
4
  import { areSelectionsEqual } from "./utils/areSelectionsEqual.js";
5
+ import { createWindowFromScrollPosition } from "./utils/createWindowFromScrollPosition.js";
3
6
  import { createGutterGap, createGutterItem, createGutterWrapper, createHastElement, createIconElement, createTextNodeElement, findCodeElement } from "./utils/hast_utils.js";
4
7
  import { createGutterUtilityElement } from "./utils/createGutterUtilityElement.js";
5
8
  import { InteractionManager, pluckInteractionOptions } from "./managers/InteractionManager.js";
@@ -50,6 +53,10 @@ import { getOrCreateCodeNode } from "./utils/getOrCreateCodeNode.js";
50
53
  import { prerenderHTMLIfNecessary } from "./utils/prerenderHTMLIfNecessary.js";
51
54
  import { setPreNodeProperties } from "./utils/setWrapperNodeProps.js";
52
55
  import { File } from "./components/File.js";
56
+ import { VirtualizedFile } from "./components/VirtualizedFile.js";
57
+ import { parseLineType } from "./utils/parseLineType.js";
58
+ import { parsePatchFiles, processFile, processPatch } from "./utils/parsePatchFiles.js";
59
+ import { parseDiffFromFile } from "./utils/parseDiffFromFile.js";
53
60
  import { ScrollSyncManager } from "./managers/ScrollSyncManager.js";
54
61
  import { areDiffRenderOptionsEqual } from "./utils/areDiffRenderOptionsEqual.js";
55
62
  import { createEmptyRowBuffer } from "./utils/createEmptyRowBuffer.js";
@@ -63,11 +70,9 @@ import { renderDiffWithHighlighter } from "./utils/renderDiffWithHighlighter.js"
63
70
  import { DiffHunksRenderer } from "./renderers/DiffHunksRenderer.js";
64
71
  import { areDiffLineAnnotationsEqual } from "./utils/areDiffLineAnnotationsEqual.js";
65
72
  import { areHunkDataEqual } from "./utils/areHunkDataEqual.js";
66
- import { parseLineType } from "./utils/parseLineType.js";
67
- import { parsePatchFiles, processFile, processPatch } from "./utils/parsePatchFiles.js";
68
- import { parseDiffFromFile } from "./utils/parseDiffFromFile.js";
69
73
  import { FileDiff } from "./components/FileDiff.js";
70
- import { queueRender } from "./managers/UniversalRenderingManager.js";
74
+ import { VirtualizedFileDiff } from "./components/VirtualizedFileDiff.js";
75
+ import { CodeView } from "./components/CodeView.js";
71
76
  import { ShikiStreamTokenizer } from "./shiki-stream/tokenizer.js";
72
77
  import { CodeToTokenTransformStream } from "./shiki-stream/stream.js";
73
78
  import { createSpanFromToken } from "./utils/createSpanNodeFromToken.js";
@@ -75,10 +80,7 @@ import { FileStream } from "./components/FileStream.js";
75
80
  import { resolveRegion } from "./utils/resolveRegion.js";
76
81
  import { resolveConflict } from "./utils/resolveConflict.js";
77
82
  import { UnresolvedFile, getUnresolvedDiffHunksRendererOptions } from "./components/UnresolvedFile.js";
78
- import { VirtualizedFile } from "./components/VirtualizedFile.js";
79
- import { VirtualizedFileDiff } from "./components/VirtualizedFileDiff.js";
80
83
  import { areVirtualWindowSpecsEqual } from "./utils/areVirtualWindowSpecsEqual.js";
81
- import { createWindowFromScrollPosition } from "./utils/createWindowFromScrollPosition.js";
82
84
  import { Virtualizer } from "./components/Virtualizer.js";
83
85
  import { getResolvedLanguages } from "./highlighter/languages/getResolvedLanguages.js";
84
86
  import { hasResolvedLanguages } from "./highlighter/languages/hasResolvedLanguages.js";
@@ -87,7 +89,6 @@ import { resolveLanguages } from "./highlighter/languages/resolveLanguages.js";
87
89
  import { getResolvedThemes } from "./highlighter/themes/getResolvedThemes.js";
88
90
  import { registerCustomCSSVariableTheme } from "./highlighter/themes/registerCustomCSSVariableTheme.js";
89
91
  import { resolveThemes } from "./highlighter/themes/resolveThemes.js";
90
- import { areObjectsEqual } from "./utils/areObjectsEqual.js";
91
92
  import { areOptionsEqual } from "./utils/areOptionsEqual.js";
92
93
  import { areWorkerStatsEqual } from "./utils/areWorkerStatsEqual.js";
93
94
  import { createRowNodes } from "./utils/createRowNodes.js";
@@ -99,4 +100,4 @@ import { setLanguageOverride } from "./utils/setLanguageOverride.js";
99
100
  import { trimPatchContext } from "./utils/trimPatchContext.js";
100
101
  import { codeToHtml, createCssVariablesTheme as createCSSVariablesTheme } from "shiki";
101
102
 
102
- export { ALTERNATE_FILE_NAMES_GIT, AttachedLanguages, AttachedThemes, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CUSTOM_HEADER_SLOT_ID, CodeToTokenTransformStream, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_RENDER_RANGE, DEFAULT_THEMES, DEFAULT_VIRTUAL_FILE_METRICS, DIFFS_TAG_NAME, DiffHunksRenderer, EMPTY_RENDER_RANGE, EXTENSION_TO_FILE_FORMAT, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, File, FileDiff, FileRenderer, FileStream, GIT_DIFF_FILE_BREAK_REGEX, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID, HUNK_HEADER, INDEX_LINE_METADATA, InteractionManager, MERGE_CONFLICT_BASE_MARKER_REGEX, MERGE_CONFLICT_END_MARKER_REGEX, MERGE_CONFLICT_SEPARATOR_MARKER_REGEX, MERGE_CONFLICT_START_MARKER_REGEX, RegisteredCustomLanguages, RegisteredCustomThemes, ResizeManager, ResolvedLanguages, ResolvedThemes, ResolvingLanguages, ResolvingThemes, SPLIT_WITH_NEWLINES, SVGSpriteSheet, ScrollSyncManager, ShikiStreamTokenizer, THEME_CSS_ATTRIBUTE, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE, UnresolvedFile, VirtualizedFile, VirtualizedFileDiff, Virtualizer, areDiffLineAnnotationsEqual, areDiffRenderOptionsEqual, areFilesEqual, areHunkDataEqual, areLanguagesAttached, areLineAnnotationsEqual, areObjectsEqual, areOptionsEqual, arePrePropertiesEqual, areRenderRangesEqual, areSelectionsEqual, areThemesAttached, areThemesEqual, areVirtualWindowSpecsEqual, areWorkerStatsEqual, attachResolvedLanguages, attachResolvedThemes, cleanLastNewline, cleanUpResolvedLanguages, cleanUpResolvedThemes, codeToHtml, createAnnotationElement, createAnnotationWrapperNode, createCSSVariablesTheme, createDiffSpanDecoration, createEmptyRowBuffer, createFileHeaderElement, createGutterGap, createGutterItem, createGutterUtilityContentNode, createGutterUtilityElement, createGutterWrapper, createHastElement, createIconElement, createNoNewlineElement, createPreElement, createPreWrapperProperties, createRowNodes, createSeparator, createSpanFromToken, createStyleElement, createTextNodeElement, createThemeStyleElement, createTransformerWithState, createUnsafeCSSStyleNode, createWindowFromScrollPosition, diffAcceptRejectHunk, disposeHighlighter, findCodeElement, formatCSSVariablePrefix, getCustomExtensionsMap, getCustomExtensionsVersion, getFiletypeFromFileName, getHighlighterIfLoaded, getHighlighterOptions, getHighlighterThemeStyles, getHunkSeparatorSlotName, getIconForType, getLineAnnotationName, getLineEndingType, getLineNodes, getOrCreateCodeNode, getResolvedLanguages, getResolvedOrResolveLanguage, getResolvedOrResolveTheme, getResolvedThemes, getSharedHighlighter, getSingularPatch, getThemes, getTotalLineCountFromHunks, getUnresolvedDiffHunksRendererOptions, hasResolvedLanguages, hasResolvedThemes, isDefaultRenderRange, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, isWorkerContext, parseDiffFromFile, parseLineType, parsePatchFiles, pluckInteractionOptions, preloadHighlighter, prerenderHTMLIfNecessary, processFile, processLine, processPatch, pushOrJoinSpan, queueRender, registerCustomCSSVariableTheme, registerCustomLanguage, registerCustomTheme, renderDiffWithHighlighter, renderFileWithHighlighter, replaceCustomExtensions, resolveConflict, resolveLanguage, resolveLanguages, resolveRegion, resolveTheme, resolveThemes, setCustomExtension, setLanguageOverride, setPreNodeProperties, trimPatchContext, wrapCoreCSS, wrapThemeCSS, wrapUnsafeCSS };
103
+ export { ALTERNATE_FILE_NAMES_GIT, AttachedLanguages, AttachedThemes, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CUSTOM_HEADER_SLOT_ID, CodeToTokenTransformStream, CodeView, DEFAULT_CODE_VIEW_FILE_METRICS, DEFAULT_CODE_VIEW_METRICS, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_RENDER_RANGE, DEFAULT_SMOOTH_SCROLL_SETTINGS, DEFAULT_THEMES, DEFAULT_TOKENIZE_MAX_LENGTH, DEFAULT_VIRTUAL_FILE_METRICS, DIFFS_TAG_NAME, DiffHunksRenderer, EMPTY_RENDER_RANGE, EXTENSION_TO_FILE_FORMAT, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, File, FileDiff, FileRenderer, FileStream, GIT_DIFF_FILE_BREAK_REGEX, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID, HUNK_HEADER, INDEX_LINE_METADATA, InteractionManager, MERGE_CONFLICT_BASE_MARKER_REGEX, MERGE_CONFLICT_END_MARKER_REGEX, MERGE_CONFLICT_SEPARATOR_MARKER_REGEX, MERGE_CONFLICT_START_MARKER_REGEX, RegisteredCustomLanguages, RegisteredCustomThemes, ResizeManager, ResolvedLanguages, ResolvedThemes, ResolvingLanguages, ResolvingThemes, SPLIT_WITH_NEWLINES, SVGSpriteSheet, ScrollSyncManager, ShikiStreamTokenizer, THEME_CSS_ATTRIBUTE, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE, UnresolvedFile, VirtualizedFile, VirtualizedFileDiff, Virtualizer, areDiffLineAnnotationsEqual, areDiffRenderOptionsEqual, areFilesEqual, areHunkDataEqual, areLanguagesAttached, areLineAnnotationsEqual, areObjectsEqual, areOptionsEqual, arePrePropertiesEqual, areRenderRangesEqual, areSelectionsEqual, areThemesAttached, areThemesEqual, areVirtualWindowSpecsEqual, areWorkerStatsEqual, attachResolvedLanguages, attachResolvedThemes, cleanLastNewline, cleanUpResolvedLanguages, cleanUpResolvedThemes, codeToHtml, createAnnotationElement, createAnnotationWrapperNode, createCSSVariablesTheme, createDiffSpanDecoration, createEmptyRowBuffer, createFileHeaderElement, createGutterGap, createGutterItem, createGutterUtilityContentNode, createGutterUtilityElement, createGutterWrapper, createHastElement, createIconElement, createNoNewlineElement, createPreElement, createPreWrapperProperties, createRowNodes, createSeparator, createSpanFromToken, createStyleElement, createTextNodeElement, createThemeStyleElement, createTransformerWithState, createUnsafeCSSStyleNode, createWindowFromScrollPosition, dequeueRender, diffAcceptRejectHunk, disposeHighlighter, findCodeElement, formatCSSVariablePrefix, getCustomExtensionsMap, getCustomExtensionsVersion, getFiletypeFromFileName, getHighlighterIfLoaded, getHighlighterOptions, getHighlighterThemeStyles, getHunkSeparatorSlotName, getIconForType, getLineAnnotationName, getLineEndingType, getLineNodes, getOrCreateCodeNode, getResolvedLanguages, getResolvedOrResolveLanguage, getResolvedOrResolveTheme, getResolvedThemes, getSharedHighlighter, getSingularPatch, getThemes, getTotalLineCountFromHunks, getUnresolvedDiffHunksRendererOptions, hasResolvedLanguages, hasResolvedThemes, isDefaultRenderRange, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, isWorkerContext, parseDiffFromFile, parseLineType, parsePatchFiles, pluckInteractionOptions, preloadHighlighter, prerenderHTMLIfNecessary, processFile, processLine, processPatch, pushOrJoinSpan, queueRender, registerCustomCSSVariableTheme, registerCustomLanguage, registerCustomTheme, renderDiffWithHighlighter, renderFileWithHighlighter, replaceCustomExtensions, resolveConflict, resolveLanguage, resolveLanguages, resolveRegion, resolveTheme, resolveThemes, setCustomExtension, setLanguageOverride, setPreNodeProperties, trimPatchContext, wrapCoreCSS, wrapThemeCSS, wrapUnsafeCSS };
@@ -21,6 +21,9 @@ interface SelectedLineRange {
21
21
  end: number;
22
22
  endSide?: SelectionSide;
23
23
  }
24
+ interface SelectionWriteOptions {
25
+ notify?: boolean;
26
+ }
24
27
  type GetLineIndexUtility = (lineNumber: number, side?: SelectionSide) => [number, number] | undefined;
25
28
  type EventClickProps<TMode extends InteractionManagerMode> = TMode extends 'file' ? OnLineClickProps : OnDiffLineClickProps;
26
29
  type PointerEventEnterLeaveProps<TMode extends InteractionManagerMode> = TMode extends 'file' ? OnLineEnterLeaveProps : OnDiffLineEnterLeaveProps;
@@ -50,6 +53,7 @@ interface InteractionManagerBaseOptions<TMode extends InteractionManagerMode> {
50
53
  onTokenLeave?(props: OnTokenEventProps<TMode>, event: PointerEvent): unknown;
51
54
  __debugPointerEvents?: LogTypes;
52
55
  enableLineSelection?: boolean;
56
+ controlledSelection?: boolean;
53
57
  onLineSelected?: (range: SelectedLineRange | null) => void;
54
58
  onLineSelectionStart?: (range: SelectedLineRange | null) => void;
55
59
  onLineSelectionChange?: (range: SelectedLineRange | null) => void;
@@ -75,6 +79,7 @@ declare class InteractionManager<TMode extends InteractionManagerMode> {
75
79
  private hasPointerListeners;
76
80
  private hasDocumentPointerListeners;
77
81
  private selectedRange;
82
+ private proposedSelectedRange;
78
83
  private renderedSelectionRange;
79
84
  private selectionAnchor;
80
85
  private queuedSelectionRender;
@@ -85,7 +90,7 @@ declare class InteractionManager<TMode extends InteractionManagerMode> {
85
90
  setup(pre: HTMLPreElement): void;
86
91
  setSelectionDirty(): void;
87
92
  isSelectionDirty(): boolean;
88
- setSelection(range: SelectedLineRange | null): void;
93
+ setSelection(range: SelectedLineRange | null, options?: SelectionWriteOptions): void;
89
94
  getSelection(): SelectedLineRange | null;
90
95
  getHoveredLine: () => GetHoveredLineResult<TMode> | undefined;
91
96
  handlePointerClick: (event: MouseEvent) => void;
@@ -112,6 +117,8 @@ declare class InteractionManager<TMode extends InteractionManagerMode> {
112
117
  private getSelectionPointerInfo;
113
118
  private getSelectionPointFromPath;
114
119
  private getLineIndex;
120
+ private getCurrentSelectionRange;
121
+ private clearProposedSelection;
115
122
  private updateSelection;
116
123
  private getIndexesFromSelection;
117
124
  private renderSelection;
@@ -128,14 +135,11 @@ declare class InteractionManager<TMode extends InteractionManagerMode> {
128
135
  private parseLineIndex;
129
136
  }
130
137
  type InteractionPluckOptions<TMode extends InteractionManagerMode> = InteractionManagerBaseOptions<TMode> & {
131
- enableHoverUtility?: boolean;
132
138
  renderGutterUtility?(getHoveredRow: () => GetHoveredLineResult<TMode> | undefined): HTMLElement | null | undefined;
133
- renderHoverUtility?(getHoveredRow: () => GetHoveredLineResult<TMode> | undefined): HTMLElement | null | undefined;
134
139
  };
135
140
  declare function pluckInteractionOptions<TMode extends InteractionManagerMode>({
136
141
  enableTokenInteractionsOnWhitespace,
137
142
  enableGutterUtility,
138
- enableHoverUtility,
139
143
  lineHoverHighlight,
140
144
  onGutterUtilityClick,
141
145
  onLineClick,
@@ -146,14 +150,14 @@ declare function pluckInteractionOptions<TMode extends InteractionManagerMode>({
146
150
  onTokenEnter,
147
151
  onTokenLeave,
148
152
  renderGutterUtility,
149
- renderHoverUtility,
150
153
  __debugPointerEvents,
151
154
  enableLineSelection,
155
+ controlledSelection,
152
156
  onLineSelected,
153
157
  onLineSelectionStart,
154
158
  onLineSelectionChange,
155
159
  onLineSelectionEnd
156
- }: InteractionPluckOptions<TMode>, onHunkExpand?: (hunkIndex: number, direction: ExpansionDirections, expansionLineCount?: number) => unknown, getLineIndex?: GetLineIndexUtility, onMergeConflictActionClick?: (target: MergeConflictActionTarget) => void): InteractionManagerOptions<TMode>;
160
+ }: InteractionPluckOptions<TMode>, onHunkExpand?: (hunkIndex: number, direction: ExpansionDirections, expansionLineCountOverride?: number) => unknown, getLineIndex?: GetLineIndexUtility, onMergeConflictActionClick?: (target: MergeConflictActionTarget) => void): InteractionManagerOptions<TMode>;
157
161
  //#endregion
158
- export { GetHoveredLineResult, GetLineIndexUtility, InteractionManager, InteractionManagerBaseOptions, InteractionManagerMode, InteractionManagerOptions, LogTypes, MergeConflictActionTarget, OnDiffLineClickProps, OnDiffLineEnterLeaveProps, OnLineClickProps, OnLineEnterLeaveProps, OnTokenEventProps, SelectedLineRange, pluckInteractionOptions };
162
+ export { GetHoveredLineResult, GetLineIndexUtility, InteractionManager, InteractionManagerBaseOptions, InteractionManagerMode, InteractionManagerOptions, LogTypes, MergeConflictActionTarget, OnDiffLineClickProps, OnDiffLineEnterLeaveProps, OnLineClickProps, OnLineEnterLeaveProps, OnTokenEventProps, SelectedLineRange, SelectionWriteOptions, pluckInteractionOptions };
159
163
  //# sourceMappingURL=InteractionManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InteractionManager.d.ts","names":["AnnotationSide","DiffLineEventBaseProps","DiffTokenEventBaseProps","ExpansionDirections","LineEventBaseProps","MergeConflictResolution","SelectionSide","TokenEventBase","LogTypes","InteractionManagerMode","OnLineClickProps","PointerEvent","OnLineEnterLeaveProps","OnDiffLineClickProps","OnDiffLineEnterLeaveProps","SelectedLineRange","GetLineIndexUtility","EventClickProps","TMode","PointerEventEnterLeaveProps","OnTokenEventProps","GetHoveredLineResult","MergeConflictActionTarget","InteractionManagerBaseOptions","MouseEvent","InteractionManagerOptions","InteractionManager","HTMLPreElement","InteractionPluckOptions","HTMLElement","pluckInteractionOptions","enableTokenInteractionsOnWhitespace","enableGutterUtility","enableHoverUtility","lineHoverHighlight","onGutterUtilityClick","onLineClick","onLineEnter","onLineLeave","onLineNumberClick","onTokenClick","onTokenEnter","onTokenLeave","renderGutterUtility","renderHoverUtility","__debugPointerEvents","enableLineSelection","onLineSelected","onLineSelectionStart","onLineSelectionChange","onLineSelectionEnd"],"sources":["../../src/managers/InteractionManager.d.ts"],"sourcesContent":["import type { AnnotationSide, DiffLineEventBaseProps, DiffTokenEventBaseProps, ExpansionDirections, LineEventBaseProps, MergeConflictResolution, SelectionSide, TokenEventBase } from '../types';\nexport type LogTypes = 'click' | 'move' | 'both' | 'none';\nexport type InteractionManagerMode = 'file' | 'diff';\nexport interface OnLineClickProps extends LineEventBaseProps {\n event: PointerEvent;\n}\nexport interface OnLineEnterLeaveProps extends LineEventBaseProps {\n event: PointerEvent;\n}\nexport interface OnDiffLineClickProps extends DiffLineEventBaseProps {\n event: PointerEvent;\n}\nexport interface OnDiffLineEnterLeaveProps extends DiffLineEventBaseProps {\n event: PointerEvent;\n}\nexport interface SelectedLineRange {\n start: number;\n side?: SelectionSide;\n end: number;\n endSide?: SelectionSide;\n}\nexport type GetLineIndexUtility = (lineNumber: number, side?: SelectionSide) => [number, number] | undefined;\ntype EventClickProps<TMode extends InteractionManagerMode> = TMode extends 'file' ? OnLineClickProps : OnDiffLineClickProps;\ntype PointerEventEnterLeaveProps<TMode extends InteractionManagerMode> = TMode extends 'file' ? OnLineEnterLeaveProps : OnDiffLineEnterLeaveProps;\nexport type OnTokenEventProps<TMode extends InteractionManagerMode> = TMode extends 'file' ? TokenEventBase : DiffTokenEventBaseProps;\nexport type GetHoveredLineResult<TMode extends InteractionManagerMode> = TMode extends 'file' ? {\n lineNumber: number;\n} : {\n lineNumber: number;\n side: AnnotationSide;\n};\nexport interface MergeConflictActionTarget {\n kind: 'merge-conflict-action';\n resolution: MergeConflictResolution;\n conflictIndex: number;\n}\nexport interface InteractionManagerBaseOptions<TMode extends InteractionManagerMode> {\n lineHoverHighlight?: 'disabled' | 'both' | 'number' | 'line';\n enableTokenInteractionsOnWhitespace?: boolean;\n enableGutterUtility?: boolean;\n onGutterUtilityClick?(range: SelectedLineRange): unknown;\n onLineClick?(props: EventClickProps<TMode>): unknown;\n onLineNumberClick?(props: EventClickProps<TMode>): unknown;\n onLineEnter?(props: PointerEventEnterLeaveProps<TMode>): unknown;\n onLineLeave?(props: PointerEventEnterLeaveProps<TMode>): unknown;\n onTokenClick?(props: OnTokenEventProps<TMode>, event: MouseEvent): unknown;\n onTokenEnter?(props: OnTokenEventProps<TMode>, event: PointerEvent): unknown;\n onTokenLeave?(props: OnTokenEventProps<TMode>, event: PointerEvent): unknown;\n __debugPointerEvents?: LogTypes;\n enableLineSelection?: boolean;\n onLineSelected?: (range: SelectedLineRange | null) => void;\n onLineSelectionStart?: (range: SelectedLineRange | null) => void;\n onLineSelectionChange?: (range: SelectedLineRange | null) => void;\n onLineSelectionEnd?: (range: SelectedLineRange | null) => void;\n getLineIndex?: GetLineIndexUtility;\n}\nexport interface InteractionManagerOptions<TMode extends InteractionManagerMode> extends InteractionManagerBaseOptions<TMode> {\n usesCustomGutterUtility?: boolean;\n onHunkExpand?(hunkIndex: number, direction: ExpansionDirections, expansionLineCountOverride?: number): unknown;\n onMergeConflictActionClick?(target: MergeConflictActionTarget): void;\n}\nexport declare class InteractionManager<TMode extends InteractionManagerMode> {\n private mode;\n private options;\n private hoveredLine;\n private hoveredToken;\n private pre;\n private gutterUtilityContainer;\n private gutterUtilityButton;\n private gutterUtilitySlot;\n private interactiveLinesAttr;\n private interactiveLineNumbersAttr;\n private hasPointerListeners;\n private hasDocumentPointerListeners;\n private selectedRange;\n private renderedSelectionRange;\n private selectionAnchor;\n private queuedSelectionRender;\n private pointerSession;\n constructor(mode: TMode, options: InteractionManagerOptions<TMode>);\n setOptions(options: InteractionManagerOptions<TMode>): void;\n cleanUp(): void;\n setup(pre: HTMLPreElement): void;\n setSelectionDirty(): void;\n isSelectionDirty(): boolean;\n setSelection(range: SelectedLineRange | null): void;\n getSelection(): SelectedLineRange | null;\n getHoveredLine: () => GetHoveredLineResult<TMode> | undefined;\n handlePointerClick: (event: MouseEvent) => void;\n handlePointerMove: (event: PointerEvent) => void;\n handlePointerLeave: (event: PointerEvent) => void;\n private handlePointerEvent;\n private syncPointerListeners;\n private updateInteractiveLineAttributes;\n private handlePointerDown;\n private startLineSelectionFromPointerDown;\n private startGutterSelectionFromPointerDown;\n private handleDocumentPointerMove;\n private handleDocumentPointerUp;\n private handleDocumentPointerCancel;\n private clearHoveredLine;\n private setHoveredLine;\n private clearHoveredToken;\n private setHoveredToken;\n private ensureGutterUtilityNode;\n private attachDocumentPointerListeners;\n private detachDocumentPointerListeners;\n private clearPointerSession;\n private clearPendingSingleLineState;\n private getSelectionPointerInfo;\n private getSelectionPointFromPath;\n private getLineIndex;\n private updateSelection;\n private getIndexesFromSelection;\n private renderSelection;\n private notifySelectionCommitted;\n private notifySelectionChangeDelta;\n private notifySelectionStart;\n private notifySelectionEnd;\n private toEventBaseProps;\n private toTokenEventBaseProps;\n private buildSelectedLineRange;\n private buildSelectionRange;\n private resolvePointerTarget;\n private isSplitDiff;\n private parseLineIndex;\n}\ntype InteractionPluckOptions<TMode extends InteractionManagerMode> = InteractionManagerBaseOptions<TMode> & {\n enableHoverUtility?: boolean;\n renderGutterUtility?(getHoveredRow: () => GetHoveredLineResult<TMode> | undefined): HTMLElement | null | undefined;\n renderHoverUtility?(getHoveredRow: () => GetHoveredLineResult<TMode> | undefined): HTMLElement | null | undefined;\n};\nexport declare function pluckInteractionOptions<TMode extends InteractionManagerMode>({ enableTokenInteractionsOnWhitespace, enableGutterUtility, enableHoverUtility, lineHoverHighlight, onGutterUtilityClick, onLineClick, onLineEnter, onLineLeave, onLineNumberClick, onTokenClick, onTokenEnter, onTokenLeave, renderGutterUtility, renderHoverUtility, __debugPointerEvents, enableLineSelection, onLineSelected, onLineSelectionStart, onLineSelectionChange, onLineSelectionEnd }: InteractionPluckOptions<TMode>, onHunkExpand?: (hunkIndex: number, direction: ExpansionDirections, expansionLineCount?: number) => unknown, getLineIndex?: GetLineIndexUtility, onMergeConflictActionClick?: (target: MergeConflictActionTarget) => void): InteractionManagerOptions<TMode>;\nexport {};\n//# sourceMappingURL=InteractionManager.d.ts.map"],"mappings":"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"}
1
+ {"version":3,"file":"InteractionManager.d.ts","names":["AnnotationSide","DiffLineEventBaseProps","DiffTokenEventBaseProps","ExpansionDirections","LineEventBaseProps","MergeConflictResolution","SelectionSide","TokenEventBase","LogTypes","InteractionManagerMode","OnLineClickProps","PointerEvent","OnLineEnterLeaveProps","OnDiffLineClickProps","OnDiffLineEnterLeaveProps","SelectedLineRange","SelectionWriteOptions","GetLineIndexUtility","EventClickProps","TMode","PointerEventEnterLeaveProps","OnTokenEventProps","GetHoveredLineResult","MergeConflictActionTarget","InteractionManagerBaseOptions","MouseEvent","InteractionManagerOptions","InteractionManager","HTMLPreElement","InteractionPluckOptions","HTMLElement","pluckInteractionOptions","enableTokenInteractionsOnWhitespace","enableGutterUtility","lineHoverHighlight","onGutterUtilityClick","onLineClick","onLineEnter","onLineLeave","onLineNumberClick","onTokenClick","onTokenEnter","onTokenLeave","renderGutterUtility","__debugPointerEvents","enableLineSelection","controlledSelection","onLineSelected","onLineSelectionStart","onLineSelectionChange","onLineSelectionEnd"],"sources":["../../src/managers/InteractionManager.d.ts"],"sourcesContent":["import type { AnnotationSide, DiffLineEventBaseProps, DiffTokenEventBaseProps, ExpansionDirections, LineEventBaseProps, MergeConflictResolution, SelectionSide, TokenEventBase } from '../types';\nexport type LogTypes = 'click' | 'move' | 'both' | 'none';\nexport type InteractionManagerMode = 'file' | 'diff';\nexport interface OnLineClickProps extends LineEventBaseProps {\n event: PointerEvent;\n}\nexport interface OnLineEnterLeaveProps extends LineEventBaseProps {\n event: PointerEvent;\n}\nexport interface OnDiffLineClickProps extends DiffLineEventBaseProps {\n event: PointerEvent;\n}\nexport interface OnDiffLineEnterLeaveProps extends DiffLineEventBaseProps {\n event: PointerEvent;\n}\nexport interface SelectedLineRange {\n start: number;\n side?: SelectionSide;\n end: number;\n endSide?: SelectionSide;\n}\nexport interface SelectionWriteOptions {\n notify?: boolean;\n}\nexport type GetLineIndexUtility = (lineNumber: number, side?: SelectionSide) => [number, number] | undefined;\ntype EventClickProps<TMode extends InteractionManagerMode> = TMode extends 'file' ? OnLineClickProps : OnDiffLineClickProps;\ntype PointerEventEnterLeaveProps<TMode extends InteractionManagerMode> = TMode extends 'file' ? OnLineEnterLeaveProps : OnDiffLineEnterLeaveProps;\nexport type OnTokenEventProps<TMode extends InteractionManagerMode> = TMode extends 'file' ? TokenEventBase : DiffTokenEventBaseProps;\nexport type GetHoveredLineResult<TMode extends InteractionManagerMode> = TMode extends 'file' ? {\n lineNumber: number;\n} : {\n lineNumber: number;\n side: AnnotationSide;\n};\nexport interface MergeConflictActionTarget {\n kind: 'merge-conflict-action';\n resolution: MergeConflictResolution;\n conflictIndex: number;\n}\nexport interface InteractionManagerBaseOptions<TMode extends InteractionManagerMode> {\n lineHoverHighlight?: 'disabled' | 'both' | 'number' | 'line';\n enableTokenInteractionsOnWhitespace?: boolean;\n enableGutterUtility?: boolean;\n onGutterUtilityClick?(range: SelectedLineRange): unknown;\n onLineClick?(props: EventClickProps<TMode>): unknown;\n onLineNumberClick?(props: EventClickProps<TMode>): unknown;\n onLineEnter?(props: PointerEventEnterLeaveProps<TMode>): unknown;\n onLineLeave?(props: PointerEventEnterLeaveProps<TMode>): unknown;\n onTokenClick?(props: OnTokenEventProps<TMode>, event: MouseEvent): unknown;\n onTokenEnter?(props: OnTokenEventProps<TMode>, event: PointerEvent): unknown;\n onTokenLeave?(props: OnTokenEventProps<TMode>, event: PointerEvent): unknown;\n __debugPointerEvents?: LogTypes;\n enableLineSelection?: boolean;\n controlledSelection?: boolean;\n onLineSelected?: (range: SelectedLineRange | null) => void;\n onLineSelectionStart?: (range: SelectedLineRange | null) => void;\n onLineSelectionChange?: (range: SelectedLineRange | null) => void;\n onLineSelectionEnd?: (range: SelectedLineRange | null) => void;\n getLineIndex?: GetLineIndexUtility;\n}\nexport interface InteractionManagerOptions<TMode extends InteractionManagerMode> extends InteractionManagerBaseOptions<TMode> {\n usesCustomGutterUtility?: boolean;\n onHunkExpand?(hunkIndex: number, direction: ExpansionDirections, expansionLineCountOverride?: number): unknown;\n onMergeConflictActionClick?(target: MergeConflictActionTarget): void;\n}\nexport declare class InteractionManager<TMode extends InteractionManagerMode> {\n private mode;\n private options;\n private hoveredLine;\n private hoveredToken;\n private pre;\n private gutterUtilityContainer;\n private gutterUtilityButton;\n private gutterUtilitySlot;\n private interactiveLinesAttr;\n private interactiveLineNumbersAttr;\n private hasPointerListeners;\n private hasDocumentPointerListeners;\n private selectedRange;\n private proposedSelectedRange;\n private renderedSelectionRange;\n private selectionAnchor;\n private queuedSelectionRender;\n private pointerSession;\n constructor(mode: TMode, options: InteractionManagerOptions<TMode>);\n setOptions(options: InteractionManagerOptions<TMode>): void;\n cleanUp(): void;\n setup(pre: HTMLPreElement): void;\n setSelectionDirty(): void;\n isSelectionDirty(): boolean;\n setSelection(range: SelectedLineRange | null, options?: SelectionWriteOptions): void;\n getSelection(): SelectedLineRange | null;\n getHoveredLine: () => GetHoveredLineResult<TMode> | undefined;\n handlePointerClick: (event: MouseEvent) => void;\n handlePointerMove: (event: PointerEvent) => void;\n handlePointerLeave: (event: PointerEvent) => void;\n private handlePointerEvent;\n private syncPointerListeners;\n private updateInteractiveLineAttributes;\n private handlePointerDown;\n private startLineSelectionFromPointerDown;\n private startGutterSelectionFromPointerDown;\n private handleDocumentPointerMove;\n private handleDocumentPointerUp;\n private handleDocumentPointerCancel;\n private clearHoveredLine;\n private setHoveredLine;\n private clearHoveredToken;\n private setHoveredToken;\n private ensureGutterUtilityNode;\n private attachDocumentPointerListeners;\n private detachDocumentPointerListeners;\n private clearPointerSession;\n private clearPendingSingleLineState;\n private getSelectionPointerInfo;\n private getSelectionPointFromPath;\n private getLineIndex;\n private getCurrentSelectionRange;\n private clearProposedSelection;\n private updateSelection;\n private getIndexesFromSelection;\n private renderSelection;\n private notifySelectionCommitted;\n private notifySelectionChangeDelta;\n private notifySelectionStart;\n private notifySelectionEnd;\n private toEventBaseProps;\n private toTokenEventBaseProps;\n private buildSelectedLineRange;\n private buildSelectionRange;\n private resolvePointerTarget;\n private isSplitDiff;\n private parseLineIndex;\n}\ntype InteractionPluckOptions<TMode extends InteractionManagerMode> = InteractionManagerBaseOptions<TMode> & {\n renderGutterUtility?(getHoveredRow: () => GetHoveredLineResult<TMode> | undefined): HTMLElement | null | undefined;\n};\nexport declare function pluckInteractionOptions<TMode extends InteractionManagerMode>({ enableTokenInteractionsOnWhitespace, enableGutterUtility, lineHoverHighlight, onGutterUtilityClick, onLineClick, onLineEnter, onLineLeave, onLineNumberClick, onTokenClick, onTokenEnter, onTokenLeave, renderGutterUtility, __debugPointerEvents, enableLineSelection, controlledSelection, onLineSelected, onLineSelectionStart, onLineSelectionChange, onLineSelectionEnd }: InteractionPluckOptions<TMode>, onHunkExpand?: (hunkIndex: number, direction: ExpansionDirections, expansionLineCountOverride?: number) => unknown, getLineIndex?: GetLineIndexUtility, onMergeConflictActionClick?: (target: MergeConflictActionTarget) => void): InteractionManagerOptions<TMode>;\nexport {};\n//# sourceMappingURL=InteractionManager.d.ts.map"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { areSelectionPointsEqual } from "../utils/areSelectionPointsEqual.js";
2
1
  import { areSelectionsEqual } from "../utils/areSelectionsEqual.js";
2
+ import { areSelectionPointsEqual } from "../utils/areSelectionPointsEqual.js";
3
3
  import { createGutterUtilityElement } from "../utils/createGutterUtilityElement.js";
4
4
  import { toHtml } from "hast-util-to-html";
5
5
 
@@ -16,6 +16,7 @@ var InteractionManager = class {
16
16
  hasPointerListeners = false;
17
17
  hasDocumentPointerListeners = false;
18
18
  selectedRange = null;
19
+ proposedSelectedRange;
19
20
  renderedSelectionRange;
20
21
  selectionAnchor;
21
22
  queuedSelectionRender;
@@ -79,12 +80,13 @@ var InteractionManager = class {
79
80
  isSelectionDirty() {
80
81
  return this.renderedSelectionRange === null;
81
82
  }
82
- setSelection(range) {
83
+ setSelection(range, options) {
83
84
  const isRangeChange = !(range === this.selectedRange || areSelectionsEqual(range ?? void 0, this.selectedRange ?? void 0));
84
85
  if (!this.isSelectionDirty() && !isRangeChange) return;
86
+ this.proposedSelectedRange = void 0;
85
87
  this.selectedRange = range;
86
88
  this.renderSelection();
87
- if (isRangeChange) this.notifySelectionCommitted();
89
+ if (isRangeChange && options?.notify !== false) this.notifySelectionCommitted();
88
90
  }
89
91
  getSelection() {
90
92
  return this.selectedRange;
@@ -287,7 +289,7 @@ var InteractionManager = class {
287
289
  side: useStart ? this.selectedRange.side : this.selectedRange.endSide ?? this.selectedRange.side
288
290
  };
289
291
  this.updateSelection(lineNumber, eventSide, false);
290
- this.notifySelectionStart(this.selectedRange);
292
+ this.notifySelectionStart(this.getCurrentSelectionRange());
291
293
  this.pointerSession = {
292
294
  mode: "selecting",
293
295
  pointerId: event.pointerId
@@ -310,13 +312,14 @@ var InteractionManager = class {
310
312
  this.attachDocumentPointerListeners();
311
313
  return;
312
314
  }
313
- this.selectedRange = null;
315
+ if (this.options.controlledSelection === true) this.proposedSelectedRange = null;
316
+ else this.selectedRange = null;
314
317
  this.selectionAnchor = {
315
318
  lineNumber,
316
319
  side: eventSide
317
320
  };
318
321
  this.updateSelection(lineNumber, eventSide, false);
319
- this.notifySelectionStart(this.selectedRange);
322
+ this.notifySelectionStart(this.getCurrentSelectionRange());
320
323
  this.pointerSession = {
321
324
  mode: "selecting",
322
325
  pointerId: event.pointerId
@@ -342,7 +345,7 @@ var InteractionManager = class {
342
345
  side: point.side
343
346
  };
344
347
  this.updateSelection(point.lineNumber, point.side, false);
345
- this.notifySelectionStart(this.selectedRange);
348
+ this.notifySelectionStart(this.getCurrentSelectionRange());
346
349
  }
347
350
  this.attachDocumentPointerListeners();
348
351
  }
@@ -375,7 +378,7 @@ var InteractionManager = class {
375
378
  };
376
379
  if (areSelectionPointsEqual(this.pointerSession.pending, point)) return;
377
380
  this.updateSelection(pointerInfo.lineNumber, pointerInfo.eventSide, false);
378
- this.notifySelectionStart(this.selectedRange);
381
+ this.notifySelectionStart(this.getCurrentSelectionRange());
379
382
  this.notifySelectionChangeDelta();
380
383
  this.pointerSession = {
381
384
  mode: "selecting",
@@ -399,8 +402,9 @@ var InteractionManager = class {
399
402
  onGutterUtilityClick?.(this.buildSelectedLineRange(this.pointerSession.anchor, this.pointerSession.current));
400
403
  this.selectionAnchor = void 0;
401
404
  if (enableLineSelection) {
402
- this.notifySelectionEnd(this.selectedRange);
405
+ this.notifySelectionEnd(this.getCurrentSelectionRange());
403
406
  this.notifySelectionCommitted();
407
+ this.clearProposedSelection();
404
408
  }
405
409
  this.clearPointerSession();
406
410
  this.detachDocumentPointerListeners();
@@ -412,16 +416,18 @@ var InteractionManager = class {
412
416
  this.selectionAnchor = void 0;
413
417
  this.clearPendingSingleLineState();
414
418
  this.detachDocumentPointerListeners();
415
- this.notifySelectionEnd(this.selectedRange);
419
+ this.notifySelectionEnd(this.getCurrentSelectionRange());
416
420
  this.notifySelectionCommitted();
421
+ this.clearProposedSelection();
417
422
  return;
418
423
  case "selecting":
419
424
  if (event.pointerId !== this.pointerSession.pointerId) return;
420
425
  this.selectionAnchor = void 0;
421
426
  this.detachDocumentPointerListeners();
422
427
  this.clearPointerSession();
423
- this.notifySelectionEnd(this.selectedRange);
428
+ this.notifySelectionEnd(this.getCurrentSelectionRange());
424
429
  this.notifySelectionCommitted();
430
+ this.clearProposedSelection();
425
431
  }
426
432
  };
427
433
  handleDocumentPointerCancel = (event) => {
@@ -434,6 +440,7 @@ var InteractionManager = class {
434
440
  if (event.pointerId !== this.pointerSession.pointerId) return;
435
441
  }
436
442
  this.selectionAnchor = void 0;
443
+ this.clearProposedSelection();
437
444
  this.clearPendingSingleLineState();
438
445
  this.clearPointerSession();
439
446
  this.detachDocumentPointerListeners();
@@ -534,8 +541,14 @@ var InteractionManager = class {
534
541
  const { getLineIndex } = this.options;
535
542
  return getLineIndex != null ? getLineIndex(lineNumber, side) : [lineNumber - 1, lineNumber - 1];
536
543
  }
544
+ getCurrentSelectionRange() {
545
+ return this.proposedSelectedRange !== void 0 ? this.proposedSelectedRange : this.selectedRange;
546
+ }
547
+ clearProposedSelection() {
548
+ this.proposedSelectedRange = void 0;
549
+ }
537
550
  updateSelection(currentLine, side, emitChange = true) {
538
- const { selectedRange: previousRange } = this;
551
+ const previousRange = this.getCurrentSelectionRange();
539
552
  let nextRange;
540
553
  if (currentLine == null) nextRange = null;
541
554
  else {
@@ -544,9 +557,12 @@ var InteractionManager = class {
544
557
  nextRange = this.buildSelectionRange(anchorLine, currentLine, anchorSide, side);
545
558
  }
546
559
  if (areSelectionsEqual(previousRange ?? void 0, nextRange ?? void 0)) return;
547
- this.selectedRange = nextRange;
560
+ if (this.options.controlledSelection === true) this.proposedSelectedRange = nextRange;
561
+ else {
562
+ this.selectedRange = nextRange;
563
+ this.queuedSelectionRender ??= requestAnimationFrame(this.renderSelection);
564
+ }
548
565
  if (emitChange) this.notifySelectionChangeDelta();
549
- this.queuedSelectionRender ??= requestAnimationFrame(this.renderSelection);
550
566
  }
551
567
  getIndexesFromSelection(selectedRange, split) {
552
568
  if (this.pre == null) return;
@@ -612,10 +628,10 @@ var InteractionManager = class {
612
628
  }
613
629
  };
614
630
  notifySelectionCommitted() {
615
- this.options.onLineSelected?.(this.selectedRange ?? null);
631
+ this.options.onLineSelected?.(this.getCurrentSelectionRange() ?? null);
616
632
  }
617
633
  notifySelectionChangeDelta() {
618
- this.options.onLineSelectionChange?.(this.selectedRange ?? null);
634
+ this.options.onLineSelectionChange?.(this.getCurrentSelectionRange() ?? null);
619
635
  }
620
636
  notifySelectionStart(range) {
621
637
  this.options.onLineSelectionStart?.(range);
@@ -818,17 +834,15 @@ var InteractionManager = class {
818
834
  if (!split) return lineIndexes[0];
819
835
  }
820
836
  };
821
- function pluckInteractionOptions({ enableTokenInteractionsOnWhitespace, enableGutterUtility, enableHoverUtility, lineHoverHighlight, onGutterUtilityClick, onLineClick, onLineEnter, onLineLeave, onLineNumberClick, onTokenClick, onTokenEnter, onTokenLeave, renderGutterUtility, renderHoverUtility, __debugPointerEvents, enableLineSelection, onLineSelected, onLineSelectionStart, onLineSelectionChange, onLineSelectionEnd }, onHunkExpand, getLineIndex, onMergeConflictActionClick) {
837
+ function pluckInteractionOptions({ enableTokenInteractionsOnWhitespace, enableGutterUtility, lineHoverHighlight, onGutterUtilityClick, onLineClick, onLineEnter, onLineLeave, onLineNumberClick, onTokenClick, onTokenEnter, onTokenLeave, renderGutterUtility, __debugPointerEvents, enableLineSelection, controlledSelection, onLineSelected, onLineSelectionStart, onLineSelectionChange, onLineSelectionEnd }, onHunkExpand, getLineIndex, onMergeConflictActionClick) {
822
838
  return {
823
839
  enableTokenInteractionsOnWhitespace,
824
840
  enableGutterUtility: resolveEnableGutterUtilityOption({
825
841
  enableGutterUtility,
826
- enableHoverUtility,
827
842
  renderGutterUtility,
828
- renderHoverUtility,
829
843
  onGutterUtilityClick
830
844
  }),
831
- usesCustomGutterUtility: renderGutterUtility != null || renderHoverUtility != null,
845
+ usesCustomGutterUtility: renderGutterUtility != null,
832
846
  lineHoverHighlight,
833
847
  onGutterUtilityClick,
834
848
  onHunkExpand,
@@ -842,6 +856,7 @@ function pluckInteractionOptions({ enableTokenInteractionsOnWhitespace, enableGu
842
856
  onTokenLeave,
843
857
  __debugPointerEvents,
844
858
  enableLineSelection,
859
+ controlledSelection,
845
860
  onLineSelected,
846
861
  onLineSelectionStart,
847
862
  onLineSelectionChange,
@@ -849,11 +864,9 @@ function pluckInteractionOptions({ enableTokenInteractionsOnWhitespace, enableGu
849
864
  getLineIndex
850
865
  };
851
866
  }
852
- function resolveEnableGutterUtilityOption({ enableGutterUtility, enableHoverUtility, renderGutterUtility, renderHoverUtility, onGutterUtilityClick }) {
853
- if (enableGutterUtility !== void 0 && enableHoverUtility !== void 0) throw new Error("Cannot use both 'enableGutterUtility' and deprecated 'enableHoverUtility'. Use only 'enableGutterUtility'.");
854
- if (renderGutterUtility != null && renderHoverUtility != null) throw new Error("Cannot use both 'renderGutterUtility' and deprecated 'renderHoverUtility'. Use only 'renderGutterUtility'.");
855
- if (onGutterUtilityClick != null && (renderGutterUtility != null || renderHoverUtility != null)) throw new Error("Cannot use both 'onGutterUtilityClick' and render utility callbacks ('renderGutterUtility'/'renderHoverUtility'). Use only one gutter utility API.");
856
- return enableGutterUtility ?? enableHoverUtility ?? false;
867
+ function resolveEnableGutterUtilityOption({ enableGutterUtility, renderGutterUtility, onGutterUtilityClick }) {
868
+ if (onGutterUtilityClick != null && renderGutterUtility != null) throw new Error("Cannot use both 'onGutterUtilityClick' and 'renderGutterUtility'. Use only one gutter utility API.");
869
+ return enableGutterUtility ?? false;
857
870
  }
858
871
  function isLinePointerTarget(target) {
859
872
  return target != null && "kind" in target && target.kind === "line";