@pierre/diffs 1.3.0-beta.9 → 1.3.0-rc.2

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 (241) hide show
  1. package/README.md +9 -0
  2. package/dist/components/CodeView.d.ts +12 -13
  3. package/dist/components/CodeView.d.ts.map +1 -1
  4. package/dist/components/CodeView.js +50 -58
  5. package/dist/components/CodeView.js.map +1 -1
  6. package/dist/components/File.d.ts +10 -3
  7. package/dist/components/File.d.ts.map +1 -1
  8. package/dist/components/File.js +41 -10
  9. package/dist/components/File.js.map +1 -1
  10. package/dist/components/FileDiff.d.ts +37 -6
  11. package/dist/components/FileDiff.d.ts.map +1 -1
  12. package/dist/components/FileDiff.js +202 -19
  13. package/dist/components/FileDiff.js.map +1 -1
  14. package/dist/components/UnresolvedFile.d.ts.map +1 -1
  15. package/dist/components/UnresolvedFile.js +7 -2
  16. package/dist/components/UnresolvedFile.js.map +1 -1
  17. package/dist/components/VirtualizedFile.d.ts +2 -1
  18. package/dist/components/VirtualizedFile.d.ts.map +1 -1
  19. package/dist/components/VirtualizedFile.js +9 -5
  20. package/dist/components/VirtualizedFile.js.map +1 -1
  21. package/dist/components/VirtualizedFileDiff.d.ts +14 -0
  22. package/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
  23. package/dist/components/VirtualizedFileDiff.js +61 -3
  24. package/dist/components/VirtualizedFileDiff.js.map +1 -1
  25. package/dist/components/Virtualizer.d.ts +14 -2
  26. package/dist/components/Virtualizer.d.ts.map +1 -1
  27. package/dist/components/Virtualizer.js +27 -2
  28. package/dist/components/Virtualizer.js.map +1 -1
  29. package/dist/edit/index.d.ts +5 -0
  30. package/dist/edit/index.js +3 -0
  31. package/dist/editor/command.d.ts +1 -1
  32. package/dist/editor/command.d.ts.map +1 -1
  33. package/dist/editor/command.js +11 -0
  34. package/dist/editor/command.js.map +1 -1
  35. package/dist/editor/editStack.d.ts +6 -2
  36. package/dist/editor/editStack.d.ts.map +1 -1
  37. package/dist/editor/editStack.js +53 -12
  38. package/dist/editor/editStack.js.map +1 -1
  39. package/dist/editor/editor.d.ts +51 -23
  40. package/dist/editor/editor.d.ts.map +1 -1
  41. package/dist/editor/editor.js +977 -241
  42. package/dist/editor/editor.js.map +1 -1
  43. package/dist/editor/editor2.js +1 -1
  44. package/dist/editor/languages.d.ts +26 -0
  45. package/dist/editor/languages.d.ts.map +1 -0
  46. package/dist/editor/languages.js +363 -0
  47. package/dist/editor/languages.js.map +1 -0
  48. package/dist/editor/lineAnnotations.d.ts.map +1 -1
  49. package/dist/editor/lineAnnotations.js +25 -26
  50. package/dist/editor/lineAnnotations.js.map +1 -1
  51. package/dist/editor/marker.d.ts +5 -3
  52. package/dist/editor/marker.d.ts.map +1 -1
  53. package/dist/editor/marker.js +111 -91
  54. package/dist/editor/marker.js.map +1 -1
  55. package/dist/editor/matchBrackets.d.ts +3 -2
  56. package/dist/editor/matchBrackets.d.ts.map +1 -1
  57. package/dist/editor/matchBrackets.js +2 -10
  58. package/dist/editor/matchBrackets.js.map +1 -1
  59. package/dist/editor/pieceTable.d.ts +2 -1
  60. package/dist/editor/pieceTable.d.ts.map +1 -1
  61. package/dist/editor/pieceTable.js +103 -39
  62. package/dist/editor/pieceTable.js.map +1 -1
  63. package/dist/editor/platform.js +2 -0
  64. package/dist/editor/platform.js.map +1 -1
  65. package/dist/editor/popover.d.ts +25 -5
  66. package/dist/editor/popover.d.ts.map +1 -1
  67. package/dist/editor/popover.js +60 -14
  68. package/dist/editor/popover.js.map +1 -1
  69. package/dist/editor/searchPanel.d.ts.map +1 -1
  70. package/dist/editor/searchPanel.js +9 -2
  71. package/dist/editor/searchPanel.js.map +1 -1
  72. package/dist/editor/selection.d.ts +31 -11
  73. package/dist/editor/selection.d.ts.map +1 -1
  74. package/dist/editor/selection.js +198 -70
  75. package/dist/editor/selection.js.map +1 -1
  76. package/dist/editor/selectionAction.d.ts +4 -3
  77. package/dist/editor/selectionAction.d.ts.map +1 -1
  78. package/dist/editor/selectionAction.js +9 -5
  79. package/dist/editor/selectionAction.js.map +1 -1
  80. package/dist/editor/stateStorage.d.ts +15 -0
  81. package/dist/editor/stateStorage.d.ts.map +1 -0
  82. package/dist/editor/stateStorage.js +65 -0
  83. package/dist/editor/stateStorage.js.map +1 -0
  84. package/dist/editor/textDocument.d.ts +12 -77
  85. package/dist/editor/textDocument.d.ts.map +1 -1
  86. package/dist/editor/textDocument.js +76 -34
  87. package/dist/editor/textDocument.js.map +1 -1
  88. package/dist/editor/textMeasure.d.ts +7 -12
  89. package/dist/editor/textMeasure.d.ts.map +1 -1
  90. package/dist/editor/textMeasure.js +40 -32
  91. package/dist/editor/textMeasure.js.map +1 -1
  92. package/dist/editor/{tokenzier.d.ts → tokenizer.d.ts} +3 -3
  93. package/dist/editor/tokenizer.d.ts.map +1 -0
  94. package/dist/editor/{tokenzier.js → tokenizer.js} +170 -50
  95. package/dist/editor/tokenizer.js.map +1 -0
  96. package/dist/editor/utils.js +1 -1
  97. package/dist/editor/utils.js.map +1 -1
  98. package/dist/index.d.ts +4 -3
  99. package/dist/index.js +6 -5
  100. package/dist/managers/InteractionManager.d.ts +18 -7
  101. package/dist/managers/InteractionManager.d.ts.map +1 -1
  102. package/dist/managers/InteractionManager.js +154 -99
  103. package/dist/managers/InteractionManager.js.map +1 -1
  104. package/dist/managers/UniversalRenderingManager.d.ts.map +1 -1
  105. package/dist/managers/UniversalRenderingManager.js +1 -2
  106. package/dist/managers/UniversalRenderingManager.js.map +1 -1
  107. package/dist/react/CodeView.d.ts +13 -13
  108. package/dist/react/CodeView.d.ts.map +1 -1
  109. package/dist/react/CodeView.js +37 -28
  110. package/dist/react/CodeView.js.map +1 -1
  111. package/dist/react/EditContext.d.ts +20 -0
  112. package/dist/react/EditContext.d.ts.map +1 -0
  113. package/dist/react/EditContext.js +20 -0
  114. package/dist/react/EditContext.js.map +1 -0
  115. package/dist/react/File.d.ts +2 -1
  116. package/dist/react/File.d.ts.map +1 -1
  117. package/dist/react/File.js +3 -2
  118. package/dist/react/File.js.map +1 -1
  119. package/dist/react/FileDiff.d.ts +2 -2
  120. package/dist/react/FileDiff.d.ts.map +1 -1
  121. package/dist/react/FileDiff.js +3 -2
  122. package/dist/react/FileDiff.js.map +1 -1
  123. package/dist/react/MultiFileDiff.d.ts +2 -2
  124. package/dist/react/MultiFileDiff.d.ts.map +1 -1
  125. package/dist/react/MultiFileDiff.js +3 -2
  126. package/dist/react/MultiFileDiff.js.map +1 -1
  127. package/dist/react/PatchDiff.d.ts +2 -2
  128. package/dist/react/PatchDiff.d.ts.map +1 -1
  129. package/dist/react/PatchDiff.js +3 -2
  130. package/dist/react/PatchDiff.js.map +1 -1
  131. package/dist/react/UnresolvedFile.d.ts +1 -1
  132. package/dist/react/UnresolvedFile.js.map +1 -1
  133. package/dist/react/index.d.ts +4 -4
  134. package/dist/react/index.js +3 -3
  135. package/dist/react/types.d.ts +9 -1
  136. package/dist/react/types.d.ts.map +1 -1
  137. package/dist/react/utils/useFileDiffInstance.d.ts +5 -3
  138. package/dist/react/utils/useFileDiffInstance.d.ts.map +1 -1
  139. package/dist/react/utils/useFileDiffInstance.js +24 -34
  140. package/dist/react/utils/useFileDiffInstance.js.map +1 -1
  141. package/dist/react/utils/useFileInstance.d.ts +5 -3
  142. package/dist/react/utils/useFileInstance.d.ts.map +1 -1
  143. package/dist/react/utils/useFileInstance.js +23 -33
  144. package/dist/react/utils/useFileInstance.js.map +1 -1
  145. package/dist/react/utils/useUnresolvedFileInstance.js +4 -4
  146. package/dist/react/utils/useUnresolvedFileInstance.js.map +1 -1
  147. package/dist/renderers/DiffHunksRenderer.d.ts +41 -1
  148. package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
  149. package/dist/renderers/DiffHunksRenderer.js +167 -29
  150. package/dist/renderers/DiffHunksRenderer.js.map +1 -1
  151. package/dist/renderers/FileRenderer.d.ts +20 -1
  152. package/dist/renderers/FileRenderer.d.ts.map +1 -1
  153. package/dist/renderers/FileRenderer.js +119 -29
  154. package/dist/renderers/FileRenderer.js.map +1 -1
  155. package/dist/ssr/index.d.ts +2 -2
  156. package/dist/ssr/preloadDiffs.d.ts.map +1 -1
  157. package/dist/ssr/preloadDiffs.js +3 -1
  158. package/dist/ssr/preloadDiffs.js.map +1 -1
  159. package/dist/ssr/preloadFile.d.ts.map +1 -1
  160. package/dist/ssr/preloadFile.js +2 -0
  161. package/dist/ssr/preloadFile.js.map +1 -1
  162. package/dist/style.js +1 -1
  163. package/dist/types.d.ts +192 -42
  164. package/dist/types.d.ts.map +1 -1
  165. package/dist/utils/annotationHelpers.d.ts +20 -0
  166. package/dist/utils/annotationHelpers.d.ts.map +1 -0
  167. package/dist/utils/annotationHelpers.js +29 -0
  168. package/dist/utils/annotationHelpers.js.map +1 -0
  169. package/dist/utils/computeFileOffsets.d.ts.map +1 -1
  170. package/dist/utils/computeFileOffsets.js +34 -5
  171. package/dist/utils/computeFileOffsets.js.map +1 -1
  172. package/dist/utils/editSessionHunks.d.ts +66 -0
  173. package/dist/utils/editSessionHunks.d.ts.map +1 -0
  174. package/dist/utils/editSessionHunks.js +437 -0
  175. package/dist/utils/editSessionHunks.js.map +1 -0
  176. package/dist/utils/getDiffHunksRendererOptions.d.ts.map +1 -1
  177. package/dist/utils/getDiffHunksRendererOptions.js +2 -1
  178. package/dist/utils/getDiffHunksRendererOptions.js.map +1 -1
  179. package/dist/utils/getFileRendererOptions.d.ts.map +1 -1
  180. package/dist/utils/getFileRendererOptions.js +2 -1
  181. package/dist/utils/getFileRendererOptions.js.map +1 -1
  182. package/dist/utils/getHunkSideBoundaries.d.ts +7 -0
  183. package/dist/utils/getHunkSideBoundaries.d.ts.map +1 -0
  184. package/dist/utils/getHunkSideBoundaries.js +12 -0
  185. package/dist/utils/getHunkSideBoundaries.js.map +1 -0
  186. package/dist/utils/getTotalLineCountFromHunks.d.ts.map +1 -1
  187. package/dist/utils/getTotalLineCountFromHunks.js +2 -1
  188. package/dist/utils/getTotalLineCountFromHunks.js.map +1 -1
  189. package/dist/utils/hydratePartialDiff.d.ts.map +1 -1
  190. package/dist/utils/hydratePartialDiff.js +4 -3
  191. package/dist/utils/hydratePartialDiff.js.map +1 -1
  192. package/dist/utils/isGutterUtilityPath.d.ts +5 -0
  193. package/dist/utils/isGutterUtilityPath.d.ts.map +1 -0
  194. package/dist/utils/isGutterUtilityPath.js +12 -0
  195. package/dist/utils/isGutterUtilityPath.js.map +1 -0
  196. package/dist/utils/iterateOverDiff.d.ts.map +1 -1
  197. package/dist/utils/iterateOverDiff.js +17 -12
  198. package/dist/utils/iterateOverDiff.js.map +1 -1
  199. package/dist/utils/parseMergeConflictDiffFromFile.d.ts.map +1 -1
  200. package/dist/utils/parseMergeConflictDiffFromFile.js +9 -6
  201. package/dist/utils/parseMergeConflictDiffFromFile.js.map +1 -1
  202. package/dist/utils/parsePatchFiles.d.ts.map +1 -1
  203. package/dist/utils/parsePatchFiles.js +6 -3
  204. package/dist/utils/parsePatchFiles.js.map +1 -1
  205. package/dist/utils/realignChangeContent.d.ts +33 -0
  206. package/dist/utils/realignChangeContent.d.ts.map +1 -0
  207. package/dist/utils/realignChangeContent.js +148 -0
  208. package/dist/utils/realignChangeContent.js.map +1 -0
  209. package/dist/utils/renderDiffWithHighlighter.js +1 -1
  210. package/dist/utils/resolveRegion.d.ts.map +1 -1
  211. package/dist/utils/resolveRegion.js +18 -2
  212. package/dist/utils/resolveRegion.js.map +1 -1
  213. package/dist/utils/shouldUseTokenTransformer.d.ts +7 -3
  214. package/dist/utils/shouldUseTokenTransformer.d.ts.map +1 -1
  215. package/dist/utils/shouldUseTokenTransformer.js +1 -1
  216. package/dist/utils/shouldUseTokenTransformer.js.map +1 -1
  217. package/dist/utils/updateDiffHunks.d.ts +8 -2
  218. package/dist/utils/updateDiffHunks.d.ts.map +1 -1
  219. package/dist/utils/updateDiffHunks.js +9 -7
  220. package/dist/utils/updateDiffHunks.js.map +1 -1
  221. package/dist/utils/virtualDiffLayout.d.ts +42 -2
  222. package/dist/utils/virtualDiffLayout.d.ts.map +1 -1
  223. package/dist/utils/virtualDiffLayout.js +101 -7
  224. package/dist/utils/virtualDiffLayout.js.map +1 -1
  225. package/dist/worker/WorkerPoolManager.d.ts +2 -1
  226. package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
  227. package/dist/worker/WorkerPoolManager.js +3 -0
  228. package/dist/worker/WorkerPoolManager.js.map +1 -1
  229. package/dist/worker/worker-portable.js +60 -20
  230. package/dist/worker/worker-portable.js.map +1 -1
  231. package/dist/worker/worker.js +61 -19
  232. package/dist/worker/worker.js.map +1 -1
  233. package/package.json +10 -7
  234. package/dist/editor/index.d.ts +0 -3
  235. package/dist/editor/index.js +0 -3
  236. package/dist/editor/tokenzier.d.ts.map +0 -1
  237. package/dist/editor/tokenzier.js.map +0 -1
  238. package/dist/react/EditorContext.d.ts +0 -15
  239. package/dist/react/EditorContext.d.ts.map +0 -1
  240. package/dist/react/EditorContext.js +0 -23
  241. package/dist/react/EditorContext.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AnnotationLineMap, AnnotationSide, AnnotationSpan, AppliedThemeStyleCache, BaseCodeOptions, BaseDiffOptions, BaseDiffOptionsWithDefaults, BundledLanguage, ChangeContent, ChangeTypes, CodeColumnType, CodeToHastOptions, CodeViewCreateEditorOptions, CodeViewDiffItem, CodeViewFileItem, CodeViewItem, CodeViewItemScrollTarget, CodeViewLayout, CodeViewLineScrollTarget, CodeViewPositionScrollTarget, CodeViewRangeScrollTarget, CodeViewScrollBehavior, CodeViewScrollTarget, ConflictResolverTypes, ContextContent, CreatePatchOptionsNonabortable, CustomPreProperties, DecorationItem, DiffAcceptRejectHunkConfig, DiffAcceptRejectHunkType, DiffFileInput, DiffIndicators, DiffLineAnnotation, DiffLineEventBaseProps, DiffTokenEventBaseProps, DiffsBaseComponent, DiffsComponentOptions, DiffsEditableComponent, DiffsEditor, DiffsEditorHost, DiffsEditorSelection, DiffsHighlighter, DiffsTextDocument, DiffsThemeNames, ExpansionDirections, ExtensionFormatMap, FileContents, FileDiffContentsLoader, FileDiffLoadedChangedFiles, FileDiffLoadedFiles, FileDiffLoadedPureRenamedFile, FileDiffMetadata, FileHeaderRenderMode, ForceDiffPlainTextOptions, ForceFilePlainTextOptions, GapSpan, HighlightedToken, HighlighterTypes, Hunk, HunkData, HunkExpansionRegion, HunkLineType, HunkSeparators, LanguageRegistration, LineAnnotation, LineDiffTypes, LineEventBaseProps, LineInfo, LineSpans, LineTypes, MaybeDiffFileInput, MergeConflictActionPayload, MergeConflictMarkerRow, MergeConflictMarkerRowType, MergeConflictRegion, MergeConflictResolution, NumericScrollLineAnchor, ObservedAnnotationNodes, ObservedGridNodes, ParsedPatch, PendingCodeViewLayoutReset, PostRenderPhase, PrePropertiesConfig, ProcessFileConflictData, RenderDiffFilesResult, RenderDiffOptions, RenderDiffResult, RenderFileMetadata, RenderFileOptions, RenderFileResult, RenderHeaderFilenameSuffixCallback, RenderHeaderMetadataCallback, RenderHeaderPrefixCallback, RenderRange, RenderWindow, RenderedDiffASTCache, RenderedFileASTCache, SelectedLineRange, SelectionPoint, SelectionSide, SharedRenderState, ShikiTransformer, SmoothScrollSettings, StickySpecs, SupportedLanguages, ThemeRegistration, ThemeRegistrationResolved, ThemeTypes, ThemedDiffResult, ThemedFileResult, ThemedToken, ThemesType, TokenEventBase, VirtualFileMetrics, VirtualWindowSpecs } from "./types.js";
1
+ import { AnnotationLineMap, AnnotationSide, AnnotationSpan, AppliedThemeStyleCache, BaseCodeOptions, BaseDiffOptions, BaseDiffOptionsWithDefaults, BundledLanguage, ChangeContent, ChangeTypes, CodeColumnType, CodeToHastOptions, CodeViewCreateEditorOptions, CodeViewDiffItem, CodeViewFileItem, CodeViewItem, CodeViewItemScrollTarget, CodeViewLayout, CodeViewLineScrollTarget, CodeViewPositionScrollTarget, CodeViewRangeScrollTarget, CodeViewScrollBehavior, CodeViewScrollTarget, ConflictResolverTypes, ContextContent, CreatePatchOptionsNonabortable, CustomPreProperties, DecorationItem, DiffAcceptRejectHunkConfig, DiffAcceptRejectHunkType, DiffFileInput, DiffIndicators, DiffLineAnnotation, DiffLineEventBaseProps, DiffTokenEventBaseProps, DiffsBaseComponent, DiffsComponentOptions, DiffsEditableComponent, DiffsEditor, DiffsHighlighter, DiffsTextDocument, DiffsThemeNames, EditableInstance, EditorActiveLineOptions, EditorSelection, EditorState, EditorViewState, ExpansionDirections, ExtensionFormatMap, FileContents, FileDiffContentsLoader, FileDiffLoadedChangedFiles, FileDiffLoadedFiles, FileDiffLoadedPureRenamedFile, FileDiffMetadata, FileHeaderRenderMode, ForceDiffPlainTextOptions, ForceFilePlainTextOptions, GapSpan, HighlightedToken, HighlighterTypes, Hunk, HunkData, HunkExpansionRegion, HunkLineType, HunkSeparators, LanguageRegistration, LineAnnotation, LineDiffTypes, LineEventBaseProps, LineInfo, LineSpans, LineTypes, MaybeDiffFileInput, MergeConflictActionPayload, MergeConflictMarkerRow, MergeConflictMarkerRowType, MergeConflictRegion, MergeConflictResolution, NumericScrollLineAnchor, ObservedAnnotationNodes, ObservedGridNodes, ParsedPatch, PendingCodeViewLayoutReset, Position, PostRenderPhase, PrePropertiesConfig, ProcessFileConflictData, Range, RenderDiffFilesResult, RenderDiffOptions, RenderDiffResult, RenderFileMetadata, RenderFileOptions, RenderFileResult, RenderHeaderFilenameSuffixCallback, RenderHeaderMetadataCallback, RenderHeaderPrefixCallback, RenderRange, RenderWindow, RenderedDiffASTCache, RenderedFileASTCache, SelectedLineRange, SelectionDirection, SelectionPoint, SelectionSide, SharedRenderState, ShikiTransformer, SmoothScrollSettings, StickySpecs, SupportedLanguages, TextEdit, ThemeRegistration, ThemeRegistrationResolved, ThemeTypes, ThemedDiffResult, ThemedFileResult, ThemedToken, ThemesType, TokenEventBase, VirtualFileMetrics, VirtualWindowSpecs } from "./types.js";
2
2
  import { GetHoveredLineResult, GetLineIndexUtility, InteractionManager, InteractionManagerBaseOptions, InteractionManagerMode, InteractionManagerOptions, LogTypes, MergeConflictActionTarget, OnDiffLineClickProps, OnDiffLineEnterLeaveProps, OnLineClickProps, OnLineEnterLeaveProps, OnTokenEventProps, SelectionWriteOptions, pluckInteractionOptions } from "./managers/InteractionManager.js";
3
3
  import { ResizeManager, ResizeManagerColumnVariableMode, ResizeManagerSetupOptions } from "./managers/ResizeManager.js";
4
4
  import { FileRenderResult, FileRenderer, FileRendererOptions } from "./renderers/FileRenderer.js";
@@ -6,7 +6,7 @@ import { File, FileHydrateProps, FileOptions, FileRenderProps } from "./componen
6
6
  import { ScrollSyncManager } from "./managers/ScrollSyncManager.js";
7
7
  import { DiffHunksRenderer, DiffHunksRendererOptions, DiffHunksRendererOptionsWithDefaults, HunksRenderResult, InjectedRow, LineDecoration, RenderedLineContext, SplitInjectedRow, SplitInjectedRowPlacement, SplitLineDecorationProps, UnifiedInjectedRowPlacement, UnifiedLineDecorationProps } from "./renderers/DiffHunksRenderer.js";
8
8
  import { FileDiff, FileDiffHydrationProps, FileDiffOptions, FileDiffRenderBaseProps, FileDiffRenderProps, FileDiffType } from "./components/FileDiff.js";
9
- import { Virtualizer, VirtualizerConfig } from "./components/Virtualizer.js";
9
+ import { Virtualizer, VirtualizerConfig, VirtualizerScrollOptions } from "./components/Virtualizer.js";
10
10
  import { VirtualizedFile } from "./components/VirtualizedFile.js";
11
11
  import { VIRTUALIZED_FILE_DIFF_LAYOUT_CHECKPOINT_INTERVAL, VirtualizedFileDiff } from "./components/VirtualizedFileDiff.js";
12
12
  import { CODE_VIEW_DIFF_OPTION_KEYS, CODE_VIEW_FILE_OPTION_KEYS, CodeView, CodeViewCoordinator, CodeViewLineSelection, CodeViewOptions, CodeViewRenderedDiffItem, CodeViewRenderedFileItem, CodeViewRenderedItem, CodeViewScrollListener, CodeViewSlotSnapshot } from "./components/CodeView.js";
@@ -40,6 +40,7 @@ import { resolveTheme } from "./highlighter/themes/resolveTheme.js";
40
40
  import { resolveThemes } from "./highlighter/themes/resolveThemes.js";
41
41
  import { clearRenderQueue, dequeueRender, queueRender } from "./managers/UniversalRenderingManager.js";
42
42
  import { SVGSpriteNames, SVGSpriteSheet } from "./sprite.js";
43
+ import { isDiffAnnotation, isDiffAnnotationCollection, isFileAnnotation, isFileAnnotationCollection } from "./utils/annotationHelpers.js";
43
44
  import { areDiffLineAnnotationsEqual } from "./utils/areDiffLineAnnotationsEqual.js";
44
45
  import { areDiffRenderOptionsEqual } from "./utils/areDiffRenderOptionsEqual.js";
45
46
  import { areDiffTargetsEqual } from "./utils/areDiffTargetsEqual.js";
@@ -107,4 +108,4 @@ import { setLanguageOverride } from "./utils/setLanguageOverride.js";
107
108
  import { setPreNodeProperties } from "./utils/setWrapperNodeProps.js";
108
109
  import { trimPatchContext } from "./utils/trimPatchContext.js";
109
110
  import { codeToHtml, createCssVariablesTheme as createCSSVariablesTheme } from "shiki";
110
- export { ALTERNATE_FILE_NAMES_GIT, type AnnotationLineMap, type AnnotationSide, type AnnotationSpan, type AppliedThemeStyleCache, AttachedLanguages, AttachedThemes, type BaseCodeOptions, type BaseDiffOptions, type BaseDiffOptionsWithDefaults, type BundledLanguage, CODE_VIEW_DIFF_OPTION_KEYS, CODE_VIEW_FILE_OPTION_KEYS, CODE_VIEW_FOOTER_ATTRIBUTE, CODE_VIEW_HEADER_ATTRIBUTE, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CUSTOM_HEADER_SLOT_ID, type ChangeContent, type ChangeTypes, type CodeColumnType, type CodeToHastOptions, CodeToTokenTransformStream, CodeToTokenTransformStreamOptions, CodeView, CodeViewCoordinator, type CodeViewCreateEditorOptions, type CodeViewDiffItem, type CodeViewFileItem, type CodeViewItem, type CodeViewItemScrollTarget, type CodeViewLayout, type CodeViewLineScrollTarget, CodeViewLineSelection, CodeViewOptions, type CodeViewPositionScrollTarget, type CodeViewRangeScrollTarget, CodeViewRenderedDiffItem, CodeViewRenderedFileItem, CodeViewRenderedItem, type CodeViewScrollBehavior, CodeViewScrollListener, type CodeViewScrollTarget, CodeViewSlotSnapshot, type ConflictResolverTypes, type ContextContent, CreateFileHeaderElementProps, type CreatePatchOptionsNonabortable, type CustomPreProperties, CustomThemeLoader, DEFAULT_CODE_VIEW_FILE_METRICS, DEFAULT_CODE_VIEW_LAYOUT, 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_DEVELOPMENT_BUILD, DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY, DIFFS_SCROLLBAR_MEASURE_ATTRIBUTE, DIFFS_TAG_NAME, type DecorationItem, type DiffAcceptRejectHunkConfig, type DiffAcceptRejectHunkType, type DiffFileInput, DiffHunksRenderer, DiffHunksRendererOptions, DiffHunksRendererOptionsWithDefaults, type DiffIndicators, type DiffLineAnnotation, type DiffLineEventBaseProps, type DiffTokenEventBaseProps, type DiffsBaseComponent, type DiffsComponentOptions, type DiffsEditableComponent, type DiffsEditor, type DiffsEditorHost, type DiffsEditorSelection, type DiffsHighlighter, type DiffsTextDocument, type DiffsThemeNames, EMPTY_RENDER_RANGE, EXTENSION_TO_FILE_FORMAT, type ExpansionDirections, type ExtensionFormatMap, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, File, type FileContents, FileDiff, type FileDiffContentsLoader, FileDiffHydrationProps, type FileDiffLoadedChangedFiles, type FileDiffLoadedFiles, type FileDiffLoadedPureRenamedFile, type FileDiffMetadata, FileDiffOptions, FileDiffRenderBaseProps, FileDiffRenderProps, FileDiffType, type FileHeaderRenderMode, FileHydrateProps, FileOptions, FileRenderProps, FileRenderResult, FileRenderer, FileRendererOptions, FileStream, FileStreamOptions, type ForceDiffPlainTextOptions, type ForceFilePlainTextOptions, GIT_DIFF_FILE_BREAK_REGEX, type GapSpan, GetHoveredLineResult, GetLineIndexUtility, HEADER_FILENAME_SUFFIX_SLOT_ID, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID, HUNK_HEADER, type HighlightedToken, type HighlighterTypes, type Hunk, type HunkData, type HunkExpansionRegion, type HunkLineType, type HunkSeparators, HunksRenderResult, INDEX_LINE_METADATA, InjectedRow, InteractionManager, InteractionManagerBaseOptions, InteractionManagerMode, InteractionManagerOptions, type LanguageRegistration, type LineAnnotation, LineDecoration, type LineDiffTypes, type LineEventBaseProps, type LineInfo, type LineSpans, type LineTypes, LogTypes, MERGE_CONFLICT_BASE_MARKER_REGEX, MERGE_CONFLICT_END_MARKER_REGEX, MERGE_CONFLICT_SEPARATOR_MARKER_REGEX, MERGE_CONFLICT_START_MARKER_REGEX, type MaybeDiffFileInput, type MergeConflictActionPayload, MergeConflictActionTarget, MergeConflictActionsTypeOption, type MergeConflictMarkerRow, type MergeConflictMarkerRowType, type MergeConflictRegion, type MergeConflictResolution, type NumericScrollLineAnchor, type ObservedAnnotationNodes, type ObservedGridNodes, OnDiffLineClickProps, OnDiffLineEnterLeaveProps, OnLineClickProps, OnLineEnterLeaveProps, OnTokenEventProps, ParsedLine, type ParsedPatch, type PendingCodeViewLayoutReset, type PostRenderPhase, type PrePropertiesConfig, type ProcessFileConflictData, RecallToken, RegisteredCustomLanguages, type RenderDiffFilesResult, type RenderDiffOptions, type RenderDiffResult, type RenderFileMetadata, type RenderFileOptions, type RenderFileResult, type RenderHeaderFilenameSuffixCallback, type RenderHeaderMetadataCallback, type RenderHeaderPrefixCallback, RenderMergeConflictActions, type RenderRange, type RenderWindow, type RenderedDiffASTCache, type RenderedFileASTCache, RenderedLineContext, ResizeManager, ResizeManagerColumnVariableMode, ResizeManagerSetupOptions, ResolvedLanguages, ResolvingLanguages, SPLIT_WITH_NEWLINES, SVGSpriteNames, SVGSpriteSheet, ScrollSyncManager, type SelectedLineRange, type SelectionPoint, type SelectionSide, SelectionWriteOptions, type SharedRenderState, ShikiStreamTokenizer, ShikiStreamTokenizerEnqueueResult, ShikiStreamTokenizerOptions, type ShikiTransformer, type SmoothScrollSettings, SplitInjectedRow, SplitInjectedRowPlacement, SplitLineDecorationProps, type StickySpecs, type SupportedLanguages, THEME_CSS_ATTRIBUTE, type ThemeRegistration, type ThemeRegistrationResolved, type ThemeTypes, type ThemedDiffResult, type ThemedFileResult, type ThemedToken, type ThemesType, type TokenEventBase, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE, UnifiedInjectedRowPlacement, UnifiedLineDecorationProps, UnresolvedFile, UnresolvedFileHydrationProps, UnresolvedFileOptions, UnresolvedFileRenderProps, VIRTUALIZED_FILE_DIFF_LAYOUT_CHECKPOINT_INTERVAL, type VirtualFileMetrics, type VirtualWindowSpecs, VirtualizedFile, VirtualizedFileDiff, Virtualizer, VirtualizerConfig, areDiffLineAnnotationsEqual, areDiffRenderOptionsEqual, areDiffTargetsEqual, areFileRenderOptionsEqual, areFilesEqual, areHunkDataEqual, areLanguagesAttached, areLineAnnotationsEqual, areObjectsEqual, areOptionsEqual, arePrePropertiesEqual, areRenderRangesEqual, areSelectionsEqual, areThemesAttached, areThemesEqual, areVirtualWindowSpecsEqual, areWorkerStatsEqual, attachResolvedLanguages, attachResolvedThemes, cleanLastNewline, cleanUpResolvedLanguages, cleanUpResolvedThemes, clearRenderQueue, cloneFileDiffMetadata, 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, detachString, 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, hydratePartialDiff, isDefaultRenderRange, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, isWorkerContext, parseDiffFromFile, parseLineType, parsePatchFiles, patchScrollbarGutterSize, pluckInteractionOptions, prefersReducedMotion, preloadHighlighter, prerenderHTMLIfNecessary, processFile, processLine, processPatch, pushOrJoinSpan, queueRender, registerCustomCSSVariableTheme, registerCustomLanguage, registerCustomTheme, releaseStringDetachBuffer, renderDiffWithHighlighter, renderFileWithHighlighter, replaceCustomExtensions, resolveConflict, resolveLanguage, resolveLanguages, resolveRegion, resolveTheme, resolveThemes, setCustomExtension, setLanguageOverride, setPreNodeProperties, trimPatchContext, wrapCoreCSS, wrapThemeCSS, wrapUnsafeCSS };
111
+ export { ALTERNATE_FILE_NAMES_GIT, type AnnotationLineMap, type AnnotationSide, type AnnotationSpan, type AppliedThemeStyleCache, AttachedLanguages, AttachedThemes, type BaseCodeOptions, type BaseDiffOptions, type BaseDiffOptionsWithDefaults, type BundledLanguage, CODE_VIEW_DIFF_OPTION_KEYS, CODE_VIEW_FILE_OPTION_KEYS, CODE_VIEW_FOOTER_ATTRIBUTE, CODE_VIEW_HEADER_ATTRIBUTE, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CUSTOM_HEADER_SLOT_ID, type ChangeContent, type ChangeTypes, type CodeColumnType, type CodeToHastOptions, CodeToTokenTransformStream, CodeToTokenTransformStreamOptions, CodeView, CodeViewCoordinator, type CodeViewCreateEditorOptions, type CodeViewDiffItem, type CodeViewFileItem, type CodeViewItem, type CodeViewItemScrollTarget, type CodeViewLayout, type CodeViewLineScrollTarget, CodeViewLineSelection, CodeViewOptions, type CodeViewPositionScrollTarget, type CodeViewRangeScrollTarget, CodeViewRenderedDiffItem, CodeViewRenderedFileItem, CodeViewRenderedItem, type CodeViewScrollBehavior, CodeViewScrollListener, type CodeViewScrollTarget, CodeViewSlotSnapshot, type ConflictResolverTypes, type ContextContent, CreateFileHeaderElementProps, type CreatePatchOptionsNonabortable, type CustomPreProperties, CustomThemeLoader, DEFAULT_CODE_VIEW_FILE_METRICS, DEFAULT_CODE_VIEW_LAYOUT, 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_DEVELOPMENT_BUILD, DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY, DIFFS_SCROLLBAR_MEASURE_ATTRIBUTE, DIFFS_TAG_NAME, type DecorationItem, type DiffAcceptRejectHunkConfig, type DiffAcceptRejectHunkType, type DiffFileInput, DiffHunksRenderer, DiffHunksRendererOptions, DiffHunksRendererOptionsWithDefaults, type DiffIndicators, type DiffLineAnnotation, type DiffLineEventBaseProps, type DiffTokenEventBaseProps, type DiffsBaseComponent, type DiffsComponentOptions, type DiffsEditableComponent, type DiffsEditor, type DiffsHighlighter, type DiffsTextDocument, type DiffsThemeNames, EMPTY_RENDER_RANGE, EXTENSION_TO_FILE_FORMAT, type EditableInstance, type EditorActiveLineOptions, type EditorSelection, type EditorState, type EditorViewState, type ExpansionDirections, type ExtensionFormatMap, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, File, type FileContents, FileDiff, type FileDiffContentsLoader, FileDiffHydrationProps, type FileDiffLoadedChangedFiles, type FileDiffLoadedFiles, type FileDiffLoadedPureRenamedFile, type FileDiffMetadata, FileDiffOptions, FileDiffRenderBaseProps, FileDiffRenderProps, FileDiffType, type FileHeaderRenderMode, FileHydrateProps, FileOptions, FileRenderProps, FileRenderResult, FileRenderer, FileRendererOptions, FileStream, FileStreamOptions, type ForceDiffPlainTextOptions, type ForceFilePlainTextOptions, GIT_DIFF_FILE_BREAK_REGEX, type GapSpan, GetHoveredLineResult, GetLineIndexUtility, HEADER_FILENAME_SUFFIX_SLOT_ID, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID, HUNK_HEADER, type HighlightedToken, type HighlighterTypes, type Hunk, type HunkData, type HunkExpansionRegion, type HunkLineType, type HunkSeparators, HunksRenderResult, INDEX_LINE_METADATA, InjectedRow, InteractionManager, InteractionManagerBaseOptions, InteractionManagerMode, InteractionManagerOptions, type LanguageRegistration, type LineAnnotation, LineDecoration, type LineDiffTypes, type LineEventBaseProps, type LineInfo, type LineSpans, type LineTypes, LogTypes, MERGE_CONFLICT_BASE_MARKER_REGEX, MERGE_CONFLICT_END_MARKER_REGEX, MERGE_CONFLICT_SEPARATOR_MARKER_REGEX, MERGE_CONFLICT_START_MARKER_REGEX, type MaybeDiffFileInput, type MergeConflictActionPayload, MergeConflictActionTarget, MergeConflictActionsTypeOption, type MergeConflictMarkerRow, type MergeConflictMarkerRowType, type MergeConflictRegion, type MergeConflictResolution, type NumericScrollLineAnchor, type ObservedAnnotationNodes, type ObservedGridNodes, OnDiffLineClickProps, OnDiffLineEnterLeaveProps, OnLineClickProps, OnLineEnterLeaveProps, OnTokenEventProps, ParsedLine, type ParsedPatch, type PendingCodeViewLayoutReset, type Position, type PostRenderPhase, type PrePropertiesConfig, type ProcessFileConflictData, type Range, RecallToken, RegisteredCustomLanguages, type RenderDiffFilesResult, type RenderDiffOptions, type RenderDiffResult, type RenderFileMetadata, type RenderFileOptions, type RenderFileResult, type RenderHeaderFilenameSuffixCallback, type RenderHeaderMetadataCallback, type RenderHeaderPrefixCallback, RenderMergeConflictActions, type RenderRange, type RenderWindow, type RenderedDiffASTCache, type RenderedFileASTCache, RenderedLineContext, ResizeManager, ResizeManagerColumnVariableMode, ResizeManagerSetupOptions, ResolvedLanguages, ResolvingLanguages, SPLIT_WITH_NEWLINES, SVGSpriteNames, SVGSpriteSheet, ScrollSyncManager, type SelectedLineRange, type SelectionDirection, type SelectionPoint, type SelectionSide, SelectionWriteOptions, type SharedRenderState, ShikiStreamTokenizer, ShikiStreamTokenizerEnqueueResult, ShikiStreamTokenizerOptions, type ShikiTransformer, type SmoothScrollSettings, SplitInjectedRow, SplitInjectedRowPlacement, SplitLineDecorationProps, type StickySpecs, type SupportedLanguages, THEME_CSS_ATTRIBUTE, type TextEdit, type ThemeRegistration, type ThemeRegistrationResolved, type ThemeTypes, type ThemedDiffResult, type ThemedFileResult, type ThemedToken, type ThemesType, type TokenEventBase, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE, UnifiedInjectedRowPlacement, UnifiedLineDecorationProps, UnresolvedFile, UnresolvedFileHydrationProps, UnresolvedFileOptions, UnresolvedFileRenderProps, VIRTUALIZED_FILE_DIFF_LAYOUT_CHECKPOINT_INTERVAL, type VirtualFileMetrics, type VirtualWindowSpecs, VirtualizedFile, VirtualizedFileDiff, Virtualizer, VirtualizerConfig, VirtualizerScrollOptions, areDiffLineAnnotationsEqual, areDiffRenderOptionsEqual, areDiffTargetsEqual, areFileRenderOptionsEqual, areFilesEqual, areHunkDataEqual, areLanguagesAttached, areLineAnnotationsEqual, areObjectsEqual, areOptionsEqual, arePrePropertiesEqual, areRenderRangesEqual, areSelectionsEqual, areThemesAttached, areThemesEqual, areVirtualWindowSpecsEqual, areWorkerStatsEqual, attachResolvedLanguages, attachResolvedThemes, cleanLastNewline, cleanUpResolvedLanguages, cleanUpResolvedThemes, clearRenderQueue, cloneFileDiffMetadata, 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, detachString, 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, hydratePartialDiff, isDefaultRenderRange, isDiffAnnotation, isDiffAnnotationCollection, isFileAnnotation, isFileAnnotationCollection, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, isWorkerContext, parseDiffFromFile, parseLineType, parsePatchFiles, patchScrollbarGutterSize, pluckInteractionOptions, prefersReducedMotion, preloadHighlighter, prerenderHTMLIfNecessary, processFile, processLine, processPatch, pushOrJoinSpan, queueRender, registerCustomCSSVariableTheme, registerCustomLanguage, registerCustomTheme, releaseStringDetachBuffer, renderDiffWithHighlighter, renderFileWithHighlighter, replaceCustomExtensions, resolveConflict, resolveLanguage, resolveLanguages, resolveRegion, resolveTheme, resolveThemes, setCustomExtension, setLanguageOverride, setPreNodeProperties, trimPatchContext, wrapCoreCSS, wrapThemeCSS, wrapUnsafeCSS };
package/dist/index.js CHANGED
@@ -5,6 +5,10 @@ import { areThemesEqual } from "./utils/areThemesEqual.js";
5
5
  import { areOptionsEqual } from "./utils/areOptionsEqual.js";
6
6
  import { areSelectionsEqual } from "./utils/areSelectionsEqual.js";
7
7
  import { createWindowFromScrollPosition } from "./utils/createWindowFromScrollPosition.js";
8
+ import { cleanLastNewline } from "./utils/cleanLastNewline.js";
9
+ import { detachString, releaseStringDetachBuffer } from "./utils/detachString.js";
10
+ import { parsePatchFiles, processFile, processPatch } from "./utils/parsePatchFiles.js";
11
+ import { parseDiffFromFile } from "./utils/parseDiffFromFile.js";
8
12
  import { prefersReducedMotion } from "./utils/prefersReducedMotion.js";
9
13
  import { areFilesEqual } from "./utils/areFilesEqual.js";
10
14
  import { createGutterGap, createGutterItem, createGutterWrapper, createHastElement, createIconElement, createTextNodeElement, findCodeElement } from "./utils/hast_utils.js";
@@ -58,10 +62,6 @@ import { VirtualizedFile } from "./components/VirtualizedFile.js";
58
62
  import { areDiffTargetsEqual } from "./utils/areDiffTargetsEqual.js";
59
63
  import { cloneFileDiffMetadata } from "./utils/cloneFileDiffMetadata.js";
60
64
  import { hydratePartialDiff } from "./utils/hydratePartialDiff.js";
61
- import { cleanLastNewline } from "./utils/cleanLastNewline.js";
62
- import { detachString, releaseStringDetachBuffer } from "./utils/detachString.js";
63
- import { parsePatchFiles, processFile, processPatch } from "./utils/parsePatchFiles.js";
64
- import { parseDiffFromFile } from "./utils/parseDiffFromFile.js";
65
65
  import { ScrollSyncManager } from "./managers/ScrollSyncManager.js";
66
66
  import { areDiffRenderOptionsEqual } from "./utils/areDiffRenderOptionsEqual.js";
67
67
  import { createEmptyRowBuffer } from "./utils/createEmptyRowBuffer.js";
@@ -95,6 +95,7 @@ import { getResolvedThemes } from "./highlighter/themes/getResolvedThemes.js";
95
95
  import { registerCustomTheme } from "./highlighter/themes/registerCustomTheme.js";
96
96
  import { registerCustomCSSVariableTheme } from "./highlighter/themes/registerCustomCSSVariableTheme.js";
97
97
  import { resolveThemes } from "./highlighter/themes/resolveThemes.js";
98
+ import { isDiffAnnotation, isDiffAnnotationCollection, isFileAnnotation, isFileAnnotationCollection } from "./utils/annotationHelpers.js";
98
99
  import { areWorkerStatsEqual } from "./utils/areWorkerStatsEqual.js";
99
100
  import { createRowNodes } from "./utils/createRowNodes.js";
100
101
  import { createStyleElement, createThemeStyleElement } from "./utils/createStyleElement.js";
@@ -105,4 +106,4 @@ import { parseLineType } from "./utils/parseLineType.js";
105
106
  import { setLanguageOverride } from "./utils/setLanguageOverride.js";
106
107
  import { trimPatchContext } from "./utils/trimPatchContext.js";
107
108
  import { codeToHtml, createCssVariablesTheme as createCSSVariablesTheme } from "shiki";
108
- export { ALTERNATE_FILE_NAMES_GIT, AttachedLanguages, AttachedThemes, CODE_VIEW_DIFF_OPTION_KEYS, CODE_VIEW_FILE_OPTION_KEYS, CODE_VIEW_FOOTER_ATTRIBUTE, CODE_VIEW_HEADER_ATTRIBUTE, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CUSTOM_HEADER_SLOT_ID, CodeToTokenTransformStream, CodeView, DEFAULT_CODE_VIEW_FILE_METRICS, DEFAULT_CODE_VIEW_LAYOUT, 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_DEVELOPMENT_BUILD, DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY, DIFFS_SCROLLBAR_MEASURE_ATTRIBUTE, 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_FILENAME_SUFFIX_SLOT_ID, 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, ResizeManager, ResolvedLanguages, ResolvingLanguages, SPLIT_WITH_NEWLINES, SVGSpriteSheet, ScrollSyncManager, ShikiStreamTokenizer, THEME_CSS_ATTRIBUTE, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE, UnresolvedFile, VIRTUALIZED_FILE_DIFF_LAYOUT_CHECKPOINT_INTERVAL, VirtualizedFile, VirtualizedFileDiff, Virtualizer, areDiffLineAnnotationsEqual, areDiffRenderOptionsEqual, areDiffTargetsEqual, areFileRenderOptionsEqual, areFilesEqual, areHunkDataEqual, areLanguagesAttached, areLineAnnotationsEqual, areObjectsEqual, areOptionsEqual, arePrePropertiesEqual, areRenderRangesEqual, areSelectionsEqual, areThemesAttached, areThemesEqual, areVirtualWindowSpecsEqual, areWorkerStatsEqual, attachResolvedLanguages, attachResolvedThemes, cleanLastNewline, cleanUpResolvedLanguages, cleanUpResolvedThemes, clearRenderQueue, cloneFileDiffMetadata, 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, detachString, 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, hydratePartialDiff, isDefaultRenderRange, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, isWorkerContext, parseDiffFromFile, parseLineType, parsePatchFiles, patchScrollbarGutterSize, pluckInteractionOptions, prefersReducedMotion, preloadHighlighter, prerenderHTMLIfNecessary, processFile, processLine, processPatch, pushOrJoinSpan, queueRender, registerCustomCSSVariableTheme, registerCustomLanguage, registerCustomTheme, releaseStringDetachBuffer, renderDiffWithHighlighter, renderFileWithHighlighter, replaceCustomExtensions, resolveConflict, resolveLanguage, resolveLanguages, resolveRegion, resolveTheme, resolveThemes, setCustomExtension, setLanguageOverride, setPreNodeProperties, trimPatchContext, wrapCoreCSS, wrapThemeCSS, wrapUnsafeCSS };
109
+ export { ALTERNATE_FILE_NAMES_GIT, AttachedLanguages, AttachedThemes, CODE_VIEW_DIFF_OPTION_KEYS, CODE_VIEW_FILE_OPTION_KEYS, CODE_VIEW_FOOTER_ATTRIBUTE, CODE_VIEW_HEADER_ATTRIBUTE, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CUSTOM_HEADER_SLOT_ID, CodeToTokenTransformStream, CodeView, DEFAULT_CODE_VIEW_FILE_METRICS, DEFAULT_CODE_VIEW_LAYOUT, 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_DEVELOPMENT_BUILD, DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY, DIFFS_SCROLLBAR_MEASURE_ATTRIBUTE, 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_FILENAME_SUFFIX_SLOT_ID, 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, ResizeManager, ResolvedLanguages, ResolvingLanguages, SPLIT_WITH_NEWLINES, SVGSpriteSheet, ScrollSyncManager, ShikiStreamTokenizer, THEME_CSS_ATTRIBUTE, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE, UnresolvedFile, VIRTUALIZED_FILE_DIFF_LAYOUT_CHECKPOINT_INTERVAL, VirtualizedFile, VirtualizedFileDiff, Virtualizer, areDiffLineAnnotationsEqual, areDiffRenderOptionsEqual, areDiffTargetsEqual, areFileRenderOptionsEqual, areFilesEqual, areHunkDataEqual, areLanguagesAttached, areLineAnnotationsEqual, areObjectsEqual, areOptionsEqual, arePrePropertiesEqual, areRenderRangesEqual, areSelectionsEqual, areThemesAttached, areThemesEqual, areVirtualWindowSpecsEqual, areWorkerStatsEqual, attachResolvedLanguages, attachResolvedThemes, cleanLastNewline, cleanUpResolvedLanguages, cleanUpResolvedThemes, clearRenderQueue, cloneFileDiffMetadata, 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, detachString, 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, hydratePartialDiff, isDefaultRenderRange, isDiffAnnotation, isDiffAnnotationCollection, isFileAnnotation, isFileAnnotationCollection, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, isWorkerContext, parseDiffFromFile, parseLineType, parsePatchFiles, patchScrollbarGutterSize, pluckInteractionOptions, prefersReducedMotion, preloadHighlighter, prerenderHTMLIfNecessary, processFile, processLine, processPatch, pushOrJoinSpan, queueRender, registerCustomCSSVariableTheme, registerCustomLanguage, registerCustomTheme, releaseStringDetachBuffer, renderDiffWithHighlighter, renderFileWithHighlighter, replaceCustomExtensions, resolveConflict, resolveLanguage, resolveLanguages, resolveRegion, resolveTheme, resolveThemes, setCustomExtension, setLanguageOverride, setPreNodeProperties, trimPatchContext, wrapCoreCSS, wrapThemeCSS, wrapUnsafeCSS };
@@ -20,6 +20,10 @@ interface SelectionWriteOptions {
20
20
  activeLineSide?: SelectionSide;
21
21
  lineNumberOnly?: boolean;
22
22
  }
23
+ interface EditorActiveLineWriteOptions {
24
+ lineNumberOnly?: boolean;
25
+ side?: SelectionSide;
26
+ }
23
27
  type GetLineIndexUtility = (lineNumber: number, side?: SelectionSide) => [number, number] | undefined;
24
28
  type EventClickProps<TMode extends InteractionManagerMode> = TMode extends 'file' ? OnLineClickProps : OnDiffLineClickProps;
25
29
  type PointerEventEnterLeaveProps<TMode extends InteractionManagerMode> = TMode extends 'file' ? OnLineEnterLeaveProps : OnDiffLineEnterLeaveProps;
@@ -76,22 +80,27 @@ declare class InteractionManager<TMode extends InteractionManagerMode> {
76
80
  private hasPointerListeners;
77
81
  private hasDocumentPointerListeners;
78
82
  private selectedRange;
79
- private activeLineHighlightSide;
80
- private activeLineNumberOnly;
81
- private editorAttached;
83
+ private selectedRangeHighlightSide;
84
+ private selectedRangeLineNumberOnly;
85
+ private editorActiveLine;
86
+ private editorActiveLineSide;
87
+ private editorLineNumberOnly;
82
88
  private proposedSelectedRange;
83
- private renderedSelectionRange;
89
+ private renderedSelectedLinesState;
90
+ private renderedEditorActiveLineState;
84
91
  private selectionAnchor;
85
- private queuedSelectionRender;
86
92
  private pointerSession;
87
93
  constructor(mode: TMode, options: InteractionManagerOptions<TMode>);
88
94
  setOptions(options: InteractionManagerOptions<TMode>): void;
89
95
  cleanUp(): void;
90
96
  setup(pre: HTMLPreElement): void;
91
97
  setSelectionDirty(): void;
92
- setEditorAttached(attached: boolean): void;
93
98
  isSelectionDirty(): boolean;
94
99
  setSelection(range: SelectedLineRange | null, options?: SelectionWriteOptions): void;
100
+ setEditorActiveLine(lineNumber: number | null, {
101
+ lineNumberOnly,
102
+ side
103
+ }?: EditorActiveLineWriteOptions): void;
95
104
  getSelection(): SelectedLineRange | null;
96
105
  getHoveredLine: () => GetHoveredLineResult<TMode> | undefined;
97
106
  handlePointerClick: (event: MouseEvent) => void;
@@ -139,7 +148,9 @@ declare class InteractionManager<TMode extends InteractionManagerMode> {
139
148
  private clearProposedSelection;
140
149
  private updateSelection;
141
150
  private getIndexesFromSelection;
142
- private highlightLineNumberOnly;
151
+ private getSelectionRenderState;
152
+ private resolveLineRenderRange;
153
+ private getLineRenderColumns;
143
154
  private renderSelection;
144
155
  private notifySelectionCommitted;
145
156
  private notifySelectionChangeDelta;
@@ -1 +1 @@
1
- {"version":3,"file":"InteractionManager.d.ts","names":[],"sources":["../../src/managers/InteractionManager.ts"],"mappings":"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"}
1
+ {"version":3,"file":"InteractionManager.d.ts","names":[],"sources":["../../src/managers/InteractionManager.ts"],"mappings":"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"}
@@ -1,6 +1,8 @@
1
+ import { dequeueRender, queueRender } from "./UniversalRenderingManager.js";
1
2
  import { areSelectionsEqual } from "../utils/areSelectionsEqual.js";
2
3
  import { areSelectionPointsEqual } from "../utils/areSelectionPointsEqual.js";
3
4
  import { createGutterUtilityElement } from "../utils/createGutterUtilityElement.js";
5
+ import { isGutterUtilityPath } from "../utils/isGutterUtilityPath.js";
4
6
  import { toHtml } from "hast-util-to-html";
5
7
  //#region src/managers/InteractionManager.ts
6
8
  var InteractionManager = class {
@@ -18,13 +20,15 @@ var InteractionManager = class {
18
20
  hasPointerListeners = false;
19
21
  hasDocumentPointerListeners = false;
20
22
  selectedRange = null;
21
- activeLineHighlightSide;
22
- activeLineNumberOnly = false;
23
- editorAttached = false;
23
+ selectedRangeHighlightSide;
24
+ selectedRangeLineNumberOnly = false;
25
+ editorActiveLine = null;
26
+ editorActiveLineSide;
27
+ editorLineNumberOnly = false;
24
28
  proposedSelectedRange;
25
- renderedSelectionRange;
29
+ renderedSelectedLinesState;
30
+ renderedEditorActiveLineState;
26
31
  selectionAnchor;
27
- queuedSelectionRender;
28
32
  pointerSession = { mode: "idle" };
29
33
  constructor(mode, options) {
30
34
  this.mode = mode;
@@ -50,13 +54,11 @@ var InteractionManager = class {
50
54
  this.clearHoveredToken();
51
55
  this.detachDocumentPointerListeners();
52
56
  this.clearPointerSession();
53
- if (this.queuedSelectionRender != null) {
54
- cancelAnimationFrame(this.queuedSelectionRender);
55
- this.queuedSelectionRender = void 0;
56
- }
57
+ dequeueRender(this.renderSelection);
57
58
  this.interactiveLinesAttr = false;
58
59
  this.interactiveLineNumbersAttr = false;
59
60
  this.hasPointerListeners = false;
61
+ this.setSelectionDirty();
60
62
  }
61
63
  setup(pre) {
62
64
  this.setSelectionDirty();
@@ -83,27 +85,33 @@ var InteractionManager = class {
83
85
  this.placeUtility();
84
86
  }
85
87
  setSelectionDirty() {
86
- this.renderedSelectionRange = void 0;
87
- }
88
- setEditorAttached(attached) {
89
- if (this.editorAttached === attached) return;
90
- this.editorAttached = attached;
91
- this.setSelectionDirty();
92
- this.renderSelection();
88
+ this.renderedSelectedLinesState = void 0;
89
+ this.renderedEditorActiveLineState = void 0;
93
90
  }
94
91
  isSelectionDirty() {
95
- return this.renderedSelectionRange === null;
92
+ return this.renderedSelectedLinesState === void 0 || this.renderedEditorActiveLineState === void 0;
96
93
  }
97
94
  setSelection(range, options) {
98
95
  const isRangeChange = !(range === this.selectedRange || areSelectionsEqual(range ?? void 0, this.selectedRange ?? void 0));
99
- if (!this.isSelectionDirty() && !isRangeChange) return;
96
+ const lineNumberOnly = options?.lineNumberOnly ?? false;
97
+ const isStyleChange = options?.activeLineSide !== this.selectedRangeHighlightSide || lineNumberOnly !== this.selectedRangeLineNumberOnly;
98
+ if (!this.isSelectionDirty() && !isRangeChange && !isStyleChange) return;
100
99
  this.proposedSelectedRange = void 0;
101
100
  this.selectedRange = range;
102
- this.activeLineHighlightSide = options?.activeLineSide;
103
- this.activeLineNumberOnly = options?.lineNumberOnly ?? false;
101
+ this.selectedRangeHighlightSide = options?.activeLineSide;
102
+ this.selectedRangeLineNumberOnly = lineNumberOnly;
104
103
  this.renderSelection();
105
104
  this.placeUtility();
106
- if (isRangeChange && options?.notify !== false) this.notifySelectionCommitted();
105
+ if (isRangeChange && options?.notify !== false) this.notifySelectionCommitted(range);
106
+ }
107
+ setEditorActiveLine(lineNumber, { lineNumberOnly = false, side } = {}) {
108
+ const isLineChange = lineNumber !== this.editorActiveLine;
109
+ const isStyleChange = side !== this.editorActiveLineSide || lineNumberOnly !== this.editorLineNumberOnly;
110
+ if (!this.isSelectionDirty() && !isLineChange && !isStyleChange) return;
111
+ this.editorActiveLine = lineNumber;
112
+ this.editorActiveLineSide = side;
113
+ this.editorLineNumberOnly = lineNumberOnly;
114
+ this.renderSelection();
107
115
  }
108
116
  getSelection() {
109
117
  return this.selectedRange;
@@ -351,7 +359,7 @@ var InteractionManager = class {
351
359
  this.attachDocumentPointerListeners();
352
360
  }
353
361
  startGutterSelectionFromPointerDown(event) {
354
- const { enableLineSelection = false, onGutterUtilityClick } = this.options;
362
+ const { onGutterUtilityClick } = this.options;
355
363
  if (onGutterUtilityClick == null) return;
356
364
  const selectedEndpoints = this.currentSelectionEnds();
357
365
  const point = selectedEndpoints?.bottom ?? this.resolveSelectionPoint(event, {
@@ -368,18 +376,15 @@ var InteractionManager = class {
368
376
  anchor,
369
377
  current: point
370
378
  };
371
- if (enableLineSelection) {
372
- this.selectionAnchor = {
373
- lineNumber: anchor.lineNumber,
374
- side: anchor.side
375
- };
376
- this.updateSelection(point.lineNumber, point.side, false);
377
- this.notifySelectionStart(this.getCurrentSelectionRange());
378
- }
379
+ this.selectionAnchor = {
380
+ lineNumber: anchor.lineNumber,
381
+ side: anchor.side
382
+ };
383
+ this.updateSelection(point.lineNumber, point.side, false);
384
+ this.notifySelectionStart(this.getCurrentSelectionRange());
379
385
  this.attachDocumentPointerListeners();
380
386
  }
381
387
  handleDocumentPointerMove = (event) => {
382
- const { enableLineSelection = false } = this.options;
383
388
  switch (this.pointerSession.mode) {
384
389
  case "idle": return;
385
390
  case "gutterSelecting": {
@@ -388,7 +393,7 @@ var InteractionManager = class {
388
393
  const point = this.resolveSelectionPoint(event, { source: "coordinates-first" });
389
394
  if (point == null) return;
390
395
  this.pointerSession.current = point;
391
- if (enableLineSelection === true) this.updateSelection(point.lineNumber, point.side);
396
+ this.updateSelection(point.lineNumber, point.side);
392
397
  return;
393
398
  }
394
399
  case "selecting": {
@@ -427,24 +432,24 @@ var InteractionManager = class {
427
432
  }
428
433
  };
429
434
  handleDocumentPointerUp = (event) => {
430
- const { enableLineSelection = false, onGutterUtilityClick } = this.options;
435
+ const { onGutterUtilityClick } = this.options;
431
436
  switch (this.pointerSession.mode) {
432
437
  case "idle": return;
433
438
  case "gutterSelecting": {
434
- if (event.pointerId !== this.pointerSession.pointerId) return;
439
+ const { pointerSession: session } = this;
440
+ if (event.pointerId !== session.pointerId) return;
435
441
  event.preventDefault();
436
442
  const point = this.resolveSelectionPoint(event, { source: "coordinates-first" });
437
443
  if (point != null) {
438
- this.pointerSession.current = point;
439
- if (enableLineSelection) this.updateSelection(point.lineNumber, point.side);
444
+ session.current = point;
445
+ this.updateSelection(point.lineNumber, point.side);
440
446
  }
441
- onGutterUtilityClick?.(this.buildSelectedLineRange(this.pointerSession.anchor, this.pointerSession.current));
447
+ const completedRange = this.buildSelectedLineRange(session.anchor, session.current);
448
+ onGutterUtilityClick?.({ ...completedRange });
442
449
  this.selectionAnchor = void 0;
443
- if (enableLineSelection) {
444
- this.notifySelectionEnd(this.getCurrentSelectionRange());
445
- this.notifySelectionCommitted();
446
- this.clearProposedSelection();
447
- }
450
+ this.notifySelectionEnd(completedRange);
451
+ this.notifySelectionCommitted(completedRange);
452
+ this.clearProposedSelection();
448
453
  this.clearPointerSession();
449
454
  this.detachDocumentPointerListeners();
450
455
  return;
@@ -457,7 +462,7 @@ var InteractionManager = class {
457
462
  this.clearPendingSingleLineState();
458
463
  this.detachDocumentPointerListeners();
459
464
  this.notifySelectionEnd(this.getCurrentSelectionRange());
460
- this.notifySelectionCommitted();
465
+ this.notifySelectionCommitted(this.getCurrentSelectionRange());
461
466
  this.clearProposedSelection();
462
467
  return;
463
468
  case "selecting":
@@ -467,7 +472,7 @@ var InteractionManager = class {
467
472
  this.detachDocumentPointerListeners();
468
473
  this.clearPointerSession();
469
474
  this.notifySelectionEnd(this.getCurrentSelectionRange());
470
- this.notifySelectionCommitted();
475
+ this.notifySelectionCommitted(this.getCurrentSelectionRange());
471
476
  this.clearProposedSelection();
472
477
  }
473
478
  };
@@ -720,12 +725,12 @@ var InteractionManager = class {
720
725
  nextRange = this.buildSelectionRange(anchorLine, currentLine, anchorSide, side);
721
726
  }
722
727
  if (areSelectionsEqual(previousRange ?? void 0, nextRange ?? void 0)) return;
723
- this.activeLineHighlightSide = void 0;
724
- this.activeLineNumberOnly = false;
728
+ this.selectedRangeHighlightSide = void 0;
729
+ this.selectedRangeLineNumberOnly = false;
725
730
  if (this.options.controlledSelection === true) this.proposedSelectedRange = nextRange;
726
731
  else {
727
732
  this.selectedRange = nextRange;
728
- this.queuedSelectionRender ??= requestAnimationFrame(this.renderSelection);
733
+ queueRender(this.renderSelection);
729
734
  }
730
735
  this.placeUtility();
731
736
  if (emitChange) this.notifySelectionChangeDelta();
@@ -739,70 +744,121 @@ var InteractionManager = class {
739
744
  end: split ? finalIndexes[1] : finalIndexes[0]
740
745
  } : void 0;
741
746
  }
742
- highlightLineNumberOnly() {
743
- if (this.activeLineHighlightSide != null) return this.activeLineNumberOnly;
744
- return this.activeLineNumberOnly || this.editorAttached;
747
+ getSelectionRenderState() {
748
+ return {
749
+ selectedLines: {
750
+ range: this.selectedRange,
751
+ highlightSide: this.selectedRangeHighlightSide,
752
+ lineNumberOnly: this.selectedRangeLineNumberOnly
753
+ },
754
+ editorActiveLine: {
755
+ range: this.editorActiveLine == null ? null : {
756
+ start: this.editorActiveLine,
757
+ end: this.editorActiveLine,
758
+ side: this.editorActiveLineSide
759
+ },
760
+ highlightSide: this.editorActiveLineSide,
761
+ lineNumberOnly: this.editorLineNumberOnly
762
+ }
763
+ };
745
764
  }
746
- renderSelection = () => {
747
- if (this.queuedSelectionRender != null) {
748
- cancelAnimationFrame(this.queuedSelectionRender);
749
- this.queuedSelectionRender = void 0;
765
+ resolveLineRenderRange(state, split, source) {
766
+ if (state.range == null) return;
767
+ const rowRange = this.getIndexesFromSelection(state.range, split);
768
+ if (rowRange == null) {
769
+ console.error({
770
+ rowRange,
771
+ range: state.range
772
+ });
773
+ throw new Error(`InteractionManager.renderSelection: No valid ${source} rowRange`);
750
774
  }
751
- if (this.pre == null || this.renderedSelectionRange === this.selectedRange) return;
752
- const allSelected = this.pre.querySelectorAll("[data-selected-line]");
753
- for (const element of allSelected) element.removeAttribute("data-selected-line");
754
- this.renderedSelectionRange = this.selectedRange;
755
- if (this.selectedRange == null) return;
775
+ return rowRange;
776
+ }
777
+ getLineRenderColumns(selectedLines, selectedRowRange, editorActiveLine, editorRowRange) {
778
+ if (this.pre == null || selectedRowRange == null && editorRowRange == null) return [];
756
779
  const { children: codeElements } = this.pre;
757
- if (codeElements.length === 0) return;
758
780
  if (codeElements.length > 2) {
759
781
  console.error(codeElements);
760
782
  throw new Error("InteractionManager.renderSelection: Somehow there are more than 2 code elements...");
761
783
  }
762
- const split = this.pre.getAttribute("data-diff-type") === "split";
763
- const rowRange = this.getIndexesFromSelection(this.selectedRange, split);
764
- if (rowRange == null) {
765
- console.error({
766
- rowRange,
767
- selectedRange: this.selectedRange
768
- });
769
- throw new Error("InteractionManager.renderSelection: No valid rowRange");
770
- }
771
- const isSingle = rowRange.start === rowRange.end;
772
- const first = Math.min(rowRange.start, rowRange.end);
773
- const last = Math.max(rowRange.start, rowRange.end);
774
- const numberOnly = this.highlightLineNumberOnly();
784
+ const columns = [];
775
785
  for (const code of codeElements) {
776
- const side = this.activeLineHighlightSide;
777
- if (side != null && (side === "additions" && code.hasAttribute("data-deletions") || side === "deletions" && code.hasAttribute("data-additions"))) continue;
786
+ const side = code.hasAttribute("data-deletions") ? "deletions" : code.hasAttribute("data-additions") ? "additions" : void 0;
787
+ const renderSelectedLines = selectedLines != null && selectedRowRange != null && (selectedLines.highlightSide == null || side == null || selectedLines.highlightSide === side);
788
+ const renderEditorActiveLine = editorActiveLine != null && editorRowRange != null && (editorActiveLine.highlightSide == null || side == null || editorActiveLine.highlightSide === side);
789
+ if (!renderSelectedLines && !renderEditorActiveLine) continue;
778
790
  const [gutter, content] = code.children;
791
+ if (!(gutter instanceof HTMLElement) || !(content instanceof HTMLElement)) throw new Error("InteractionManager.renderSelection: missing gutter or content element");
792
+ if (content.children.length !== gutter.children.length) throw new Error("InteractionManager.renderSelection: gutter and content children dont match, something is wrong");
793
+ columns.push({
794
+ content,
795
+ gutter,
796
+ renderEditorActiveLine,
797
+ renderSelectedLines
798
+ });
799
+ }
800
+ return columns;
801
+ }
802
+ renderSelection = () => {
803
+ dequeueRender(this.renderSelection);
804
+ const renderState = this.getSelectionRenderState();
805
+ if (this.pre == null) return;
806
+ const { editorActiveLine, selectedLines } = renderState;
807
+ const selectedLinesChanged = !areLineRenderStatesEqual(this.renderedSelectedLinesState, selectedLines);
808
+ const editorActiveLineChanged = !areLineRenderStatesEqual(this.renderedEditorActiveLineState, editorActiveLine);
809
+ if (!selectedLinesChanged && !editorActiveLineChanged) return;
810
+ if (selectedLinesChanged) this.renderedSelectedLinesState = void 0;
811
+ if (editorActiveLineChanged) this.renderedEditorActiveLineState = void 0;
812
+ const split = this.pre.getAttribute("data-diff-type") === "split";
813
+ const selectedRowRange = !selectedLinesChanged ? void 0 : this.resolveLineRenderRange(selectedLines, split, "selected-lines");
814
+ const editorRowRange = !editorActiveLineChanged ? void 0 : this.resolveLineRenderRange(editorActiveLine, split, "editor-active-line");
815
+ const columns = this.getLineRenderColumns(selectedLinesChanged ? selectedLines : void 0, selectedRowRange, editorActiveLineChanged ? editorActiveLine : void 0, editorRowRange);
816
+ const selectedLinesComplete = selectedLines.range == null || columns.some((column) => column.renderSelectedLines);
817
+ const editorActiveLineComplete = editorActiveLine.range == null || columns.some((column) => column.renderEditorActiveLine);
818
+ if (selectedLinesChanged) for (const element of this.pre.querySelectorAll("[data-selected-line]")) element.removeAttribute("data-selected-line");
819
+ if (editorActiveLineChanged) for (const element of this.pre.querySelectorAll("[data-editor-active-line]")) element.removeAttribute("data-editor-active-line");
820
+ const selectedFirst = selectedRowRange == null ? void 0 : Math.min(selectedRowRange.start, selectedRowRange.end);
821
+ const selectedLast = selectedRowRange == null ? void 0 : Math.max(selectedRowRange.start, selectedRowRange.end);
822
+ const selectedIsSingle = selectedFirst === selectedLast;
823
+ const editorLineIndex = editorRowRange?.start;
824
+ for (const column of columns) {
825
+ const { content, gutter, renderEditorActiveLine, renderSelectedLines } = column;
826
+ const finalLineIndex = Math.max(renderSelectedLines ? selectedLast ?? -Infinity : -Infinity, renderEditorActiveLine ? editorLineIndex ?? -Infinity : -Infinity);
779
827
  const len = content.children.length;
780
- if (len !== gutter.children.length) throw new Error("InteractionManager.renderSelection: gutter and content children dont match, something is wrong");
781
828
  for (let i = 0; i < len; i++) {
782
829
  const contentElement = content.children[i];
783
830
  const gutterElement = gutter.children[i];
784
831
  if (!(contentElement instanceof HTMLElement) || !(gutterElement instanceof HTMLElement)) continue;
785
832
  const lineIndex = this.parseLineIndex(contentElement, split);
786
- if ((lineIndex ?? 0) > last) break;
787
- if (lineIndex == null || lineIndex < first) continue;
788
- let attributeValue = isSingle ? "single" : lineIndex === first ? "first" : lineIndex === last ? "last" : "";
789
- gutterElement.setAttribute("data-selected-line", attributeValue);
790
- if (numberOnly) continue;
791
- contentElement.setAttribute("data-selected-line", attributeValue);
792
- if (gutterElement.nextSibling instanceof HTMLElement && contentElement.nextSibling instanceof HTMLElement && (contentElement.nextSibling.hasAttribute("data-line-annotation") || contentElement.nextSibling.hasAttribute("data-merge-conflict-actions"))) {
793
- if (isSingle) {
794
- attributeValue = "last";
795
- contentElement.setAttribute("data-selected-line", "first");
796
- } else if (lineIndex === first) attributeValue = "";
797
- else if (lineIndex === last) contentElement.setAttribute("data-selected-line", "");
798
- contentElement.nextSibling.setAttribute("data-selected-line", attributeValue);
799
- gutterElement.nextSibling.setAttribute("data-selected-line", attributeValue);
833
+ if ((lineIndex ?? 0) > finalLineIndex) break;
834
+ if (lineIndex == null) continue;
835
+ if (renderSelectedLines && selectedFirst != null && selectedLast != null && lineIndex >= selectedFirst && lineIndex <= selectedLast) {
836
+ let attributeValue = selectedIsSingle ? "single" : lineIndex === selectedFirst ? "first" : lineIndex === selectedLast ? "last" : "";
837
+ gutterElement.setAttribute("data-selected-line", attributeValue);
838
+ if (!selectedLines.lineNumberOnly) {
839
+ contentElement.setAttribute("data-selected-line", attributeValue);
840
+ if (gutterElement.nextSibling instanceof HTMLElement && contentElement.nextSibling instanceof HTMLElement && (contentElement.nextSibling.hasAttribute("data-line-annotation") || contentElement.nextSibling.hasAttribute("data-merge-conflict-actions"))) {
841
+ if (selectedIsSingle) {
842
+ attributeValue = "last";
843
+ contentElement.setAttribute("data-selected-line", "first");
844
+ } else if (lineIndex === selectedFirst) attributeValue = "";
845
+ else if (lineIndex === selectedLast) contentElement.setAttribute("data-selected-line", "");
846
+ contentElement.nextSibling.setAttribute("data-selected-line", attributeValue);
847
+ gutterElement.nextSibling.setAttribute("data-selected-line", attributeValue);
848
+ }
849
+ }
850
+ }
851
+ if (renderEditorActiveLine && lineIndex === editorLineIndex) {
852
+ gutterElement.setAttribute("data-editor-active-line", "");
853
+ if (!editorActiveLine.lineNumberOnly) contentElement.setAttribute("data-editor-active-line", "");
800
854
  }
801
855
  }
802
856
  }
857
+ if (selectedLinesChanged && selectedLinesComplete) this.renderedSelectedLinesState = selectedLines;
858
+ if (editorActiveLineChanged && editorActiveLineComplete) this.renderedEditorActiveLineState = editorActiveLine;
803
859
  };
804
- notifySelectionCommitted() {
805
- this.options.onLineSelected?.(this.getCurrentSelectionRange() ?? null);
860
+ notifySelectionCommitted(range) {
861
+ this.options.onLineSelected?.(range);
806
862
  }
807
863
  notifySelectionChangeDelta() {
808
864
  this.options.onLineSelectionChange?.(this.getCurrentSelectionRange() ?? null);
@@ -1103,6 +1159,12 @@ function selectionPointFromAnnotationSlotName(slotName) {
1103
1159
  function hasElementFromPoint(value) {
1104
1160
  return value != null && typeof value.elementFromPoint === "function";
1105
1161
  }
1162
+ function areSelectionRangesEqual(first, second) {
1163
+ return first === second || areSelectionsEqual(first ?? void 0, second ?? void 0);
1164
+ }
1165
+ function areLineRenderStatesEqual(first, second) {
1166
+ return first?.highlightSide === second.highlightSide && first?.lineNumberOnly === second.lineNumberOnly && areSelectionRangesEqual(first?.range ?? null, second.range);
1167
+ }
1106
1168
  function getAnnotationSide(lineType, codeElement) {
1107
1169
  switch (lineType) {
1108
1170
  case "change-deletion": return "deletions";
@@ -1121,13 +1183,6 @@ function getLineTypeFromElement(element) {
1121
1183
  default: return;
1122
1184
  }
1123
1185
  }
1124
- function isGutterUtilityPath(path) {
1125
- for (const element of path) {
1126
- if (!(element instanceof HTMLElement)) continue;
1127
- if (element.hasAttribute("data-utility-button") || element.hasAttribute("data-gutter-utility-slot") || element.getAttribute("slot") === "gutter-utility-slot" || element.getAttribute("name") === "gutter-utility-slot") return true;
1128
- }
1129
- return false;
1130
- }
1131
1186
  function debugLogIfEnabled(debugLogType = "none", logIfType, ...args) {
1132
1187
  switch (debugLogType) {
1133
1188
  case "none": return;