@pierre/diffs 1.3.0-beta.1 → 1.3.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 (701) hide show
  1. package/README.md +15 -15
  2. package/dist/components/CodeView.d.ts +103 -15
  3. package/dist/components/CodeView.d.ts.map +1 -1
  4. package/dist/components/CodeView.js +349 -50
  5. package/dist/components/CodeView.js.map +1 -1
  6. package/dist/components/File.d.ts +10 -7
  7. package/dist/components/File.d.ts.map +1 -1
  8. package/dist/components/File.js +99 -40
  9. package/dist/components/File.js.map +1 -1
  10. package/dist/components/FileDiff.d.ts +76 -36
  11. package/dist/components/FileDiff.d.ts.map +1 -1
  12. package/dist/components/FileDiff.js +364 -96
  13. package/dist/components/FileDiff.js.map +1 -1
  14. package/dist/components/FileStream.d.ts +0 -1
  15. package/dist/components/FileStream.d.ts.map +1 -1
  16. package/dist/components/FileStream.js +10 -7
  17. package/dist/components/FileStream.js.map +1 -1
  18. package/dist/components/UnresolvedFile.d.ts +3 -3
  19. package/dist/components/UnresolvedFile.d.ts.map +1 -1
  20. package/dist/components/UnresolvedFile.js +8 -6
  21. package/dist/components/UnresolvedFile.js.map +1 -1
  22. package/dist/components/VirtualizedFile.d.ts +8 -4
  23. package/dist/components/VirtualizedFile.d.ts.map +1 -1
  24. package/dist/components/VirtualizedFile.js +118 -44
  25. package/dist/components/VirtualizedFile.js.map +1 -1
  26. package/dist/components/VirtualizedFileDiff.d.ts +35 -9
  27. package/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
  28. package/dist/components/VirtualizedFileDiff.js +367 -120
  29. package/dist/components/VirtualizedFileDiff.js.map +1 -1
  30. package/dist/components/Virtualizer.d.ts +4 -1
  31. package/dist/components/Virtualizer.d.ts.map +1 -1
  32. package/dist/components/Virtualizer.js +47 -29
  33. package/dist/components/Virtualizer.js.map +1 -1
  34. package/dist/components/VirtulizerDevelopment.d.ts.map +1 -1
  35. package/dist/components/web-components.d.ts.map +1 -1
  36. package/dist/components/web-components.js +2 -3
  37. package/dist/components/web-components.js.map +1 -1
  38. package/dist/constants.d.ts +5 -2
  39. package/dist/constants.d.ts.map +1 -1
  40. package/dist/constants.js +5 -2
  41. package/dist/constants.js.map +1 -1
  42. package/dist/editor/command.d.ts +3 -2
  43. package/dist/editor/command.d.ts.map +1 -1
  44. package/dist/editor/command.js +29 -6
  45. package/dist/editor/command.js.map +1 -1
  46. package/dist/editor/editStack.d.ts +7 -2
  47. package/dist/editor/editStack.d.ts.map +1 -1
  48. package/dist/editor/editStack.js +4 -4
  49. package/dist/editor/editStack.js.map +1 -1
  50. package/dist/editor/editor.d.ts +91 -8
  51. package/dist/editor/editor.d.ts.map +1 -1
  52. package/dist/editor/editor.js +1926 -704
  53. package/dist/editor/editor.js.map +1 -1
  54. package/dist/editor/editor2.js +6 -0
  55. package/dist/editor/editor2.js.map +1 -0
  56. package/dist/editor/index.d.ts +4 -2
  57. package/dist/editor/index.js +1 -2
  58. package/dist/editor/languages.d.ts +26 -0
  59. package/dist/editor/languages.d.ts.map +1 -0
  60. package/dist/editor/languages.js +363 -0
  61. package/dist/editor/languages.js.map +1 -0
  62. package/dist/editor/lineAnnotations.d.ts +2 -1
  63. package/dist/editor/lineAnnotations.d.ts.map +1 -1
  64. package/dist/editor/lineAnnotations.js +193 -13
  65. package/dist/editor/lineAnnotations.js.map +1 -1
  66. package/dist/editor/marker.d.ts +38 -0
  67. package/dist/editor/marker.d.ts.map +1 -0
  68. package/dist/editor/marker.js +245 -0
  69. package/dist/editor/marker.js.map +1 -0
  70. package/dist/editor/matchBrackets.d.ts +9 -0
  71. package/dist/editor/matchBrackets.d.ts.map +1 -0
  72. package/dist/editor/matchBrackets.js +138 -0
  73. package/dist/editor/matchBrackets.js.map +1 -0
  74. package/dist/editor/pieceTable.d.ts +15 -7
  75. package/dist/editor/pieceTable.d.ts.map +1 -1
  76. package/dist/editor/pieceTable.js +252 -171
  77. package/dist/editor/pieceTable.js.map +1 -1
  78. package/dist/editor/platform.d.ts +8 -1
  79. package/dist/editor/platform.d.ts.map +1 -1
  80. package/dist/editor/platform.js +18 -5
  81. package/dist/editor/platform.js.map +1 -1
  82. package/dist/editor/popover.d.ts +65 -0
  83. package/dist/editor/popover.d.ts.map +1 -0
  84. package/dist/editor/popover.js +187 -0
  85. package/dist/editor/popover.js.map +1 -0
  86. package/dist/editor/searchPanel.d.ts +17 -7
  87. package/dist/editor/searchPanel.d.ts.map +1 -1
  88. package/dist/editor/searchPanel.js +268 -169
  89. package/dist/editor/searchPanel.js.map +1 -1
  90. package/dist/editor/selection.d.ts +100 -15
  91. package/dist/editor/selection.d.ts.map +1 -1
  92. package/dist/editor/selection.js +862 -136
  93. package/dist/editor/selection.js.map +1 -1
  94. package/dist/editor/selectionAction.d.ts +46 -0
  95. package/dist/editor/selectionAction.d.ts.map +1 -0
  96. package/dist/editor/selectionAction.js +64 -0
  97. package/dist/editor/selectionAction.js.map +1 -0
  98. package/dist/editor/sprite.d.ts +8 -0
  99. package/dist/editor/sprite.d.ts.map +1 -0
  100. package/dist/editor/sprite.js +45 -0
  101. package/dist/editor/sprite.js.map +1 -0
  102. package/dist/editor/stateStorage.d.ts +15 -0
  103. package/dist/editor/stateStorage.d.ts.map +1 -0
  104. package/dist/editor/stateStorage.js +65 -0
  105. package/dist/editor/stateStorage.js.map +1 -0
  106. package/dist/editor/textDocument.d.ts +21 -83
  107. package/dist/editor/textDocument.d.ts.map +1 -1
  108. package/dist/editor/textDocument.js +117 -48
  109. package/dist/editor/textDocument.js.map +1 -1
  110. package/dist/editor/textMeasure.d.ts +31 -2
  111. package/dist/editor/textMeasure.d.ts.map +1 -1
  112. package/dist/editor/textMeasure.js +122 -21
  113. package/dist/editor/textMeasure.js.map +1 -1
  114. package/dist/editor/{tokenzier.d.ts → tokenizer.d.ts} +16 -12
  115. package/dist/editor/tokenizer.d.ts.map +1 -0
  116. package/dist/editor/tokenizer.js +513 -0
  117. package/dist/editor/tokenizer.js.map +1 -0
  118. package/dist/editor/utils.d.ts +6 -1
  119. package/dist/editor/utils.d.ts.map +1 -1
  120. package/dist/editor/utils.js +34 -3
  121. package/dist/editor/utils.js.map +1 -1
  122. package/dist/highlighter/languages/areLanguagesAttached.d.ts.map +1 -1
  123. package/dist/highlighter/languages/areLanguagesAttached.js +1 -2
  124. package/dist/highlighter/languages/areLanguagesAttached.js.map +1 -1
  125. package/dist/highlighter/languages/attachResolvedLanguages.d.ts +0 -2
  126. package/dist/highlighter/languages/attachResolvedLanguages.d.ts.map +1 -1
  127. package/dist/highlighter/languages/attachResolvedLanguages.js +1 -2
  128. package/dist/highlighter/languages/attachResolvedLanguages.js.map +1 -1
  129. package/dist/highlighter/languages/cleanUpResolvedLanguages.d.ts.map +1 -1
  130. package/dist/highlighter/languages/cleanUpResolvedLanguages.js +1 -2
  131. package/dist/highlighter/languages/cleanUpResolvedLanguages.js.map +1 -1
  132. package/dist/highlighter/languages/constants.d.ts +0 -1
  133. package/dist/highlighter/languages/constants.d.ts.map +1 -1
  134. package/dist/highlighter/languages/constants.js +1 -1
  135. package/dist/highlighter/languages/constants.js.map +1 -1
  136. package/dist/highlighter/languages/getResolvedLanguages.d.ts +0 -2
  137. package/dist/highlighter/languages/getResolvedLanguages.d.ts.map +1 -1
  138. package/dist/highlighter/languages/getResolvedLanguages.js +1 -2
  139. package/dist/highlighter/languages/getResolvedLanguages.js.map +1 -1
  140. package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts +0 -2
  141. package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts.map +1 -1
  142. package/dist/highlighter/languages/getResolvedOrResolveLanguage.js +1 -2
  143. package/dist/highlighter/languages/getResolvedOrResolveLanguage.js.map +1 -1
  144. package/dist/highlighter/languages/hasResolvedLanguages.d.ts.map +1 -1
  145. package/dist/highlighter/languages/hasResolvedLanguages.js +1 -2
  146. package/dist/highlighter/languages/hasResolvedLanguages.js.map +1 -1
  147. package/dist/highlighter/languages/registerCustomLanguage.d.ts +0 -1
  148. package/dist/highlighter/languages/registerCustomLanguage.d.ts.map +1 -1
  149. package/dist/highlighter/languages/registerCustomLanguage.js +1 -2
  150. package/dist/highlighter/languages/registerCustomLanguage.js.map +1 -1
  151. package/dist/highlighter/languages/resolveLanguage.d.ts +0 -2
  152. package/dist/highlighter/languages/resolveLanguage.d.ts.map +1 -1
  153. package/dist/highlighter/languages/resolveLanguage.js +4 -5
  154. package/dist/highlighter/languages/resolveLanguage.js.map +1 -1
  155. package/dist/highlighter/languages/resolveLanguages.d.ts +0 -2
  156. package/dist/highlighter/languages/resolveLanguages.d.ts.map +1 -1
  157. package/dist/highlighter/languages/resolveLanguages.js +1 -2
  158. package/dist/highlighter/languages/resolveLanguages.js.map +1 -1
  159. package/dist/highlighter/shared_highlighter.d.ts.map +1 -1
  160. package/dist/highlighter/shared_highlighter.js +6 -33
  161. package/dist/highlighter/shared_highlighter.js.map +1 -1
  162. package/dist/highlighter/themes/areThemesAttached.d.ts.map +1 -1
  163. package/dist/highlighter/themes/areThemesAttached.js +1 -2
  164. package/dist/highlighter/themes/areThemesAttached.js.map +1 -1
  165. package/dist/highlighter/themes/attachResolvedThemes.d.ts.map +1 -1
  166. package/dist/highlighter/themes/attachResolvedThemes.js +5 -5
  167. package/dist/highlighter/themes/attachResolvedThemes.js.map +1 -1
  168. package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts.map +1 -1
  169. package/dist/highlighter/themes/cleanUpResolvedThemes.js +4 -4
  170. package/dist/highlighter/themes/cleanUpResolvedThemes.js.map +1 -1
  171. package/dist/highlighter/themes/constants.d.ts +1 -7
  172. package/dist/highlighter/themes/constants.d.ts.map +1 -1
  173. package/dist/highlighter/themes/constants.js +2 -5
  174. package/dist/highlighter/themes/constants.js.map +1 -1
  175. package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts.map +1 -1
  176. package/dist/highlighter/themes/getResolvedOrResolveTheme.js +3 -4
  177. package/dist/highlighter/themes/getResolvedOrResolveTheme.js.map +1 -1
  178. package/dist/highlighter/themes/getResolvedThemes.d.ts.map +1 -1
  179. package/dist/highlighter/themes/getResolvedThemes.js +3 -10
  180. package/dist/highlighter/themes/getResolvedThemes.js.map +1 -1
  181. package/dist/highlighter/themes/hasResolvedThemes.d.ts.map +1 -1
  182. package/dist/highlighter/themes/hasResolvedThemes.js +3 -5
  183. package/dist/highlighter/themes/hasResolvedThemes.js.map +1 -1
  184. package/dist/highlighter/themes/registerCustomCSSVariableTheme.d.ts.map +1 -1
  185. package/dist/highlighter/themes/registerCustomCSSVariableTheme.js +2 -3
  186. package/dist/highlighter/themes/registerCustomCSSVariableTheme.js.map +1 -1
  187. package/dist/highlighter/themes/registerCustomTheme.d.ts +5 -3
  188. package/dist/highlighter/themes/registerCustomTheme.d.ts.map +1 -1
  189. package/dist/highlighter/themes/registerCustomTheme.js +16 -7
  190. package/dist/highlighter/themes/registerCustomTheme.js.map +1 -1
  191. package/dist/highlighter/themes/resolveTheme.d.ts.map +1 -1
  192. package/dist/highlighter/themes/resolveTheme.js +7 -29
  193. package/dist/highlighter/themes/resolveTheme.js.map +1 -1
  194. package/dist/highlighter/themes/resolveThemes.d.ts.map +1 -1
  195. package/dist/highlighter/themes/resolveThemes.js +6 -14
  196. package/dist/highlighter/themes/resolveThemes.js.map +1 -1
  197. package/dist/highlighter/themes/themeResolution.d.ts +8 -0
  198. package/dist/highlighter/themes/themeResolution.d.ts.map +1 -0
  199. package/dist/highlighter/themes/themeResolution.js +21 -0
  200. package/dist/highlighter/themes/themeResolution.js.map +1 -0
  201. package/dist/highlighter/themes/themeResolver.d.ts +8 -0
  202. package/dist/highlighter/themes/themeResolver.d.ts.map +1 -0
  203. package/dist/highlighter/themes/themeResolver.js +7 -0
  204. package/dist/highlighter/themes/themeResolver.js.map +1 -0
  205. package/dist/index.d.ts +16 -14
  206. package/dist/index.js +13 -12
  207. package/dist/managers/InteractionManager.d.ts +7 -0
  208. package/dist/managers/InteractionManager.d.ts.map +1 -1
  209. package/dist/managers/InteractionManager.js +26 -5
  210. package/dist/managers/InteractionManager.js.map +1 -1
  211. package/dist/managers/ResizeManager.d.ts +10 -2
  212. package/dist/managers/ResizeManager.d.ts.map +1 -1
  213. package/dist/managers/ResizeManager.js +35 -15
  214. package/dist/managers/ResizeManager.js.map +1 -1
  215. package/dist/managers/ScrollSyncManager.d.ts.map +1 -1
  216. package/dist/managers/ScrollSyncManager.js +1 -1
  217. package/dist/managers/ScrollSyncManager.js.map +1 -1
  218. package/dist/managers/UniversalRenderingManager.d.ts +2 -1
  219. package/dist/managers/UniversalRenderingManager.d.ts.map +1 -1
  220. package/dist/managers/UniversalRenderingManager.js +8 -3
  221. package/dist/managers/UniversalRenderingManager.js.map +1 -1
  222. package/dist/node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.d.ts +228 -0
  223. package/dist/node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.d.ts.map +1 -0
  224. package/dist/node_modules/.pnpm/@types_unist@3.0.3/node_modules/@types/unist/index.d.ts +84 -0
  225. package/dist/node_modules/.pnpm/@types_unist@3.0.3/node_modules/@types/unist/index.d.ts.map +1 -0
  226. package/dist/react/CodeView.d.ts +26 -2
  227. package/dist/react/CodeView.d.ts.map +1 -1
  228. package/dist/react/CodeView.js +90 -30
  229. package/dist/react/CodeView.js.map +1 -1
  230. package/dist/react/EditContext.d.ts +15 -0
  231. package/dist/react/EditContext.d.ts.map +1 -0
  232. package/dist/react/EditContext.js +23 -0
  233. package/dist/react/EditContext.js.map +1 -0
  234. package/dist/react/File.d.ts +1 -0
  235. package/dist/react/File.d.ts.map +1 -1
  236. package/dist/react/File.js +4 -6
  237. package/dist/react/File.js.map +1 -1
  238. package/dist/react/FileDiff.d.ts +1 -0
  239. package/dist/react/FileDiff.d.ts.map +1 -1
  240. package/dist/react/FileDiff.js +4 -6
  241. package/dist/react/FileDiff.js.map +1 -1
  242. package/dist/react/MultiFileDiff.d.ts +4 -4
  243. package/dist/react/MultiFileDiff.d.ts.map +1 -1
  244. package/dist/react/MultiFileDiff.js +4 -6
  245. package/dist/react/MultiFileDiff.js.map +1 -1
  246. package/dist/react/PatchDiff.d.ts +1 -0
  247. package/dist/react/PatchDiff.d.ts.map +1 -1
  248. package/dist/react/PatchDiff.js +4 -6
  249. package/dist/react/PatchDiff.js.map +1 -1
  250. package/dist/react/UnresolvedFile.d.ts +2 -1
  251. package/dist/react/UnresolvedFile.d.ts.map +1 -1
  252. package/dist/react/UnresolvedFile.js +4 -6
  253. package/dist/react/UnresolvedFile.js.map +1 -1
  254. package/dist/react/Virtualizer.d.ts.map +1 -1
  255. package/dist/react/Virtualizer.js +2 -5
  256. package/dist/react/Virtualizer.js.map +1 -1
  257. package/dist/react/WorkerPoolContext.d.ts +0 -1
  258. package/dist/react/WorkerPoolContext.d.ts.map +1 -1
  259. package/dist/react/WorkerPoolContext.js +2 -5
  260. package/dist/react/WorkerPoolContext.js.map +1 -1
  261. package/dist/react/constants.d.ts.map +1 -1
  262. package/dist/react/constants.js +1 -1
  263. package/dist/react/constants.js.map +1 -1
  264. package/dist/react/index.d.ts +3 -3
  265. package/dist/react/index.js +2 -3
  266. package/dist/react/jsx.d.ts +0 -1
  267. package/dist/react/jsx.d.ts.map +1 -1
  268. package/dist/react/types.d.ts +2 -0
  269. package/dist/react/types.d.ts.map +1 -1
  270. package/dist/react/types.js +1 -0
  271. package/dist/react/utils/renderDiffChildren.d.ts +2 -0
  272. package/dist/react/utils/renderDiffChildren.d.ts.map +1 -1
  273. package/dist/react/utils/renderDiffChildren.js +18 -11
  274. package/dist/react/utils/renderDiffChildren.js.map +1 -1
  275. package/dist/react/utils/renderFileChildren.d.ts +2 -0
  276. package/dist/react/utils/renderFileChildren.d.ts.map +1 -1
  277. package/dist/react/utils/renderFileChildren.js +18 -11
  278. package/dist/react/utils/renderFileChildren.js.map +1 -1
  279. package/dist/react/utils/templateRender.d.ts.map +1 -1
  280. package/dist/react/utils/templateRender.js +1 -2
  281. package/dist/react/utils/templateRender.js.map +1 -1
  282. package/dist/react/utils/useFileDiffInstance.d.ts.map +1 -1
  283. package/dist/react/utils/useFileDiffInstance.js +15 -18
  284. package/dist/react/utils/useFileDiffInstance.js.map +1 -1
  285. package/dist/react/utils/useFileInstance.d.ts.map +1 -1
  286. package/dist/react/utils/useFileInstance.js +2 -3
  287. package/dist/react/utils/useFileInstance.js.map +1 -1
  288. package/dist/react/utils/useStableCallback.d.ts.map +1 -1
  289. package/dist/react/utils/useStableCallback.js +1 -2
  290. package/dist/react/utils/useStableCallback.js.map +1 -1
  291. package/dist/react/utils/useUnresolvedFileInstance.d.ts.map +1 -1
  292. package/dist/react/utils/useUnresolvedFileInstance.js +10 -11
  293. package/dist/react/utils/useUnresolvedFileInstance.js.map +1 -1
  294. package/dist/renderers/DiffHunksRenderer.d.ts +30 -4
  295. package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
  296. package/dist/renderers/DiffHunksRenderer.js +313 -45
  297. package/dist/renderers/DiffHunksRenderer.js.map +1 -1
  298. package/dist/renderers/FileRenderer.d.ts +7 -6
  299. package/dist/renderers/FileRenderer.d.ts.map +1 -1
  300. package/dist/renderers/FileRenderer.js +113 -56
  301. package/dist/renderers/FileRenderer.js.map +1 -1
  302. package/dist/renderers/UnresolvedFileHunksRenderer.d.ts +1 -2
  303. package/dist/renderers/UnresolvedFileHunksRenderer.d.ts.map +1 -1
  304. package/dist/renderers/UnresolvedFileHunksRenderer.js +1 -2
  305. package/dist/renderers/UnresolvedFileHunksRenderer.js.map +1 -1
  306. package/dist/shiki-stream/index.js +1 -2
  307. package/dist/shiki-stream/stream.d.ts +0 -1
  308. package/dist/shiki-stream/stream.d.ts.map +1 -1
  309. package/dist/shiki-stream/stream.js +1 -2
  310. package/dist/shiki-stream/stream.js.map +1 -1
  311. package/dist/shiki-stream/tokenizer.d.ts.map +1 -1
  312. package/dist/shiki-stream/tokenizer.js +1 -1
  313. package/dist/shiki-stream/tokenizer.js.map +1 -1
  314. package/dist/shiki-stream/types.d.ts +0 -1
  315. package/dist/shiki-stream/types.d.ts.map +1 -1
  316. package/dist/sprite.d.ts.map +1 -1
  317. package/dist/sprite.js +1 -1
  318. package/dist/ssr/FileDiffReact.d.ts.map +1 -1
  319. package/dist/ssr/FileDiffReact.js +4 -7
  320. package/dist/ssr/FileDiffReact.js.map +1 -1
  321. package/dist/ssr/index.d.ts +2 -2
  322. package/dist/ssr/index.js +1 -2
  323. package/dist/ssr/preloadDiffs.d.ts +12 -11
  324. package/dist/ssr/preloadDiffs.d.ts.map +1 -1
  325. package/dist/ssr/preloadDiffs.js +16 -9
  326. package/dist/ssr/preloadDiffs.js.map +1 -1
  327. package/dist/ssr/preloadFile.d.ts.map +1 -1
  328. package/dist/ssr/preloadFile.js +1 -2
  329. package/dist/ssr/preloadFile.js.map +1 -1
  330. package/dist/ssr/preloadPatchFile.d.ts.map +1 -1
  331. package/dist/ssr/preloadPatchFile.js +2 -3
  332. package/dist/ssr/preloadPatchFile.js.map +1 -1
  333. package/dist/ssr/renderHTML.d.ts +1 -1
  334. package/dist/ssr/renderHTML.d.ts.map +1 -1
  335. package/dist/ssr/renderHTML.js +1 -2
  336. package/dist/ssr/renderHTML.js.map +1 -1
  337. package/dist/string-import.d.ts +4 -0
  338. package/dist/string-import.d.ts.map +1 -1
  339. package/dist/style.js +3 -3
  340. package/dist/style.js.map +1 -1
  341. package/dist/types.d.ts +272 -31
  342. package/dist/types.d.ts.map +1 -1
  343. package/dist/utils/applyLineTextWithNewline.d.ts +5 -0
  344. package/dist/utils/applyLineTextWithNewline.d.ts.map +1 -0
  345. package/dist/utils/applyLineTextWithNewline.js +11 -0
  346. package/dist/utils/applyLineTextWithNewline.js.map +1 -0
  347. package/dist/utils/areDiffLineAnnotationsEqual.d.ts.map +1 -1
  348. package/dist/utils/areDiffLineAnnotationsEqual.js +1 -1
  349. package/dist/utils/areDiffLineAnnotationsEqual.js.map +1 -1
  350. package/dist/utils/areDiffRenderOptionsEqual.d.ts.map +1 -1
  351. package/dist/utils/areDiffRenderOptionsEqual.js +1 -2
  352. package/dist/utils/areDiffRenderOptionsEqual.js.map +1 -1
  353. package/dist/utils/areDiffTargetsEqual.d.ts.map +1 -1
  354. package/dist/utils/areDiffTargetsEqual.js +1 -1
  355. package/dist/utils/areDiffTargetsEqual.js.map +1 -1
  356. package/dist/utils/areFileRenderOptionsEqual.d.ts.map +1 -1
  357. package/dist/utils/areFileRenderOptionsEqual.js +1 -2
  358. package/dist/utils/areFileRenderOptionsEqual.js.map +1 -1
  359. package/dist/utils/areFilesEqual.d.ts.map +1 -1
  360. package/dist/utils/areFilesEqual.js +1 -1
  361. package/dist/utils/areFilesEqual.js.map +1 -1
  362. package/dist/utils/areHunkDataEqual.d.ts.map +1 -1
  363. package/dist/utils/areHunkDataEqual.js +2 -2
  364. package/dist/utils/areHunkDataEqual.js.map +1 -1
  365. package/dist/utils/areLineAnnotationsEqual.d.ts.map +1 -1
  366. package/dist/utils/areLineAnnotationsEqual.js +1 -1
  367. package/dist/utils/areLineAnnotationsEqual.js.map +1 -1
  368. package/dist/utils/areManagedSnapshotsEqual.d.ts +2 -2
  369. package/dist/utils/areManagedSnapshotsEqual.d.ts.map +1 -1
  370. package/dist/utils/areManagedSnapshotsEqual.js +6 -1
  371. package/dist/utils/areManagedSnapshotsEqual.js.map +1 -1
  372. package/dist/utils/areMergeConflictActionsEqual.d.ts.map +1 -1
  373. package/dist/utils/areMergeConflictActionsEqual.js +1 -1
  374. package/dist/utils/areMergeConflictActionsEqual.js.map +1 -1
  375. package/dist/utils/areObjectsEqual.d.ts.map +1 -1
  376. package/dist/utils/areObjectsEqual.js +1 -1
  377. package/dist/utils/areObjectsEqual.js.map +1 -1
  378. package/dist/utils/areOptionsEqual.d.ts +0 -2
  379. package/dist/utils/areOptionsEqual.d.ts.map +1 -1
  380. package/dist/utils/areOptionsEqual.js +1 -2
  381. package/dist/utils/areOptionsEqual.js.map +1 -1
  382. package/dist/utils/arePrePropertiesEqual.d.ts.map +1 -1
  383. package/dist/utils/arePrePropertiesEqual.js +1 -1
  384. package/dist/utils/arePrePropertiesEqual.js.map +1 -1
  385. package/dist/utils/areRenderRangesEqual.d.ts.map +1 -1
  386. package/dist/utils/areRenderRangesEqual.js +1 -1
  387. package/dist/utils/areRenderRangesEqual.js.map +1 -1
  388. package/dist/utils/areSelectionPointsEqual.d.ts.map +1 -1
  389. package/dist/utils/areSelectionPointsEqual.js +1 -1
  390. package/dist/utils/areSelectionPointsEqual.js.map +1 -1
  391. package/dist/utils/areSelectionsEqual.d.ts.map +1 -1
  392. package/dist/utils/areSelectionsEqual.js +1 -1
  393. package/dist/utils/areSelectionsEqual.js.map +1 -1
  394. package/dist/utils/areThemesEqual.d.ts.map +1 -1
  395. package/dist/utils/areThemesEqual.js +1 -1
  396. package/dist/utils/areThemesEqual.js.map +1 -1
  397. package/dist/utils/areVirtualWindowSpecsEqual.d.ts.map +1 -1
  398. package/dist/utils/areVirtualWindowSpecsEqual.js +1 -1
  399. package/dist/utils/areVirtualWindowSpecsEqual.js.map +1 -1
  400. package/dist/utils/areWorkerStatsEqual.d.ts +0 -2
  401. package/dist/utils/areWorkerStatsEqual.d.ts.map +1 -1
  402. package/dist/utils/areWorkerStatsEqual.js +1 -1
  403. package/dist/utils/areWorkerStatsEqual.js.map +1 -1
  404. package/dist/utils/awaitWithTimeout.d.ts +5 -0
  405. package/dist/utils/awaitWithTimeout.d.ts.map +1 -0
  406. package/dist/utils/awaitWithTimeout.js +15 -0
  407. package/dist/utils/awaitWithTimeout.js.map +1 -0
  408. package/dist/utils/cleanLastNewline.d.ts.map +1 -1
  409. package/dist/utils/cleanLastNewline.js +1 -1
  410. package/dist/utils/cleanLastNewline.js.map +1 -1
  411. package/dist/utils/cloneFileDiffMetadata.d.ts +7 -0
  412. package/dist/utils/cloneFileDiffMetadata.d.ts.map +1 -0
  413. package/dist/utils/cloneFileDiffMetadata.js +16 -0
  414. package/dist/utils/cloneFileDiffMetadata.js.map +1 -0
  415. package/dist/utils/computeEstimatedDiffHeights.d.ts +3 -1
  416. package/dist/utils/computeEstimatedDiffHeights.d.ts.map +1 -1
  417. package/dist/utils/computeEstimatedDiffHeights.js +18 -23
  418. package/dist/utils/computeEstimatedDiffHeights.js.map +1 -1
  419. package/dist/utils/computeFileOffsets.d.ts +9 -1
  420. package/dist/utils/computeFileOffsets.d.ts.map +1 -1
  421. package/dist/utils/computeFileOffsets.js +20 -2
  422. package/dist/utils/computeFileOffsets.js.map +1 -1
  423. package/dist/utils/computeVirtualFileMetrics.d.ts.map +1 -1
  424. package/dist/utils/computeVirtualFileMetrics.js +1 -2
  425. package/dist/utils/computeVirtualFileMetrics.js.map +1 -1
  426. package/dist/utils/createAnnotationElement.d.ts +1 -1
  427. package/dist/utils/createAnnotationElement.d.ts.map +1 -1
  428. package/dist/utils/createAnnotationElement.js +1 -2
  429. package/dist/utils/createAnnotationElement.js.map +1 -1
  430. package/dist/utils/createAnnotationWrapperNode.d.ts.map +1 -1
  431. package/dist/utils/createAnnotationWrapperNode.js +1 -1
  432. package/dist/utils/createAnnotationWrapperNode.js.map +1 -1
  433. package/dist/utils/createCodeViewHeaderFooterHostElement.d.ts +5 -0
  434. package/dist/utils/createCodeViewHeaderFooterHostElement.d.ts.map +1 -0
  435. package/dist/utils/createCodeViewHeaderFooterHostElement.js +19 -0
  436. package/dist/utils/createCodeViewHeaderFooterHostElement.js.map +1 -0
  437. package/dist/utils/createContentColumn.d.ts +1 -1
  438. package/dist/utils/createContentColumn.d.ts.map +1 -1
  439. package/dist/utils/createContentColumn.js +1 -2
  440. package/dist/utils/createContentColumn.js.map +1 -1
  441. package/dist/utils/createEmptyRowBuffer.d.ts +1 -1
  442. package/dist/utils/createEmptyRowBuffer.d.ts.map +1 -1
  443. package/dist/utils/createEmptyRowBuffer.js +1 -2
  444. package/dist/utils/createEmptyRowBuffer.js.map +1 -1
  445. package/dist/utils/createFileHeaderElement.d.ts +1 -1
  446. package/dist/utils/createFileHeaderElement.d.ts.map +1 -1
  447. package/dist/utils/createFileHeaderElement.js +6 -3
  448. package/dist/utils/createFileHeaderElement.js.map +1 -1
  449. package/dist/utils/createGutterUtilityContentNode.d.ts.map +1 -1
  450. package/dist/utils/createGutterUtilityContentNode.js +1 -1
  451. package/dist/utils/createGutterUtilityContentNode.js.map +1 -1
  452. package/dist/utils/createGutterUtilityElement.d.ts +1 -1
  453. package/dist/utils/createGutterUtilityElement.d.ts.map +1 -1
  454. package/dist/utils/createGutterUtilityElement.js +1 -2
  455. package/dist/utils/createGutterUtilityElement.js.map +1 -1
  456. package/dist/utils/createNoNewlineElement.d.ts +1 -1
  457. package/dist/utils/createNoNewlineElement.d.ts.map +1 -1
  458. package/dist/utils/createNoNewlineElement.js +1 -2
  459. package/dist/utils/createNoNewlineElement.js.map +1 -1
  460. package/dist/utils/createPreElement.d.ts +1 -1
  461. package/dist/utils/createPreElement.d.ts.map +1 -1
  462. package/dist/utils/createPreElement.js +1 -3
  463. package/dist/utils/createPreElement.js.map +1 -1
  464. package/dist/utils/createRowNodes.d.ts.map +1 -1
  465. package/dist/utils/createRowNodes.js +1 -1
  466. package/dist/utils/createRowNodes.js.map +1 -1
  467. package/dist/utils/createSeparator.d.ts +1 -1
  468. package/dist/utils/createSeparator.d.ts.map +1 -1
  469. package/dist/utils/createSeparator.js +1 -2
  470. package/dist/utils/createSeparator.js.map +1 -1
  471. package/dist/utils/createSpanNodeFromToken.d.ts.map +1 -1
  472. package/dist/utils/createSpanNodeFromToken.js +1 -2
  473. package/dist/utils/createSpanNodeFromToken.js.map +1 -1
  474. package/dist/utils/createStyleElement.d.ts +1 -1
  475. package/dist/utils/createStyleElement.d.ts.map +1 -1
  476. package/dist/utils/createStyleElement.js +1 -2
  477. package/dist/utils/createStyleElement.js.map +1 -1
  478. package/dist/utils/createTransformerWithState.d.ts.map +1 -1
  479. package/dist/utils/createTransformerWithState.js +1 -2
  480. package/dist/utils/createTransformerWithState.js.map +1 -1
  481. package/dist/utils/createUnsafeCSSStyleNode.d.ts.map +1 -1
  482. package/dist/utils/createUnsafeCSSStyleNode.js +1 -2
  483. package/dist/utils/createUnsafeCSSStyleNode.js.map +1 -1
  484. package/dist/utils/createWindowFromScrollPosition.d.ts.map +1 -1
  485. package/dist/utils/createWindowFromScrollPosition.js +5 -5
  486. package/dist/utils/createWindowFromScrollPosition.js.map +1 -1
  487. package/dist/utils/cssWrappers.d.ts.map +1 -1
  488. package/dist/utils/cssWrappers.js +2 -3
  489. package/dist/utils/cssWrappers.js.map +1 -1
  490. package/dist/utils/detachString.d.ts.map +1 -1
  491. package/dist/utils/detachString.js +1 -1
  492. package/dist/utils/detachString.js.map +1 -1
  493. package/dist/utils/diffAcceptRejectHunk.d.ts.map +1 -1
  494. package/dist/utils/diffAcceptRejectHunk.js +1 -2
  495. package/dist/utils/diffAcceptRejectHunk.js.map +1 -1
  496. package/dist/utils/editSessionHunks.d.ts +84 -0
  497. package/dist/utils/editSessionHunks.d.ts.map +1 -0
  498. package/dist/utils/editSessionHunks.js +366 -0
  499. package/dist/utils/editSessionHunks.js.map +1 -0
  500. package/dist/utils/formatCSSVariablePrefix.d.ts.map +1 -1
  501. package/dist/utils/formatCSSVariablePrefix.js +1 -1
  502. package/dist/utils/formatCSSVariablePrefix.js.map +1 -1
  503. package/dist/utils/getDiffFileInput.d.ts +14 -0
  504. package/dist/utils/getDiffFileInput.d.ts.map +1 -0
  505. package/dist/utils/getDiffFileInput.js +24 -0
  506. package/dist/utils/getDiffFileInput.js.map +1 -0
  507. package/dist/utils/getDiffHunksRendererOptions.d.ts.map +1 -1
  508. package/dist/utils/getDiffHunksRendererOptions.js +2 -1
  509. package/dist/utils/getDiffHunksRendererOptions.js.map +1 -1
  510. package/dist/utils/getFileRendererOptions.d.ts.map +1 -1
  511. package/dist/utils/getFileRendererOptions.js +1 -1
  512. package/dist/utils/getFileRendererOptions.js.map +1 -1
  513. package/dist/utils/getFiletypeFromFileName.d.ts.map +1 -1
  514. package/dist/utils/getFiletypeFromFileName.js +3 -1
  515. package/dist/utils/getFiletypeFromFileName.js.map +1 -1
  516. package/dist/utils/getHighlighterOptions.d.ts.map +1 -1
  517. package/dist/utils/getHighlighterOptions.js +1 -2
  518. package/dist/utils/getHighlighterOptions.js.map +1 -1
  519. package/dist/utils/getHighlighterThemeStyles.d.ts.map +1 -1
  520. package/dist/utils/getHighlighterThemeStyles.js +17 -14
  521. package/dist/utils/getHighlighterThemeStyles.js.map +1 -1
  522. package/dist/utils/getHunkSeparatorSlotName.d.ts.map +1 -1
  523. package/dist/utils/getHunkSeparatorSlotName.js +1 -1
  524. package/dist/utils/getHunkSeparatorSlotName.js.map +1 -1
  525. package/dist/utils/getIconForType.d.ts.map +1 -1
  526. package/dist/utils/getIconForType.js +1 -1
  527. package/dist/utils/getIconForType.js.map +1 -1
  528. package/dist/utils/getLineAnnotationName.d.ts.map +1 -1
  529. package/dist/utils/getLineAnnotationName.js +1 -1
  530. package/dist/utils/getLineAnnotationName.js.map +1 -1
  531. package/dist/utils/getLineEndingType.d.ts.map +1 -1
  532. package/dist/utils/getLineEndingType.js +1 -1
  533. package/dist/utils/getLineEndingType.js.map +1 -1
  534. package/dist/utils/getLineNodes.d.ts +1 -1
  535. package/dist/utils/getLineNodes.d.ts.map +1 -1
  536. package/dist/utils/getLineNodes.js +1 -1
  537. package/dist/utils/getLineNodes.js.map +1 -1
  538. package/dist/utils/getMergeConflictActionSlotName.d.ts.map +1 -1
  539. package/dist/utils/getMergeConflictActionSlotName.js +1 -1
  540. package/dist/utils/getMergeConflictActionSlotName.js.map +1 -1
  541. package/dist/utils/getMergeConflictLineTypes.d.ts.map +1 -1
  542. package/dist/utils/getMergeConflictLineTypes.js +1 -2
  543. package/dist/utils/getMergeConflictLineTypes.js.map +1 -1
  544. package/dist/utils/getOrCreateCodeNode.d.ts.map +1 -1
  545. package/dist/utils/getOrCreateCodeNode.js +1 -1
  546. package/dist/utils/getOrCreateCodeNode.js.map +1 -1
  547. package/dist/utils/getSingularPatch.d.ts.map +1 -1
  548. package/dist/utils/getSingularPatch.js +1 -2
  549. package/dist/utils/getSingularPatch.js.map +1 -1
  550. package/dist/utils/getThemes.d.ts.map +1 -1
  551. package/dist/utils/getThemes.js +1 -2
  552. package/dist/utils/getThemes.js.map +1 -1
  553. package/dist/utils/getTotalLineCountFromHunks.d.ts.map +1 -1
  554. package/dist/utils/getTotalLineCountFromHunks.js +1 -1
  555. package/dist/utils/getTotalLineCountFromHunks.js.map +1 -1
  556. package/dist/utils/hast_utils.d.ts +1 -1
  557. package/dist/utils/hast_utils.d.ts.map +1 -1
  558. package/dist/utils/hast_utils.js +1 -1
  559. package/dist/utils/hast_utils.js.map +1 -1
  560. package/dist/utils/hostTheme.d.ts.map +1 -1
  561. package/dist/utils/hostTheme.js +1 -2
  562. package/dist/utils/hostTheme.js.map +1 -1
  563. package/dist/utils/hydratePartialDiff.d.ts +10 -0
  564. package/dist/utils/hydratePartialDiff.d.ts.map +1 -0
  565. package/dist/utils/hydratePartialDiff.js +140 -0
  566. package/dist/utils/hydratePartialDiff.js.map +1 -0
  567. package/dist/utils/includesFileAnnotations.d.ts +17 -0
  568. package/dist/utils/includesFileAnnotations.d.ts.map +1 -0
  569. package/dist/utils/includesFileAnnotations.js +19 -0
  570. package/dist/utils/includesFileAnnotations.js.map +1 -0
  571. package/dist/utils/isDefaultRenderRange.d.ts.map +1 -1
  572. package/dist/utils/isDefaultRenderRange.js +1 -1
  573. package/dist/utils/isDefaultRenderRange.js.map +1 -1
  574. package/dist/utils/isDiffPlainText.d.ts.map +1 -1
  575. package/dist/utils/isDiffPlainText.js +1 -2
  576. package/dist/utils/isDiffPlainText.js.map +1 -1
  577. package/dist/utils/isFilePlainText.d.ts.map +1 -1
  578. package/dist/utils/isFilePlainText.js +1 -2
  579. package/dist/utils/isFilePlainText.js.map +1 -1
  580. package/dist/utils/isStyleNode.d.ts.map +1 -1
  581. package/dist/utils/isStyleNode.js +1 -1
  582. package/dist/utils/isStyleNode.js.map +1 -1
  583. package/dist/utils/isWorkerContext.d.ts.map +1 -1
  584. package/dist/utils/isWorkerContext.js +1 -1
  585. package/dist/utils/isWorkerContext.js.map +1 -1
  586. package/dist/utils/iterateOverDiff.d.ts.map +1 -1
  587. package/dist/utils/iterateOverDiff.js +178 -214
  588. package/dist/utils/iterateOverDiff.js.map +1 -1
  589. package/dist/utils/normalizeDiffResolution.d.ts.map +1 -1
  590. package/dist/utils/normalizeDiffResolution.js +1 -1
  591. package/dist/utils/normalizeDiffResolution.js.map +1 -1
  592. package/dist/utils/parseDiffDecorations.d.ts.map +1 -1
  593. package/dist/utils/parseDiffDecorations.js +1 -2
  594. package/dist/utils/parseDiffDecorations.js.map +1 -1
  595. package/dist/utils/parseDiffFromFile.d.ts +1 -2
  596. package/dist/utils/parseDiffFromFile.d.ts.map +1 -1
  597. package/dist/utils/parseDiffFromFile.js +27 -7
  598. package/dist/utils/parseDiffFromFile.js.map +1 -1
  599. package/dist/utils/parseLineType.d.ts.map +1 -1
  600. package/dist/utils/parseLineType.js +1 -1
  601. package/dist/utils/parseLineType.js.map +1 -1
  602. package/dist/utils/parseMergeConflictDiffFromFile.d.ts.map +1 -1
  603. package/dist/utils/parseMergeConflictDiffFromFile.js +5 -5
  604. package/dist/utils/parseMergeConflictDiffFromFile.js.map +1 -1
  605. package/dist/utils/parsePatchFiles.d.ts.map +1 -1
  606. package/dist/utils/parsePatchFiles.js +101 -11
  607. package/dist/utils/parsePatchFiles.js.map +1 -1
  608. package/dist/utils/prefersReducedMotion.d.ts.map +1 -1
  609. package/dist/utils/prefersReducedMotion.js +1 -1
  610. package/dist/utils/prefersReducedMotion.js.map +1 -1
  611. package/dist/utils/prerenderHTMLIfNecessary.d.ts.map +1 -1
  612. package/dist/utils/prerenderHTMLIfNecessary.js +1 -1
  613. package/dist/utils/prerenderHTMLIfNecessary.js.map +1 -1
  614. package/dist/utils/processLine.d.ts +1 -1
  615. package/dist/utils/processLine.d.ts.map +1 -1
  616. package/dist/utils/processLine.js +1 -2
  617. package/dist/utils/processLine.js.map +1 -1
  618. package/dist/utils/realignChangeContent.d.ts +28 -0
  619. package/dist/utils/realignChangeContent.d.ts.map +1 -0
  620. package/dist/utils/realignChangeContent.js +142 -0
  621. package/dist/utils/realignChangeContent.js.map +1 -0
  622. package/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -1
  623. package/dist/utils/renderDiffWithHighlighter.js +9 -8
  624. package/dist/utils/renderDiffWithHighlighter.js.map +1 -1
  625. package/dist/utils/renderFileWithHighlighter.d.ts.map +1 -1
  626. package/dist/utils/renderFileWithHighlighter.js +5 -4
  627. package/dist/utils/renderFileWithHighlighter.js.map +1 -1
  628. package/dist/utils/resolveConflict.d.ts.map +1 -1
  629. package/dist/utils/resolveConflict.js +1 -2
  630. package/dist/utils/resolveConflict.js.map +1 -1
  631. package/dist/utils/resolveRegion.d.ts.map +1 -1
  632. package/dist/utils/resolveRegion.js +1 -1
  633. package/dist/utils/resolveRegion.js.map +1 -1
  634. package/dist/utils/roundToDevicePixel.d.ts.map +1 -1
  635. package/dist/utils/roundToDevicePixel.js +1 -1
  636. package/dist/utils/roundToDevicePixel.js.map +1 -1
  637. package/dist/utils/scrollbarGutter.d.ts.map +1 -1
  638. package/dist/utils/scrollbarGutter.js +1 -2
  639. package/dist/utils/scrollbarGutter.js.map +1 -1
  640. package/dist/utils/setLanguageOverride.d.ts.map +1 -1
  641. package/dist/utils/setLanguageOverride.js +1 -1
  642. package/dist/utils/setLanguageOverride.js.map +1 -1
  643. package/dist/utils/setWrapperNodeProps.d.ts.map +1 -1
  644. package/dist/utils/setWrapperNodeProps.js +1 -2
  645. package/dist/utils/setWrapperNodeProps.js.map +1 -1
  646. package/dist/utils/shouldUseTokenTransformer.d.ts.map +1 -1
  647. package/dist/utils/shouldUseTokenTransformer.js +1 -1
  648. package/dist/utils/shouldUseTokenTransformer.js.map +1 -1
  649. package/dist/utils/splitFileContents.d.ts.map +1 -1
  650. package/dist/utils/splitFileContents.js +1 -2
  651. package/dist/utils/splitFileContents.js.map +1 -1
  652. package/dist/utils/trimPatchContext.d.ts.map +1 -1
  653. package/dist/utils/trimPatchContext.js +1 -2
  654. package/dist/utils/trimPatchContext.js.map +1 -1
  655. package/dist/utils/updateDiffHunks.d.ts +24 -0
  656. package/dist/utils/updateDiffHunks.d.ts.map +1 -0
  657. package/dist/utils/updateDiffHunks.js +235 -0
  658. package/dist/utils/updateDiffHunks.js.map +1 -0
  659. package/dist/utils/virtualDiffLayout.d.ts +62 -2
  660. package/dist/utils/virtualDiffLayout.d.ts.map +1 -1
  661. package/dist/utils/virtualDiffLayout.js +137 -3
  662. package/dist/utils/virtualDiffLayout.js.map +1 -1
  663. package/dist/utils/wrapTokenFragments.d.ts +1 -1
  664. package/dist/utils/wrapTokenFragments.d.ts.map +1 -1
  665. package/dist/utils/wrapTokenFragments.js +1 -2
  666. package/dist/utils/wrapTokenFragments.js.map +1 -1
  667. package/dist/worker/WorkerPoolManager.d.ts +7 -2
  668. package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
  669. package/dist/worker/WorkerPoolManager.js +88 -23
  670. package/dist/worker/WorkerPoolManager.js.map +1 -1
  671. package/dist/worker/getOrCreateWorkerPoolSingleton.d.ts.map +1 -1
  672. package/dist/worker/getOrCreateWorkerPoolSingleton.js +1 -2
  673. package/dist/worker/getOrCreateWorkerPoolSingleton.js.map +1 -1
  674. package/dist/worker/index.d.ts +2 -2
  675. package/dist/worker/index.js +1 -2
  676. package/dist/worker/types.d.ts +11 -1
  677. package/dist/worker/types.d.ts.map +1 -1
  678. package/dist/worker/wasm-B9ZqxnKj.js +8 -0
  679. package/dist/worker/wasm-B9ZqxnKj.js.map +1 -0
  680. package/dist/worker/worker-portable.js +3335 -6214
  681. package/dist/worker/worker-portable.js.map +1 -1
  682. package/dist/worker/worker.js +287 -309
  683. package/dist/worker/worker.js.map +1 -1
  684. package/package.json +29 -32
  685. package/dist/editor/css.d.ts +0 -6
  686. package/dist/editor/css.d.ts.map +0 -1
  687. package/dist/editor/css.js +0 -218
  688. package/dist/editor/css.js.map +0 -1
  689. package/dist/editor/quickEdit.d.ts +0 -29
  690. package/dist/editor/quickEdit.d.ts.map +0 -1
  691. package/dist/editor/quickEdit.js +0 -81
  692. package/dist/editor/quickEdit.js.map +0 -1
  693. package/dist/editor/tokenzier.d.ts.map +0 -1
  694. package/dist/editor/tokenzier.js +0 -348
  695. package/dist/editor/tokenzier.js.map +0 -1
  696. package/dist/react/EditorContext.d.ts +0 -16
  697. package/dist/react/EditorContext.d.ts.map +0 -1
  698. package/dist/react/EditorContext.js +0 -26
  699. package/dist/react/EditorContext.js.map +0 -1
  700. package/dist/worker/wasm-D4DU5jgR.js +0 -10
  701. package/dist/worker/wasm-D4DU5jgR.js.map +0 -1
@@ -1,16 +1,20 @@
1
- import { DEFAULT_COLLAPSED_CONTEXT_THRESHOLD } from "../constants.js";
1
+ import "../constants.js";
2
2
  import { areObjectsEqual } from "../utils/areObjectsEqual.js";
3
3
  import { areOptionsEqual } from "../utils/areOptionsEqual.js";
4
+ import { parseDiffFromFile } from "../utils/parseDiffFromFile.js";
4
5
  import { computeVirtualFileMetrics, getVirtualFileHeaderRegion, getVirtualFilePaddingBottom } from "../utils/computeVirtualFileMetrics.js";
6
+ import { getExpandedRegion, getLeadingHunkSeparatorLayout, getTrailingExpandedRegion, getTrailingHunkSeparatorLayout, isAdditionLineRenderable } from "../utils/virtualDiffLayout.js";
7
+ import { areFilesEqual } from "../utils/areFilesEqual.js";
8
+ import { FILE_ANNOTATION_DOM_KEY, includesFileAnnotations, shouldRenderFileAnnotations } from "../utils/includesFileAnnotations.js";
5
9
  import { areDiffTargetsEqual } from "../utils/areDiffTargetsEqual.js";
6
- import { getExpandedRegion, getLeadingHunkSeparatorLayout, getTrailingHunkSeparatorLayout } from "../utils/virtualDiffLayout.js";
10
+ import { awaitWithTimeout } from "../utils/awaitWithTimeout.js";
7
11
  import { computeEstimatedDiffHeights } from "../utils/computeEstimatedDiffHeights.js";
12
+ import { getDiffFileInput } from "../utils/getDiffFileInput.js";
13
+ import { hydratePartialDiff } from "../utils/hydratePartialDiff.js";
8
14
  import { iterateOverDiff } from "../utils/iterateOverDiff.js";
9
- import { parseDiffFromFile } from "../utils/parseDiffFromFile.js";
10
15
  import { FileDiff } from "./FileDiff.js";
11
-
12
16
  //#region src/components/VirtualizedFileDiff.ts
13
- const LAYOUT_CHECKPOINT_INTERVAL = 5e3;
17
+ const VIRTUALIZED_FILE_DIFF_LAYOUT_CHECKPOINT_INTERVAL = 3e3;
14
18
  let instanceId = -1;
15
19
  var VirtualizedFileDiff = class extends FileDiff {
16
20
  __id = `little-virtualized-file-diff:${++instanceId}`;
@@ -23,7 +27,8 @@ var VirtualizedFileDiff = class extends FileDiff {
23
27
  estimatedSplitHeight: void 0,
24
28
  estimatedUnifiedHeight: void 0,
25
29
  checkpoints: [],
26
- totalLines: 0
30
+ totalLines: 0,
31
+ fileAnnotationHeight: 0
27
32
  };
28
33
  isVisible = false;
29
34
  isSetup = false;
@@ -31,6 +36,9 @@ var VirtualizedFileDiff = class extends FileDiff {
31
36
  layoutDirty = true;
32
37
  forceRenderOverride;
33
38
  currentCollapsed;
39
+ currentExpandUnchanged;
40
+ pendingHydratedDiff;
41
+ pendingExpansions;
34
42
  constructor(options, virtualizer, metrics, workerManager, isContainerManaged = false) {
35
43
  super(options, workerManager, isContainerManaged);
36
44
  this.virtualizer = virtualizer;
@@ -42,6 +50,30 @@ var VirtualizedFileDiff = class extends FileDiff {
42
50
  this.metrics = nextMetrics;
43
51
  this.resetLayoutCache({ includeEstimatedHeights: true });
44
52
  }
53
+ setLineAnnotations(lineAnnotations) {
54
+ if (this.syncLineAnnotations(lineAnnotations)) this.resetLayoutCache({ includeEstimatedHeights: false });
55
+ }
56
+ syncLineAnnotations(lineAnnotations) {
57
+ if (lineAnnotations == null || lineAnnotations === this.lineAnnotations || lineAnnotations.length === 0 && this.lineAnnotations.length === 0) return false;
58
+ super.setLineAnnotations(lineAnnotations);
59
+ return true;
60
+ }
61
+ setFileAnnotationHeight(nextHeight) {
62
+ const previousHeight = this.cache.fileAnnotationHeight;
63
+ if (nextHeight === previousHeight) return false;
64
+ this.cache.fileAnnotationHeight = nextHeight;
65
+ this.cache.measuredHeightDeltaTotal += nextHeight - previousHeight;
66
+ return true;
67
+ }
68
+ hasFileAnnotations(fileDiff = this.fileDiff) {
69
+ if (fileDiff == null || !includesFileAnnotations(this.lineAnnotations)) return false;
70
+ return this.lineAnnotations.some((annotation) => {
71
+ if (annotation.lineNumber !== 0) return false;
72
+ if (fileDiff.type === "new") return annotation.side === "additions";
73
+ if (fileDiff.type === "deleted") return annotation.side === "deletions";
74
+ return true;
75
+ });
76
+ }
45
77
  getLineHeight(lineIndex, hasMetadataLine = false) {
46
78
  return this.getEstimatedLineHeight(hasMetadataLine) + (this.cache.heightDeltas.get(lineIndex) ?? 0);
47
79
  }
@@ -67,18 +99,23 @@ var VirtualizedFileDiff = class extends FileDiff {
67
99
  if (this.isAdvancedMode()) throw new Error("VirtualizedFileDiff.setThemeType cannot be used inside CodeView. Update CodeView options instead.");
68
100
  super.setThemeType(themeType);
69
101
  }
70
- resetLayoutCache({ forceSimpleRecompute = false, includeEstimatedHeights = false } = {}) {
102
+ resetLayoutCache({ forceSimpleRecompute = false, includeEstimatedHeights = false, resetRenderRange = true } = {}) {
71
103
  this.layoutDirty = true;
104
+ this.cache.fileAnnotationHeight = 0;
72
105
  if (this.cache.heightDeltas.size > 0) this.cache.heightDeltas.clear();
73
106
  if (this.cache.measuredHeightDeltaTotal !== 0) this.cache.measuredHeightDeltaTotal = 0;
107
+ this.invalidateDerivedLayoutCache(includeEstimatedHeights, resetRenderRange);
108
+ if (forceSimpleRecompute && this.isSimpleMode()) this.computeApproximateSize();
109
+ }
110
+ invalidateDerivedLayoutCache(includeEstimatedHeights, resetRenderRange = true) {
111
+ this.layoutDirty = true;
74
112
  if (this.cache.checkpoints.length > 0) this.cache.checkpoints.length = 0;
75
113
  if (this.cache.totalLines !== 0) this.cache.totalLines = 0;
76
114
  if (includeEstimatedHeights) {
77
115
  this.cache.estimatedSplitHeight = void 0;
78
116
  this.cache.estimatedUnifiedHeight = void 0;
79
117
  }
80
- if (this.renderRange != null) this.renderRange = void 0;
81
- if (forceSimpleRecompute && this.isSimpleMode()) this.computeApproximateSize();
118
+ if (this.renderRange != null && resetRenderRange) this.renderRange = void 0;
82
119
  }
83
120
  reconcileHeights() {
84
121
  let hasHeightChange = false;
@@ -92,6 +129,11 @@ var VirtualizedFileDiff = class extends FileDiff {
92
129
  if (overflow === "scroll" && this.lineAnnotations.length === 0 && !this.isResizeDebuggingEnabled()) return hasHeightChange;
93
130
  const diffStyle = this.getDiffStyle();
94
131
  const codeGroups = diffStyle === "split" ? [this.codeDeletions, this.codeAdditions] : [this.codeUnified];
132
+ const hasFileAnnotations = this.hasFileAnnotations(this.fileDiff);
133
+ if (this.renderRange != null && hasFileAnnotations && shouldRenderFileAnnotations(this.renderRange)) {
134
+ const nextFileAnnotationHeight = measureFileAnnotationHeight(codeGroups) ?? 0;
135
+ if (this.setFileAnnotationHeight(nextFileAnnotationHeight)) hasHeightChange = true;
136
+ } else if (!hasFileAnnotations && this.setFileAnnotationHeight(0)) hasHeightChange = true;
95
137
  for (const codeGroup of codeGroups) {
96
138
  if (codeGroup == null) continue;
97
139
  const content = codeGroup.children[1];
@@ -125,20 +167,26 @@ var VirtualizedFileDiff = class extends FileDiff {
125
167
  if (dirty) this.top = this.getVirtualizedTop();
126
168
  return this.render();
127
169
  };
128
- prepareCodeViewItem(fileDiff, top, reset) {
170
+ prepareCodeViewItem(fileDiff, top, reset, lineAnnotations) {
129
171
  const targetChanged = !areDiffTargetsEqual(this.fileDiff, fileDiff);
130
- let shouldResetLayoutCache = reset?.resetDiffLayoutCache === true || targetChanged;
172
+ const annotationsChanged = this.syncLineAnnotations(lineAnnotations);
173
+ let shouldResetLayoutCache = reset?.resetDiffLayoutCache === true || targetChanged || annotationsChanged;
131
174
  let includeEstimatedHeights = targetChanged || reset?.resetDiffLayoutCache === true && reset.includeEstimatedDiffHeights;
132
175
  if (reset?.metrics != null) {
133
176
  this.metrics = computeVirtualFileMetrics(reset.metrics);
134
177
  shouldResetLayoutCache = true;
135
178
  includeEstimatedHeights = true;
136
179
  }
137
- const { collapsed = false } = this.options;
180
+ const { collapsed = false, expandUnchanged = false } = this.options;
138
181
  if (this.currentCollapsed !== collapsed) {
139
182
  this.currentCollapsed = collapsed;
140
183
  shouldResetLayoutCache = true;
141
184
  }
185
+ if (this.currentExpandUnchanged !== expandUnchanged) {
186
+ this.currentExpandUnchanged = expandUnchanged;
187
+ shouldResetLayoutCache = true;
188
+ includeEstimatedHeights = true;
189
+ }
142
190
  if (shouldResetLayoutCache) this.resetLayoutCache({ includeEstimatedHeights });
143
191
  this.fileDiff = fileDiff;
144
192
  this.top = top;
@@ -146,18 +194,19 @@ var VirtualizedFileDiff = class extends FileDiff {
146
194
  return this.height;
147
195
  }
148
196
  getLinePosition(lineNumber, side = "additions") {
149
- if (this.fileDiff == null) return;
197
+ if (this.fileDiff == null || lineNumber < 1) return;
150
198
  const targetLineIndexes = this.getLineIndex(lineNumber, side);
151
199
  if (targetLineIndexes == null) return;
152
- const { disableFileHeader = false, expandUnchanged = false, collapsed = false, collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD } = this.options;
200
+ const { disableFileHeader = false, expandUnchanged = false, collapsed = false, collapsedContextThreshold = 1 } = this.options;
153
201
  const diffStyle = this.getDiffStyle();
154
202
  const hunkSeparators = this.getHunkSeparatorType();
155
203
  const targetLineIndex = diffStyle === "split" ? targetLineIndexes[1] : targetLineIndexes[0];
156
204
  this.approximateLayoutCheckpoints();
205
+ const headerRegion = getVirtualFileHeaderRegion(this.metrics, disableFileHeader);
157
206
  const checkpoint = this.getLayoutCheckpointBeforeLineIndex(targetLineIndex);
158
- let top = checkpoint?.top ?? getVirtualFileHeaderRegion(this.metrics, disableFileHeader);
207
+ let top = checkpoint?.top ?? headerRegion + this.cache.fileAnnotationHeight;
159
208
  if (collapsed) return {
160
- top,
209
+ top: headerRegion,
161
210
  height: 0
162
211
  };
163
212
  let position;
@@ -219,15 +268,19 @@ var VirtualizedFileDiff = class extends FileDiff {
219
268
  });
220
269
  return position;
221
270
  }
271
+ getScrollContainer() {
272
+ const root = this.getSimpleVirtualizer()?.getRoot();
273
+ return root instanceof HTMLElement ? root : root?.documentElement;
274
+ }
222
275
  getNumericScrollAnchor(localViewportTop) {
223
276
  if (this.fileDiff == null) return;
224
- const { disableFileHeader = false, expandUnchanged = false, collapsed = false, collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD } = this.options;
277
+ const { disableFileHeader = false, expandUnchanged = false, collapsed = false, collapsedContextThreshold = 1 } = this.options;
225
278
  if (collapsed) return;
226
279
  const diffStyle = this.getDiffStyle();
227
280
  const hunkSeparators = this.getHunkSeparatorType();
228
281
  this.approximateLayoutCheckpoints();
229
282
  const checkpoint = this.getLayoutCheckpointBeforeTop(localViewportTop);
230
- let top = checkpoint?.top ?? getVirtualFileHeaderRegion(this.metrics, disableFileHeader);
283
+ let top = checkpoint?.top ?? getVirtualFileHeaderRegion(this.metrics, disableFileHeader) + this.cache.fileAnnotationHeight;
231
284
  let anchor;
232
285
  iterateOverDiff({
233
286
  diff: this.fileDiff,
@@ -286,23 +339,151 @@ var VirtualizedFileDiff = class extends FileDiff {
286
339
  const renderRange = windowSpecs != null ? this.computeRenderRangeFromWindow(this.fileDiff, this.top, windowSpecs) : this.renderRange;
287
340
  if (renderRange == null) return;
288
341
  const { bufferBefore, bufferAfter, totalLines } = renderRange;
342
+ let headerOnlyOffset = 0;
343
+ if (totalLines === 0) {
344
+ const activeWindow = windowSpecs ?? this.virtualizer.getWindowSpecs();
345
+ if (this.top < activeWindow.top) headerOnlyOffset = bufferAfter;
346
+ }
289
347
  return {
290
- topOffset: this.top + bufferBefore + (totalLines === 0 ? bufferAfter : 0),
348
+ topOffset: this.top + bufferBefore + headerOnlyOffset,
291
349
  height: this.height - (bufferBefore + bufferAfter)
292
350
  };
293
351
  }
294
352
  cleanUp(recycle = false) {
295
353
  if (this.fileContainer != null && this.isSimpleMode()) this.getSimpleVirtualizer()?.disconnect(this.fileContainer);
296
- if (!recycle) this.resetLayoutCache({ includeEstimatedHeights: true });
354
+ if (!recycle) {
355
+ this.resetLayoutCache({ includeEstimatedHeights: true });
356
+ this.pendingExpansions = void 0;
357
+ this.pendingHydratedDiff = void 0;
358
+ }
297
359
  this.isSetup = false;
298
360
  super.cleanUp(recycle);
299
361
  }
300
362
  expandHunk = (hunkIndex, direction, expansionLineCountOverride) => {
301
- this.hunksRenderer.expandHunk(hunkIndex, direction, expansionLineCountOverride);
302
- this.resetLayoutCache({ includeEstimatedHeights: true });
303
- this.computeApproximateSize();
363
+ if (this.fileDiff == null) return;
364
+ if (this.isAdvancedMode()) {
365
+ this.pendingExpansions ??= [];
366
+ this.pendingExpansions.push({
367
+ hunkIndex,
368
+ direction,
369
+ expansionLineCountOverride
370
+ });
371
+ } else {
372
+ this.hunksRenderer.expandHunk(hunkIndex, direction, expansionLineCountOverride);
373
+ this.resetLayoutCache({ includeEstimatedHeights: true });
374
+ this.computeApproximateSize();
375
+ }
376
+ this.loadFilesIfNecessary();
377
+ this.forceRenderOverride = true;
304
378
  this.virtualizer.instanceChanged(this, true);
305
379
  };
380
+ async handleFilesLoaded(expectedDiff, files) {
381
+ if (this.fileDiff !== expectedDiff || !expectedDiff.isPartial) return;
382
+ if (this.isAdvancedMode()) {
383
+ const nextDiff = hydratePartialDiff("clone", expectedDiff, files);
384
+ await awaitWithTimeout(() => this.primeHighlightCache(nextDiff));
385
+ if (!this.enabled || this.fileDiff !== expectedDiff) return;
386
+ this.pendingHydratedDiff = {
387
+ expectedDiff,
388
+ nextDiff,
389
+ files
390
+ };
391
+ } else {
392
+ hydratePartialDiff("merge", expectedDiff, files);
393
+ this.setHydratedState(files);
394
+ await awaitWithTimeout(() => this.primeHighlightCache(expectedDiff));
395
+ if (!this.enabled || this.fileDiff !== expectedDiff) return;
396
+ this.resetLayoutCache({ includeEstimatedHeights: true });
397
+ this.computeApproximateSize();
398
+ }
399
+ this.forceRenderOverride = true;
400
+ this.virtualizer.instanceChanged(this, true);
401
+ }
402
+ consumeCodeViewLayoutChanges(expectedFileDiff) {
403
+ let hasLayoutChange = false;
404
+ let nextDiff;
405
+ const { pendingExpansions, pendingHydratedDiff } = this;
406
+ if (pendingExpansions != null) {
407
+ this.pendingExpansions = void 0;
408
+ for (const pendingExpansion of pendingExpansions) {
409
+ this.hunksRenderer.expandHunk(pendingExpansion.hunkIndex, pendingExpansion.direction, pendingExpansion.expansionLineCountOverride);
410
+ hasLayoutChange = true;
411
+ }
412
+ }
413
+ if (pendingHydratedDiff != null) {
414
+ this.pendingHydratedDiff = void 0;
415
+ if (pendingHydratedDiff.expectedDiff === expectedFileDiff) {
416
+ this.setHydratedState(pendingHydratedDiff.files);
417
+ nextDiff = pendingHydratedDiff.nextDiff;
418
+ }
419
+ }
420
+ if (nextDiff != null) {
421
+ this.forceRenderOverride = true;
422
+ this.resetLayoutCache({ includeEstimatedHeights: true });
423
+ } else if (hasLayoutChange) {
424
+ this.forceRenderOverride = true;
425
+ this.invalidateDerivedLayoutCache(true);
426
+ }
427
+ return nextDiff;
428
+ }
429
+ loadFilesIfNecessary() {
430
+ if (this.pendingHydratedDiff != null) {
431
+ if (this.pendingHydratedDiff.expectedDiff === this.fileDiff) return;
432
+ this.pendingHydratedDiff = void 0;
433
+ }
434
+ super.loadFilesIfNecessary();
435
+ }
436
+ isLineRenderable(lineNumber) {
437
+ if (super.isLineRenderable(lineNumber)) return true;
438
+ const { pendingExpansions } = this;
439
+ const fileDiff = this.fileDiffCache;
440
+ if (pendingExpansions == null || pendingExpansions.length === 0 || fileDiff == null) return false;
441
+ const { expansionLineCount = 100, collapsedContextThreshold = 1 } = this.options;
442
+ const staged = new Map(this.hunksRenderer.getExpandedHunksMap());
443
+ for (const expansion of pendingExpansions) {
444
+ const region = { ...staged.get(expansion.hunkIndex) ?? {
445
+ fromStart: 0,
446
+ fromEnd: 0
447
+ } };
448
+ const count = expansion.expansionLineCountOverride ?? expansionLineCount;
449
+ if (expansion.direction === "up" || expansion.direction === "both") region.fromStart += count;
450
+ if (expansion.direction === "down" || expansion.direction === "both") region.fromEnd += count;
451
+ staged.set(expansion.hunkIndex, region);
452
+ }
453
+ return isAdditionLineRenderable({
454
+ fileDiff,
455
+ lineNumber,
456
+ expandedHunks: staged,
457
+ collapsedContextThreshold
458
+ });
459
+ }
460
+ /**
461
+ * Invalidate layout after an edit session changed the rendered row set
462
+ * without a line-count change (a mid-session region change or the exit
463
+ * recompute): estimated heights bake the hunk shapes in, and nothing else
464
+ * invalidates them now that editing does not flip expandUnchanged. Public
465
+ * so CodeView can run it when reaping a session whose instance was already
466
+ * released.
467
+ */
468
+ invalidateEditSessionLayout() {
469
+ this.getSimpleVirtualizer()?.markDOMDirty();
470
+ this.resetLayoutCache({
471
+ forceSimpleRecompute: this.isSimpleMode(),
472
+ includeEstimatedHeights: true,
473
+ resetRenderRange: false
474
+ });
475
+ if (!this.isSimpleMode()) this.computeApproximateSize(true);
476
+ this.getSimpleVirtualizer()?.requestHeightReconcile(this);
477
+ }
478
+ escalateEditSessionRender() {
479
+ this.invalidateEditSessionLayout();
480
+ if (!this.enabled || this.fileDiff == null) return;
481
+ this.forceRenderOverride = true;
482
+ this.virtualizer.instanceChanged(this, true);
483
+ }
484
+ shouldSelfHealEditSession() {
485
+ return !this.isAdvancedMode() && super.shouldSelfHealEditSession();
486
+ }
306
487
  setVisibility(visible) {
307
488
  if (this.isAdvancedMode() || this.fileContainer == null) return;
308
489
  this.renderRange = void 0;
@@ -319,14 +500,30 @@ var VirtualizedFileDiff = class extends FileDiff {
319
500
  this.forceRenderOverride = true;
320
501
  this.virtualizer.instanceChanged(this, false);
321
502
  }
322
- computeApproximateSize(force = false) {
503
+ applyDocumentChange(textDocument, newLineAnnotations, shouldUpdateBuffer = false) {
504
+ const previousRenderRange = this.renderRange;
505
+ super.applyDocumentChange(textDocument, newLineAnnotations);
506
+ this.getSimpleVirtualizer()?.markDOMDirty();
507
+ this.resetLayoutCache({
508
+ forceSimpleRecompute: this.isSimpleMode(),
509
+ includeEstimatedHeights: true,
510
+ resetRenderRange: false
511
+ });
512
+ if (!this.isSimpleMode()) this.computeApproximateSize(true);
513
+ if (shouldUpdateBuffer && previousRenderRange !== void 0 && this.fileDiff !== void 0) {
514
+ const windowSpecs = this.virtualizer.getWindowSpecs();
515
+ const renderRange = this.computeRenderRangeFromWindow(this.fileDiff, this.top ?? 0, windowSpecs);
516
+ if (renderRange.bufferAfter !== previousRenderRange.bufferAfter) this.updateBuffers(renderRange);
517
+ }
518
+ }
519
+ computeApproximateSize(force = false, fileDiff = this.fileDiff) {
323
520
  const shouldValidateSize = this.isResizeDebuggingEnabled();
324
521
  if (!force && !this.layoutDirty && !shouldValidateSize) return;
325
522
  const isFirstCompute = this.height === 0;
326
523
  this.height = 0;
327
524
  this.cache.checkpoints = [];
328
525
  this.cache.totalLines = 0;
329
- if (this.fileDiff == null) {
526
+ if (fileDiff == null) {
330
527
  this.layoutDirty = false;
331
528
  return;
332
529
  }
@@ -337,57 +534,70 @@ var VirtualizedFileDiff = class extends FileDiff {
337
534
  this.layoutDirty = false;
338
535
  return;
339
536
  }
340
- this.height = this.getActiveEstimatedHeight() + this.cache.measuredHeightDeltaTotal;
341
- if (shouldValidateSize && !isFirstCompute) this.validateComputedHeight();
537
+ this.height = this.getActiveEstimatedHeight(fileDiff) + this.cache.measuredHeightDeltaTotal;
538
+ if (shouldValidateSize && !isFirstCompute) this.validateComputedHeight(fileDiff);
342
539
  this.layoutDirty = false;
343
540
  }
344
- getActiveEstimatedHeight() {
345
- this.ensureEstimatedDiffHeights();
541
+ getActiveEstimatedHeight(fileDiff = this.fileDiff) {
542
+ this.ensureEstimatedDiffHeights(fileDiff);
346
543
  const estimatedHeight = this.getDiffStyle() === "split" ? this.cache.estimatedSplitHeight : this.cache.estimatedUnifiedHeight;
347
544
  if (estimatedHeight == null) throw new Error("VirtualizedFileDiff.getActiveEstimatedHeight: missing estimated height");
348
545
  return estimatedHeight;
349
546
  }
350
- ensureEstimatedDiffHeights() {
351
- if (this.fileDiff == null) {
547
+ ensureEstimatedDiffHeights(fileDiff = this.fileDiff) {
548
+ if (fileDiff == null) {
352
549
  this.cache.estimatedSplitHeight = void 0;
353
550
  this.cache.estimatedUnifiedHeight = void 0;
354
551
  return;
355
552
  }
356
553
  if (this.cache.estimatedSplitHeight != null && this.cache.estimatedUnifiedHeight != null) return;
357
- const { disableFileHeader = false, expandUnchanged = false, collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD } = this.options;
554
+ const { disableFileHeader = false, expandUnchanged = false, collapsedContextThreshold = 1 } = this.options;
358
555
  const { splitHeight, unifiedHeight } = computeEstimatedDiffHeights({
359
- fileDiff: this.fileDiff,
556
+ fileDiff,
360
557
  metrics: this.metrics,
361
558
  disableFileHeader,
362
559
  hunkSeparators: this.getHunkSeparatorType(),
363
560
  expandUnchanged,
364
561
  expandedHunks: this.hunksRenderer.getExpandedHunksMap(),
365
- collapsedContextThreshold
562
+ collapsedContextThreshold,
563
+ canHydratePartialDiff: canHydrateCollapsedContext(fileDiff, this.options.loadDiffFiles != null)
366
564
  });
367
565
  this.cache.estimatedSplitHeight = splitHeight;
368
566
  this.cache.estimatedUnifiedHeight = unifiedHeight;
369
567
  }
370
- validateComputedHeight() {
371
- if (this.fileContainer == null || this.fileDiff == null) return;
568
+ validateComputedHeight(fileDiff = this.fileDiff) {
569
+ if (this.fileContainer == null || fileDiff == null) return;
372
570
  const rect = this.fileContainer.getBoundingClientRect();
373
571
  if (rect.height !== this.height) console.log("VirtualizedFileDiff.computeApproximateSize: computed height doesnt match", {
374
- name: this.fileDiff.name,
572
+ name: fileDiff.name,
375
573
  elementHeight: rect.height,
376
574
  computedHeight: this.height
377
575
  });
378
576
  else console.log("VirtualizedFileDiff.computeApproximateSize: computed height IS CORRECT");
379
577
  }
380
- render({ fileContainer, oldFile, newFile, fileDiff, forceRender = false,...props } = {}) {
578
+ render({ fileContainer, fileDiff, forceRender = false, lineAnnotations, ...fileInputProps } = {}) {
579
+ const fileInput = getDiffFileInput(fileInputProps, "VirtualizedFileDiff.render");
580
+ const hasFileInput = fileInput != null;
581
+ const oldFile = fileInput?.oldFile;
582
+ const newFile = fileInput?.newFile;
583
+ const filesDidChange = hasFileInput && (!areOptionalFilesEqual(oldFile, this.deletionFile) || !areOptionalFilesEqual(newFile, this.additionFile));
584
+ let nextFileDiff = fileDiff ?? this.fileDiff;
585
+ if (fileDiff == null && hasFileInput && (filesDidChange || this.fileDiff == null)) nextFileDiff = parseDiffFromFile(fileInput.oldFile, fileInput.newFile, this.options.parseDiffOptions);
381
586
  const { forceRenderOverride, isSetup } = this;
382
587
  this.forceRenderOverride = void 0;
383
- this.fileDiff ??= fileDiff ?? (oldFile != null && newFile != null ? parseDiffFromFile(oldFile, newFile, this.options.parseDiffOptions) : void 0);
588
+ const annotationsChanged = this.syncLineAnnotations(lineAnnotations);
589
+ if (annotationsChanged) this.resetLayoutCache({ includeEstimatedHeights: false });
590
+ const diffInputChanged = fileDiff != null && fileDiff !== this.fileDiff;
591
+ const targetChanged = nextFileDiff != null && !areDiffTargetsEqual(this.fileDiff, nextFileDiff);
592
+ const dataChanged = diffInputChanged || filesDidChange;
593
+ if (targetChanged) this.resetLayoutCache({ includeEstimatedHeights: true });
384
594
  fileContainer = this.getOrCreateFileContainer(fileContainer);
385
- if (this.fileDiff == null) {
595
+ if (nextFileDiff == null) {
386
596
  console.error("VirtualizedFileDiff.render: attempting to virtually render when we dont have the correct data");
387
597
  return false;
388
598
  }
389
599
  if (!isSetup) {
390
- this.computeApproximateSize();
600
+ this.computeApproximateSize(false, nextFileDiff);
391
601
  const virtualizer = this.getSimpleVirtualizer();
392
602
  this.top ??= this.getVirtualizedTop();
393
603
  if (this.isAdvancedMode()) this.isVisible = true;
@@ -397,20 +607,33 @@ var VirtualizedFileDiff = class extends FileDiff {
397
607
  this.isVisible = virtualizer.isInstanceVisible(this.top ?? 0, this.height);
398
608
  }
399
609
  this.isSetup = true;
400
- } else this.top ??= this.getVirtualizedTop();
401
- if (!this.isVisible && this.isSimpleMode()) return this.renderPlaceholder(this.height);
610
+ } else {
611
+ this.top ??= this.getVirtualizedTop();
612
+ if (targetChanged) this.computeApproximateSize(false, nextFileDiff);
613
+ }
614
+ if (!this.isVisible && this.isSimpleMode() && (!dataChanged || !isSetup)) {
615
+ this.fileDiff = nextFileDiff;
616
+ if (fileInput != null) {
617
+ this.deletionFile = oldFile;
618
+ this.additionFile = newFile;
619
+ }
620
+ if (targetChanged) this.cachedHeaderHTML = void 0;
621
+ return this.renderPlaceholder(this.height);
622
+ }
402
623
  const windowSpecs = this.virtualizer.getWindowSpecs();
403
624
  const fileTop = this.top ?? 0;
404
- const renderRange = this.computeRenderRangeFromWindow(this.fileDiff, fileTop, windowSpecs);
405
- return super.render({
406
- fileDiff: this.fileDiff,
625
+ const renderRange = this.computeRenderRangeFromWindow(nextFileDiff, fileTop, windowSpecs);
626
+ const rendered = super.render({
627
+ fileDiff: nextFileDiff,
407
628
  fileContainer,
408
629
  renderRange,
409
- oldFile,
410
- newFile,
411
- forceRender: forceRenderOverride ?? forceRender,
412
- ...props
630
+ lineAnnotations,
631
+ forceRender: (forceRenderOverride ?? forceRender) || annotationsChanged || targetChanged,
632
+ ...fileInput,
633
+ ...fileInputProps
413
634
  });
635
+ if (this.isSimpleMode() && rendered) this.getSimpleVirtualizer()?.requestHeightReconcile(this);
636
+ return rendered;
414
637
  }
415
638
  syncVirtualizedTop() {
416
639
  this.top = this.getVirtualizedTop();
@@ -440,14 +663,16 @@ var VirtualizedFileDiff = class extends FileDiff {
440
663
  getHunkSeparatorType() {
441
664
  return getOptionHunkSeparatorType(this.options.hunkSeparators);
442
665
  }
443
- approximateLayoutCheckpoints() {
444
- if (this.cache.checkpoints.length > 0 || this.fileDiff == null || this.fileDiff.hunks.length === 0 || this.options.collapsed === true) return;
445
- const { disableFileHeader = false, expandUnchanged = false, collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD } = this.options;
666
+ approximateLayoutCheckpoints(fileDiff = this.fileDiff) {
667
+ if (!this.layoutDirty && this.cache.checkpoints.length > 0 || fileDiff == null || fileDiff.hunks.length === 0 || this.options.collapsed === true) return;
668
+ const { disableFileHeader = false, expandUnchanged = false, collapsedContextThreshold = 1 } = this.options;
669
+ const finalHunkIndex = fileDiff.hunks.length - 1;
670
+ const canHydratePartialDiff = canHydrateCollapsedContext(fileDiff, this.options.loadDiffFiles != null);
446
671
  const diffStyle = this.getDiffStyle();
447
672
  const hunkSeparators = this.getHunkSeparatorType();
448
673
  const expandedHunks = expandUnchanged ? true : this.hunksRenderer.getExpandedHunksMap();
449
674
  const heightDeltaPrefix = createHeightDeltaPrefix(this.cache.heightDeltas);
450
- let top = getVirtualFileHeaderRegion(this.metrics, disableFileHeader);
675
+ let top = getVirtualFileHeaderRegion(this.metrics, disableFileHeader) + this.cache.fileAnnotationHeight;
451
676
  let renderedLineIndex = 0;
452
677
  const processRows = ({ rowCount, startLineIndex, preSeparatorHeight = 0, postSeparatorHeight = 0, metadataOffsets = [] }) => {
453
678
  if (rowCount <= 0) return;
@@ -462,16 +687,16 @@ var VirtualizedFileDiff = class extends FileDiff {
462
687
  lineIndex: startLineIndex + offset,
463
688
  top: checkpointTop
464
689
  });
465
- nextCheckpoint += LAYOUT_CHECKPOINT_INTERVAL;
690
+ nextCheckpoint += VIRTUALIZED_FILE_DIFF_LAYOUT_CHECKPOINT_INTERVAL;
466
691
  }
467
692
  top += preSeparatorHeight + rowCount * this.metrics.lineHeight + metadataOffsets.length * this.metrics.lineHeight + sumHeightDeltas(heightDeltaPrefix, startLineIndex, startLineIndex + rowCount) + postSeparatorHeight;
468
693
  renderedLineIndex = blockEnd;
469
694
  };
470
- for (let hunkIndex = 0; hunkIndex < this.fileDiff.hunks.length; hunkIndex++) {
471
- const hunk = this.fileDiff.hunks[hunkIndex];
695
+ for (let hunkIndex = 0; hunkIndex < fileDiff.hunks.length; hunkIndex++) {
696
+ const hunk = fileDiff.hunks[hunkIndex];
472
697
  if (hunk == null) throw new Error("VirtualizedFileDiff.approximateLayoutCheckpoints: invalid hunk index");
473
698
  const leadingRegion = getExpandedRegion({
474
- isPartial: this.fileDiff.isPartial,
699
+ isPartial: fileDiff.isPartial,
475
700
  rangeSize: hunk.collapsedBefore,
476
701
  expandedHunks,
477
702
  hunkIndex,
@@ -494,16 +719,19 @@ var VirtualizedFileDiff = class extends FileDiff {
494
719
  preSeparatorHeight: pendingLeadingSeparatorHeight
495
720
  });
496
721
  if (leadingRegion.fromEnd > 0) pendingLeadingSeparatorHeight = 0;
497
- const trailingRegion = getTrailingExpandedRegion({
498
- fileDiff: this.fileDiff,
499
- hunk,
722
+ const trailingRegion = hunkIndex === finalHunkIndex ? getTrailingExpandedRegion({
723
+ fileDiff,
500
724
  hunkIndex,
501
725
  expandedHunks,
502
- collapsedContextThreshold
503
- });
726
+ collapsedContextThreshold,
727
+ errorPrefix: "VirtualizedFileDiff"
728
+ }) : void 0;
504
729
  const trailingSeparatorHeight = trailingRegion != null && trailingRegion.collapsedLines > 0 ? getTrailingHunkSeparatorLayout({
505
730
  type: hunkSeparators,
506
731
  metrics: this.metrics
732
+ })?.totalHeight ?? 0 : hunkIndex === finalHunkIndex && canHydratePartialDiff ? getTrailingHunkSeparatorLayout({
733
+ type: hunkSeparators,
734
+ metrics: this.metrics
507
735
  })?.totalHeight ?? 0 : 0;
508
736
  const trailingExpandedCount = trailingRegion != null ? trailingRegion.fromStart + trailingRegion.fromEnd : 0;
509
737
  const hunkBodyRowCount = diffStyle === "split" ? hunk.splitLineCount : hunk.unifiedLineCount;
@@ -569,7 +797,7 @@ var VirtualizedFileDiff = class extends FileDiff {
569
797
  for (const hunk of fileDiff.hunks) count += diffStyle === "split" ? hunk.splitLineCount : hunk.unifiedLineCount;
570
798
  return count;
571
799
  }
572
- const { expandUnchanged = false, collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD } = this.options;
800
+ const { expandUnchanged = false, collapsedContextThreshold = 1 } = this.options;
573
801
  const expandedHunks = expandUnchanged ? true : this.hunksRenderer.getExpandedHunksMap();
574
802
  for (const [hunkIndex, hunk] of fileDiff.hunks.entries()) {
575
803
  const hunkCount = diffStyle === "split" ? hunk.splitLineCount : hunk.unifiedLineCount;
@@ -584,34 +812,37 @@ var VirtualizedFileDiff = class extends FileDiff {
584
812
  });
585
813
  if (collapsedBefore > 0) count += renderAll ? collapsedBefore : fromStart + fromEnd;
586
814
  }
587
- const lastHunk = fileDiff.hunks.at(-1);
588
- if (lastHunk != null && hasFinalHunk(fileDiff)) {
589
- const additionRemaining = fileDiff.additionLines.length - (lastHunk.additionLineIndex + lastHunk.additionCount);
590
- const deletionRemaining = fileDiff.deletionLines.length - (lastHunk.deletionLineIndex + lastHunk.deletionCount);
591
- if (lastHunk != null && additionRemaining !== deletionRemaining) throw new Error(`VirtualizedFileDiff: trailing context mismatch (additions=${additionRemaining}, deletions=${deletionRemaining}) for ${fileDiff.name}`);
592
- const trailingRangeSize = Math.min(additionRemaining, deletionRemaining);
593
- if (lastHunk != null && trailingRangeSize > 0) {
594
- const { fromStart, renderAll } = getExpandedRegion({
595
- isPartial: fileDiff.isPartial,
596
- rangeSize: trailingRangeSize,
597
- expandedHunks,
598
- hunkIndex: fileDiff.hunks.length,
599
- collapsedContextThreshold
600
- });
601
- count += renderAll ? trailingRangeSize : fromStart;
602
- }
603
- }
815
+ const trailingRegion = getTrailingExpandedRegion({
816
+ fileDiff,
817
+ hunkIndex: fileDiff.hunks.length - 1,
818
+ expandedHunks,
819
+ collapsedContextThreshold,
820
+ errorPrefix: "VirtualizedFileDiff"
821
+ });
822
+ if (trailingRegion != null) count += trailingRegion.fromStart + trailingRegion.fromEnd;
604
823
  return count;
605
824
  }
825
+ getLayoutLineCount(fileDiff, diffStyle) {
826
+ const expandedLineCount = this.getExpandedLineCount(fileDiff, diffStyle);
827
+ const metadataLineCount = diffStyle === "split" ? fileDiff.splitLineCount : fileDiff.unifiedLineCount;
828
+ return Math.max(expandedLineCount, metadataLineCount, fileDiff.additionLines.length, fileDiff.deletionLines.length, this.cache.totalLines);
829
+ }
606
830
  computeRenderRangeFromWindow(fileDiff, fileTop, { top, bottom }) {
607
- const { disableFileHeader = false, expandUnchanged = false, collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD } = this.options;
831
+ const { disableFileHeader = false, expandUnchanged = false, collapsedContextThreshold = 1 } = this.options;
608
832
  const { hunkLineCount, lineHeight } = this.metrics;
609
833
  const diffStyle = this.getDiffStyle();
610
834
  const hunkSeparators = this.getHunkSeparatorType();
835
+ const canHydratePartialDiff = canHydrateCollapsedContext(fileDiff, this.options.loadDiffFiles != null);
611
836
  const fileHeight = this.height;
612
- let lineCount = this.cache.totalLines > 0 ? this.cache.totalLines : this.getExpandedLineCount(fileDiff, diffStyle);
837
+ let lineCount = this.getLayoutLineCount(fileDiff, diffStyle);
613
838
  const headerRegion = getVirtualFileHeaderRegion(this.metrics, disableFileHeader);
614
839
  const paddingBottom = fileDiff.hunks.length > 0 ? getVirtualFilePaddingBottom(this.metrics) : 0;
840
+ const { fileAnnotationHeight } = this.cache;
841
+ const codeRegionTop = headerRegion + fileAnnotationHeight;
842
+ const codeHeight = Math.max(0, fileHeight - headerRegion - fileAnnotationHeight - paddingBottom);
843
+ const hasFileAnnotations = this.hasFileAnnotations(fileDiff);
844
+ const fileAnnotationTop = fileTop + headerRegion;
845
+ const measuredFileAnnotationVisible = fileAnnotationHeight > 0 && hasFileAnnotations && fileAnnotationTop < bottom && fileAnnotationTop + fileAnnotationHeight > top;
615
846
  if (fileTop < top - fileHeight || fileTop > bottom) return {
616
847
  startingLine: 0,
617
848
  totalLines: 0,
@@ -624,8 +855,8 @@ var VirtualizedFileDiff = class extends FileDiff {
624
855
  bufferBefore: 0,
625
856
  bufferAfter: 0
626
857
  };
627
- this.approximateLayoutCheckpoints();
628
- lineCount = this.cache.totalLines > 0 ? this.cache.totalLines : lineCount;
858
+ this.approximateLayoutCheckpoints(fileDiff);
859
+ lineCount = this.getLayoutLineCount(fileDiff, diffStyle);
629
860
  const estimatedTargetLines = Math.ceil(Math.max(bottom - top, 0) / lineHeight);
630
861
  const totalLines = Math.ceil(estimatedTargetLines / hunkLineCount) * hunkLineCount + hunkLineCount;
631
862
  const totalHunks = totalLines / hunkLineCount;
@@ -633,7 +864,7 @@ var VirtualizedFileDiff = class extends FileDiff {
633
864
  const hunkOffsets = [];
634
865
  const viewportCenter = (top + bottom) / 2;
635
866
  const checkpoint = this.getLayoutCheckpointBeforeTop(Math.max(0, top - fileTop - totalLines * lineHeight * 2), hunkLineCount);
636
- let absoluteLineTop = fileTop + (checkpoint?.top ?? headerRegion);
867
+ let absoluteLineTop = fileTop + (checkpoint?.top ?? codeRegionTop);
637
868
  let currentLine = checkpoint?.renderedLineIndex ?? 0;
638
869
  let firstVisibleHunk;
639
870
  let centerHunk;
@@ -648,6 +879,7 @@ var VirtualizedFileDiff = class extends FileDiff {
648
879
  const splitLineIndex = additionLine != null ? additionLine.splitLineIndex : deletionLine.splitLineIndex;
649
880
  const unifiedLineIndex = additionLine != null ? additionLine.unifiedLineIndex : deletionLine.unifiedLineIndex;
650
881
  const hasMetadata = (additionLine?.noEOFCR ?? false) || (deletionLine?.noEOFCR ?? false);
882
+ const isFinalHunkRow = hunkIndex === fileDiff.hunks.length - 1 && hunk != null && (diffStyle === "split" ? splitLineIndex === hunk.splitLineStart + hunk.splitLineCount - 1 : unifiedLineIndex === hunk.unifiedLineStart + hunk.unifiedLineCount - 1);
651
883
  const gapAdjustment = (collapsedBefore > 0 ? getLeadingHunkSeparatorLayout({
652
884
  type: hunkSeparators,
653
885
  metrics: this.metrics,
@@ -658,26 +890,36 @@ var VirtualizedFileDiff = class extends FileDiff {
658
890
  const isAtHunkBoundary = currentLine % hunkLineCount === 0;
659
891
  const currentHunk = Math.floor(currentLine / hunkLineCount);
660
892
  if (isAtHunkBoundary) {
661
- hunkOffsets[currentHunk] = absoluteLineTop - (fileTop + headerRegion + gapAdjustment);
893
+ hunkOffsets[currentHunk] = absoluteLineTop - (fileTop + codeRegionTop + gapAdjustment);
662
894
  if (overflowCounter != null) {
663
895
  if (overflowCounter <= 0) return true;
664
896
  overflowCounter--;
665
897
  }
666
898
  }
667
- const lineHeight$1 = this.getLineHeight(diffStyle === "split" ? splitLineIndex : unifiedLineIndex, hasMetadata);
668
- if (absoluteLineTop > top - lineHeight$1 && absoluteLineTop < bottom) firstVisibleHunk ??= currentHunk;
669
- if (centerHunk == null && absoluteLineTop + lineHeight$1 > viewportCenter) centerHunk = currentHunk;
899
+ const lineHeight = this.getLineHeight(diffStyle === "split" ? splitLineIndex : unifiedLineIndex, hasMetadata);
900
+ if (absoluteLineTop > top - lineHeight && absoluteLineTop < bottom) firstVisibleHunk ??= currentHunk;
901
+ if (centerHunk == null && absoluteLineTop + lineHeight > viewportCenter) centerHunk = currentHunk;
670
902
  if (overflowCounter == null && absoluteLineTop >= bottom && isAtHunkBoundary) overflowCounter = overflowHunks;
671
903
  currentLine++;
672
- absoluteLineTop += lineHeight$1;
673
- if (collapsedAfter > 0) absoluteLineTop += getTrailingHunkSeparatorLayout({
674
- type: hunkSeparators,
675
- metrics: this.metrics
676
- })?.totalHeight ?? 0;
904
+ absoluteLineTop += lineHeight;
905
+ if (collapsedAfter > 0 || isFinalHunkRow && canHydratePartialDiff) {
906
+ const trailingSeparator = getTrailingHunkSeparatorLayout({
907
+ type: hunkSeparators,
908
+ metrics: this.metrics
909
+ });
910
+ if (trailingSeparator != null) {
911
+ if (absoluteLineTop < bottom && absoluteLineTop + trailingSeparator.totalHeight > top) firstVisibleHunk ??= currentHunk;
912
+ if (centerHunk == null && absoluteLineTop + trailingSeparator.totalHeight > viewportCenter) centerHunk = currentHunk;
913
+ absoluteLineTop += trailingSeparator.totalHeight;
914
+ }
915
+ }
677
916
  return false;
678
917
  }
679
918
  });
680
- if (firstVisibleHunk == null) return {
919
+ if (firstVisibleHunk == null) if (measuredFileAnnotationVisible) {
920
+ firstVisibleHunk = 0;
921
+ centerHunk = 0;
922
+ } else return {
681
923
  startingLine: 0,
682
924
  totalLines: 0,
683
925
  bufferBefore: 0,
@@ -689,16 +931,32 @@ var VirtualizedFileDiff = class extends FileDiff {
689
931
  const startHunk = Math.max(0, Math.min(idealStartHunk, maxStartHunk));
690
932
  const startingLine = startHunk * hunkLineCount;
691
933
  const clampedTotalLines = idealStartHunk < 0 ? totalLines + idealStartHunk * hunkLineCount : totalLines;
692
- const bufferBefore = hunkOffsets[startHunk] ?? 0;
934
+ const codeBufferBefore = hunkOffsets[startHunk] ?? 0;
935
+ const bufferBefore = startingLine === 0 ? 0 : fileAnnotationHeight + codeBufferBefore;
693
936
  const finalHunkIndex = startHunk + clampedTotalLines / hunkLineCount;
937
+ const bufferAfter = finalHunkIndex < hunkOffsets.length ? codeHeight - hunkOffsets[finalHunkIndex] : codeHeight - (absoluteLineTop - fileTop - codeRegionTop);
694
938
  return {
695
939
  startingLine,
696
940
  totalLines: clampedTotalLines,
697
941
  bufferBefore,
698
- bufferAfter: finalHunkIndex < hunkOffsets.length ? fileHeight - headerRegion - hunkOffsets[finalHunkIndex] - paddingBottom : fileHeight - (absoluteLineTop - fileTop) - paddingBottom
942
+ bufferAfter: Math.max(0, bufferAfter)
699
943
  };
700
944
  }
701
945
  };
946
+ function measureFileAnnotationHeight(codeGroups) {
947
+ let height;
948
+ for (const codeGroup of codeGroups) {
949
+ if (codeGroup == null) continue;
950
+ const content = codeGroup.children[1];
951
+ if (!(content instanceof HTMLElement)) continue;
952
+ for (const child of content.children) {
953
+ if (!(child instanceof HTMLElement)) continue;
954
+ if (child.dataset.lineAnnotation !== FILE_ANNOTATION_DOM_KEY) continue;
955
+ height = Math.max(height ?? 0, child.getBoundingClientRect().height);
956
+ }
957
+ }
958
+ return height;
959
+ }
702
960
  function createHeightDeltaPrefix(heightDeltas) {
703
961
  const entries = Array.from(heightDeltas).sort((a, b) => a[0] - b[0]);
704
962
  const lineIndexes = [];
@@ -732,7 +990,7 @@ function lowerBound(values, target) {
732
990
  return low;
733
991
  }
734
992
  function getNextCheckpointIndex(renderedLineIndex) {
735
- return Math.ceil(renderedLineIndex / LAYOUT_CHECKPOINT_INTERVAL) * LAYOUT_CHECKPOINT_INTERVAL;
993
+ return Math.ceil(renderedLineIndex / VIRTUALIZED_FILE_DIFF_LAYOUT_CHECKPOINT_INTERVAL) * VIRTUALIZED_FILE_DIFF_LAYOUT_CHECKPOINT_INTERVAL;
736
994
  }
737
995
  function countMetadataOffsetsBefore(metadataOffsets, offset) {
738
996
  let count = 0;
@@ -753,38 +1011,27 @@ function getHunkMetadataOffsets({ diffStyle, hunk, rowCount }) {
753
1011
  if (lastContent.additions > 0 && hunk.noEOFCRAdditions) offsets.push(rowCount - 1);
754
1012
  return offsets;
755
1013
  }
756
- function getTrailingExpandedRegion({ fileDiff, hunk, hunkIndex, expandedHunks, collapsedContextThreshold }) {
757
- if (hunkIndex !== fileDiff.hunks.length - 1 || !hasFinalHunk(fileDiff)) return;
758
- const additionRemaining = fileDiff.additionLines.length - (hunk.additionLineIndex + hunk.additionCount);
759
- const deletionRemaining = fileDiff.deletionLines.length - (hunk.deletionLineIndex + hunk.deletionCount);
760
- if (additionRemaining !== deletionRemaining) throw new Error(`VirtualizedFileDiff: trailing context mismatch (additions=${additionRemaining}, deletions=${deletionRemaining}) for ${fileDiff.name}`);
761
- return getExpandedRegion({
762
- isPartial: fileDiff.isPartial,
763
- rangeSize: Math.min(additionRemaining, deletionRemaining),
764
- expandedHunks,
765
- hunkIndex: fileDiff.hunks.length,
766
- collapsedContextThreshold
767
- });
768
- }
769
1014
  function hasDiffLayoutOptionChanged(previousOptions, nextOptions) {
770
- return (previousOptions.diffStyle ?? "split") !== (nextOptions.diffStyle ?? "split") || (previousOptions.overflow ?? "scroll") !== (nextOptions.overflow ?? "scroll") || (previousOptions.collapsed ?? false) !== (nextOptions.collapsed ?? false) || (previousOptions.disableLineNumbers ?? false) !== (nextOptions.disableLineNumbers ?? false) || (previousOptions.disableFileHeader ?? false) !== (nextOptions.disableFileHeader ?? false) || (previousOptions.diffIndicators ?? "bars") !== (nextOptions.diffIndicators ?? "bars") || (previousOptions.hunkSeparators ?? "line-info") !== (nextOptions.hunkSeparators ?? "line-info") || (previousOptions.expandUnchanged ?? false) !== (nextOptions.expandUnchanged ?? false) || (previousOptions.collapsedContextThreshold ?? DEFAULT_COLLAPSED_CONTEXT_THRESHOLD) !== (nextOptions.collapsedContextThreshold ?? DEFAULT_COLLAPSED_CONTEXT_THRESHOLD) || previousOptions.unsafeCSS !== nextOptions.unsafeCSS;
1015
+ return (previousOptions.diffStyle ?? "split") !== (nextOptions.diffStyle ?? "split") || (previousOptions.overflow ?? "scroll") !== (nextOptions.overflow ?? "scroll") || (previousOptions.collapsed ?? false) !== (nextOptions.collapsed ?? false) || (previousOptions.disableLineNumbers ?? false) !== (nextOptions.disableLineNumbers ?? false) || (previousOptions.disableFileHeader ?? false) !== (nextOptions.disableFileHeader ?? false) || (previousOptions.diffIndicators ?? "bars") !== (nextOptions.diffIndicators ?? "bars") || (previousOptions.hunkSeparators ?? "line-info") !== (nextOptions.hunkSeparators ?? "line-info") || Boolean(previousOptions.loadDiffFiles) !== Boolean(nextOptions.loadDiffFiles) || (previousOptions.expandUnchanged ?? false) !== (nextOptions.expandUnchanged ?? false) || (previousOptions.collapsedContextThreshold ?? 1) !== (nextOptions.collapsedContextThreshold ?? 1) || previousOptions.unsafeCSS !== nextOptions.unsafeCSS;
771
1016
  }
772
1017
  function hasDiffEstimateOptionChanged(previousOptions, nextOptions) {
773
- return (previousOptions.disableFileHeader ?? false) !== (nextOptions.disableFileHeader ?? false) || (previousOptions.hunkSeparators ?? "line-info") !== (nextOptions.hunkSeparators ?? "line-info") || (previousOptions.expandUnchanged ?? false) !== (nextOptions.expandUnchanged ?? false) || (previousOptions.collapsedContextThreshold ?? DEFAULT_COLLAPSED_CONTEXT_THRESHOLD) !== (nextOptions.collapsedContextThreshold ?? DEFAULT_COLLAPSED_CONTEXT_THRESHOLD);
1018
+ return (previousOptions.disableFileHeader ?? false) !== (nextOptions.disableFileHeader ?? false) || (previousOptions.hunkSeparators ?? "line-info") !== (nextOptions.hunkSeparators ?? "line-info") || Boolean(previousOptions.loadDiffFiles) !== Boolean(nextOptions.loadDiffFiles) || (previousOptions.expandUnchanged ?? false) !== (nextOptions.expandUnchanged ?? false) || (previousOptions.collapsedContextThreshold ?? 1) !== (nextOptions.collapsedContextThreshold ?? 1);
1019
+ }
1020
+ function canHydrateCollapsedContext(fileDiff, hasFileLoader) {
1021
+ return fileDiff.isPartial && hasFileLoader && (fileDiff.type === "change" || fileDiff.type === "rename-changed");
774
1022
  }
775
1023
  function getOptionHunkSeparatorType(hunkSeparators) {
776
1024
  return typeof hunkSeparators === "function" ? "custom" : hunkSeparators ?? "line-info";
777
1025
  }
778
- function hasFinalHunk(fileDiff) {
779
- const lastHunk = fileDiff.hunks.at(-1);
780
- if (lastHunk == null || fileDiff.isPartial || fileDiff.additionLines.length === 0 || fileDiff.deletionLines.length === 0) return false;
781
- return lastHunk.additionLineIndex + lastHunk.additionCount < fileDiff.additionLines.length || lastHunk.deletionLineIndex + lastHunk.deletionCount < fileDiff.deletionLines.length;
1026
+ function areOptionalFilesEqual(fileA, fileB) {
1027
+ if (fileA == null || fileB == null) return fileA == null && fileB == null;
1028
+ return areFilesEqual(fileA, fileB);
782
1029
  }
783
1030
  function parseLineIndex(lineIndexAttr, diffStyle) {
784
1031
  const [unifiedIndex, splitIndex] = lineIndexAttr.split(",").map(Number);
785
1032
  return diffStyle === "split" ? splitIndex : unifiedIndex;
786
1033
  }
787
-
788
1034
  //#endregion
789
- export { VirtualizedFileDiff };
1035
+ export { VIRTUALIZED_FILE_DIFF_LAYOUT_CHECKPOINT_INTERVAL, VirtualizedFileDiff };
1036
+
790
1037
  //# sourceMappingURL=VirtualizedFileDiff.js.map