@pierre/diffs 1.1.0-beta.1 → 1.1.0-beta.10

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 (305) hide show
  1. package/dist/components/AdvancedVirtualizedFileDiff.d.ts +40 -0
  2. package/dist/components/AdvancedVirtualizedFileDiff.d.ts.map +1 -0
  3. package/dist/components/AdvancedVirtualizedFileDiff.js +145 -0
  4. package/dist/components/AdvancedVirtualizedFileDiff.js.map +1 -0
  5. package/dist/components/AdvancedVirtualizer.d.ts +38 -0
  6. package/dist/components/AdvancedVirtualizer.d.ts.map +1 -0
  7. package/dist/components/AdvancedVirtualizer.js +201 -0
  8. package/dist/components/AdvancedVirtualizer.js.map +1 -0
  9. package/dist/components/File.d.ts +60 -29
  10. package/dist/components/File.d.ts.map +1 -1
  11. package/dist/components/File.js +226 -26
  12. package/dist/components/File.js.map +1 -1
  13. package/dist/components/FileDiff.d.ts +44 -12
  14. package/dist/components/FileDiff.d.ts.map +1 -1
  15. package/dist/components/FileDiff.js +510 -71
  16. package/dist/components/FileDiff.js.map +1 -1
  17. package/dist/components/FileStream.d.ts +5 -0
  18. package/dist/components/FileStream.d.ts.map +1 -1
  19. package/dist/components/FileStream.js +66 -8
  20. package/dist/components/FileStream.js.map +1 -1
  21. package/dist/components/VirtualizedFile.d.ts +33 -0
  22. package/dist/components/VirtualizedFile.d.ts.map +1 -0
  23. package/dist/components/VirtualizedFile.js +227 -0
  24. package/dist/components/VirtualizedFile.js.map +1 -0
  25. package/dist/components/VirtualizedFileDiff.d.ts +39 -0
  26. package/dist/components/VirtualizedFileDiff.d.ts.map +1 -0
  27. package/dist/components/VirtualizedFileDiff.js +316 -0
  28. package/dist/components/VirtualizedFileDiff.js.map +1 -0
  29. package/dist/components/Virtualizer.d.ts +63 -0
  30. package/dist/components/Virtualizer.d.ts.map +1 -0
  31. package/dist/components/Virtualizer.js +369 -0
  32. package/dist/components/Virtualizer.js.map +1 -0
  33. package/dist/components/VirtulizerDevelopment.d.ts +14 -0
  34. package/dist/components/VirtulizerDevelopment.d.ts.map +1 -0
  35. package/dist/components/web-components.d.ts +1 -1
  36. package/dist/components/web-components.d.ts.map +1 -1
  37. package/dist/constants.d.ts +6 -8
  38. package/dist/constants.d.ts.map +1 -1
  39. package/dist/constants.js +16 -7
  40. package/dist/constants.js.map +1 -1
  41. package/dist/highlighter/languages/areLanguagesAttached.d.ts.map +1 -1
  42. package/dist/highlighter/languages/attachResolvedLanguages.d.ts.map +1 -1
  43. package/dist/highlighter/languages/cleanUpResolvedLanguages.d.ts.map +1 -1
  44. package/dist/highlighter/languages/constants.d.ts +3 -1
  45. package/dist/highlighter/languages/constants.d.ts.map +1 -1
  46. package/dist/highlighter/languages/constants.js +2 -1
  47. package/dist/highlighter/languages/constants.js.map +1 -1
  48. package/dist/highlighter/languages/getResolvedLanguages.d.ts.map +1 -1
  49. package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts +1 -1
  50. package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts.map +1 -1
  51. package/dist/highlighter/languages/hasResolvedLanguages.d.ts.map +1 -1
  52. package/dist/highlighter/languages/registerCustomLanguage.d.ts +19 -0
  53. package/dist/highlighter/languages/registerCustomLanguage.d.ts.map +1 -0
  54. package/dist/highlighter/languages/registerCustomLanguage.js +21 -0
  55. package/dist/highlighter/languages/registerCustomLanguage.js.map +1 -0
  56. package/dist/highlighter/languages/resolveLanguage.d.ts +1 -1
  57. package/dist/highlighter/languages/resolveLanguage.d.ts.map +1 -1
  58. package/dist/highlighter/languages/resolveLanguage.js +4 -3
  59. package/dist/highlighter/languages/resolveLanguage.js.map +1 -1
  60. package/dist/highlighter/languages/resolveLanguages.d.ts.map +1 -1
  61. package/dist/highlighter/shared_highlighter.d.ts.map +1 -1
  62. package/dist/highlighter/shared_highlighter.js.map +1 -1
  63. package/dist/highlighter/themes/areThemesAttached.d.ts.map +1 -1
  64. package/dist/highlighter/themes/attachResolvedThemes.d.ts.map +1 -1
  65. package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts.map +1 -1
  66. package/dist/highlighter/themes/constants.d.ts.map +1 -1
  67. package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts.map +1 -1
  68. package/dist/highlighter/themes/getResolvedThemes.d.ts.map +1 -1
  69. package/dist/highlighter/themes/hasResolvedThemes.d.ts.map +1 -1
  70. package/dist/highlighter/themes/registerCustomCSSVariableTheme.d.ts.map +1 -1
  71. package/dist/highlighter/themes/registerCustomTheme.d.ts.map +1 -1
  72. package/dist/highlighter/themes/resolveTheme.d.ts.map +1 -1
  73. package/dist/highlighter/themes/resolveThemes.d.ts.map +1 -1
  74. package/dist/index.d.ts +17 -12
  75. package/dist/index.js +14 -9
  76. package/dist/managers/LineSelectionManager.d.ts +14 -15
  77. package/dist/managers/LineSelectionManager.d.ts.map +1 -1
  78. package/dist/managers/LineSelectionManager.js +60 -71
  79. package/dist/managers/LineSelectionManager.js.map +1 -1
  80. package/dist/managers/MouseEventManager.d.ts +13 -6
  81. package/dist/managers/MouseEventManager.d.ts.map +1 -1
  82. package/dist/managers/MouseEventManager.js +161 -47
  83. package/dist/managers/MouseEventManager.js.map +1 -1
  84. package/dist/managers/ResizeManager.d.ts +6 -1
  85. package/dist/managers/ResizeManager.d.ts.map +1 -1
  86. package/dist/managers/ResizeManager.js +114 -64
  87. package/dist/managers/ResizeManager.js.map +1 -1
  88. package/dist/managers/ScrollSyncManager.d.ts.map +1 -1
  89. package/dist/managers/UniversalRenderingManager.d.ts.map +1 -1
  90. package/dist/react/File.d.ts +1 -0
  91. package/dist/react/File.d.ts.map +1 -1
  92. package/dist/react/File.js +2 -1
  93. package/dist/react/File.js.map +1 -1
  94. package/dist/react/FileDiff.d.ts +1 -0
  95. package/dist/react/FileDiff.d.ts.map +1 -1
  96. package/dist/react/FileDiff.js +2 -1
  97. package/dist/react/FileDiff.js.map +1 -1
  98. package/dist/react/MultiFileDiff.d.ts +1 -0
  99. package/dist/react/MultiFileDiff.d.ts.map +1 -1
  100. package/dist/react/MultiFileDiff.js +2 -1
  101. package/dist/react/MultiFileDiff.js.map +1 -1
  102. package/dist/react/PatchDiff.d.ts +1 -0
  103. package/dist/react/PatchDiff.d.ts.map +1 -1
  104. package/dist/react/PatchDiff.js +3 -2
  105. package/dist/react/PatchDiff.js.map +1 -1
  106. package/dist/react/Virtualizer.d.ts +25 -0
  107. package/dist/react/Virtualizer.d.ts.map +1 -0
  108. package/dist/react/Virtualizer.js +38 -0
  109. package/dist/react/Virtualizer.js.map +1 -0
  110. package/dist/react/WorkerPoolContext.d.ts.map +1 -1
  111. package/dist/react/WorkerPoolContext.js +1 -1
  112. package/dist/react/WorkerPoolContext.js.map +1 -1
  113. package/dist/react/constants.d.ts.map +1 -1
  114. package/dist/react/index.d.ts +3 -2
  115. package/dist/react/index.js +2 -1
  116. package/dist/react/jsx.d.ts.map +1 -1
  117. package/dist/react/types.d.ts +5 -3
  118. package/dist/react/types.d.ts.map +1 -1
  119. package/dist/react/utils/renderDiffChildren.d.ts +5 -5
  120. package/dist/react/utils/renderDiffChildren.d.ts.map +1 -1
  121. package/dist/react/utils/renderFileChildren.d.ts +5 -5
  122. package/dist/react/utils/renderFileChildren.d.ts.map +1 -1
  123. package/dist/react/utils/templateRender.d.ts.map +1 -1
  124. package/dist/react/utils/useFileDiffInstance.d.ts +5 -3
  125. package/dist/react/utils/useFileDiffInstance.d.ts.map +1 -1
  126. package/dist/react/utils/useFileDiffInstance.js +6 -2
  127. package/dist/react/utils/useFileDiffInstance.js.map +1 -1
  128. package/dist/react/utils/useFileInstance.d.ts +5 -3
  129. package/dist/react/utils/useFileInstance.d.ts.map +1 -1
  130. package/dist/react/utils/useFileInstance.js +6 -2
  131. package/dist/react/utils/useFileInstance.js.map +1 -1
  132. package/dist/react/utils/useStableCallback.d.ts.map +1 -1
  133. package/dist/react/utils/useStableCallback.js.map +1 -1
  134. package/dist/renderers/DiffHunksRenderer.d.ts +15 -10
  135. package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
  136. package/dist/renderers/DiffHunksRenderer.js +249 -140
  137. package/dist/renderers/DiffHunksRenderer.js.map +1 -1
  138. package/dist/renderers/FileRenderer.d.ts +12 -5
  139. package/dist/renderers/FileRenderer.d.ts.map +1 -1
  140. package/dist/renderers/FileRenderer.js +90 -31
  141. package/dist/renderers/FileRenderer.js.map +1 -1
  142. package/dist/shiki-stream/stream.d.ts +2 -2
  143. package/dist/shiki-stream/stream.d.ts.map +1 -1
  144. package/dist/shiki-stream/stream.js.map +1 -1
  145. package/dist/shiki-stream/tokenizer.d.ts +2 -2
  146. package/dist/shiki-stream/tokenizer.d.ts.map +1 -1
  147. package/dist/shiki-stream/tokenizer.js.map +1 -1
  148. package/dist/shiki-stream/types.d.ts +18 -18
  149. package/dist/shiki-stream/types.d.ts.map +1 -1
  150. package/dist/sprite.d.ts +1 -1
  151. package/dist/sprite.d.ts.map +1 -1
  152. package/dist/ssr/FileDiffReact.d.ts.map +1 -1
  153. package/dist/ssr/FileDiffReact.js +1 -1
  154. package/dist/ssr/index.d.ts +2 -2
  155. package/dist/ssr/preloadDiffs.d.ts.map +1 -1
  156. package/dist/ssr/preloadFile.d.ts.map +1 -1
  157. package/dist/ssr/preloadPatchFile.d.ts.map +1 -1
  158. package/dist/ssr/preloadPatchFile.js.map +1 -1
  159. package/dist/ssr/renderHTML.d.ts.map +1 -1
  160. package/dist/style.js +1 -1
  161. package/dist/style.js.map +1 -1
  162. package/dist/types.d.ts +198 -165
  163. package/dist/types.d.ts.map +1 -1
  164. package/dist/utils/areDiffLineAnnotationsEqual.d.ts.map +1 -1
  165. package/dist/utils/areDiffLineAnnotationsEqual.js.map +1 -1
  166. package/dist/utils/areFilesEqual.d.ts.map +1 -1
  167. package/dist/utils/areHunkDataEqual.d.ts.map +1 -1
  168. package/dist/utils/areLineAnnotationsEqual.d.ts.map +1 -1
  169. package/dist/utils/areObjectsEqual.d.ts.map +1 -1
  170. package/dist/utils/areOptionsEqual.d.ts +1 -1
  171. package/dist/utils/areOptionsEqual.d.ts.map +1 -1
  172. package/dist/utils/arePrePropertiesEqual.d.ts.map +1 -1
  173. package/dist/utils/arePrePropertiesEqual.js +1 -1
  174. package/dist/utils/arePrePropertiesEqual.js.map +1 -1
  175. package/dist/utils/areRenderRangesEqual.d.ts.map +1 -1
  176. package/dist/utils/areSelectionsEqual.d.ts.map +1 -1
  177. package/dist/utils/areThemesEqual.d.ts.map +1 -1
  178. package/dist/utils/areVirtualWindowSpecsEqual.d.ts.map +1 -1
  179. package/dist/utils/areWorkerStatsEqual.d.ts.map +1 -1
  180. package/dist/utils/cleanLastNewline.d.ts.map +1 -1
  181. package/dist/utils/createAnnotationElement.d.ts.map +1 -1
  182. package/dist/utils/createAnnotationWrapperNode.d.ts.map +1 -1
  183. package/dist/utils/createContentColumn.d.ts +7 -0
  184. package/dist/utils/createContentColumn.d.ts.map +1 -0
  185. package/dist/utils/createContentColumn.js +17 -0
  186. package/dist/utils/createContentColumn.js.map +1 -0
  187. package/dist/utils/createEmptyRowBuffer.d.ts.map +1 -1
  188. package/dist/utils/createEmptyRowBuffer.js +2 -1
  189. package/dist/utils/createEmptyRowBuffer.js.map +1 -1
  190. package/dist/utils/createFileHeaderElement.d.ts.map +1 -1
  191. package/dist/utils/createHoverContentNode.d.ts.map +1 -1
  192. package/dist/utils/createNoNewlineElement.d.ts +2 -1
  193. package/dist/utils/createNoNewlineElement.d.ts.map +1 -1
  194. package/dist/utils/createNoNewlineElement.js +3 -6
  195. package/dist/utils/createNoNewlineElement.js.map +1 -1
  196. package/dist/utils/createPreElement.d.ts +2 -1
  197. package/dist/utils/createPreElement.d.ts.map +1 -1
  198. package/dist/utils/createPreElement.js +4 -3
  199. package/dist/utils/createPreElement.js.map +1 -1
  200. package/dist/utils/createRowNodes.d.ts.map +1 -1
  201. package/dist/utils/createSeparator.d.ts.map +1 -1
  202. package/dist/utils/createSeparator.js +2 -2
  203. package/dist/utils/createSeparator.js.map +1 -1
  204. package/dist/utils/createSpanNodeFromToken.d.ts.map +1 -1
  205. package/dist/utils/createSpanNodeFromToken.js.map +1 -1
  206. package/dist/utils/createStyleElement.d.ts.map +1 -1
  207. package/dist/utils/createTransformerWithState.d.ts.map +1 -1
  208. package/dist/utils/createUnsafeCSSStyleNode.d.ts.map +1 -1
  209. package/dist/utils/createWindowFromScrollPosition.d.ts.map +1 -1
  210. package/dist/utils/cssWrappers.d.ts.map +1 -1
  211. package/dist/utils/diffAcceptRejectHunk.d.ts +1 -1
  212. package/dist/utils/diffAcceptRejectHunk.d.ts.map +1 -1
  213. package/dist/utils/formatCSSVariablePrefix.d.ts +1 -1
  214. package/dist/utils/formatCSSVariablePrefix.d.ts.map +1 -1
  215. package/dist/utils/getFiletypeFromFileName.d.ts +2 -1
  216. package/dist/utils/getFiletypeFromFileName.d.ts.map +1 -1
  217. package/dist/utils/getFiletypeFromFileName.js +14 -4
  218. package/dist/utils/getFiletypeFromFileName.js.map +1 -1
  219. package/dist/utils/getHighlighterOptions.d.ts.map +1 -1
  220. package/dist/utils/getHighlighterThemeStyles.d.ts.map +1 -1
  221. package/dist/utils/getHunkSeparatorSlotName.d.ts +3 -1
  222. package/dist/utils/getHunkSeparatorSlotName.d.ts.map +1 -1
  223. package/dist/utils/getHunkSeparatorSlotName.js.map +1 -1
  224. package/dist/utils/getIconForType.d.ts +1 -1
  225. package/dist/utils/getIconForType.d.ts.map +1 -1
  226. package/dist/utils/getLineAnnotationName.d.ts.map +1 -1
  227. package/dist/utils/getLineEndingType.d.ts +1 -1
  228. package/dist/utils/getLineEndingType.d.ts.map +1 -1
  229. package/dist/utils/getLineNodes.d.ts.map +1 -1
  230. package/dist/utils/getOrCreateCodeNode.d.ts +4 -2
  231. package/dist/utils/getOrCreateCodeNode.d.ts.map +1 -1
  232. package/dist/utils/getOrCreateCodeNode.js +9 -6
  233. package/dist/utils/getOrCreateCodeNode.js.map +1 -1
  234. package/dist/utils/getSingularPatch.d.ts.map +1 -1
  235. package/dist/utils/getThemes.d.ts.map +1 -1
  236. package/dist/utils/getTotalLineCountFromHunks.d.ts.map +1 -1
  237. package/dist/utils/hast_utils.d.ts +6 -3
  238. package/dist/utils/hast_utils.d.ts.map +1 -1
  239. package/dist/utils/hast_utils.js +28 -4
  240. package/dist/utils/hast_utils.js.map +1 -1
  241. package/dist/utils/isDefaultRenderRange.d.ts.map +1 -1
  242. package/dist/utils/isWorkerContext.d.ts.map +1 -1
  243. package/dist/utils/iterateOverDiff.d.ts +28 -13
  244. package/dist/utils/iterateOverDiff.d.ts.map +1 -1
  245. package/dist/utils/iterateOverDiff.js +101 -60
  246. package/dist/utils/iterateOverDiff.js.map +1 -1
  247. package/dist/utils/iterateOverFile.d.ts +50 -0
  248. package/dist/utils/iterateOverFile.d.ts.map +1 -0
  249. package/dist/utils/iterateOverFile.js +49 -0
  250. package/dist/utils/iterateOverFile.js.map +1 -0
  251. package/dist/utils/parseDiffDecorations.d.ts.map +1 -1
  252. package/dist/utils/parseDiffFromFile.d.ts +6 -6
  253. package/dist/utils/parseDiffFromFile.d.ts.map +1 -1
  254. package/dist/utils/parseDiffFromFile.js +3 -2
  255. package/dist/utils/parseDiffFromFile.js.map +1 -1
  256. package/dist/utils/parseLineType.d.ts +1 -1
  257. package/dist/utils/parseLineType.d.ts.map +1 -1
  258. package/dist/utils/parsePatchFiles.d.ts +12 -10
  259. package/dist/utils/parsePatchFiles.d.ts.map +1 -1
  260. package/dist/utils/parsePatchFiles.js +20 -11
  261. package/dist/utils/parsePatchFiles.js.map +1 -1
  262. package/dist/utils/prerenderHTMLIfNecessary.d.ts.map +1 -1
  263. package/dist/utils/processLine.d.ts.map +1 -1
  264. package/dist/utils/processLine.js +7 -24
  265. package/dist/utils/processLine.js.map +1 -1
  266. package/dist/utils/renderDiffWithHighlighter.d.ts +4 -3
  267. package/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -1
  268. package/dist/utils/renderDiffWithHighlighter.js +18 -16
  269. package/dist/utils/renderDiffWithHighlighter.js.map +1 -1
  270. package/dist/utils/renderFileWithHighlighter.d.ts +7 -2
  271. package/dist/utils/renderFileWithHighlighter.d.ts.map +1 -1
  272. package/dist/utils/renderFileWithHighlighter.js +30 -4
  273. package/dist/utils/renderFileWithHighlighter.js.map +1 -1
  274. package/dist/utils/resolveVirtualFileMetrics.d.ts +7 -0
  275. package/dist/utils/resolveVirtualFileMetrics.d.ts.map +1 -0
  276. package/dist/utils/resolveVirtualFileMetrics.js +25 -0
  277. package/dist/utils/resolveVirtualFileMetrics.js.map +1 -0
  278. package/dist/utils/setLanguageOverride.d.ts +2 -1
  279. package/dist/utils/setLanguageOverride.d.ts.map +1 -1
  280. package/dist/utils/setLanguageOverride.js.map +1 -1
  281. package/dist/utils/setWrapperNodeProps.d.ts +1 -0
  282. package/dist/utils/setWrapperNodeProps.d.ts.map +1 -1
  283. package/dist/utils/setWrapperNodeProps.js +19 -12
  284. package/dist/utils/setWrapperNodeProps.js.map +1 -1
  285. package/dist/utils/splitFileContents.d.ts +12 -0
  286. package/dist/utils/splitFileContents.d.ts.map +1 -0
  287. package/dist/utils/splitFileContents.js +17 -0
  288. package/dist/utils/splitFileContents.js.map +1 -0
  289. package/dist/utils/trimPatchContext.d.ts +11 -0
  290. package/dist/utils/trimPatchContext.d.ts.map +1 -0
  291. package/dist/utils/trimPatchContext.js +99 -0
  292. package/dist/utils/trimPatchContext.js.map +1 -0
  293. package/dist/worker/WorkerPoolManager.d.ts +3 -3
  294. package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
  295. package/dist/worker/WorkerPoolManager.js +39 -26
  296. package/dist/worker/WorkerPoolManager.js.map +1 -1
  297. package/dist/worker/getOrCreateWorkerPoolSingleton.d.ts.map +1 -1
  298. package/dist/worker/getOrCreateWorkerPoolSingleton.js.map +1 -1
  299. package/dist/worker/types.d.ts +26 -26
  300. package/dist/worker/types.d.ts.map +1 -1
  301. package/dist/worker/worker-portable.js +352 -154
  302. package/dist/worker/worker-portable.js.map +1 -1
  303. package/dist/worker/worker.js +222 -113
  304. package/dist/worker/worker.js.map +1 -1
  305. package/package.json +52 -53
@@ -1 +1 @@
1
- {"version":3,"file":"getHighlighterOptions.d.ts","names":[],"sources":["../../src/utils/getHighlighterOptions.ts"],"sourcesContent":[],"mappings":";;;UAGU,uBAAA;UACA,kBAAkB;AAJyC;AAIzC,UAGlB,2BAAA,CAAA;EAKV,KAAgB,EAJP,kBAIO,EAAA;EACR,MAAA,EAJE,eAIF,EAAA;;AAEL,iBAHa,qBAAA,CAGb,IAAA,EAFK,kBAEL,GAAA,SAAA,EAAA,OAAA,EADQ,uBACR,CAAA,EAAA,2BAAA"}
1
+ {"version":3,"file":"getHighlighterOptions.d.ts","names":["DiffsThemeNames","SupportedLanguages","ThemesType","HighlighterOptionsShape","GetHighlighterOptionsReturn","getHighlighterOptions"],"sources":["../../src/utils/getHighlighterOptions.d.ts"],"sourcesContent":["import type { DiffsThemeNames, SupportedLanguages, ThemesType } from '../types';\ninterface HighlighterOptionsShape {\n theme?: DiffsThemeNames | ThemesType;\n}\ninterface GetHighlighterOptionsReturn {\n langs: SupportedLanguages[];\n themes: DiffsThemeNames[];\n}\nexport declare function getHighlighterOptions(lang: SupportedLanguages | undefined, options: HighlighterOptionsShape): GetHighlighterOptionsReturn;\nexport {};\n//# sourceMappingURL=getHighlighterOptions.d.ts.map"],"mappings":";;;UACUG,uBAAAA;UACEH,kBAAkBE;AAFkD;AAExC,UAE9BE,2BAAAA,CAA2B;EAIbC,KAAAA,EAHbJ,kBAGkC,EAAA;EAAOA,MAAAA,EAFxCD,eAEwCC,EAAAA;;AAAmEG,iBAA/FC,qBAAAA,CAA+FD,IAAAA,EAAnEH,kBAAmEG,GAAAA,SAAAA,EAAAA,OAAAA,EAA1BD,uBAA0BC,CAAAA,EAAAA,2BAAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getHighlighterThemeStyles.d.ts","names":[],"sources":["../../src/utils/getHighlighterThemeStyles.ts"],"sourcesContent":[],"mappings":";;;UASU,8BAAA;UACA,kBAAkB;EAJrB,WAGG,EAEK,gBAFL;EACA,MAAA,CAAA,EAAA,MAAA;;AACK,iBAOC,yBAAA,CAPD;EAAA,KAAA;EAAA,WAAA;EAAA;AAAA,CAAA,EAWZ,8BAXY,CAAA,EAAA,MAAA"}
1
+ {"version":3,"file":"getHighlighterThemeStyles.d.ts","names":["DiffsHighlighter","DiffsThemeNames","ThemesType","GetHighlighterThemeStylesProps","getHighlighterThemeStyles","theme","highlighter","prefix"],"sources":["../../src/utils/getHighlighterThemeStyles.d.ts"],"sourcesContent":["import type { DiffsHighlighter, DiffsThemeNames, ThemesType } from '../types';\ninterface GetHighlighterThemeStylesProps {\n theme?: DiffsThemeNames | ThemesType;\n highlighter: DiffsHighlighter;\n prefix?: string;\n}\nexport declare function getHighlighterThemeStyles({ theme, highlighter, prefix }: GetHighlighterThemeStylesProps): string;\nexport {};\n//# sourceMappingURL=getHighlighterThemeStyles.d.ts.map"],"mappings":";;;UACUG,8BAAAA;UACEF,kBAAkBC;EADpBC,WAAAA,EAEOH,gBAFPG;EACEF,MAAAA,CAAAA,EAAAA,MAAAA;;AACKD,iBAGOI,yBAAAA,CAHPJ;EAAAA,KAAAA;EAAAA,WAAAA;EAAAA;AAAAA,CAAAA,EAGiEG,8BAHjEH,CAAAA,EAAAA,MAAAA"}
@@ -1,5 +1,7 @@
1
+ import { CodeColumnType } from "../types.js";
2
+
1
3
  //#region src/utils/getHunkSeparatorSlotName.d.ts
2
- declare function getHunkSeparatorSlotName(type: "unified" | "additions" | "deletions", hunkIndex: number): string;
4
+ declare function getHunkSeparatorSlotName(type: CodeColumnType, hunkIndex: number): string;
3
5
  //#endregion
4
6
  export { getHunkSeparatorSlotName };
5
7
  //# sourceMappingURL=getHunkSeparatorSlotName.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getHunkSeparatorSlotName.d.ts","names":[],"sources":["../../src/utils/getHunkSeparatorSlotName.ts"],"sourcesContent":[],"mappings":";iBAAgB,wBAAA"}
1
+ {"version":3,"file":"getHunkSeparatorSlotName.d.ts","names":["CodeColumnType","getHunkSeparatorSlotName"],"sources":["../../src/utils/getHunkSeparatorSlotName.d.ts"],"sourcesContent":["import type { CodeColumnType } from '../types';\nexport declare function getHunkSeparatorSlotName(type: CodeColumnType, hunkIndex: number): string;\n//# sourceMappingURL=getHunkSeparatorSlotName.d.ts.map"],"mappings":";;;iBACwBC,wBAAAA,OAA+BD"}
@@ -1 +1 @@
1
- {"version":3,"file":"getHunkSeparatorSlotName.js","names":[],"sources":["../../src/utils/getHunkSeparatorSlotName.ts"],"sourcesContent":["export function getHunkSeparatorSlotName(\n type: 'unified' | 'additions' | 'deletions',\n hunkIndex: number\n) {\n return `hunk-separator-${type}-${hunkIndex}`;\n}\n"],"mappings":";AAAA,SAAgB,yBACd,MACA,WACA;AACA,QAAO,kBAAkB,KAAK,GAAG"}
1
+ {"version":3,"file":"getHunkSeparatorSlotName.js","names":[],"sources":["../../src/utils/getHunkSeparatorSlotName.ts"],"sourcesContent":["import type { CodeColumnType } from '../types';\n\nexport function getHunkSeparatorSlotName(\n type: CodeColumnType,\n hunkIndex: number\n) {\n return `hunk-separator-${type}-${hunkIndex}`;\n}\n"],"mappings":";AAEA,SAAgB,yBACd,MACA,WACA;AACA,QAAO,kBAAkB,KAAK,GAAG"}
@@ -2,7 +2,7 @@ import { ChangeTypes } from "../types.js";
2
2
  import { SVGSpriteNames } from "../sprite.js";
3
3
 
4
4
  //#region src/utils/getIconForType.d.ts
5
- declare function getIconForType(type: ChangeTypes | "file"): Extract<SVGSpriteNames, "diffs-icon-file-code" | "diffs-icon-symbol-modified" | "diffs-icon-symbol-deleted" | "diffs-icon-symbol-added" | "diffs-icon-symbol-moved">;
5
+ declare function getIconForType(type: ChangeTypes | 'file'): Extract<SVGSpriteNames, 'diffs-icon-file-code' | 'diffs-icon-symbol-modified' | 'diffs-icon-symbol-deleted' | 'diffs-icon-symbol-added' | 'diffs-icon-symbol-moved'>;
6
6
  //#endregion
7
7
  export { getIconForType };
8
8
  //# sourceMappingURL=getIconForType.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getIconForType.d.ts","names":[],"sources":["../../src/utils/getIconForType.ts"],"sourcesContent":[],"mappings":";;;;iBAGgB,cAAA,OACR,uBACL,QACD"}
1
+ {"version":3,"file":"getIconForType.d.ts","names":["SVGSpriteNames","ChangeTypes","getIconForType","Extract"],"sources":["../../src/utils/getIconForType.d.ts"],"sourcesContent":["import type { SVGSpriteNames } from '../sprite';\nimport type { ChangeTypes } from '../types';\nexport declare function getIconForType(type: ChangeTypes | 'file'): Extract<SVGSpriteNames, 'diffs-icon-file-code' | 'diffs-icon-symbol-modified' | 'diffs-icon-symbol-deleted' | 'diffs-icon-symbol-added' | 'diffs-icon-symbol-moved'>;\n//# sourceMappingURL=getIconForType.d.ts.map"],"mappings":";;;;iBAEwBE,cAAAA,OAAqBD,uBAAuBE,QAAQH"}
@@ -1 +1 @@
1
- {"version":3,"file":"getLineAnnotationName.d.ts","names":[],"sources":["../../src/utils/getLineAnnotationName.ts"],"sourcesContent":[],"mappings":";;;iBAEgB,iDACF,eAAe,KAAK,mBAAmB"}
1
+ {"version":3,"file":"getLineAnnotationName.d.ts","names":["DiffLineAnnotation","LineAnnotation","getLineAnnotationName","T"],"sources":["../../src/utils/getLineAnnotationName.d.ts"],"sourcesContent":["import type { DiffLineAnnotation, LineAnnotation } from '../types';\nexport declare function getLineAnnotationName<T = undefined>(annotation: LineAnnotation<T> | DiffLineAnnotation<T>): string;\n//# sourceMappingURL=getLineAnnotationName.d.ts.map"],"mappings":";;;iBACwBE,iDAAiDD,eAAeE,KAAKH,mBAAmBG"}
@@ -1,5 +1,5 @@
1
1
  //#region src/utils/getLineEndingType.d.ts
2
- declare function getLineEndingType(content: string): "CRLF" | "CR" | "LF" | "none";
2
+ declare function getLineEndingType(content: string): 'CRLF' | 'CR' | 'LF' | 'none';
3
3
  //#endregion
4
4
  export { getLineEndingType };
5
5
  //# sourceMappingURL=getLineEndingType.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getLineEndingType.d.ts","names":[],"sources":["../../src/utils/getLineEndingType.ts"],"sourcesContent":[],"mappings":";iBAAgB,iBAAA"}
1
+ {"version":3,"file":"getLineEndingType.d.ts","names":["getLineEndingType"],"sources":["../../src/utils/getLineEndingType.d.ts"],"sourcesContent":["export declare function getLineEndingType(content: string): 'CRLF' | 'CR' | 'LF' | 'none';\n//# sourceMappingURL=getLineEndingType.d.ts.map"],"mappings":";iBAAwBA,iBAAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getLineNodes.d.ts","names":[],"sources":["../../src/utils/getLineNodes.ts"],"sourcesContent":[],"mappings":";;;iBAEgB,YAAA,QAAoB,OAAO"}
1
+ {"version":3,"file":"getLineNodes.d.ts","names":["ElementContent","Root","getLineNodes"],"sources":["../../src/utils/getLineNodes.d.ts"],"sourcesContent":["import type { ElementContent, Root } from 'hast';\nexport declare function getLineNodes(nodes: Root): ElementContent[];\n//# sourceMappingURL=getLineNodes.d.ts.map"],"mappings":";;;iBACwBE,YAAAA,QAAoBD,OAAOD"}
@@ -2,12 +2,14 @@
2
2
  interface CreateCodeNodeProps {
3
3
  pre?: HTMLPreElement;
4
4
  code?: HTMLElement;
5
- columnType?: "additions" | "deletions" | "unified";
5
+ columnType?: 'additions' | 'deletions' | 'unified';
6
+ rowSpan?: number;
6
7
  }
7
8
  declare function getOrCreateCodeNode({
8
9
  code,
9
10
  pre,
10
- columnType
11
+ columnType,
12
+ rowSpan
11
13
  }?: CreateCodeNodeProps): HTMLElement;
12
14
  //#endregion
13
15
  export { getOrCreateCodeNode };
@@ -1 +1 @@
1
- {"version":3,"file":"getOrCreateCodeNode.d.ts","names":[],"sources":["../../src/utils/getOrCreateCodeNode.ts"],"sourcesContent":[],"mappings":";UAAU,mBAAA;KAAA,CAAA,EACF,cADE;EAMV,IAAgB,CAAA,EAJP,WAIO;EACd,UAAA,CAAA,EAAA,WAAA,GAAA,WAAA,GAAA,SAAA;;AAEA,iBAHc,mBAAA,CAGd;EAAA,IAAA;EAAA,GAAA;EAAA;AAAA,CAAA,CAAA,EACC,mBADD,CAAA,EAC4B,WAD5B"}
1
+ {"version":3,"file":"getOrCreateCodeNode.d.ts","names":["CreateCodeNodeProps","HTMLPreElement","HTMLElement","getOrCreateCodeNode","code","pre","columnType","rowSpan"],"sources":["../../src/utils/getOrCreateCodeNode.d.ts"],"sourcesContent":["interface CreateCodeNodeProps {\n pre?: HTMLPreElement;\n code?: HTMLElement;\n columnType?: 'additions' | 'deletions' | 'unified';\n rowSpan?: number;\n}\nexport declare function getOrCreateCodeNode({ code, pre, columnType, rowSpan }?: CreateCodeNodeProps): HTMLElement;\nexport {};\n//# sourceMappingURL=getOrCreateCodeNode.d.ts.map"],"mappings":";UAAUA,mBAAAA;EAAAA,GAAAA,CAAAA,EACAC,cADAD;EAMcG,IAAAA,CAAAA,EAJbD,WAIaC;EAAsBC,UAAAA,CAAAA,EAAAA,WAAAA,GAAAA,WAAAA,GAAAA,SAAAA;EAAMC,OAAAA,CAAAA,EAAAA,MAAAA;;AAAiBE,iBAA7CJ,mBAAAA,CAA6CI;EAAAA,IAAAA;EAAAA,GAAAA;EAAAA,UAAAA;EAAAA;AAAAA,CAAAA,CAAAA,EAAYP,mBAAZO,CAAAA,EAAkCL,WAAlCK"}
@@ -1,10 +1,13 @@
1
1
  //#region src/utils/getOrCreateCodeNode.ts
2
- function getOrCreateCodeNode({ code, pre, columnType } = {}) {
3
- if (code != null) return code;
4
- code = document.createElement("code");
5
- code.dataset.code = "";
6
- if (columnType != null) code.dataset[columnType] = "";
7
- pre?.appendChild(code);
2
+ function getOrCreateCodeNode({ code, pre, columnType, rowSpan } = {}) {
3
+ if (code == null) {
4
+ code = document.createElement("code");
5
+ code.dataset.code = "";
6
+ if (columnType != null) code.dataset[columnType] = "";
7
+ pre?.appendChild(code);
8
+ }
9
+ if (rowSpan != null) code.style.setProperty("grid-row", `span ${rowSpan}`);
10
+ else code.style.removeProperty("grid-row");
8
11
  return code;
9
12
  }
10
13
 
@@ -1 +1 @@
1
- {"version":3,"file":"getOrCreateCodeNode.js","names":[],"sources":["../../src/utils/getOrCreateCodeNode.ts"],"sourcesContent":["interface CreateCodeNodeProps {\n pre?: HTMLPreElement;\n code?: HTMLElement;\n columnType?: 'additions' | 'deletions' | 'unified';\n}\n\nexport function getOrCreateCodeNode({\n code,\n pre,\n columnType,\n}: CreateCodeNodeProps = {}): HTMLElement {\n if (code != null) {\n return code;\n }\n code = document.createElement('code');\n code.dataset.code = '';\n if (columnType != null) {\n code.dataset[columnType] = '';\n }\n pre?.appendChild(code);\n return code;\n}\n"],"mappings":";AAMA,SAAgB,oBAAoB,EAClC,MACA,KACA,eACuB,EAAE,EAAe;AACxC,KAAI,QAAQ,KACV,QAAO;AAET,QAAO,SAAS,cAAc,OAAO;AACrC,MAAK,QAAQ,OAAO;AACpB,KAAI,cAAc,KAChB,MAAK,QAAQ,cAAc;AAE7B,MAAK,YAAY,KAAK;AACtB,QAAO"}
1
+ {"version":3,"file":"getOrCreateCodeNode.js","names":[],"sources":["../../src/utils/getOrCreateCodeNode.ts"],"sourcesContent":["interface CreateCodeNodeProps {\n pre?: HTMLPreElement;\n code?: HTMLElement;\n columnType?: 'additions' | 'deletions' | 'unified';\n rowSpan?: number;\n}\n\nexport function getOrCreateCodeNode({\n code,\n pre,\n columnType,\n rowSpan,\n}: CreateCodeNodeProps = {}): HTMLElement {\n if (code == null) {\n code = document.createElement('code');\n code.dataset.code = '';\n if (columnType != null) {\n code.dataset[columnType] = '';\n }\n pre?.appendChild(code);\n }\n if (rowSpan != null) {\n code.style.setProperty('grid-row', `span ${rowSpan}`);\n } else {\n code.style.removeProperty('grid-row');\n }\n return code;\n}\n"],"mappings":";AAOA,SAAgB,oBAAoB,EAClC,MACA,KACA,YACA,YACuB,EAAE,EAAe;AACxC,KAAI,QAAQ,MAAM;AAChB,SAAO,SAAS,cAAc,OAAO;AACrC,OAAK,QAAQ,OAAO;AACpB,MAAI,cAAc,KAChB,MAAK,QAAQ,cAAc;AAE7B,OAAK,YAAY,KAAK;;AAExB,KAAI,WAAW,KACb,MAAK,MAAM,YAAY,YAAY,QAAQ,UAAU;KAErD,MAAK,MAAM,eAAe,WAAW;AAEvC,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"getSingularPatch.d.ts","names":[],"sources":["../../src/utils/getSingularPatch.ts"],"sourcesContent":[],"mappings":";;;iBAGgB,gBAAA,iBAAiC"}
1
+ {"version":3,"file":"getSingularPatch.d.ts","names":["FileDiffMetadata","getSingularPatch"],"sources":["../../src/utils/getSingularPatch.d.ts"],"sourcesContent":["import type { FileDiffMetadata } from '../types';\nexport declare function getSingularPatch(patch: string): FileDiffMetadata;\n//# sourceMappingURL=getSingularPatch.d.ts.map"],"mappings":";;;iBACwBC,gBAAAA,iBAAiCD"}
@@ -1 +1 @@
1
- {"version":3,"file":"getThemes.d.ts","names":[],"sources":["../../src/utils/getThemes.ts"],"sourcesContent":[],"mappings":";;;iBAGgB,SAAA,SACP,kBAAkB,aACxB"}
1
+ {"version":3,"file":"getThemes.d.ts","names":["DiffsThemeNames","ThemesType","getThemes"],"sources":["../../src/utils/getThemes.d.ts"],"sourcesContent":["import type { DiffsThemeNames, ThemesType } from '../types';\nexport declare function getThemes(theme?: DiffsThemeNames | ThemesType): DiffsThemeNames[];\n//# sourceMappingURL=getThemes.d.ts.map"],"mappings":";;;iBACwBE,SAAAA,SAAkBF,kBAAkBC,aAAaD"}
@@ -1 +1 @@
1
- {"version":3,"file":"getTotalLineCountFromHunks.d.ts","names":[],"sources":["../../src/utils/getTotalLineCountFromHunks.ts"],"sourcesContent":[],"mappings":";;;iBAEgB,0BAAA,QAAkC"}
1
+ {"version":3,"file":"getTotalLineCountFromHunks.d.ts","names":["Hunk","getTotalLineCountFromHunks"],"sources":["../../src/utils/getTotalLineCountFromHunks.d.ts"],"sourcesContent":["import type { Hunk } from '../types';\nexport declare function getTotalLineCountFromHunks(hunks: Hunk[]): number;\n//# sourceMappingURL=getTotalLineCountFromHunks.d.ts.map"],"mappings":";;;iBACwBC,0BAAAA,QAAkCD"}
@@ -1,10 +1,11 @@
1
+ import { LineTypes } from "../types.js";
1
2
  import { SVGSpriteNames } from "../sprite.js";
2
3
  import { Element, ElementContent, Properties, Root, Text } from "hast";
3
4
 
4
5
  //#region src/utils/hast_utils.d.ts
5
6
  declare function createTextNodeElement(value: string): Text;
6
7
  interface CreateHastElementProps {
7
- tagName: "span" | "div" | "code" | "pre" | "slot" | "svg" | "use" | "style" | "template";
8
+ tagName: 'span' | 'div' | 'code' | 'pre' | 'slot' | 'svg' | 'use' | 'style' | 'template';
8
9
  children?: ElementContent[];
9
10
  properties?: Properties;
10
11
  }
@@ -26,7 +27,9 @@ declare function createIconElement({
26
27
  properties
27
28
  }: CreateIconProps): Element;
28
29
  declare function findCodeElement(nodes: Root | Element): Element | undefined;
29
- declare function createBufferElement(type: "before" | "after", height: number): Element;
30
+ declare function createGutterWrapper(children?: ElementContent[]): Element;
31
+ declare function createGutterItem(lineType: LineTypes | 'buffer' | 'separator' | 'annotation', lineNumber: number, lineIndex: string): Element;
32
+ declare function createGutterGap(type: LineTypes | undefined, bufferType: 'annotation' | 'buffer' | 'metadata', size: number): Element;
30
33
  //#endregion
31
- export { createBufferElement, createHastElement, createIconElement, createTextNodeElement, findCodeElement };
34
+ export { createGutterGap, createGutterItem, createGutterWrapper, createHastElement, createIconElement, createTextNodeElement, findCodeElement };
32
35
  //# sourceMappingURL=hast_utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hast_utils.d.ts","names":[],"sources":["../../src/utils/hast_utils.ts"],"sourcesContent":[],"mappings":";;;;iBAWgB,qBAAA,iBAAsC;UAI5C,sBAAA;EAJV,OAAgB,EAAA,MAAA,GAAA,KAAA,GAAA,MAAA,GAAA,KAAsC,GAAA,MAAA,GAAA,KAAA,GAAA,KAAA,GAAA,OAAA,GAAA,UAAA;EAAA,QAI5C,CAAA,EAWG,cAXH,EAAA;EAeV,UAAgB,CAAA,EAHD,UAGC;;AAEd,iBAFc,iBAAA,CAEd;EAAA,OAAA;EAAA,QAAA;EAAA;AAAA,CAAA,EAEC,sBAFD,CAAA,EAE0B,OAF1B;UAWQ,eAAA,CAVR;EACC,IAAA,EAUK,cAVL;EAAyB,KAAA,CAAA,EAAA,MAAA;EAAA,MAAA,CAAA,EAAA,MAAA;EAAA,UASlB,CAAA,EAIK,UAJL;AAOV;AACE,iBADc,iBAAA,CACd;EAAA,IAAA;EAAA,KAAA;EAAA,MAAA;EAAA;AAAA,CAAA,EAIC,eAJD,CAAA,EAImB,OAJnB;AACA,iBAgBc,eAAA,CAhBd,KAAA,EAiBO,IAjBP,GAiBc,OAjBd,CAAA,EAkBC,OAlBD,GAAA,SAAA;AACA,iBAgCc,mBAAA,CAhCd,IAAA,EAAA,QAAA,GAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAmCC,OAnCD"}
1
+ {"version":3,"file":"hast_utils.d.ts","names":["ElementContent","Element","HASTElement","Properties","Root","Text","SVGSpriteNames","LineTypes","createTextNodeElement","CreateHastElementProps","createHastElement","tagName","children","properties","CreateIconProps","createIconElement","name","width","height","findCodeElement","createGutterWrapper","createGutterItem","createGutterGap"],"sources":["../../src/utils/hast_utils.d.ts"],"sourcesContent":["import type { ElementContent, Element as HASTElement, Properties, Root, Text } from 'hast';\nimport type { SVGSpriteNames } from '../sprite';\nimport type { LineTypes } from '../types';\nexport declare function createTextNodeElement(value: string): Text;\ninterface CreateHastElementProps {\n tagName: 'span' | 'div' | 'code' | 'pre' | 'slot' | 'svg' | 'use' | 'style' | 'template';\n children?: ElementContent[];\n properties?: Properties;\n}\nexport declare function createHastElement({ tagName, children, properties }: CreateHastElementProps): HASTElement;\ninterface CreateIconProps {\n name: SVGSpriteNames;\n width?: number;\n height?: number;\n properties?: Properties;\n}\nexport declare function createIconElement({ name, width, height, properties }: CreateIconProps): HASTElement;\nexport declare function findCodeElement(nodes: Root | HASTElement): HASTElement | undefined;\nexport declare function createGutterWrapper(children?: ElementContent[]): HASTElement;\nexport declare function createGutterItem(lineType: LineTypes | 'buffer' | 'separator' | 'annotation', lineNumber: number, lineIndex: string): HASTElement;\nexport declare function createGutterGap(type: LineTypes | undefined, bufferType: 'annotation' | 'buffer' | 'metadata', size: number): HASTElement;\nexport {};\n//# sourceMappingURL=hast_utils.d.ts.map"],"mappings":";;;;;iBAGwBQ,qBAAAA,iBAAsCH;UACpDI,sBAAAA;EADcD,OAAAA,EAAAA,MAAAA,GAAAA,KAAAA,GAAqB,MAAA,GAAA,KAAiBH,GAAI,MAAA,GAAA,KAAA,GAAA,KAAA,GAAA,OAAA,GAAA,UAAA;EACxDI,QAAAA,CAAAA,EAEKT,cAFiB,EAAA;EAKRU,UAAAA,CAAAA,EAFPP,UAEwB;;AAAYS,iBAA7BF,iBAAAA,CAA6BE;EAAAA,OAAAA;EAAAA,QAAAA;EAAAA;AAAAA,CAAAA,EAAwBH,sBAAxBG,CAAAA,EAAiDV,OAAjDU;UAC3CE,eAAAA,CADqDD;EAAcJ,IAAAA,EAEnEH,cAFmEG;EAAyBP,KAAAA,CAAAA,EAAAA,MAAAA;EAAW,MAAA,CAAA,EAAA,MAAA;EACvGY,UAAAA,CAAAA,EAIOX,UAJQ;AAMzB;AAA4Ca,iBAApBD,iBAAAA,CAAoBC;EAAAA,IAAAA;EAAAA,KAAAA;EAAAA,MAAAA;EAAAA;AAAAA,CAAAA,EAAmCF,eAAnCE,CAAAA,EAAqDd,OAArDc;AAAMC,iBAC1BE,eAAAA,CAD0BF,KAAAA,EACHb,IADGa,GACIf,OADJe,CAAAA,EACkBf,OADlBe,GAAAA,SAAAA;AAAOC,iBAEjCE,mBAAAA,CAFiCF,QAAAA,CAAAA,EAEFlB,cAFEkB,EAAAA,CAAAA,EAEiBhB,OAFjBgB;AAAQL,iBAGzCQ,gBAAAA,CAHyCR,QAAAA,EAGdN,SAHcM,GAAAA,QAAAA,GAAAA,WAAAA,GAAAA,YAAAA,EAAAA,UAAAA,EAAAA,MAAAA,EAAAA,SAAAA,EAAAA,MAAAA,CAAAA,EAG6EX,OAH7EW;AAAcC,iBAIvDQ,eAAAA,CAJuDR,IAAAA,EAIjCP,SAJiCO,GAAAA,SAAAA,EAAAA,UAAAA,EAAAA,YAAAA,GAAAA,QAAAA,GAAAA,UAAAA,EAAAA,IAAAA,EAAAA,MAAAA,CAAAA,EAIuDZ,OAJvDY"}
@@ -36,16 +36,40 @@ function findCodeElement(nodes) {
36
36
  else firstChild = null;
37
37
  }
38
38
  }
39
- function createBufferElement(type, height) {
39
+ function createGutterWrapper(children) {
40
+ return createHastElement({
41
+ tagName: "div",
42
+ properties: { "data-gutter": "" },
43
+ children
44
+ });
45
+ }
46
+ function createGutterItem(lineType, lineNumber, lineIndex) {
47
+ return createHastElement({
48
+ tagName: "div",
49
+ properties: {
50
+ "data-line-type": lineType,
51
+ "data-column-number": lineNumber,
52
+ "data-line-index": lineIndex
53
+ },
54
+ children: lineNumber != null ? [createHastElement({
55
+ tagName: "span",
56
+ properties: { "data-line-number-content": "" },
57
+ children: [createTextNodeElement(`${lineNumber}`)]
58
+ })] : void 0
59
+ });
60
+ }
61
+ function createGutterGap(type, bufferType, size) {
40
62
  return createHastElement({
41
63
  tagName: "div",
42
64
  properties: {
43
- "data-virtualized-buffer": type,
44
- style: `height: ${height}px`
65
+ "data-gutter-buffer": bufferType,
66
+ "data-buffer-size": size,
67
+ "data-line-type": bufferType === "annotation" ? void 0 : type,
68
+ style: bufferType === "annotation" ? `grid-row: span ${size};` : `grid-row: span ${size};min-height:calc(${size} * 1lh);`
45
69
  }
46
70
  });
47
71
  }
48
72
 
49
73
  //#endregion
50
- export { createBufferElement, createHastElement, createIconElement, createTextNodeElement, findCodeElement };
74
+ export { createGutterGap, createGutterItem, createGutterWrapper, createHastElement, createIconElement, createTextNodeElement, findCodeElement };
51
75
  //# sourceMappingURL=hast_utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hast_utils.js","names":["firstChild: RootContent | HASTElement | Root | null"],"sources":["../../src/utils/hast_utils.ts"],"sourcesContent":["import type {\n ElementContent,\n Element as HASTElement,\n Properties,\n Root,\n RootContent,\n Text,\n} from 'hast';\n\nimport type { SVGSpriteNames } from '../sprite';\n\nexport function createTextNodeElement(value: string): Text {\n return { type: 'text', value };\n}\n\ninterface CreateHastElementProps {\n tagName:\n | 'span'\n | 'div'\n | 'code'\n | 'pre'\n | 'slot'\n | 'svg'\n | 'use'\n | 'style'\n | 'template';\n children?: ElementContent[];\n properties?: Properties;\n}\n\nexport function createHastElement({\n tagName,\n children = [],\n properties = {},\n}: CreateHastElementProps): HASTElement {\n return {\n type: 'element',\n tagName,\n properties,\n children,\n };\n}\n\ninterface CreateIconProps {\n name: SVGSpriteNames;\n width?: number;\n height?: number;\n properties?: Properties;\n}\n\nexport function createIconElement({\n name,\n width = 16,\n height = 16,\n properties,\n}: CreateIconProps): HASTElement {\n return createHastElement({\n tagName: 'svg',\n properties: { width, height, viewBox: '0 0 16 16', ...properties },\n children: [\n createHastElement({\n tagName: 'use',\n properties: { href: `#${name.replace(/^#/, '')}` },\n }),\n ],\n });\n}\n\nexport function findCodeElement(\n nodes: Root | HASTElement\n): HASTElement | undefined {\n let firstChild: RootContent | HASTElement | Root | null = nodes.children[0];\n while (firstChild != null) {\n if (firstChild.type === 'element' && firstChild.tagName === 'code') {\n return firstChild;\n }\n if ('children' in firstChild) {\n firstChild = firstChild.children[0];\n } else {\n firstChild = null;\n }\n }\n return undefined;\n}\n\nexport function createBufferElement(\n type: 'before' | 'after',\n height: number\n): HASTElement {\n return createHastElement({\n tagName: 'div',\n properties: {\n 'data-virtualized-buffer': type,\n style: `height: ${height}px`,\n },\n });\n}\n"],"mappings":";AAWA,SAAgB,sBAAsB,OAAqB;AACzD,QAAO;EAAE,MAAM;EAAQ;EAAO;;AAkBhC,SAAgB,kBAAkB,EAChC,SACA,WAAW,EAAE,EACb,aAAa,EAAE,IACuB;AACtC,QAAO;EACL,MAAM;EACN;EACA;EACA;EACD;;AAUH,SAAgB,kBAAkB,EAChC,MACA,QAAQ,IACR,SAAS,IACT,cAC+B;AAC/B,QAAO,kBAAkB;EACvB,SAAS;EACT,YAAY;GAAE;GAAO;GAAQ,SAAS;GAAa,GAAG;GAAY;EAClE,UAAU,CACR,kBAAkB;GAChB,SAAS;GACT,YAAY,EAAE,MAAM,IAAI,KAAK,QAAQ,MAAM,GAAG,IAAI;GACnD,CAAC,CACH;EACF,CAAC;;AAGJ,SAAgB,gBACd,OACyB;CACzB,IAAIA,aAAsD,MAAM,SAAS;AACzE,QAAO,cAAc,MAAM;AACzB,MAAI,WAAW,SAAS,aAAa,WAAW,YAAY,OAC1D,QAAO;AAET,MAAI,cAAc,WAChB,cAAa,WAAW,SAAS;MAEjC,cAAa;;;AAMnB,SAAgB,oBACd,MACA,QACa;AACb,QAAO,kBAAkB;EACvB,SAAS;EACT,YAAY;GACV,2BAA2B;GAC3B,OAAO,WAAW,OAAO;GAC1B;EACF,CAAC"}
1
+ {"version":3,"file":"hast_utils.js","names":["firstChild: RootContent | HASTElement | Root | null"],"sources":["../../src/utils/hast_utils.ts"],"sourcesContent":["import type {\n ElementContent,\n Element as HASTElement,\n Properties,\n Root,\n RootContent,\n Text,\n} from 'hast';\n\nimport type { SVGSpriteNames } from '../sprite';\nimport type { LineTypes } from '../types';\n\nexport function createTextNodeElement(value: string): Text {\n return { type: 'text', value };\n}\n\ninterface CreateHastElementProps {\n tagName:\n | 'span'\n | 'div'\n | 'code'\n | 'pre'\n | 'slot'\n | 'svg'\n | 'use'\n | 'style'\n | 'template';\n children?: ElementContent[];\n properties?: Properties;\n}\n\nexport function createHastElement({\n tagName,\n children = [],\n properties = {},\n}: CreateHastElementProps): HASTElement {\n return {\n type: 'element',\n tagName,\n properties,\n children,\n };\n}\n\ninterface CreateIconProps {\n name: SVGSpriteNames;\n width?: number;\n height?: number;\n properties?: Properties;\n}\n\nexport function createIconElement({\n name,\n width = 16,\n height = 16,\n properties,\n}: CreateIconProps): HASTElement {\n return createHastElement({\n tagName: 'svg',\n properties: { width, height, viewBox: '0 0 16 16', ...properties },\n children: [\n createHastElement({\n tagName: 'use',\n properties: { href: `#${name.replace(/^#/, '')}` },\n }),\n ],\n });\n}\n\nexport function findCodeElement(\n nodes: Root | HASTElement\n): HASTElement | undefined {\n let firstChild: RootContent | HASTElement | Root | null = nodes.children[0];\n while (firstChild != null) {\n if (firstChild.type === 'element' && firstChild.tagName === 'code') {\n return firstChild;\n }\n if ('children' in firstChild) {\n firstChild = firstChild.children[0];\n } else {\n firstChild = null;\n }\n }\n return undefined;\n}\n\nexport function createGutterWrapper(children?: ElementContent[]): HASTElement {\n return createHastElement({\n tagName: 'div',\n properties: { 'data-gutter': '' },\n children,\n });\n}\n\nexport function createGutterItem(\n lineType: LineTypes | 'buffer' | 'separator' | 'annotation',\n lineNumber: number,\n lineIndex: string\n): HASTElement {\n return createHastElement({\n tagName: 'div',\n properties: {\n 'data-line-type': lineType,\n 'data-column-number': lineNumber,\n 'data-line-index': lineIndex,\n },\n children:\n lineNumber != null\n ? [\n createHastElement({\n tagName: 'span',\n properties: { 'data-line-number-content': '' },\n children: [createTextNodeElement(`${lineNumber}`)],\n }),\n ]\n : undefined,\n });\n}\n\nexport function createGutterGap(\n type: LineTypes | undefined,\n bufferType: 'annotation' | 'buffer' | 'metadata',\n size: number\n): HASTElement {\n return createHastElement({\n tagName: 'div',\n properties: {\n 'data-gutter-buffer': bufferType,\n 'data-buffer-size': size,\n 'data-line-type': bufferType === 'annotation' ? undefined : type,\n style:\n bufferType === 'annotation'\n ? `grid-row: span ${size};`\n : `grid-row: span ${size};min-height:calc(${size} * 1lh);`,\n },\n });\n}\n"],"mappings":";AAYA,SAAgB,sBAAsB,OAAqB;AACzD,QAAO;EAAE,MAAM;EAAQ;EAAO;;AAkBhC,SAAgB,kBAAkB,EAChC,SACA,WAAW,EAAE,EACb,aAAa,EAAE,IACuB;AACtC,QAAO;EACL,MAAM;EACN;EACA;EACA;EACD;;AAUH,SAAgB,kBAAkB,EAChC,MACA,QAAQ,IACR,SAAS,IACT,cAC+B;AAC/B,QAAO,kBAAkB;EACvB,SAAS;EACT,YAAY;GAAE;GAAO;GAAQ,SAAS;GAAa,GAAG;GAAY;EAClE,UAAU,CACR,kBAAkB;GAChB,SAAS;GACT,YAAY,EAAE,MAAM,IAAI,KAAK,QAAQ,MAAM,GAAG,IAAI;GACnD,CAAC,CACH;EACF,CAAC;;AAGJ,SAAgB,gBACd,OACyB;CACzB,IAAIA,aAAsD,MAAM,SAAS;AACzE,QAAO,cAAc,MAAM;AACzB,MAAI,WAAW,SAAS,aAAa,WAAW,YAAY,OAC1D,QAAO;AAET,MAAI,cAAc,WAChB,cAAa,WAAW,SAAS;MAEjC,cAAa;;;AAMnB,SAAgB,oBAAoB,UAA0C;AAC5E,QAAO,kBAAkB;EACvB,SAAS;EACT,YAAY,EAAE,eAAe,IAAI;EACjC;EACD,CAAC;;AAGJ,SAAgB,iBACd,UACA,YACA,WACa;AACb,QAAO,kBAAkB;EACvB,SAAS;EACT,YAAY;GACV,kBAAkB;GAClB,sBAAsB;GACtB,mBAAmB;GACpB;EACD,UACE,cAAc,OACV,CACE,kBAAkB;GAChB,SAAS;GACT,YAAY,EAAE,4BAA4B,IAAI;GAC9C,UAAU,CAAC,sBAAsB,GAAG,aAAa,CAAC;GACnD,CAAC,CACH,GACD;EACP,CAAC;;AAGJ,SAAgB,gBACd,MACA,YACA,MACa;AACb,QAAO,kBAAkB;EACvB,SAAS;EACT,YAAY;GACV,sBAAsB;GACtB,oBAAoB;GACpB,kBAAkB,eAAe,eAAe,SAAY;GAC5D,OACE,eAAe,eACX,kBAAkB,KAAK,KACvB,kBAAkB,KAAK,mBAAmB,KAAK;GACtD;EACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"isDefaultRenderRange.d.ts","names":[],"sources":["../../src/utils/isDefaultRenderRange.ts"],"sourcesContent":[],"mappings":";;;iBAEgB,oBAAA,cAAkC"}
1
+ {"version":3,"file":"isDefaultRenderRange.d.ts","names":["RenderRange","isDefaultRenderRange"],"sources":["../../src/utils/isDefaultRenderRange.d.ts"],"sourcesContent":["import type { RenderRange } from '../types';\nexport declare function isDefaultRenderRange(renderRange: RenderRange): boolean;\n//# sourceMappingURL=isDefaultRenderRange.d.ts.map"],"mappings":";;;iBACwBC,oBAAAA,cAAkCD"}
@@ -1 +1 @@
1
- {"version":3,"file":"isWorkerContext.d.ts","names":[],"sources":["../../src/utils/isWorkerContext.ts"],"sourcesContent":[],"mappings":";iBAEgB,eAAA,CAAA"}
1
+ {"version":3,"file":"isWorkerContext.d.ts","names":["isWorkerContext"],"sources":["../../src/utils/isWorkerContext.d.ts"],"sourcesContent":["export declare function isWorkerContext(): boolean;\n//# sourceMappingURL=isWorkerContext.d.ts.map"],"mappings":";iBAAwBA,eAAAA,CAAAA"}
@@ -1,29 +1,43 @@
1
1
  import { FileDiffMetadata, Hunk, HunkExpansionRegion } from "../types.js";
2
2
 
3
3
  //#region src/utils/iterateOverDiff.d.ts
4
- interface DiffLineCallbackProps {
4
+ interface DiffLineMetadata {
5
+ unifiedLineIndex: number;
6
+ splitLineIndex: number;
7
+ lineIndex: number;
8
+ lineNumber: number;
9
+ noEOFCR: boolean;
10
+ }
11
+ interface DiffLineCallbackBase {
5
12
  hunkIndex: number;
6
13
  hunk: Hunk | undefined;
7
14
  collapsedBefore: number;
8
15
  collapsedAfter: number;
9
- unifiedDeletionLineIndex: number | undefined;
10
- unifiedAdditionLineIndex: number | undefined;
11
- splitLineIndex: number;
12
- additionLineIndex: number | undefined;
13
- deletionLineIndex: number | undefined;
14
- additionLineNumber: number | undefined;
15
- deletionLineNumber: number | undefined;
16
- type: "context" | "context-expanded" | "change";
17
- noEOFCRAddition: boolean;
18
- noEOFCRDeletion: boolean;
19
16
  }
17
+ interface DiffLineCallbackContextChange extends DiffLineCallbackBase {
18
+ type: 'change' | 'context' | 'context-expanded';
19
+ deletionLine: DiffLineMetadata;
20
+ additionLine: DiffLineMetadata;
21
+ }
22
+ interface DiffLineCallbackChangeDeletion extends DiffLineCallbackBase {
23
+ type: 'change';
24
+ deletionLine: DiffLineMetadata;
25
+ additionLine?: undefined;
26
+ }
27
+ interface DiffLineCallbackChangeAddition extends DiffLineCallbackBase {
28
+ type: 'change';
29
+ deletionLine?: undefined;
30
+ additionLine: DiffLineMetadata;
31
+ }
32
+ type DiffLineCallbackProps = DiffLineCallbackContextChange | DiffLineCallbackChangeDeletion | DiffLineCallbackChangeAddition;
20
33
  type DiffLineCallback = (props: DiffLineCallbackProps) => boolean | void;
21
34
  interface IterateOverDiffProps {
22
35
  diff: FileDiffMetadata;
23
- diffStyle: "unified" | "split" | "both";
36
+ diffStyle: 'unified' | 'split' | 'both';
24
37
  startingLine?: number;
25
38
  totalLines?: number;
26
39
  expandedHunks?: Map<number, HunkExpansionRegion> | true;
40
+ collapsedContextThreshold?: number;
27
41
  callback: DiffLineCallback;
28
42
  }
29
43
  declare function iterateOverDiff({
@@ -32,8 +46,9 @@ declare function iterateOverDiff({
32
46
  startingLine,
33
47
  totalLines,
34
48
  expandedHunks,
49
+ collapsedContextThreshold,
35
50
  callback
36
51
  }: IterateOverDiffProps): void;
37
52
  //#endregion
38
- export { DiffLineCallback, DiffLineCallbackProps, IterateOverDiffProps, iterateOverDiff };
53
+ export { DiffLineCallback, DiffLineCallbackBase, DiffLineCallbackProps, DiffLineMetadata, IterateOverDiffProps, iterateOverDiff };
39
54
  //# sourceMappingURL=iterateOverDiff.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"iterateOverDiff.d.ts","names":[],"sources":["../../src/utils/iterateOverDiff.ts"],"sourcesContent":[],"mappings":";;;UAOiB,qBAAA;;EAAjB,IAAiB,EAET,IAFS,GAAA,SAAA;EAkCjB,eAAY,EAAA,MAAA;EAEZ,cAAiB,EAAA,MAAA;EACT,wBAAA,EAAA,MAAA,GAAA,SAAA;EAIsB,wBAAA,EAAA,MAAA,GAAA,SAAA;EAAZ,cAAA,EAAA,MAAA;EACN,iBAAA,EAAA,MAAA,GAAA,SAAA;EAAA,iBAAA,EAAA,MAAA,GAAA,SAAA;EAGZ,kBAAgB,EAAA,MAAA,GAAA,SAAA;EACd,kBAAA,EAAA,MAAA,GAAA,SAAA;EACA,IAAA,EAAA,SAAA,GAAA,kBAAA,GAAA,QAAA;EACA,eAAA,EAAA,OAAA;EACA,eAAA,EAAA,OAAA;;AAEA,KAjBU,gBAAA,GAiBV,CAAA,KAAA,EAjBqC,qBAiBrC,EAAA,GAAA,OAAA,GAAA,IAAA;AACC,UAhBc,oBAAA,CAgBd;EAAA,IAAA,EAfK,gBAeL;;;;kBAXe,YAAY;YAClB;;iBAGI,eAAA;;;;;;;GAOb"}
1
+ {"version":3,"file":"iterateOverDiff.d.ts","names":["FileDiffMetadata","Hunk","HunkExpansionRegion","DiffLineMetadata","DiffLineCallbackBase","DiffLineCallbackContextChange","DiffLineCallbackChangeDeletion","DiffLineCallbackChangeAddition","DiffLineCallbackProps","DiffLineCallback","IterateOverDiffProps","Map","iterateOverDiff","diff","diffStyle","startingLine","totalLines","expandedHunks","collapsedContextThreshold","callback"],"sources":["../../src/utils/iterateOverDiff.d.ts"],"sourcesContent":["import type { FileDiffMetadata, Hunk, HunkExpansionRegion } from '../types';\nexport interface DiffLineMetadata {\n unifiedLineIndex: number;\n splitLineIndex: number;\n lineIndex: number;\n lineNumber: number;\n noEOFCR: boolean;\n}\nexport interface DiffLineCallbackBase {\n hunkIndex: number;\n hunk: Hunk | undefined;\n collapsedBefore: number;\n collapsedAfter: number;\n}\ninterface DiffLineCallbackContextChange extends DiffLineCallbackBase {\n type: 'change' | 'context' | 'context-expanded';\n deletionLine: DiffLineMetadata;\n additionLine: DiffLineMetadata;\n}\ninterface DiffLineCallbackChangeDeletion extends DiffLineCallbackBase {\n type: 'change';\n deletionLine: DiffLineMetadata;\n additionLine?: undefined;\n}\ninterface DiffLineCallbackChangeAddition extends DiffLineCallbackBase {\n type: 'change';\n deletionLine?: undefined;\n additionLine: DiffLineMetadata;\n}\nexport type DiffLineCallbackProps = DiffLineCallbackContextChange | DiffLineCallbackChangeDeletion | DiffLineCallbackChangeAddition;\nexport type DiffLineCallback = (props: DiffLineCallbackProps) => boolean | void;\nexport interface IterateOverDiffProps {\n diff: FileDiffMetadata;\n diffStyle: 'unified' | 'split' | 'both';\n startingLine?: number;\n totalLines?: number;\n expandedHunks?: Map<number, HunkExpansionRegion> | true;\n collapsedContextThreshold?: number;\n callback: DiffLineCallback;\n}\nexport declare function iterateOverDiff({ diff, diffStyle, startingLine, totalLines, expandedHunks, collapsedContextThreshold, callback }: IterateOverDiffProps): void;\nexport {};\n//# sourceMappingURL=iterateOverDiff.d.ts.map"],"mappings":";;;UACiBG,gBAAAA;;EAAAA,cAAAA,EAAAA,MAAgB;EAOhBC,SAAAA,EAAAA,MAAAA;EAMPC,UAAAA,EAAAA,MAAAA;EAEQF,OAAAA,EAAAA,OAAAA;;AAF8BC,UAN/BA,oBAAAA,CAM+BA;EAAoB,SAAA,EAAA,MAAA;EAK1DE,IAAAA,EATAL,IASAK,GAAAA,SAAAA;EAKAC,eAAAA,EAAAA,MAAAA;EAKEC,cAAAA,EAAAA,MAAAA;;UAfFH,6BAAAA,SAAsCD,oBAeoBE,CAAAA;EAAiCC,IAAAA,EAAAA,QAAAA,GAAAA,SAAAA,GAAAA,kBAAAA;EAA8B,YAAA,EAbjHJ,gBAaiH;EACvHM,YAAAA,EAbMN,gBAaU;AAC5B;UAZUG,8BAAAA,SAAuCF,oBAavCJ,CAAAA;EAIsBE,IAAAA,EAAAA,QAAAA;EAAZS,YAAAA,EAfFR,gBAeEQ;EAENF,YAAAA,CAAAA,EAAAA,SAAAA;;AAEd,UAhBUF,8BAAAA,SAAuCH,oBAgBV,CAAA;EAAGS,IAAAA,EAAAA,QAAAA;EAAMC,YAAAA,CAAAA,EAAAA,SAAAA;EAAWC,YAAAA,EAbzCZ,gBAayCY;;AAA0BE,KAXzET,qBAAAA,GAAwBH,6BAWiDY,GAXjBX,8BAWiBW,GAXgBV,8BAWhBU;AAAeC,KAVxFT,gBAAAA,GAUwFS,CAAAA,KAAAA,EAV7DV,qBAU6DU,EAAAA,GAAAA,OAAAA,GAAAA,IAAAA;AAA2BC,UAT9GT,oBAAAA,CAS8GS;EAAYT,IAAAA,EARjIV,gBAQiIU;EAAoB,SAAA,EAAA,SAAA,GAAA,OAAA,GAAA,MAAA;;;kBAJ3IC,YAAYT;;YAElBO;;iBAEUG,eAAAA;;;;;;;;GAAmHF"}
@@ -1,5 +1,7 @@
1
+ import { DEFAULT_COLLAPSED_CONTEXT_THRESHOLD } from "../constants.js";
2
+
1
3
  //#region src/utils/iterateOverDiff.ts
2
- function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infinity, expandedHunks, callback }) {
4
+ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infinity, expandedHunks, collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, callback }) {
3
5
  const state = {
4
6
  finalHunk: diff.hunks.at(-1),
5
7
  viewportStart: startingLine,
@@ -50,14 +52,14 @@ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infin
50
52
  };
51
53
  hunkIterator: for (const [hunkIndex, hunk] of diff.hunks.entries()) {
52
54
  if (state.shouldBreak()) break;
53
- const leadingRegion = getExpandedRegion(diff.isPartial, hunk.collapsedBefore, expandedHunks, hunkIndex);
55
+ const leadingRegion = getExpandedRegion(diff.isPartial, hunk.collapsedBefore, expandedHunks, hunkIndex, collapsedContextThreshold);
54
56
  const trailingRegion = (() => {
55
57
  if (hunk !== state.finalHunk || !hasFinalCollapsedHunk(diff)) return;
56
58
  const additionRemaining = diff.additionLines.length - (hunk.additionLineIndex + hunk.additionCount);
57
59
  const deletionRemaining = diff.deletionLines.length - (hunk.deletionLineIndex + hunk.deletionCount);
58
60
  if (additionRemaining !== deletionRemaining) throw new Error(`iterateOverDiff: trailing context mismatch (additions=${additionRemaining}, deletions=${deletionRemaining}) for ${diff.name}`);
59
61
  const trailingRangeSize = Math.min(additionRemaining, deletionRemaining);
60
- return getExpandedRegion(diff.isPartial, trailingRangeSize, expandedHunks, diff.hunks.length);
62
+ return getExpandedRegion(diff.isPartial, trailingRangeSize, expandedHunks, diff.hunks.length, collapsedContextThreshold);
61
63
  })();
62
64
  const expandedLineCount = leadingRegion.fromStart + leadingRegion.fromEnd;
63
65
  function getTrailingCollapsedAfter(unifiedLineIndex$1, splitLineIndex$1) {
@@ -86,16 +88,21 @@ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infin
86
88
  hunk,
87
89
  collapsedBefore: 0,
88
90
  collapsedAfter: 0,
89
- unifiedDeletionLineIndex: unifiedLineIndex$1 + index,
90
- unifiedAdditionLineIndex: unifiedLineIndex$1 + index,
91
- splitLineIndex: splitLineIndex$1 + index,
92
- deletionLineIndex: deletionLineIndex$1 + index,
93
- additionLineIndex: additionLineIndex$1 + index,
94
- deletionLineNumber: deletionLineNumber$1 + index,
95
- additionLineNumber: additionLineNumber$1 + index,
96
91
  type: "context-expanded",
97
- noEOFCRAddition: false,
98
- noEOFCRDeletion: false
92
+ deletionLine: {
93
+ lineNumber: deletionLineNumber$1 + index,
94
+ lineIndex: deletionLineIndex$1 + index,
95
+ noEOFCR: false,
96
+ unifiedLineIndex: unifiedLineIndex$1 + index,
97
+ splitLineIndex: splitLineIndex$1 + index
98
+ },
99
+ additionLine: {
100
+ unifiedLineIndex: unifiedLineIndex$1 + index,
101
+ splitLineIndex: splitLineIndex$1 + index,
102
+ lineIndex: additionLineIndex$1 + index,
103
+ lineNumber: additionLineNumber$1 + index,
104
+ noEOFCR: false
105
+ }
99
106
  })) break hunkIterator;
100
107
  } else state.incrementCounts(1, 1);
101
108
  index++;
@@ -114,16 +121,21 @@ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infin
114
121
  hunk,
115
122
  collapsedBefore: getPendingCollapsed(),
116
123
  collapsedAfter: 0,
117
- unifiedDeletionLineIndex: unifiedLineIndex$1 + index,
118
- unifiedAdditionLineIndex: unifiedLineIndex$1 + index,
119
- splitLineIndex: splitLineIndex$1 + index,
120
- deletionLineIndex: deletionLineIndex$1 + index,
121
- additionLineIndex: additionLineIndex$1 + index,
122
- deletionLineNumber: deletionLineNumber$1 + index,
123
- additionLineNumber: additionLineNumber$1 + index,
124
124
  type: "context-expanded",
125
- noEOFCRAddition: false,
126
- noEOFCRDeletion: false
125
+ deletionLine: {
126
+ lineNumber: deletionLineNumber$1 + index,
127
+ lineIndex: deletionLineIndex$1 + index,
128
+ noEOFCR: false,
129
+ unifiedLineIndex: unifiedLineIndex$1 + index,
130
+ splitLineIndex: splitLineIndex$1 + index
131
+ },
132
+ additionLine: {
133
+ unifiedLineIndex: unifiedLineIndex$1 + index,
134
+ splitLineIndex: splitLineIndex$1 + index,
135
+ lineIndex: additionLineIndex$1 + index,
136
+ lineNumber: additionLineNumber$1 + index,
137
+ noEOFCR: false
138
+ }
127
139
  })) break hunkIterator;
128
140
  } else state.incrementCounts(1, 1);
129
141
  index++;
@@ -155,16 +167,21 @@ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infin
155
167
  hunk,
156
168
  collapsedBefore: getPendingCollapsed(),
157
169
  collapsedAfter: getTrailingCollapsedAfter(unifiedRowIndex, splitRowIndex),
158
- unifiedDeletionLineIndex: unifiedRowIndex,
159
- unifiedAdditionLineIndex: unifiedRowIndex,
160
- splitLineIndex: splitRowIndex,
161
- deletionLineIndex: deletionLineIndex + index,
162
- additionLineIndex: additionLineIndex + index,
163
- deletionLineNumber: deletionLineNumber + index,
164
- additionLineNumber: additionLineNumber + index,
165
170
  type: "context",
166
- noEOFCRAddition: isLastLine && hunk.noEOFCRAdditions,
167
- noEOFCRDeletion: isLastLine && hunk.noEOFCRDeletions
171
+ deletionLine: {
172
+ lineNumber: deletionLineNumber + index,
173
+ lineIndex: deletionLineIndex + index,
174
+ noEOFCR: isLastLine && hunk.noEOFCRDeletions,
175
+ unifiedLineIndex: unifiedRowIndex,
176
+ splitLineIndex: splitRowIndex
177
+ },
178
+ additionLine: {
179
+ unifiedLineIndex: unifiedRowIndex,
180
+ splitLineIndex: splitRowIndex,
181
+ lineIndex: additionLineIndex + index,
182
+ lineNumber: additionLineNumber + index,
183
+ noEOFCR: isLastLine && hunk.noEOFCRAdditions
184
+ }
168
185
  })) break hunkIterator;
169
186
  } else state.incrementCounts(1, 1);
170
187
  index++;
@@ -229,16 +246,21 @@ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infin
229
246
  hunk: void 0,
230
247
  collapsedBefore: 0,
231
248
  collapsedAfter: isLastLine ? collapsedLines : 0,
232
- unifiedDeletionLineIndex: unifiedLineIndex + index,
233
- unifiedAdditionLineIndex: unifiedLineIndex + index,
234
- splitLineIndex: splitLineIndex + index,
235
- additionLineIndex: additionLineIndex + index,
236
- deletionLineIndex: deletionLineIndex + index,
237
- additionLineNumber: additionLineNumber + index,
238
- deletionLineNumber: deletionLineNumber + index,
239
249
  type: "context-expanded",
240
- noEOFCRAddition: false,
241
- noEOFCRDeletion: false
250
+ deletionLine: {
251
+ lineNumber: deletionLineNumber + index,
252
+ lineIndex: deletionLineIndex + index,
253
+ noEOFCR: false,
254
+ unifiedLineIndex: unifiedLineIndex + index,
255
+ splitLineIndex: splitLineIndex + index
256
+ },
257
+ additionLine: {
258
+ unifiedLineIndex: unifiedLineIndex + index,
259
+ splitLineIndex: splitLineIndex + index,
260
+ lineIndex: additionLineIndex + index,
261
+ lineNumber: additionLineNumber + index,
262
+ noEOFCR: false
263
+ }
242
264
  })) break hunkIterator;
243
265
  } else state.incrementCounts(1, 1);
244
266
  index++;
@@ -246,7 +268,7 @@ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infin
246
268
  }
247
269
  }
248
270
  }
249
- function getExpandedRegion(isPartial, rangeSize, expandedHunks, hunkIndex) {
271
+ function getExpandedRegion(isPartial, rangeSize, expandedHunks, hunkIndex, collapsedContextThreshold) {
250
272
  rangeSize = Math.max(rangeSize, 0);
251
273
  if (rangeSize === 0 || isPartial) return {
252
274
  fromStart: 0,
@@ -254,7 +276,7 @@ function getExpandedRegion(isPartial, rangeSize, expandedHunks, hunkIndex) {
254
276
  rangeSize,
255
277
  collapsedLines: Math.max(rangeSize, 0)
256
278
  };
257
- if (expandedHunks === true) return {
279
+ if (expandedHunks === true || rangeSize <= collapsedContextThreshold) return {
258
280
  fromStart: rangeSize,
259
281
  fromEnd: 0,
260
282
  rangeSize,
@@ -317,37 +339,56 @@ function getChangeIterationRanges(state, content, diffStyle) {
317
339
  return merged;
318
340
  }
319
341
  function getChangeLineData({ hunkIndex, hunk, collapsedAfter, collapsedBefore, diffStyle, index, unifiedLineIndex, splitLineIndex, additionLineIndex, deletionLineIndex, additionLineNumber, deletionLineNumber, content, isLastContent, unifiedCount, splitCount }) {
320
- if (diffStyle === "unified") return {
342
+ const unifiedDeletionLineIndex = index < content.deletions ? unifiedLineIndex + index : void 0;
343
+ const unifiedAdditionLineIndex = diffStyle === "unified" ? index >= content.deletions ? unifiedLineIndex + index : void 0 : index < content.additions ? unifiedLineIndex + content.deletions + index : void 0;
344
+ const resolvedSplitLineIndex = diffStyle === "unified" ? splitLineIndex + (index < content.deletions ? index : index - content.deletions) : splitLineIndex + index;
345
+ const deletionLineIndexValue = index < content.deletions ? deletionLineIndex + index : void 0;
346
+ const deletionLineNumberValue = index < content.deletions ? deletionLineNumber + index : void 0;
347
+ const additionLineIndexValue = diffStyle === "unified" ? index >= content.deletions ? additionLineIndex + (index - content.deletions) : void 0 : index < content.additions ? additionLineIndex + index : void 0;
348
+ const additionLineNumberValue = diffStyle === "unified" ? index >= content.deletions ? additionLineNumber + (index - content.deletions) : void 0 : index < content.additions ? additionLineNumber + index : void 0;
349
+ const noEOFCRDeletion = diffStyle === "unified" ? isLastContent && index === content.deletions - 1 && hunk.noEOFCRDeletions : isLastContent && index === splitCount - 1 && hunk.noEOFCRDeletions;
350
+ const noEOFCRAddition = diffStyle === "unified" ? isLastContent && index === unifiedCount - 1 && hunk.noEOFCRAdditions : isLastContent && index === splitCount - 1 && hunk.noEOFCRAdditions;
351
+ const deletionLine = deletionLineIndexValue != null && deletionLineNumberValue != null && unifiedDeletionLineIndex != null ? {
352
+ lineNumber: deletionLineNumberValue,
353
+ lineIndex: deletionLineIndexValue,
354
+ noEOFCR: noEOFCRDeletion,
355
+ unifiedLineIndex: unifiedDeletionLineIndex,
356
+ splitLineIndex: resolvedSplitLineIndex
357
+ } : void 0;
358
+ const additionLine = additionLineIndexValue != null && additionLineNumberValue != null && unifiedAdditionLineIndex != null ? {
359
+ unifiedLineIndex: unifiedAdditionLineIndex,
360
+ splitLineIndex: resolvedSplitLineIndex,
361
+ lineIndex: additionLineIndexValue,
362
+ lineNumber: additionLineNumberValue,
363
+ noEOFCR: noEOFCRAddition
364
+ } : void 0;
365
+ if (deletionLine == null && additionLine != null) return {
366
+ type: "change",
367
+ hunkIndex,
368
+ hunk,
369
+ collapsedAfter,
370
+ collapsedBefore,
371
+ deletionLine: void 0,
372
+ additionLine
373
+ };
374
+ else if (deletionLine != null && additionLine == null) return {
321
375
  type: "change",
322
376
  hunkIndex,
323
377
  hunk,
324
378
  collapsedAfter,
325
379
  collapsedBefore,
326
- unifiedDeletionLineIndex: index < content.deletions ? unifiedLineIndex + index : void 0,
327
- unifiedAdditionLineIndex: index >= content.deletions ? unifiedLineIndex + index : void 0,
328
- splitLineIndex: splitLineIndex + (index < content.deletions ? index : index - content.deletions),
329
- additionLineIndex: index >= content.deletions ? additionLineIndex + (index - content.deletions) : void 0,
330
- additionLineNumber: index >= content.deletions ? additionLineNumber + (index - content.deletions) : void 0,
331
- deletionLineIndex: index < content.deletions ? deletionLineIndex + index : void 0,
332
- deletionLineNumber: index < content.deletions ? deletionLineNumber + index : void 0,
333
- noEOFCRDeletion: isLastContent && index === content.deletions - 1 && hunk.noEOFCRDeletions,
334
- noEOFCRAddition: isLastContent && index === unifiedCount - 1 && hunk.noEOFCRAdditions
380
+ deletionLine,
381
+ additionLine: void 0
335
382
  };
383
+ if (deletionLine == null || additionLine == null) throw new Error("iterateOverDiff: missing change line data");
336
384
  return {
337
385
  type: "change",
338
386
  hunkIndex,
339
387
  hunk,
340
388
  collapsedAfter,
341
389
  collapsedBefore,
342
- unifiedDeletionLineIndex: index < content.deletions ? unifiedLineIndex + index : void 0,
343
- unifiedAdditionLineIndex: index < content.additions ? unifiedLineIndex + content.deletions + index : void 0,
344
- splitLineIndex: splitLineIndex + index,
345
- additionLineIndex: index < content.additions ? additionLineIndex + index : void 0,
346
- additionLineNumber: index < content.additions ? additionLineNumber + index : void 0,
347
- deletionLineIndex: index < content.deletions ? deletionLineIndex + index : void 0,
348
- deletionLineNumber: index < content.deletions ? deletionLineNumber + index : void 0,
349
- noEOFCRDeletion: isLastContent && index === splitCount - 1 && hunk.noEOFCRDeletions,
350
- noEOFCRAddition: isLastContent && index === splitCount - 1 && hunk.noEOFCRAdditions
390
+ deletionLine,
391
+ additionLine
351
392
  };
352
393
  }
353
394